From 47b695c3c5eaba52a38dd76b3276be2e24fe3c1a Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Tue, 18 Oct 2022 08:11:27 -0700 Subject: [PATCH 001/255] reorganize, start adding text --- docs/community/development.md | 191 ++++++++++++---- .../mermaid/src/docs/community/development.md | 207 ++++++++++++++---- 2 files changed, 310 insertions(+), 88 deletions(-) diff --git a/docs/community/development.md b/docs/community/development.md index 58ca4670b..a52e12546 100644 --- a/docs/community/development.md +++ b/docs/community/development.md @@ -12,72 +12,103 @@ So you want to help? That's great! Here are a few things to get you started on the right path. -**The Docs Structure is dictated by [.vitepress/config.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/docs/.vitepress/config.ts)**. +## Requirements -**Note: Commits and Pull Requests should be directed to the develop branch.** +- [volta](https://volta.sh/) to manage node versions. +- [Node.js](https://nodejs.org/en/). `volta install node` +- [pnpm](https://pnpm.io/) package manager. `volta install pnpm` -## Branching +## Development Installation -Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspired approach to branching. So development is done in the `develop` branch. +In GitHub, you _fork_ a repository when you are going to make changes and submit pull requests. +[Here is a GitHub document that gives an overview of the process.](https://docs.github.com/en/get-started/quickstart/fork-a-repo) -Once development is done we branch a `release` branch from `develop` for testing. +```bash +git clone git@github.com:mermaid-js/mermaid.git +cd mermaid +# npx is required for first install as volta support for pnpm is not added yet. +npx pnpm install +pnpm test +``` -Once the release happens we merge the `release` branch with `master` and kill the `release` branch. - -This means that **you should branch off your pull request from develop** and direct all Pull Requests to it. +**The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** ## Contributing Code -We make all changes via Pull Requests. As we have many Pull Requests from developers new to mermaid, we have put in place a process, wherein _knsv, Knut Sveidqvist_ is the primary reviewer of changes and merging pull requests. The process is as follows: +The basic steps for contributing code are: -- Large changes reviewed by knsv or other developer asked to review by knsv -- Smaller, low-risk changes like dependencies, documentation, etc. can be merged by active collaborators -- Documentation (we encourage updates to the `/packages/mermaid/src/docs` folder; you can submit them via direct commits) +1. Create a git branch and work on your code in the branch +2. Write and update tests (unit and perhaps even integration (e2e) tests) (If you do TDD/BDD, the order might be different.) +3. Let users know that things have changed or been added in the documents! This is often overlooked, but _critical_ +4. Submit your code as a _pull request._ -When you commit code, create a branch with the following naming convention: +### 1. Create a git branch for your work -Start with the type, such as **feature** or **bug**, followed by the issue number for reference, and a text that describes the issue. +Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspired approach to branching. +Development is done in the `develop` branch. -**One example:** +Once development is done we branch a `release` branch from `develop` for testing. -`feature/945_state_diagrams` +Once the release happens we merge the `release` branch with `master` and delete the `release` branch. The live product and on-line documentation are what is in the `master` branch. -**Another example:** +**All new work should be based on the `develop` branch.** -`bug/123_nasty_bug_branch` +**When you are ready to do work, always, ALWAYS:** -## Contributing to Documentation +1. Make sure you have the most up to date version of the `develop` branch. (fetch or pull to update it) +2. Check out the `develop` branch +3. Create a new branch for your work. Please name the branch following our naming convention below. -If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? +\[TODO what about just changing documentation? how about docs/.... ] -The docs are located in the `src/docs` folder and are written in Markdown. Just pick the right section and start typing. If you want to propose changes to the structure of the documentation, such as adding a new section or a new file you do that via **[.vitepress/config.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/docs/.vitepress/config.ts)**. +We use the follow naming convention for branches: -> **All the documents displayed in the GitHub.io page are listed in [.vitepress/config.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/docs/.vitepress/config.ts)**. +```text + [feature | bug | chore | docs]/[issue number]_[short description using dashes ('-') or underscores ('_') instead of spaces] +``` + +- The first part is the _type_ of change: a feature, bug, chore, or documentation change ('docs') +- followed by a slash (which helps to group like types together in many git tools) +- followed by the issue number +- followed by an underscore ('\_') +- followed by a short text description (but use dashes ('-') or underscores ('\_') instead of spaces) + +\*\* Ex: A new feature described in issue 2945 that adds a new arrow type called 'florbs':\*\* + +`feature/2945_state_diagrams_arrow_florbs` + +\*\* Ex: A bug described in issue 1123 that causes random ugly red text:\*\* +`bug/1123_random_ugly_red_text` + +### 2. Tests + +Tests ensure that each function, module, or part of code does what it says it will do. This is critically +important when other changes are made to ensure that existing code is not broken (no regression). The contents of are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. -## How to Contribute to Documentation +Just as important, the tests act as _specifications:_ they specify (or describe) what the code does (or should do). +Whenever someone is new to a section of code, they should be able to read the tests to get a thorough understanding of what it does and why. -We are a little less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator. +If you are fixing a bug, you should add tests to ensure that your code has actually fixed the bug, to specify/describe what the code is doing, and to ensure the bug doesn't happen again. +(If there had been a test for the situation, the bug never would have happened in the first place.) +You may need to change existing tests if they were inaccurate. -The documentation is located in the `src/docs` directory and organized according to relevant subfolder. +If you are adding a feature, you will definitely need to add tests. Depending on the size of your feature, you may need to add integration tests. -The `docs` folder will be automatically generated when committing to `src/docs` and should not be edited manually. +#### Unit Tests for Parsing -We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/packages/mermaid/src/docs). We publish documentation using GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) +If you are adding or changing the text that describes a diagram (the _grammar_), you will need to add (or change) tests for the _parser._ -### Add Unit Tests for Parsing +#### Integration/End-to-End (e2e) tests -This is important so that, if someone that does not know about this great feature suggests a change to the grammar, they get notified early on when that change breaks the parser. Another important aspect is that, without proper parsing, tests refactoring is pretty much impossible. - -### Add E2E Tests - -This tests the rendering and visual appearance of the diagrams. This ensures that the rendering of that feature in the e2e will be reviewed in the release process going forward. Less chance that it breaks! +These test the rendering and visual appearance of the diagrams. +This ensures that the rendering of that feature in the e2e will be reviewed in the release process going forward. Less chance that it breaks! To start working with the e2e tests: -1. Run `pnpm run dev` to start the dev server -2. Start **Cypress** by running `pnpm exec cypress open` in the **mermaid** folder. +1. Run `pnpm run dev` to start the dev server (or use the `pnpm dev` script) +2. Start **Cypress** by running `pnpm exec cypress open` in the **mermaid** folder (or use the `pnpm cypress:open` script). The rendering tests are very straightforward to create. There is a function `imgSnapshotTest`, which takes a diagram in text form and the mermaid options, and it renders that diagram in Cypress. @@ -107,17 +138,78 @@ it('should render forks and joins', () => { }); ``` -### Any Questions or Suggestions? +\[TODO - running the tests against what is expected in development. ] +\[TODO - how to generate new screenshots] +.... -After logging in at [GitHub.com](https://www.github.com), open or append to an issue [using the GitHub issue tracker of the mermaid-js repository](https://github.com/mermaid-js/mermaid/issues?q=is%3Aissue+is%3Aopen+label%3A%22Area%3A+Documentation%22). +### 3. Documentation -### How to Contribute a Suggestion +If the users have no way to know that things have changed, then you haven't really _fixed_ anything for the users; you've just added to making Mermaid feel broken. +Likewise, if users don't know that there is a new feature that you've implemented, it will forever remain unknown and unused. + +The documentation has to be updated to users know that things have changed and added! + +We know it can sometimes be hard to code _and_ write user documentation. + +\[TODO - how to submit documentation changes -- see [Contributing Documentation](#contributing-documentation) + +Create another issue specifically for the documentation.\ +You will need to help with the PR, but definitely ask for help if you feel stuck. +When it feels hard to write stuff out, explaining it to someone and having that person ask you clarifying questions can often be 80% of the work!] + +When in doubt, write up and submit what you can. It can be clarified and refined later. (With documentation, something is better than nothing!) + +### 4. Submitting your code as a pull request + +We make all changes via Pull Requests. As we have many Pull Requests from developers new to mermaid, \ +we have put in place a process, wherein _knsv, Knut Sveidqvist_ is the primary reviewer of changes and merging pull requests. The process is as follows: + +- Large changes are reviewed by knsv or other developer asked to review by knsv +- Smaller, low-risk changes like dependencies, documentation, etc. can be reviewed and merged by active collaborators + +**Reminder: Pull Requests should be directed to the develop branch.** + +## Contributing Documentation + +If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? + +The docs are located in the `src/docs` folder and are written in Markdown. Just pick the right section and start typing. +If you want to propose changes to the structure of the documentation, such as adding a new section or a new file you do that via the **[sidebar](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. + +> **All the documents displayed in the GitHub.io page are listed in [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. + +The contents of are based on the docs from the `master` branch. +Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. + +### How to Contribute to Documentation + +We are a little less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator. + +The documentation is located in the `src/docs` directory and organized according to relevant subfolder. + +The `docs` folder will be automatically generated when committing to `src/docs` and should not be edited manually. + +We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation using GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) + +- Documentation (we encourage updates to the `src/docs` folder; you can submit them via direct commits) + +The source files for documentation are in `/packages/mermaid/docs` and are written in markdown. + +**_DO NOT CHANGE FILES IN `/docs`_** + +### The official documentation site + +**[The mermaid documentation site](https://mermaid-js.github.io/mermaid/) is powered by [Docsify](https://docsify.js.org), a simple documentation site generator.** + +\[TODO - how to preview the documents on a local machine? how to run VitePress?] + +If you want to preview the whole documentation site on your machine, you need to install `docsify-cli`: Markdown is used to format the text, for more information about Markdown [see the GitHub Markdown help page](https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax). To edit Docs on your computer: -1. Find the Markdown file (.md) to edit in the [packages/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/packages/mermaid/src/docs) directory in the `develop` branch. +1. Find the Markdown file (.md) to edit in the [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs) directory in the `develop` branch. 2. Create a fork of the develop branch. 3. Make changes or add new documentation. 4. Commit changes to your fork and push it to GitHub. @@ -126,12 +218,31 @@ To edit Docs on your computer: To edit Docs on GitHub: 1. Login to [GitHub.com](https://www.github.com). -2. Navigate to [packages/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/packages/mermaid/src/docs). +2. Navigate to [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). 3. To edit a file, click the pencil icon at the top-right of the file contents panel. 4. Describe what you changed in the **Propose file change** section, located at the bottom of the page. 5. Submit your changes by clicking the button **Propose file change** at the bottom (by automatic creation of a fork and a new branch). 6. Create a Pull Request of your newly forked branch by clicking the green **Create Pull Request** button. +## Any Questions or Suggestions? + +#### First search to see if someone has already asked (and hopefully been answered) or suggested the same thing. + +- search in the Discussions +- search in the open Issues + +If you find an open issue or discussion thread that is similar to your question but isn't answered, +you can let us know that you are also interested in it. \[TODO: describe +1, upvote] +This helps the team know the relative interest in something and helps them set priorities and assignments. + +Feel free to add to the discussion on the issue or topic. + +If you can't find anything that already addresses your question or suggestion, _open a new issue:_ + +Log in to [GitHub.com](https://www.github.com), open or append to an issue [using the GitHub issue tracker of the mermaid-js repository](https://github.com/mermaid-js/mermaid/issues?q=is%3Aissue+is%3Aopen+label%3A%22Area%3A+Documentation%22). + +### How to Contribute a Suggestion + ## Last Words Don't get daunted if it is hard in the beginning. We have a great community with only encouraging words. So, if you get stuck, ask for help and hints in the Slack forum. If you want to show off something good, show it off there. diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index bfa5ddfcf..928b887ba 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -6,72 +6,103 @@ So you want to help? That's great! Here are a few things to get you started on the right path. -**The Docs Structure is dictated by [.vitepress/config.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/docs/.vitepress/config.ts)**. +## Requirements -**Note: Commits and Pull Requests should be directed to the develop branch.** +- [volta](https://volta.sh/) to manage node versions. +- [Node.js](https://nodejs.org/en/). `volta install node` +- [pnpm](https://pnpm.io/) package manager. `volta install pnpm` -## Branching +## Development Installation -Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspired approach to branching. So development is done in the `develop` branch. +In GitHub, you _fork_ a repository when you are going to make changes and submit pull requests. +[Here is a GitHub document that gives an overview of the process.](https://docs.github.com/en/get-started/quickstart/fork-a-repo) -Once development is done we branch a `release` branch from `develop` for testing. +```bash +git clone git@github.com:mermaid-js/mermaid.git +cd mermaid +# npx is required for first install as volta support for pnpm is not added yet. +npx pnpm install +pnpm test +``` -Once the release happens we merge the `release` branch with `master` and kill the `release` branch. - -This means that **you should branch off your pull request from develop** and direct all Pull Requests to it. +**The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** ## Contributing Code -We make all changes via Pull Requests. As we have many Pull Requests from developers new to mermaid, we have put in place a process, wherein _knsv, Knut Sveidqvist_ is the primary reviewer of changes and merging pull requests. The process is as follows: +The basic steps for contributing code are: -- Large changes reviewed by knsv or other developer asked to review by knsv -- Smaller, low-risk changes like dependencies, documentation, etc. can be merged by active collaborators -- Documentation (we encourage updates to the `/packages/mermaid/src/docs` folder; you can submit them via direct commits) +1. Create a git branch and work on your code in the branch +2. Write and update tests (unit and perhaps even integration (e2e) tests) (If you do TDD/BDD, the order might be different.) +3. Let users know that things have changed or been added in the documents! This is often overlooked, but _critical_ +4. Submit your code as a _pull request._ -When you commit code, create a branch with the following naming convention: +### 1. Create a git branch for your work -Start with the type, such as **feature** or **bug**, followed by the issue number for reference, and a text that describes the issue. +Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspired approach to branching. +Development is done in the `develop` branch. -**One example:** +Once development is done we branch a `release` branch from `develop` for testing. -`feature/945_state_diagrams` +Once the release happens we merge the `release` branch with `master` and delete the `release` branch. The live product and on-line documentation are what is in the `master` branch. -**Another example:** +**All new work should be based on the `develop` branch.** -`bug/123_nasty_bug_branch` +**When you are ready to do work, always, ALWAYS:** -## Contributing to Documentation +1. Make sure you have the most up to date version of the `develop` branch. (fetch or pull to update it) +2. Check out the `develop` branch +3. Create a new branch for your work. Please name the branch following our naming convention below. -If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? +[TODO what about just changing documentation? how about docs/.... ] -The docs are located in the `src/docs` folder and are written in Markdown. Just pick the right section and start typing. If you want to propose changes to the structure of the documentation, such as adding a new section or a new file you do that via **[.vitepress/config.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/docs/.vitepress/config.ts)**. +We use the follow naming convention for branches: -> **All the documents displayed in the GitHub.io page are listed in [.vitepress/config.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/docs/.vitepress/config.ts)**. +```text + [feature | bug | chore | docs]/[issue number]_[short description using dashes ('-') or underscores ('_') instead of spaces] +``` -The contents of [https://mermaid-js.github.io/mermaid/](https://mermaid-js.github.io/mermaid/) are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. +- The first part is the _type_ of change: a feature, bug, chore, or documentation change ('docs') +- followed by a slash (which helps to group like types together in many git tools) +- followed by the issue number +- followed by an underscore ('\_') +- followed by a short text description (but use dashes ('-') or underscores ('\_') instead of spaces) -## How to Contribute to Documentation +** Ex: A new feature described in issue 2945 that adds a new arrow type called 'florbs':** -We are a little less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator. +`feature/2945_state_diagrams_arrow_florbs` -The documentation is located in the `src/docs` directory and organized according to relevant subfolder. +** Ex: A bug described in issue 1123 that causes random ugly red text:** +`bug/1123_random_ugly_red_text` -The `docs` folder will be automatically generated when committing to `src/docs` and should not be edited manually. +### 2. Tests -We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/packages/mermaid/src/docs). We publish documentation using GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) +Tests ensure that each function, module, or part of code does what it says it will do. This is critically +important when other changes are made to ensure that existing code is not broken (no regression). -### Add Unit Tests for Parsing +The contents of are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. -This is important so that, if someone that does not know about this great feature suggests a change to the grammar, they get notified early on when that change breaks the parser. Another important aspect is that, without proper parsing, tests refactoring is pretty much impossible. +Just as important, the tests act as _specifications:_ they specify (or describe) what the code does (or should do). +Whenever someone is new to a section of code, they should be able to read the tests to get a thorough understanding of what it does and why. -### Add E2E Tests +If you are fixing a bug, you should add tests to ensure that your code has actually fixed the bug, to specify/describe what the code is doing, and to ensure the bug doesn't happen again. +(If there had been a test for the situation, the bug never would have happened in the first place.) +You may need to change existing tests if they were inaccurate. -This tests the rendering and visual appearance of the diagrams. This ensures that the rendering of that feature in the e2e will be reviewed in the release process going forward. Less chance that it breaks! +If you are adding a feature, you will definitely need to add tests. Depending on the size of your feature, you may need to add integration tests. + +#### Unit Tests for Parsing + +If you are adding or changing the text that describes a diagram (the _grammar_), you will need to add (or change) tests for the _parser._ + +#### Integration/End-to-End (e2e) tests + +These test the rendering and visual appearance of the diagrams. +This ensures that the rendering of that feature in the e2e will be reviewed in the release process going forward. Less chance that it breaks! To start working with the e2e tests: -1. Run `pnpm run dev` to start the dev server -2. Start **Cypress** by running `pnpm exec cypress open` in the **mermaid** folder. +1. Run `pnpm run dev` to start the dev server (or use the `pnpm dev` script) +2. Start **Cypress** by running `pnpm exec cypress open` in the **mermaid** folder (or use the `pnpm cypress:open` script). The rendering tests are very straightforward to create. There is a function `imgSnapshotTest`, which takes a diagram in text form and the mermaid options, and it renders that diagram in Cypress. @@ -101,30 +132,110 @@ it('should render forks and joins', () => { }); ``` -### Any Questions or Suggestions? +[TODO - running the tests against what is expected in development. ] +[TODO - how to generate new screenshots] +.... -After logging in at [GitHub.com](https://www.github.com), open or append to an issue [using the GitHub issue tracker of the mermaid-js repository](https://github.com/mermaid-js/mermaid/issues?q=is%3Aissue+is%3Aopen+label%3A%22Area%3A+Documentation%22). +### 3. Documentation -### How to Contribute a Suggestion +If the users have no way to know that things have changed, then you haven't really _fixed_ anything for the users; you've just added to making Mermaid feel broken. +Likewise, if users don't know that there is a new feature that you've implemented, it will forever remain unknown and unused. + +The documentation has to be updated to users know that things have changed and added! + +We know it can sometimes be hard to code _and_ write user documentation. + +[TODO - how to submit documentation changes -- see [Contributing Documentation](#contributing-documentation) + +Create another issue specifically for the documentation. +You will need to help with the PR, but definitely ask for help if you feel stuck. +When it feels hard to write stuff out, explaining it to someone and having that person ask you clarifying questions can often be 80% of the work!] + +When in doubt, write up and submit what you can. It can be clarified and refined later. (With documentation, something is better than nothing!) + +### 4. Submitting your code as a pull request + +We make all changes via Pull Requests. As we have many Pull Requests from developers new to mermaid, \ +we have put in place a process, wherein _knsv, Knut Sveidqvist_ is the primary reviewer of changes and merging pull requests. The process is as follows: + +- Large changes are reviewed by knsv or other developer asked to review by knsv +- Smaller, low-risk changes like dependencies, documentation, etc. can be reviewed and merged by active collaborators + +**Reminder: Pull Requests should be directed to the develop branch.** + +## Contributing Documentation + +If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? + +The docs are located in the `src/docs` folder and are written in Markdown. Just pick the right section and start typing. +If you want to propose changes to the structure of the documentation, such as adding a new section or a new file you do that via the **[sidebar](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. + +> **All the documents displayed in the GitHub.io page are listed in [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. + +The contents of [https://mermaid-js.github.io/mermaid/](https://mermaid-js.github.io/mermaid/) are based on the docs from the `master` branch. +Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. + +### How to Contribute to Documentation + +We are a little less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator. + +The documentation is located in the `src/docs` directory and organized according to relevant subfolder. + +The `docs` folder will be automatically generated when committing to `src/docs` and should not be edited manually. + +We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation using GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) + +- Documentation (we encourage updates to the `src/docs` folder; you can submit them via direct commits) + +The source files for documentation are in `/packages/mermaid/docs` and are written in markdown. + +**_DO NOT CHANGE FILES IN `/docs`_** + +### The official documentation site + +**[The mermaid documentation site](https://mermaid-js.github.io/mermaid/) is powered by [Docsify](https://docsify.js.org), a simple documentation site generator.** + +[TODO - how to preview the documents on a local machine? how to run VitePress?] + +If you want to preview the whole documentation site on your machine, you need to install `docsify-cli`: Markdown is used to format the text, for more information about Markdown [see the GitHub Markdown help page](https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax). To edit Docs on your computer: -1. Find the Markdown file (.md) to edit in the [packages/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/packages/mermaid/src/docs) directory in the `develop` branch. -2. Create a fork of the develop branch. -3. Make changes or add new documentation. -4. Commit changes to your fork and push it to GitHub. -5. Create a Pull Request of your fork. +1. Find the Markdown file (.md) to edit in the [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs) directory in the `develop` branch. +2. Create a fork of the develop branch. +3. Make changes or add new documentation. +4. Commit changes to your fork and push it to GitHub. +5. Create a Pull Request of your fork. To edit Docs on GitHub: -1. Login to [GitHub.com](https://www.github.com). -2. Navigate to [packages/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/packages/mermaid/src/docs). -3. To edit a file, click the pencil icon at the top-right of the file contents panel. -4. Describe what you changed in the **Propose file change** section, located at the bottom of the page. -5. Submit your changes by clicking the button **Propose file change** at the bottom (by automatic creation of a fork and a new branch). -6. Create a Pull Request of your newly forked branch by clicking the green **Create Pull Request** button. +1. Login to [GitHub.com](https://www.github.com). +2. Navigate to [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). +3. To edit a file, click the pencil icon at the top-right of the file contents panel. +4. Describe what you changed in the **Propose file change** section, located at the bottom of the page. +5. Submit your changes by clicking the button **Propose file change** at the bottom (by automatic creation of a fork and a new branch). +6. Create a Pull Request of your newly forked branch by clicking the green **Create Pull Request** button. + +## Any Questions or Suggestions? + +#### First search to see if someone has already asked (and hopefully been answered) or suggested the same thing. + +- search in the Discussions +- search in the open Issues + +If you find an open issue or discussion thread that is similar to your question but isn't answered, +you can let us know that you are also interested in it. [TODO: describe +1, upvote] +This helps the team know the relative interest in something and helps them set priorities and assignments. + +Feel free to add to the discussion on the issue or topic. + +If you can't find anything that already addresses your question or suggestion, _open a new issue:_ + +Log in to [GitHub.com](https://www.github.com), open or append to an issue [using the GitHub issue tracker of the mermaid-js repository](https://github.com/mermaid-js/mermaid/issues?q=is%3Aissue+is%3Aopen+label%3A%22Area%3A+Documentation%22). + +### How to Contribute a Suggestion ## Last Words From 95120c3f2199a52d138820fa5ad137819e992f25 Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Thu, 3 Nov 2022 15:17:07 -0700 Subject: [PATCH 002/255] added main TOC headings --- docs/community/development.md | 27 ++++++++++++++----- .../mermaid/src/docs/community/development.md | 27 ++++++++++++++----- 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/docs/community/development.md b/docs/community/development.md index a52e12546..0dba6c3e9 100644 --- a/docs/community/development.md +++ b/docs/community/development.md @@ -4,7 +4,18 @@ > > ## Please edit the corresponding file in [/packages/mermaid/src/docs/community/development.md](../../packages/mermaid/src/docs/community/development.md). -# Development and Contribution 🙌 +# Contributing to Mermaid 🙌 + +## Contents + +[1. Requirements](#requirements) +[2. Development Installation](#development-installation) +[3. Contributing Code](#contributing-code) +[4. Contributing Documentation](#contributing-documentation) +[5. Have Questions or Suggestions?](#have-questions-or-suggestions) +[6. Last Words](#6-last-words) + +--- So you want to help? That's great! @@ -12,13 +23,15 @@ So you want to help? That's great! Here are a few things to get you started on the right path. -## Requirements +## 1. Requirements + +These are the main tools we use for working with the code and information (including documentation): - [volta](https://volta.sh/) to manage node versions. - [Node.js](https://nodejs.org/en/). `volta install node` - [pnpm](https://pnpm.io/) package manager. `volta install pnpm` -## Development Installation +## 2. Development Installation _(todo - merge this under development? )_ In GitHub, you _fork_ a repository when you are going to make changes and submit pull requests. [Here is a GitHub document that gives an overview of the process.](https://docs.github.com/en/get-started/quickstart/fork-a-repo) @@ -33,7 +46,7 @@ pnpm test **The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** -## Contributing Code +## 3. Contributing Code The basic steps for contributing code are: @@ -169,7 +182,7 @@ we have put in place a process, wherein _knsv, Knut Sveidqvist_ is the primary r **Reminder: Pull Requests should be directed to the develop branch.** -## Contributing Documentation +## 4. Contributing Documentation If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? @@ -224,7 +237,7 @@ To edit Docs on GitHub: 5. Submit your changes by clicking the button **Propose file change** at the bottom (by automatic creation of a fork and a new branch). 6. Create a Pull Request of your newly forked branch by clicking the green **Create Pull Request** button. -## Any Questions or Suggestions? +## 5. Have Questions or Suggestions? #### First search to see if someone has already asked (and hopefully been answered) or suggested the same thing. @@ -243,7 +256,7 @@ Log in to [GitHub.com](https://www.github.com), open or append to an issue [usin ### How to Contribute a Suggestion -## Last Words +## 6. Last Words Don't get daunted if it is hard in the beginning. We have a great community with only encouraging words. So, if you get stuck, ask for help and hints in the Slack forum. If you want to show off something good, show it off there. diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index 928b887ba..fad0b48a0 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -1,4 +1,15 @@ -# Development and Contribution 🙌 +# Contributing to Mermaid 🙌 + +## Contents + +[1. Requirements](#requirements) +[2. Development Installation](#development-installation) +[3. Contributing Code](#contributing-code) +[4. Contributing Documentation](#contributing-documentation) +[5. Have Questions or Suggestions?](#have-questions-or-suggestions) +[6. Last Words](#6-last-words) + +--- So you want to help? That's great! @@ -6,13 +17,15 @@ So you want to help? That's great! Here are a few things to get you started on the right path. -## Requirements +## 1. Requirements + +These are the main tools we use for working with the code and information (including documentation): - [volta](https://volta.sh/) to manage node versions. - [Node.js](https://nodejs.org/en/). `volta install node` - [pnpm](https://pnpm.io/) package manager. `volta install pnpm` -## Development Installation +## 2. Development Installation _(todo - merge this under development? )_ In GitHub, you _fork_ a repository when you are going to make changes and submit pull requests. [Here is a GitHub document that gives an overview of the process.](https://docs.github.com/en/get-started/quickstart/fork-a-repo) @@ -27,7 +40,7 @@ pnpm test **The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** -## Contributing Code +## 3. Contributing Code The basic steps for contributing code are: @@ -163,7 +176,7 @@ we have put in place a process, wherein _knsv, Knut Sveidqvist_ is the primary r **Reminder: Pull Requests should be directed to the develop branch.** -## Contributing Documentation +## 4. Contributing Documentation If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? @@ -218,7 +231,7 @@ To edit Docs on GitHub: 5. Submit your changes by clicking the button **Propose file change** at the bottom (by automatic creation of a fork and a new branch). 6. Create a Pull Request of your newly forked branch by clicking the green **Create Pull Request** button. -## Any Questions or Suggestions? +## 5. Have Questions or Suggestions? #### First search to see if someone has already asked (and hopefully been answered) or suggested the same thing. @@ -237,7 +250,7 @@ Log in to [GitHub.com](https://www.github.com), open or append to an issue [usin ### How to Contribute a Suggestion -## Last Words +## 6. Last Words Don't get daunted if it is hard in the beginning. We have a great community with only encouraging words. So, if you get stuck, ask for help and hints in the Slack forum. If you want to show off something good, show it off there. From 135893f067aca05cf112f964594be07d7e63b025 Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Thu, 3 Nov 2022 22:22:21 -0700 Subject: [PATCH 003/255] copy working draft to vdocs/community/development.md --- docs/community/development.md | 62 ++-- .../mermaid/src/docs/community/development.md | 62 ++-- vdocs/community/development.md | 281 ++++++++++++++++++ 3 files changed, 365 insertions(+), 40 deletions(-) create mode 100644 vdocs/community/development.md diff --git a/docs/community/development.md b/docs/community/development.md index 0dba6c3e9..2f57fc394 100644 --- a/docs/community/development.md +++ b/docs/community/development.md @@ -8,12 +8,12 @@ ## Contents -[1. Requirements](#requirements) -[2. Development Installation](#development-installation) -[3. Contributing Code](#contributing-code) -[4. Contributing Documentation](#contributing-documentation) -[5. Have Questions or Suggestions?](#have-questions-or-suggestions) -[6. Last Words](#6-last-words) +- [Technical Requirements and Setup](#technical-requirements-and-setup) +- [Development Installation](#development-installation) +- [Contributing Code](#contributing-code) +- [Contributing Documentation](#contributing-documentation) +- [Have Questions or Suggestions?](#have-questions-or-suggestions) +- [Last Words](#6-last-words) --- @@ -23,41 +23,60 @@ So you want to help? That's great! Here are a few things to get you started on the right path. -## 1. Requirements +## Technical Requirements and Setup These are the main tools we use for working with the code and information (including documentation): - [volta](https://volta.sh/) to manage node versions. - [Node.js](https://nodejs.org/en/). `volta install node` - [pnpm](https://pnpm.io/) package manager. `volta install pnpm` +- [npx](https://docs.npmjs.com/cli/v8/commands/npx) the packaged executor in npm; needed to install pnpm (see below) -## 2. Development Installation _(todo - merge this under development? )_ +### 1. Fork and clone the repository + +In GitHub, you first _fork_ a repository when you are going to make changes and submit pull requests. + +Then you _clone_ a copy to your local development machine (e.g. where you code) to make a copy with all the files to work with. -In GitHub, you _fork_ a repository when you are going to make changes and submit pull requests. [Here is a GitHub document that gives an overview of the process.](https://docs.github.com/en/get-started/quickstart/fork-a-repo) +### 2. Install pnpm + +Once you have cloned the repository onto your development machine, change into the `mermaid` folder so that you can install `pnpm`. You will need `npx` to install pnpm because volta doesn't support it yet. + +Ex: + ```bash -git clone git@github.com:mermaid-js/mermaid.git +# Change into the mermaid directory (the top level director of the mermaid project repository) cd mermaid -# npx is required for first install as volta support for pnpm is not added yet. +# npx is required for first install because volta does not support pnpm yet npx pnpm install +``` + +### 3. Verify Everything Is Working + +Once you have installed pnpm, you can run the `test` script to verify that pnpm is working _and_ that the repository has been cloned correctly: + +```bash pnpm test ``` -**The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** +The `test` script and others are in the top-level `package.json` file. -## 3. Contributing Code +## Contributing Code The basic steps for contributing code are: -1. Create a git branch and work on your code in the branch -2. Write and update tests (unit and perhaps even integration (e2e) tests) (If you do TDD/BDD, the order might be different.) -3. Let users know that things have changed or been added in the documents! This is often overlooked, but _critical_ -4. Submit your code as a _pull request._ +1. **Create** a git branch and work on your code in the branch +2. Write and update **tests** (unit and perhaps even integration (e2e) tests) (If you do TDD/BDD, the order might be different.) +3. **Let users know** that things have changed or been added in the documents! This is often overlooked, but _critical_ +4. **Submit** your code as a _pull request._ ### 1. Create a git branch for your work Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspired approach to branching. +\[TODO - mermaid git diagram here] + Development is done in the `develop` branch. Once development is done we branch a `release` branch from `develop` for testing. @@ -152,6 +171,7 @@ it('should render forks and joins', () => { ``` \[TODO - running the tests against what is expected in development. ] + \[TODO - how to generate new screenshots] .... @@ -182,7 +202,7 @@ we have put in place a process, wherein _knsv, Knut Sveidqvist_ is the primary r **Reminder: Pull Requests should be directed to the develop branch.** -## 4. Contributing Documentation +## Contributing Documentation If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? @@ -200,6 +220,8 @@ We are a little less strict here, it is OK to commit directly in the `develop` b The documentation is located in the `src/docs` directory and organized according to relevant subfolder. +**The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** + The `docs` folder will be automatically generated when committing to `src/docs` and should not be edited manually. We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation using GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) @@ -237,7 +259,7 @@ To edit Docs on GitHub: 5. Submit your changes by clicking the button **Propose file change** at the bottom (by automatic creation of a fork and a new branch). 6. Create a Pull Request of your newly forked branch by clicking the green **Create Pull Request** button. -## 5. Have Questions or Suggestions? +## Have Questions or Suggestions? #### First search to see if someone has already asked (and hopefully been answered) or suggested the same thing. @@ -256,7 +278,7 @@ Log in to [GitHub.com](https://www.github.com), open or append to an issue [usin ### How to Contribute a Suggestion -## 6. Last Words +## Last Words Don't get daunted if it is hard in the beginning. We have a great community with only encouraging words. So, if you get stuck, ask for help and hints in the Slack forum. If you want to show off something good, show it off there. diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index fad0b48a0..fd70d0a72 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -2,12 +2,12 @@ ## Contents -[1. Requirements](#requirements) -[2. Development Installation](#development-installation) -[3. Contributing Code](#contributing-code) -[4. Contributing Documentation](#contributing-documentation) -[5. Have Questions or Suggestions?](#have-questions-or-suggestions) -[6. Last Words](#6-last-words) +- [Technical Requirements and Setup](#technical-requirements-and-setup) +- [Development Installation](#development-installation) +- [Contributing Code](#contributing-code) +- [Contributing Documentation](#contributing-documentation) +- [Have Questions or Suggestions?](#have-questions-or-suggestions) +- [Last Words](#6-last-words) --- @@ -17,41 +17,60 @@ So you want to help? That's great! Here are a few things to get you started on the right path. -## 1. Requirements +## Technical Requirements and Setup These are the main tools we use for working with the code and information (including documentation): - [volta](https://volta.sh/) to manage node versions. - [Node.js](https://nodejs.org/en/). `volta install node` - [pnpm](https://pnpm.io/) package manager. `volta install pnpm` +- [npx](https://docs.npmjs.com/cli/v8/commands/npx) the packaged executor in npm; needed to install pnpm (see below) -## 2. Development Installation _(todo - merge this under development? )_ +### 1. Fork and clone the repository + +In GitHub, you first _fork_ a repository when you are going to make changes and submit pull requests. + +Then you _clone_ a copy to your local development machine (e.g. where you code) to make a copy with all the files to work with. -In GitHub, you _fork_ a repository when you are going to make changes and submit pull requests. [Here is a GitHub document that gives an overview of the process.](https://docs.github.com/en/get-started/quickstart/fork-a-repo) +### 2. Install pnpm + +Once you have cloned the repository onto your development machine, change into the `mermaid` folder so that you can install `pnpm`. You will need `npx` to install pnpm because volta doesn't support it yet. + +Ex: + ```bash -git clone git@github.com:mermaid-js/mermaid.git +# Change into the mermaid directory (the top level director of the mermaid project repository) cd mermaid -# npx is required for first install as volta support for pnpm is not added yet. +# npx is required for first install because volta does not support pnpm yet npx pnpm install +``` + +### 3. Verify Everything Is Working + +Once you have installed pnpm, you can run the `test` script to verify that pnpm is working _and_ that the repository has been cloned correctly: + +```bash pnpm test ``` -**The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** +The `test` script and others are in the top-level `package.json` file. -## 3. Contributing Code +## Contributing Code The basic steps for contributing code are: -1. Create a git branch and work on your code in the branch -2. Write and update tests (unit and perhaps even integration (e2e) tests) (If you do TDD/BDD, the order might be different.) -3. Let users know that things have changed or been added in the documents! This is often overlooked, but _critical_ -4. Submit your code as a _pull request._ +1. **Create** a git branch and work on your code in the branch +2. Write and update **tests** (unit and perhaps even integration (e2e) tests) (If you do TDD/BDD, the order might be different.) +3. **Let users know** that things have changed or been added in the documents! This is often overlooked, but _critical_ +4. **Submit** your code as a _pull request._ ### 1. Create a git branch for your work Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspired approach to branching. +[TODO - mermaid git diagram here] + Development is done in the `develop` branch. Once development is done we branch a `release` branch from `develop` for testing. @@ -146,6 +165,7 @@ it('should render forks and joins', () => { ``` [TODO - running the tests against what is expected in development. ] + [TODO - how to generate new screenshots] .... @@ -176,7 +196,7 @@ we have put in place a process, wherein _knsv, Knut Sveidqvist_ is the primary r **Reminder: Pull Requests should be directed to the develop branch.** -## 4. Contributing Documentation +## Contributing Documentation If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? @@ -194,6 +214,8 @@ We are a little less strict here, it is OK to commit directly in the `develop` b The documentation is located in the `src/docs` directory and organized according to relevant subfolder. +**The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** + The `docs` folder will be automatically generated when committing to `src/docs` and should not be edited manually. We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation using GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) @@ -231,7 +253,7 @@ To edit Docs on GitHub: 5. Submit your changes by clicking the button **Propose file change** at the bottom (by automatic creation of a fork and a new branch). 6. Create a Pull Request of your newly forked branch by clicking the green **Create Pull Request** button. -## 5. Have Questions or Suggestions? +## Have Questions or Suggestions? #### First search to see if someone has already asked (and hopefully been answered) or suggested the same thing. @@ -250,7 +272,7 @@ Log in to [GitHub.com](https://www.github.com), open or append to an issue [usin ### How to Contribute a Suggestion -## 6. Last Words +## Last Words Don't get daunted if it is hard in the beginning. We have a great community with only encouraging words. So, if you get stuck, ask for help and hints in the Slack forum. If you want to show off something good, show it off there. diff --git a/vdocs/community/development.md b/vdocs/community/development.md new file mode 100644 index 000000000..fd70d0a72 --- /dev/null +++ b/vdocs/community/development.md @@ -0,0 +1,281 @@ +# Contributing to Mermaid 🙌 + +## Contents + +- [Technical Requirements and Setup](#technical-requirements-and-setup) +- [Development Installation](#development-installation) +- [Contributing Code](#contributing-code) +- [Contributing Documentation](#contributing-documentation) +- [Have Questions or Suggestions?](#have-questions-or-suggestions) +- [Last Words](#6-last-words) + +--- + +So you want to help? That's great! + +![Image of happy people jumping with excitement](https://media.giphy.com/media/BlVnrxJgTGsUw/giphy.gif) + +Here are a few things to get you started on the right path. + +## Technical Requirements and Setup + +These are the main tools we use for working with the code and information (including documentation): + +- [volta](https://volta.sh/) to manage node versions. +- [Node.js](https://nodejs.org/en/). `volta install node` +- [pnpm](https://pnpm.io/) package manager. `volta install pnpm` +- [npx](https://docs.npmjs.com/cli/v8/commands/npx) the packaged executor in npm; needed to install pnpm (see below) + +### 1. Fork and clone the repository + +In GitHub, you first _fork_ a repository when you are going to make changes and submit pull requests. + +Then you _clone_ a copy to your local development machine (e.g. where you code) to make a copy with all the files to work with. + +[Here is a GitHub document that gives an overview of the process.](https://docs.github.com/en/get-started/quickstart/fork-a-repo) + +### 2. Install pnpm + +Once you have cloned the repository onto your development machine, change into the `mermaid` folder so that you can install `pnpm`. You will need `npx` to install pnpm because volta doesn't support it yet. + +Ex: + +```bash +# Change into the mermaid directory (the top level director of the mermaid project repository) +cd mermaid +# npx is required for first install because volta does not support pnpm yet +npx pnpm install +``` + +### 3. Verify Everything Is Working + +Once you have installed pnpm, you can run the `test` script to verify that pnpm is working _and_ that the repository has been cloned correctly: + +```bash +pnpm test +``` + +The `test` script and others are in the top-level `package.json` file. + +## Contributing Code + +The basic steps for contributing code are: + +1. **Create** a git branch and work on your code in the branch +2. Write and update **tests** (unit and perhaps even integration (e2e) tests) (If you do TDD/BDD, the order might be different.) +3. **Let users know** that things have changed or been added in the documents! This is often overlooked, but _critical_ +4. **Submit** your code as a _pull request._ + +### 1. Create a git branch for your work + +Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspired approach to branching. +[TODO - mermaid git diagram here] + +Development is done in the `develop` branch. + +Once development is done we branch a `release` branch from `develop` for testing. + +Once the release happens we merge the `release` branch with `master` and delete the `release` branch. The live product and on-line documentation are what is in the `master` branch. + +**All new work should be based on the `develop` branch.** + +**When you are ready to do work, always, ALWAYS:** + +1. Make sure you have the most up to date version of the `develop` branch. (fetch or pull to update it) +2. Check out the `develop` branch +3. Create a new branch for your work. Please name the branch following our naming convention below. + +[TODO what about just changing documentation? how about docs/.... ] + +We use the follow naming convention for branches: + +```text + [feature | bug | chore | docs]/[issue number]_[short description using dashes ('-') or underscores ('_') instead of spaces] +``` + +- The first part is the _type_ of change: a feature, bug, chore, or documentation change ('docs') +- followed by a slash (which helps to group like types together in many git tools) +- followed by the issue number +- followed by an underscore ('\_') +- followed by a short text description (but use dashes ('-') or underscores ('\_') instead of spaces) + +** Ex: A new feature described in issue 2945 that adds a new arrow type called 'florbs':** + +`feature/2945_state_diagrams_arrow_florbs` + +** Ex: A bug described in issue 1123 that causes random ugly red text:** +`bug/1123_random_ugly_red_text` + +### 2. Tests + +Tests ensure that each function, module, or part of code does what it says it will do. This is critically +important when other changes are made to ensure that existing code is not broken (no regression). + +The contents of are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. + +Just as important, the tests act as _specifications:_ they specify (or describe) what the code does (or should do). +Whenever someone is new to a section of code, they should be able to read the tests to get a thorough understanding of what it does and why. + +If you are fixing a bug, you should add tests to ensure that your code has actually fixed the bug, to specify/describe what the code is doing, and to ensure the bug doesn't happen again. +(If there had been a test for the situation, the bug never would have happened in the first place.) +You may need to change existing tests if they were inaccurate. + +If you are adding a feature, you will definitely need to add tests. Depending on the size of your feature, you may need to add integration tests. + +#### Unit Tests for Parsing + +If you are adding or changing the text that describes a diagram (the _grammar_), you will need to add (or change) tests for the _parser._ + +#### Integration/End-to-End (e2e) tests + +These test the rendering and visual appearance of the diagrams. +This ensures that the rendering of that feature in the e2e will be reviewed in the release process going forward. Less chance that it breaks! + +To start working with the e2e tests: + +1. Run `pnpm run dev` to start the dev server (or use the `pnpm dev` script) +2. Start **Cypress** by running `pnpm exec cypress open` in the **mermaid** folder (or use the `pnpm cypress:open` script). + +The rendering tests are very straightforward to create. There is a function `imgSnapshotTest`, which takes a diagram in text form and the mermaid options, and it renders that diagram in Cypress. + +When running in CI it will take a snapshot of the rendered diagram and compare it with the snapshot from last build and flag it for review if it differs. + +This is what a rendering test looks like: + +```js +it('should render forks and joins', () => { + imgSnapshotTest( + ` + stateDiagram + state fork_state <<fork>> + [*] --> fork_state + fork_state --> State2 + fork_state --> State3 + + state join_state <<join>> + State2 --> join_state + State3 --> join_state + join_state --> State4 + State4 --> [*] + `, + { logLevel: 0 } + ); + cy.get('svg'); +}); +``` + +[TODO - running the tests against what is expected in development. ] + +[TODO - how to generate new screenshots] +.... + +### 3. Documentation + +If the users have no way to know that things have changed, then you haven't really _fixed_ anything for the users; you've just added to making Mermaid feel broken. +Likewise, if users don't know that there is a new feature that you've implemented, it will forever remain unknown and unused. + +The documentation has to be updated to users know that things have changed and added! + +We know it can sometimes be hard to code _and_ write user documentation. + +[TODO - how to submit documentation changes -- see [Contributing Documentation](#contributing-documentation) + +Create another issue specifically for the documentation. +You will need to help with the PR, but definitely ask for help if you feel stuck. +When it feels hard to write stuff out, explaining it to someone and having that person ask you clarifying questions can often be 80% of the work!] + +When in doubt, write up and submit what you can. It can be clarified and refined later. (With documentation, something is better than nothing!) + +### 4. Submitting your code as a pull request + +We make all changes via Pull Requests. As we have many Pull Requests from developers new to mermaid, \ +we have put in place a process, wherein _knsv, Knut Sveidqvist_ is the primary reviewer of changes and merging pull requests. The process is as follows: + +- Large changes are reviewed by knsv or other developer asked to review by knsv +- Smaller, low-risk changes like dependencies, documentation, etc. can be reviewed and merged by active collaborators + +**Reminder: Pull Requests should be directed to the develop branch.** + +## Contributing Documentation + +If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? + +The docs are located in the `src/docs` folder and are written in Markdown. Just pick the right section and start typing. +If you want to propose changes to the structure of the documentation, such as adding a new section or a new file you do that via the **[sidebar](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. + +> **All the documents displayed in the GitHub.io page are listed in [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. + +The contents of [https://mermaid-js.github.io/mermaid/](https://mermaid-js.github.io/mermaid/) are based on the docs from the `master` branch. +Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. + +### How to Contribute to Documentation + +We are a little less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator. + +The documentation is located in the `src/docs` directory and organized according to relevant subfolder. + +**The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** + +The `docs` folder will be automatically generated when committing to `src/docs` and should not be edited manually. + +We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation using GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) + +- Documentation (we encourage updates to the `src/docs` folder; you can submit them via direct commits) + +The source files for documentation are in `/packages/mermaid/docs` and are written in markdown. + +**_DO NOT CHANGE FILES IN `/docs`_** + +### The official documentation site + +**[The mermaid documentation site](https://mermaid-js.github.io/mermaid/) is powered by [Docsify](https://docsify.js.org), a simple documentation site generator.** + +[TODO - how to preview the documents on a local machine? how to run VitePress?] + +If you want to preview the whole documentation site on your machine, you need to install `docsify-cli`: + +Markdown is used to format the text, for more information about Markdown [see the GitHub Markdown help page](https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax). + +To edit Docs on your computer: + +1. Find the Markdown file (.md) to edit in the [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs) directory in the `develop` branch. +2. Create a fork of the develop branch. +3. Make changes or add new documentation. +4. Commit changes to your fork and push it to GitHub. +5. Create a Pull Request of your fork. + +To edit Docs on GitHub: + +1. Login to [GitHub.com](https://www.github.com). +2. Navigate to [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). +3. To edit a file, click the pencil icon at the top-right of the file contents panel. +4. Describe what you changed in the **Propose file change** section, located at the bottom of the page. +5. Submit your changes by clicking the button **Propose file change** at the bottom (by automatic creation of a fork and a new branch). +6. Create a Pull Request of your newly forked branch by clicking the green **Create Pull Request** button. + +## Have Questions or Suggestions? + +#### First search to see if someone has already asked (and hopefully been answered) or suggested the same thing. + +- search in the Discussions +- search in the open Issues + +If you find an open issue or discussion thread that is similar to your question but isn't answered, +you can let us know that you are also interested in it. [TODO: describe +1, upvote] +This helps the team know the relative interest in something and helps them set priorities and assignments. + +Feel free to add to the discussion on the issue or topic. + +If you can't find anything that already addresses your question or suggestion, _open a new issue:_ + +Log in to [GitHub.com](https://www.github.com), open or append to an issue [using the GitHub issue tracker of the mermaid-js repository](https://github.com/mermaid-js/mermaid/issues?q=is%3Aissue+is%3Aopen+label%3A%22Area%3A+Documentation%22). + +### How to Contribute a Suggestion + +## Last Words + +Don't get daunted if it is hard in the beginning. We have a great community with only encouraging words. So, if you get stuck, ask for help and hints in the Slack forum. If you want to show off something good, show it off there. + +[Join our Slack community if you want closer contact!](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) + +![Image of superhero wishing you good luck](https://media.giphy.com/media/l49JHz7kJvl6MCj3G/giphy.gif) From dabda9d4ef3169f0ff46a988af5aa8767ac2614f Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Thu, 3 Nov 2022 22:29:15 -0700 Subject: [PATCH 004/255] CONTRIBUTING.md is note (with link) to development.md on doc site --- CONTRIBUTING.md | 155 +----------------------------------------------- 1 file changed, 1 insertion(+), 154 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cf199c39b..0f8ae3cae 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,156 +1,3 @@ # Contributing -So you want to help? That's great! - -![Happy people jumping with excitement](https://media.giphy.com/media/BlVnrxJgTGsUw/giphy.gif) - -Here are a few things to know to get you started on the right path. - -Below link will help you making a copy of the repository in your local system. - -https://docs.github.com/en/get-started/quickstart/fork-a-repo - -## Requirements - -- [volta](https://volta.sh/) to manage node versions. -- [Node.js](https://nodejs.org/en/). `volta install node` -- [pnpm](https://pnpm.io/) package manager. `volta install pnpm` - -## Development Installation - -```bash -git clone git@github.com:mermaid-js/mermaid.git -cd mermaid -# npx is required for first install as volta support for pnpm is not added yet. -npx pnpm install -pnpm test -``` - -## Committing code - -We make all changes via pull requests. As we have many pull requests from developers new to mermaid, the current approach is to have _knsv, Knut Sveidqvist_ as a main reviewer of changes and merging pull requests. More precisely like this: - -- Large changes reviewed by knsv or other developer asked to review by knsv -- Smaller low-risk changes like dependencies, documentation, etc. can be merged by active collaborators -- Documentation (updates to the `package/mermaid/src/docs` folder is also allowed via direct commits) - -To commit code, create a branch, let it start with the type like feature or bug followed by the issue number for reference and some describing text. - -One example: - -`feature/945_state_diagrams` - -Another: - -`bug/123_nasty_bug_branch` - -## Committing documentation - -Less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator. - -The documentation is written in **Markdown**. For more information about Markdown [see the GitHub Markdown help page](https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax). - -### Documentation source files are in [`/packages/mermaid/src/docs`](packages/mermaid/src/docs) - -The source files for the project documentation are located in the [`/packages/mermaid/src/docs`](packages/mermaid/src/docs) directory. This is where you should make changes. -The files under `/packages/mermaid/src/docs` are processed to generate the published documentation, and the resulting files are put into the `/docs` directory. - -```mermaid -flowchart LR - classDef default fill:#fff,color:black,stroke:black - - source["files in /packages/mermaid/src/docs\n(changes should be done here)"] -- automatic processing\nto generate the final documentation--> published["files in /docs\ndisplayed on the official documentation site"] - -``` - -**_DO NOT CHANGE FILES IN `/docs`_** - -### The official documentation site - -**[The mermaid documentation site](https://mermaid-js.github.io/mermaid/) is powered by [Vitepress](https://vitepress.vuejs.org/), a simple documentation site generator.** - -If you want to preview the whole documentation site on your machine: - -```sh -cd packages/mermaid -pnpm i -pnpm docs:dev -``` - -You can now build and serve the documentation site: - -```sh -pnpm docs:serve -``` - -## Branching - -Going forward we will use a git flow inspired approach to branching. So development is done in develop, to do the development in the develop. - -Once development is done we branch a release branch from develop for testing. - -Once the release happens we merge the release branch to master and kill the release branch. - -This means... **branch off your pull request from develop** - -## Content of a pull request - -A new feature has been born. Great! But without the steps below it might just ... fade away ... - -### **Add unit tests for the parsing part** - -This is important so that, if someone else does a change to the grammar that does not know about this great feature, gets notified early on when that change breaks the parser. Another important aspect is that without proper parsing tests refactoring is pretty much impossible. - -### **Add e2e tests** - -This tests the rendering and visual appearance of the diagram. This ensures that the rendering of that feature in the e2e will be reviewed in the release process going forward. Less chance that it breaks! - -To start working with the e2e tests, run `pnpm run dev` to start the dev server, after that start cypress by running `pnpm exec cypress open` in the mermaid folder. - -The rendering tests are very straightforward to create. There is a function imgSnapshotTest. This function takes a diagram in text form, the mermaid options and renders that diagram in cypress. - -When running in ci it will take a snapshot of the rendered diagram and compare it with the snapshot from last build and flag for review it if it differs. - -This is what a rendering test looks like: - -```javascript -it('should render forks and joins', () => { - imgSnapshotTest( - ` - stateDiagram - state fork_state <<fork>> - [*] --> fork_state - fork_state --> State2 - fork_state --> State3 - - state join_state <<join>> - State2 --> join_state - State3 --> join_state - join_state --> State4 - State4 --> [*] - `, - { logLevel: 0 } - ); - cy.get('svg'); -}); -``` - -### **Add documentation for it** - -Finally, if it is not in the documentation, no one will know about it and then **no one will use it**. Wouldn't that be sad? With all the effort that was put into the feature? - -The source files for documentation are in `/packages/mermaid/src/docs` and are written in markdown. Just pick the right section and start typing. See the [Committing Documentation](#committing-documentation) section for more about how the documentation is generated. - -#### Adding to or changing the documentation organization - -If you want to add a new section or change the organization (structure), then you need to make sure to **change the side navigation** in `mermaid/src/docs/.vitepress/config.js`. - -When changes are committed and then released, they become part of the `master` branch and become part of the published documentation on https://mermaid-js.github.io/mermaid/ - -## Last words - -Don't get daunted if it is hard in the beginning. We have a great community with only encouraging words. So if you get stuck, ask for help and hints in the slack forum. If you want to show off something good, show it off there. - -[Join our slack community if you want closer contact!](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) - -![A superhero wishing you good luck](https://media.giphy.com/media/l49JHz7kJvl6MCj3G/giphy.gif) +[Please read about how to contribute documentation and code on the Mermaid documentation site.](https://mermaid-js.github.io/mermaid/#/development) From 5eee76764d4b5394e6836b6bc9dbfa0162cd9823 Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Thu, 3 Nov 2022 22:29:48 -0700 Subject: [PATCH 005/255] add TBD/comments in 'Contribute to Documentation....' section --- vdocs/community/development.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/vdocs/community/development.md b/vdocs/community/development.md index fd70d0a72..453e86db8 100644 --- a/vdocs/community/development.md +++ b/vdocs/community/development.md @@ -210,10 +210,16 @@ Updates committed to the `master` branch are reflected in the [Mermaid Docs](htt ### How to Contribute to Documentation +**_[Note: This entire section needs to be updated.]_** + We are a little less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator. The documentation is located in the `src/docs` directory and organized according to relevant subfolder. +_- documentation is now in `vdocs/....`_ + +_- how to run the vdocs server (explain vdoc tasks in package.json)_ + **The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** The `docs` folder will be automatically generated when committing to `src/docs` and should not be edited manually. From e02240450af3141acb355292d8c8685a1979469b Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Thu, 3 Nov 2022 22:36:59 -0700 Subject: [PATCH 006/255] delete vdocs dir; it not longer exists --- vdocs/community/development.md | 287 --------------------------------- 1 file changed, 287 deletions(-) delete mode 100644 vdocs/community/development.md diff --git a/vdocs/community/development.md b/vdocs/community/development.md deleted file mode 100644 index 453e86db8..000000000 --- a/vdocs/community/development.md +++ /dev/null @@ -1,287 +0,0 @@ -# Contributing to Mermaid 🙌 - -## Contents - -- [Technical Requirements and Setup](#technical-requirements-and-setup) -- [Development Installation](#development-installation) -- [Contributing Code](#contributing-code) -- [Contributing Documentation](#contributing-documentation) -- [Have Questions or Suggestions?](#have-questions-or-suggestions) -- [Last Words](#6-last-words) - ---- - -So you want to help? That's great! - -![Image of happy people jumping with excitement](https://media.giphy.com/media/BlVnrxJgTGsUw/giphy.gif) - -Here are a few things to get you started on the right path. - -## Technical Requirements and Setup - -These are the main tools we use for working with the code and information (including documentation): - -- [volta](https://volta.sh/) to manage node versions. -- [Node.js](https://nodejs.org/en/). `volta install node` -- [pnpm](https://pnpm.io/) package manager. `volta install pnpm` -- [npx](https://docs.npmjs.com/cli/v8/commands/npx) the packaged executor in npm; needed to install pnpm (see below) - -### 1. Fork and clone the repository - -In GitHub, you first _fork_ a repository when you are going to make changes and submit pull requests. - -Then you _clone_ a copy to your local development machine (e.g. where you code) to make a copy with all the files to work with. - -[Here is a GitHub document that gives an overview of the process.](https://docs.github.com/en/get-started/quickstart/fork-a-repo) - -### 2. Install pnpm - -Once you have cloned the repository onto your development machine, change into the `mermaid` folder so that you can install `pnpm`. You will need `npx` to install pnpm because volta doesn't support it yet. - -Ex: - -```bash -# Change into the mermaid directory (the top level director of the mermaid project repository) -cd mermaid -# npx is required for first install because volta does not support pnpm yet -npx pnpm install -``` - -### 3. Verify Everything Is Working - -Once you have installed pnpm, you can run the `test` script to verify that pnpm is working _and_ that the repository has been cloned correctly: - -```bash -pnpm test -``` - -The `test` script and others are in the top-level `package.json` file. - -## Contributing Code - -The basic steps for contributing code are: - -1. **Create** a git branch and work on your code in the branch -2. Write and update **tests** (unit and perhaps even integration (e2e) tests) (If you do TDD/BDD, the order might be different.) -3. **Let users know** that things have changed or been added in the documents! This is often overlooked, but _critical_ -4. **Submit** your code as a _pull request._ - -### 1. Create a git branch for your work - -Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspired approach to branching. -[TODO - mermaid git diagram here] - -Development is done in the `develop` branch. - -Once development is done we branch a `release` branch from `develop` for testing. - -Once the release happens we merge the `release` branch with `master` and delete the `release` branch. The live product and on-line documentation are what is in the `master` branch. - -**All new work should be based on the `develop` branch.** - -**When you are ready to do work, always, ALWAYS:** - -1. Make sure you have the most up to date version of the `develop` branch. (fetch or pull to update it) -2. Check out the `develop` branch -3. Create a new branch for your work. Please name the branch following our naming convention below. - -[TODO what about just changing documentation? how about docs/.... ] - -We use the follow naming convention for branches: - -```text - [feature | bug | chore | docs]/[issue number]_[short description using dashes ('-') or underscores ('_') instead of spaces] -``` - -- The first part is the _type_ of change: a feature, bug, chore, or documentation change ('docs') -- followed by a slash (which helps to group like types together in many git tools) -- followed by the issue number -- followed by an underscore ('\_') -- followed by a short text description (but use dashes ('-') or underscores ('\_') instead of spaces) - -** Ex: A new feature described in issue 2945 that adds a new arrow type called 'florbs':** - -`feature/2945_state_diagrams_arrow_florbs` - -** Ex: A bug described in issue 1123 that causes random ugly red text:** -`bug/1123_random_ugly_red_text` - -### 2. Tests - -Tests ensure that each function, module, or part of code does what it says it will do. This is critically -important when other changes are made to ensure that existing code is not broken (no regression). - -The contents of are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. - -Just as important, the tests act as _specifications:_ they specify (or describe) what the code does (or should do). -Whenever someone is new to a section of code, they should be able to read the tests to get a thorough understanding of what it does and why. - -If you are fixing a bug, you should add tests to ensure that your code has actually fixed the bug, to specify/describe what the code is doing, and to ensure the bug doesn't happen again. -(If there had been a test for the situation, the bug never would have happened in the first place.) -You may need to change existing tests if they were inaccurate. - -If you are adding a feature, you will definitely need to add tests. Depending on the size of your feature, you may need to add integration tests. - -#### Unit Tests for Parsing - -If you are adding or changing the text that describes a diagram (the _grammar_), you will need to add (or change) tests for the _parser._ - -#### Integration/End-to-End (e2e) tests - -These test the rendering and visual appearance of the diagrams. -This ensures that the rendering of that feature in the e2e will be reviewed in the release process going forward. Less chance that it breaks! - -To start working with the e2e tests: - -1. Run `pnpm run dev` to start the dev server (or use the `pnpm dev` script) -2. Start **Cypress** by running `pnpm exec cypress open` in the **mermaid** folder (or use the `pnpm cypress:open` script). - -The rendering tests are very straightforward to create. There is a function `imgSnapshotTest`, which takes a diagram in text form and the mermaid options, and it renders that diagram in Cypress. - -When running in CI it will take a snapshot of the rendered diagram and compare it with the snapshot from last build and flag it for review if it differs. - -This is what a rendering test looks like: - -```js -it('should render forks and joins', () => { - imgSnapshotTest( - ` - stateDiagram - state fork_state <<fork>> - [*] --> fork_state - fork_state --> State2 - fork_state --> State3 - - state join_state <<join>> - State2 --> join_state - State3 --> join_state - join_state --> State4 - State4 --> [*] - `, - { logLevel: 0 } - ); - cy.get('svg'); -}); -``` - -[TODO - running the tests against what is expected in development. ] - -[TODO - how to generate new screenshots] -.... - -### 3. Documentation - -If the users have no way to know that things have changed, then you haven't really _fixed_ anything for the users; you've just added to making Mermaid feel broken. -Likewise, if users don't know that there is a new feature that you've implemented, it will forever remain unknown and unused. - -The documentation has to be updated to users know that things have changed and added! - -We know it can sometimes be hard to code _and_ write user documentation. - -[TODO - how to submit documentation changes -- see [Contributing Documentation](#contributing-documentation) - -Create another issue specifically for the documentation. -You will need to help with the PR, but definitely ask for help if you feel stuck. -When it feels hard to write stuff out, explaining it to someone and having that person ask you clarifying questions can often be 80% of the work!] - -When in doubt, write up and submit what you can. It can be clarified and refined later. (With documentation, something is better than nothing!) - -### 4. Submitting your code as a pull request - -We make all changes via Pull Requests. As we have many Pull Requests from developers new to mermaid, \ -we have put in place a process, wherein _knsv, Knut Sveidqvist_ is the primary reviewer of changes and merging pull requests. The process is as follows: - -- Large changes are reviewed by knsv or other developer asked to review by knsv -- Smaller, low-risk changes like dependencies, documentation, etc. can be reviewed and merged by active collaborators - -**Reminder: Pull Requests should be directed to the develop branch.** - -## Contributing Documentation - -If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? - -The docs are located in the `src/docs` folder and are written in Markdown. Just pick the right section and start typing. -If you want to propose changes to the structure of the documentation, such as adding a new section or a new file you do that via the **[sidebar](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. - -> **All the documents displayed in the GitHub.io page are listed in [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. - -The contents of [https://mermaid-js.github.io/mermaid/](https://mermaid-js.github.io/mermaid/) are based on the docs from the `master` branch. -Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. - -### How to Contribute to Documentation - -**_[Note: This entire section needs to be updated.]_** - -We are a little less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator. - -The documentation is located in the `src/docs` directory and organized according to relevant subfolder. - -_- documentation is now in `vdocs/....`_ - -_- how to run the vdocs server (explain vdoc tasks in package.json)_ - -**The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** - -The `docs` folder will be automatically generated when committing to `src/docs` and should not be edited manually. - -We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation using GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) - -- Documentation (we encourage updates to the `src/docs` folder; you can submit them via direct commits) - -The source files for documentation are in `/packages/mermaid/docs` and are written in markdown. - -**_DO NOT CHANGE FILES IN `/docs`_** - -### The official documentation site - -**[The mermaid documentation site](https://mermaid-js.github.io/mermaid/) is powered by [Docsify](https://docsify.js.org), a simple documentation site generator.** - -[TODO - how to preview the documents on a local machine? how to run VitePress?] - -If you want to preview the whole documentation site on your machine, you need to install `docsify-cli`: - -Markdown is used to format the text, for more information about Markdown [see the GitHub Markdown help page](https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax). - -To edit Docs on your computer: - -1. Find the Markdown file (.md) to edit in the [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs) directory in the `develop` branch. -2. Create a fork of the develop branch. -3. Make changes or add new documentation. -4. Commit changes to your fork and push it to GitHub. -5. Create a Pull Request of your fork. - -To edit Docs on GitHub: - -1. Login to [GitHub.com](https://www.github.com). -2. Navigate to [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). -3. To edit a file, click the pencil icon at the top-right of the file contents panel. -4. Describe what you changed in the **Propose file change** section, located at the bottom of the page. -5. Submit your changes by clicking the button **Propose file change** at the bottom (by automatic creation of a fork and a new branch). -6. Create a Pull Request of your newly forked branch by clicking the green **Create Pull Request** button. - -## Have Questions or Suggestions? - -#### First search to see if someone has already asked (and hopefully been answered) or suggested the same thing. - -- search in the Discussions -- search in the open Issues - -If you find an open issue or discussion thread that is similar to your question but isn't answered, -you can let us know that you are also interested in it. [TODO: describe +1, upvote] -This helps the team know the relative interest in something and helps them set priorities and assignments. - -Feel free to add to the discussion on the issue or topic. - -If you can't find anything that already addresses your question or suggestion, _open a new issue:_ - -Log in to [GitHub.com](https://www.github.com), open or append to an issue [using the GitHub issue tracker of the mermaid-js repository](https://github.com/mermaid-js/mermaid/issues?q=is%3Aissue+is%3Aopen+label%3A%22Area%3A+Documentation%22). - -### How to Contribute a Suggestion - -## Last Words - -Don't get daunted if it is hard in the beginning. We have a great community with only encouraging words. So, if you get stuck, ask for help and hints in the Slack forum. If you want to show off something good, show it off there. - -[Join our Slack community if you want closer contact!](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) - -![Image of superhero wishing you good luck](https://media.giphy.com/media/l49JHz7kJvl6MCj3G/giphy.gif) From 16d1610d75f625c5b09516be9cc9b20df52a945d Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Mon, 14 Nov 2022 15:05:41 -0800 Subject: [PATCH 007/255] clarify section headings; add TODO --- docs/community/development.md | 45 +++++++++---------- .../mermaid/src/docs/community/development.md | 45 +++++++++---------- 2 files changed, 44 insertions(+), 46 deletions(-) diff --git a/docs/community/development.md b/docs/community/development.md index 2f57fc394..d2d5b9fae 100644 --- a/docs/community/development.md +++ b/docs/community/development.md @@ -4,16 +4,15 @@ > > ## Please edit the corresponding file in [/packages/mermaid/src/docs/community/development.md](../../packages/mermaid/src/docs/community/development.md). -# Contributing to Mermaid 🙌 +# Contributing to Mermaid ## Contents - [Technical Requirements and Setup](#technical-requirements-and-setup) -- [Development Installation](#development-installation) - [Contributing Code](#contributing-code) - [Contributing Documentation](#contributing-documentation) -- [Have Questions or Suggestions?](#have-questions-or-suggestions) -- [Last Words](#6-last-words) +- [Questions or Suggestions?](#questions-or-suggestions) +- [Last Words](#last-words) --- @@ -25,12 +24,12 @@ Here are a few things to get you started on the right path. ## Technical Requirements and Setup -These are the main tools we use for working with the code and information (including documentation): +These are the main tools we use for working with the code and documentation: - [volta](https://volta.sh/) to manage node versions. - [Node.js](https://nodejs.org/en/). `volta install node` - [pnpm](https://pnpm.io/) package manager. `volta install pnpm` -- [npx](https://docs.npmjs.com/cli/v8/commands/npx) the packaged executor in npm; needed to install pnpm (see below) +- [npx](https://docs.npmjs.com/cli/v8/commands/npx) the packaged executor in npm. This is needed [to install pnpm.](#2-install-pnpm) ### 1. Fork and clone the repository @@ -72,7 +71,7 @@ The basic steps for contributing code are: 3. **Let users know** that things have changed or been added in the documents! This is often overlooked, but _critical_ 4. **Submit** your code as a _pull request._ -### 1. Create a git branch for your work +### 1. Checkout a git branch Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspired approach to branching. \[TODO - mermaid git diagram here] @@ -91,8 +90,6 @@ Once the release happens we merge the `release` branch with `master` and delete 2. Check out the `develop` branch 3. Create a new branch for your work. Please name the branch following our naming convention below. -\[TODO what about just changing documentation? how about docs/.... ] - We use the follow naming convention for branches: ```text @@ -105,21 +102,19 @@ We use the follow naming convention for branches: - followed by an underscore ('\_') - followed by a short text description (but use dashes ('-') or underscores ('\_') instead of spaces) -\*\* Ex: A new feature described in issue 2945 that adds a new arrow type called 'florbs':\*\* +**Ex: A new feature described in issue 2945 that adds a new arrow type called 'florbs' to state diagrams** -`feature/2945_state_diagrams_arrow_florbs` +`feature/2945_state_diagram_arrow_florbs` -\*\* Ex: A bug described in issue 1123 that causes random ugly red text:\*\* -`bug/1123_random_ugly_red_text` +**Ex: A bug described in issue 1123 that causes random ugly red text** +`bug/1123_fix_random_ugly_red_text` -### 2. Tests +### 2. Write Tests Tests ensure that each function, module, or part of code does what it says it will do. This is critically important when other changes are made to ensure that existing code is not broken (no regression). -The contents of are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. - -Just as important, the tests act as _specifications:_ they specify (or describe) what the code does (or should do). +Just as important, the tests act as _specifications:_ they specify what the code does (or should do). Whenever someone is new to a section of code, they should be able to read the tests to get a thorough understanding of what it does and why. If you are fixing a bug, you should add tests to ensure that your code has actually fixed the bug, to specify/describe what the code is doing, and to ensure the bug doesn't happen again. @@ -175,7 +170,7 @@ it('should render forks and joins', () => { \[TODO - how to generate new screenshots] .... -### 3. Documentation +### 3. Update Documentation If the users have no way to know that things have changed, then you haven't really _fixed_ anything for the users; you've just added to making Mermaid feel broken. Likewise, if users don't know that there is a new feature that you've implemented, it will forever remain unknown and unused. @@ -192,18 +187,20 @@ When it feels hard to write stuff out, explaining it to someone and having that When in doubt, write up and submit what you can. It can be clarified and refined later. (With documentation, something is better than nothing!) -### 4. Submitting your code as a pull request +### 4. Submit your pull request -We make all changes via Pull Requests. As we have many Pull Requests from developers new to mermaid, \ -we have put in place a process, wherein _knsv, Knut Sveidqvist_ is the primary reviewer of changes and merging pull requests. The process is as follows: +We make all changes via Pull Requests (PRs). As we have many Pull Requests from developers new to Mermaid, \ +we have put in place a process wherein _knsv, Knut Sveidqvist_ is the primary reviewer of changes and merging pull requests. The process is as follows: - Large changes are reviewed by knsv or other developer asked to review by knsv - Smaller, low-risk changes like dependencies, documentation, etc. can be reviewed and merged by active collaborators -**Reminder: Pull Requests should be directed to the develop branch.** +**Reminder: Pull Requests should be submitted to the develop branch.** ## Contributing Documentation +\[TODO: This section is still a WIP. It still needs revision.] + If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? The docs are located in the `src/docs` folder and are written in Markdown. Just pick the right section and start typing. @@ -220,6 +217,8 @@ We are a little less strict here, it is OK to commit directly in the `develop` b The documentation is located in the `src/docs` directory and organized according to relevant subfolder. +The contents of are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. + **The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** The `docs` folder will be automatically generated when committing to `src/docs` and should not be edited manually. @@ -259,7 +258,7 @@ To edit Docs on GitHub: 5. Submit your changes by clicking the button **Propose file change** at the bottom (by automatic creation of a fork and a new branch). 6. Create a Pull Request of your newly forked branch by clicking the green **Create Pull Request** button. -## Have Questions or Suggestions? +## Questions or Suggestions? #### First search to see if someone has already asked (and hopefully been answered) or suggested the same thing. diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index fd70d0a72..e29347adf 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -1,13 +1,11 @@ -# Contributing to Mermaid 🙌 +# Contributing to Mermaid ## Contents - - [Technical Requirements and Setup](#technical-requirements-and-setup) -- [Development Installation](#development-installation) - [Contributing Code](#contributing-code) - [Contributing Documentation](#contributing-documentation) -- [Have Questions or Suggestions?](#have-questions-or-suggestions) -- [Last Words](#6-last-words) +- [Questions or Suggestions?](#questions-or-suggestions) +- [Last Words](#last-words) --- @@ -19,12 +17,12 @@ Here are a few things to get you started on the right path. ## Technical Requirements and Setup -These are the main tools we use for working with the code and information (including documentation): +These are the main tools we use for working with the code and documentation: - [volta](https://volta.sh/) to manage node versions. - [Node.js](https://nodejs.org/en/). `volta install node` - [pnpm](https://pnpm.io/) package manager. `volta install pnpm` -- [npx](https://docs.npmjs.com/cli/v8/commands/npx) the packaged executor in npm; needed to install pnpm (see below) +- [npx](https://docs.npmjs.com/cli/v8/commands/npx) the packaged executor in npm. This is needed [to install pnpm.](#2-install-pnpm) ### 1. Fork and clone the repository @@ -66,7 +64,7 @@ The basic steps for contributing code are: 3. **Let users know** that things have changed or been added in the documents! This is often overlooked, but _critical_ 4. **Submit** your code as a _pull request._ -### 1. Create a git branch for your work +### 1. Checkout a git branch Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspired approach to branching. [TODO - mermaid git diagram here] @@ -85,7 +83,6 @@ Once the release happens we merge the `release` branch with `master` and delete 2. Check out the `develop` branch 3. Create a new branch for your work. Please name the branch following our naming convention below. -[TODO what about just changing documentation? how about docs/.... ] We use the follow naming convention for branches: @@ -99,21 +96,19 @@ We use the follow naming convention for branches: - followed by an underscore ('\_') - followed by a short text description (but use dashes ('-') or underscores ('\_') instead of spaces) -** Ex: A new feature described in issue 2945 that adds a new arrow type called 'florbs':** +**Ex: A new feature described in issue 2945 that adds a new arrow type called 'florbs' to state diagrams** -`feature/2945_state_diagrams_arrow_florbs` +`feature/2945_state_diagram_arrow_florbs` -** Ex: A bug described in issue 1123 that causes random ugly red text:** -`bug/1123_random_ugly_red_text` +**Ex: A bug described in issue 1123 that causes random ugly red text** +`bug/1123_fix_random_ugly_red_text` -### 2. Tests +### 2. Write Tests Tests ensure that each function, module, or part of code does what it says it will do. This is critically important when other changes are made to ensure that existing code is not broken (no regression). -The contents of are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. - -Just as important, the tests act as _specifications:_ they specify (or describe) what the code does (or should do). +Just as important, the tests act as _specifications:_ they specify what the code does (or should do). Whenever someone is new to a section of code, they should be able to read the tests to get a thorough understanding of what it does and why. If you are fixing a bug, you should add tests to ensure that your code has actually fixed the bug, to specify/describe what the code is doing, and to ensure the bug doesn't happen again. @@ -169,7 +164,7 @@ it('should render forks and joins', () => { [TODO - how to generate new screenshots] .... -### 3. Documentation +### 3. Update Documentation If the users have no way to know that things have changed, then you haven't really _fixed_ anything for the users; you've just added to making Mermaid feel broken. Likewise, if users don't know that there is a new feature that you've implemented, it will forever remain unknown and unused. @@ -186,18 +181,20 @@ When it feels hard to write stuff out, explaining it to someone and having that When in doubt, write up and submit what you can. It can be clarified and refined later. (With documentation, something is better than nothing!) -### 4. Submitting your code as a pull request +### 4. Submit your pull request -We make all changes via Pull Requests. As we have many Pull Requests from developers new to mermaid, \ -we have put in place a process, wherein _knsv, Knut Sveidqvist_ is the primary reviewer of changes and merging pull requests. The process is as follows: +We make all changes via Pull Requests (PRs). As we have many Pull Requests from developers new to Mermaid, \ +we have put in place a process wherein _knsv, Knut Sveidqvist_ is the primary reviewer of changes and merging pull requests. The process is as follows: - Large changes are reviewed by knsv or other developer asked to review by knsv - Smaller, low-risk changes like dependencies, documentation, etc. can be reviewed and merged by active collaborators -**Reminder: Pull Requests should be directed to the develop branch.** +**Reminder: Pull Requests should be submitted to the develop branch.** ## Contributing Documentation +[TODO: This section is still a WIP. It still needs revision.] + If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? The docs are located in the `src/docs` folder and are written in Markdown. Just pick the right section and start typing. @@ -214,6 +211,8 @@ We are a little less strict here, it is OK to commit directly in the `develop` b The documentation is located in the `src/docs` directory and organized according to relevant subfolder. +The contents of are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. + **The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** The `docs` folder will be automatically generated when committing to `src/docs` and should not be edited manually. @@ -253,7 +252,7 @@ To edit Docs on GitHub: 5. Submit your changes by clicking the button **Propose file change** at the bottom (by automatic creation of a fork and a new branch). 6. Create a Pull Request of your newly forked branch by clicking the green **Create Pull Request** button. -## Have Questions or Suggestions? +## Questions or Suggestions? #### First search to see if someone has already asked (and hopefully been answered) or suggested the same thing. From 548ae5b023225b0fe79f9a77dfa37a372be1bfa6 Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Mon, 14 Nov 2022 15:06:38 -0800 Subject: [PATCH 008/255] sidebar: add sub-entries for Development/contribution --- .../mermaid/src/docs/.vitepress/config.ts | 65 +++++++++++++++++-- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/packages/mermaid/src/docs/.vitepress/config.ts b/packages/mermaid/src/docs/.vitepress/config.ts index 271737dfd..ee57b7973 100644 --- a/packages/mermaid/src/docs/.vitepress/config.ts +++ b/packages/mermaid/src/docs/.vitepress/config.ts @@ -152,13 +152,70 @@ function sidebarCommunity() { collapsible: true, items: [ { text: 'Overview for Beginners', link: '/community/n00b-overview' }, - { - text: 'Development and Contribution', - link: '/community/development', - }, + ...sidebarCommunityDevelopContribute(), { text: 'Adding Diagrams', link: '/community/newDiagram' }, { text: 'Security', link: '/community/security' }, ], }, ]; } + +// Development and Contributing +function sidebarCommunityDevelopContribute() { + const PAGE_PATH = '/community/development'; + return [ + { + text: 'Contributing to Mermaid', + link: PAGE_PATH + '#contributing-to-mermaid', + collapsible: true, + items: [ + { + text: 'Technical Requirements and Setup', + link: pathToId(PAGE_PATH, 'technical-requirements-and-setup'), + }, + { + text: 'Contributing Code', + link: pathToId(PAGE_PATH, 'contributing-code'), + collapsible: true, + items: [ + { + text: '1. Checkout a git branch', + link: pathToId(PAGE_PATH, '_1-checkout-a-git-branch'), + }, + { text: '2. Write Tests', link: pathToId(PAGE_PATH, '_2-write-tests') }, + { + text: '3. Update Documentation', + link: pathToId(PAGE_PATH, '_3-update-documentation'), + }, + { + text: '4. Submit your pull request', + link: pathToId(PAGE_PATH, '_4-submit-your-pull-request'), + }, + ], + }, + { + text: 'Contributing Documentation', + link: pathToId(PAGE_PATH, 'contributing-documentation'), + }, + { + text: 'Questions or Suggestions?', + link: pathToId(PAGE_PATH, 'questions-or-suggestions'), + }, + { + text: 'Last Words', + link: pathToId(PAGE_PATH, 'last-words'), + }, + ], + }, + ]; +} + +/** + * Return a string that puts together the pagePage, a '#', then the given id + * @param pagePath + * @param id + * @returns the fully formed path + */ +function pathToId(pagePath: string, id = ''): string { + return pagePath + '#' + id; +} From 535a1fc8cf07bb929b8d598344b025dcf16c0d22 Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Tue, 15 Nov 2022 05:14:58 -0800 Subject: [PATCH 009/255] add mermaid diagram --- docs/community/development.md | 13 +++++++++++-- packages/mermaid/src/docs/community/development.md | 9 ++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/docs/community/development.md b/docs/community/development.md index d2d5b9fae..7616b2415 100644 --- a/docs/community/development.md +++ b/docs/community/development.md @@ -66,7 +66,17 @@ The `test` script and others are in the top-level `package.json` file. The basic steps for contributing code are: -1. **Create** a git branch and work on your code in the branch +```mermaid-example +graph LR + git[1. Checkout a git branch] --> codeTest[2. write tests and code] --> doc[3. update documentation] --> submit[4.submit a PR] +``` + +```mermaid +graph LR + git[1. Checkout a git branch] --> codeTest[2. write tests and code] --> doc[3. update documentation] --> submit[4.submit a PR] +``` + +1. **Create** and checkout a git branch and work on your code in the branch 2. Write and update **tests** (unit and perhaps even integration (e2e) tests) (If you do TDD/BDD, the order might be different.) 3. **Let users know** that things have changed or been added in the documents! This is often overlooked, but _critical_ 4. **Submit** your code as a _pull request._ @@ -74,7 +84,6 @@ The basic steps for contributing code are: ### 1. Checkout a git branch Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspired approach to branching. -\[TODO - mermaid git diagram here] Development is done in the `develop` branch. diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index e29347adf..58906b134 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -59,7 +59,12 @@ The `test` script and others are in the top-level `package.json` file. The basic steps for contributing code are: -1. **Create** a git branch and work on your code in the branch +```mermaid +graph LR + git[1. Checkout a git branch] --> codeTest[2. write tests and code] --> doc[3. update documentation] --> submit[4.submit a PR] +``` + +1. **Create** and checkout a git branch and work on your code in the branch 2. Write and update **tests** (unit and perhaps even integration (e2e) tests) (If you do TDD/BDD, the order might be different.) 3. **Let users know** that things have changed or been added in the documents! This is often overlooked, but _critical_ 4. **Submit** your code as a _pull request._ @@ -67,7 +72,6 @@ The basic steps for contributing code are: ### 1. Checkout a git branch Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspired approach to branching. -[TODO - mermaid git diagram here] Development is done in the `develop` branch. @@ -83,7 +87,6 @@ Once the release happens we merge the `release` branch with `master` and delete 2. Check out the `develop` branch 3. Create a new branch for your work. Please name the branch following our naming convention below. - We use the follow naming convention for branches: ```text From 950832e56b9389bde6c7f34672da8e6e2ee6ecb3 Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Tue, 15 Nov 2022 12:07:22 -0800 Subject: [PATCH 010/255] Minor wording changes to Tech Reqs/Setup --- docs/community/development.md | 34 +++++++++++++------ .../mermaid/src/docs/community/development.md | 33 ++++++++++++------ 2 files changed, 45 insertions(+), 22 deletions(-) diff --git a/docs/community/development.md b/docs/community/development.md index 7616b2415..d9c02401a 100644 --- a/docs/community/development.md +++ b/docs/community/development.md @@ -24,14 +24,22 @@ Here are a few things to get you started on the right path. ## Technical Requirements and Setup -These are the main tools we use for working with the code and documentation: +### Technical Requirements + +These are the tools we use for working with the code and documentation. - [volta](https://volta.sh/) to manage node versions. - [Node.js](https://nodejs.org/en/). `volta install node` - [pnpm](https://pnpm.io/) package manager. `volta install pnpm` - [npx](https://docs.npmjs.com/cli/v8/commands/npx) the packaged executor in npm. This is needed [to install pnpm.](#2-install-pnpm) -### 1. Fork and clone the repository +Follow [the setup steps below](#setup) to install them and verify they are working + +### Setup + +Follow these steps to set up the environment you need to work on code and/or documentation. + +#### 1. Fork and clone the repository In GitHub, you first _fork_ a repository when you are going to make changes and submit pull requests. @@ -39,9 +47,9 @@ Then you _clone_ a copy to your local development machine (e.g. where you code) [Here is a GitHub document that gives an overview of the process.](https://docs.github.com/en/get-started/quickstart/fork-a-repo) -### 2. Install pnpm +#### 2. Install pnpm -Once you have cloned the repository onto your development machine, change into the `mermaid` folder so that you can install `pnpm`. You will need `npx` to install pnpm because volta doesn't support it yet. +Once you have cloned the repository onto your development machine, change into the `mermaid` project folder so that you can install `pnpm`. You will need `npx` to install pnpm because volta doesn't support it yet. Ex: @@ -52,7 +60,7 @@ cd mermaid npx pnpm install ``` -### 3. Verify Everything Is Working +#### 3. Verify Everything Is Working Once you have installed pnpm, you can run the `test` script to verify that pnpm is working _and_ that the repository has been cloned correctly: @@ -62,6 +70,8 @@ pnpm test The `test` script and others are in the top-level `package.json` file. +All tests should run sucessfully without any errors or failures. (You might see _lint_ or _formatting_ warnings; those are ok during this step.) + ## Contributing Code The basic steps for contributing code are: @@ -105,17 +115,19 @@ We use the follow naming convention for branches: [feature | bug | chore | docs]/[issue number]_[short description using dashes ('-') or underscores ('_') instead of spaces] ``` -- The first part is the _type_ of change: a feature, bug, chore, or documentation change ('docs') -- followed by a slash (which helps to group like types together in many git tools) -- followed by the issue number -- followed by an underscore ('\_') +- The first part is the **type** of change: a feature, bug, chore, or documentation change ('docs') +- followed by a _slash_ (which helps to group like types together in many git tools) +- followed by the **issue number** +- followed by an _underscore_ ('\_') - followed by a short text description (but use dashes ('-') or underscores ('\_') instead of spaces) +If your work is specific to a single diagram type, it is a good idea to put the diagram type at the start of the dscription. This will help use keep release notes organized: it will help us keep changes for a diagram type together. + **Ex: A new feature described in issue 2945 that adds a new arrow type called 'florbs' to state diagrams** -`feature/2945_state_diagram_arrow_florbs` +`feature/2945_state-diagram-new-arrow-florbs` -**Ex: A bug described in issue 1123 that causes random ugly red text** +**Ex: A bug described in issue 1123 that causes random ugly red text in multiple diagram types** `bug/1123_fix_random_ugly_red_text` ### 2. Write Tests diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index 58906b134..437aa6b8c 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -17,14 +17,21 @@ Here are a few things to get you started on the right path. ## Technical Requirements and Setup -These are the main tools we use for working with the code and documentation: +### Technical Requirements +These are the tools we use for working with the code and documentation. - [volta](https://volta.sh/) to manage node versions. - [Node.js](https://nodejs.org/en/). `volta install node` - [pnpm](https://pnpm.io/) package manager. `volta install pnpm` - [npx](https://docs.npmjs.com/cli/v8/commands/npx) the packaged executor in npm. This is needed [to install pnpm.](#2-install-pnpm) -### 1. Fork and clone the repository +Follow [the setup steps below](#setup) to install them and verify they are working + +### Setup + +Follow these steps to set up the environment you need to work on code and/or documentation. + +#### 1. Fork and clone the repository In GitHub, you first _fork_ a repository when you are going to make changes and submit pull requests. @@ -32,9 +39,9 @@ Then you _clone_ a copy to your local development machine (e.g. where you code) [Here is a GitHub document that gives an overview of the process.](https://docs.github.com/en/get-started/quickstart/fork-a-repo) -### 2. Install pnpm +#### 2. Install pnpm -Once you have cloned the repository onto your development machine, change into the `mermaid` folder so that you can install `pnpm`. You will need `npx` to install pnpm because volta doesn't support it yet. +Once you have cloned the repository onto your development machine, change into the `mermaid` project folder so that you can install `pnpm`. You will need `npx` to install pnpm because volta doesn't support it yet. Ex: @@ -45,7 +52,7 @@ cd mermaid npx pnpm install ``` -### 3. Verify Everything Is Working +#### 3. Verify Everything Is Working Once you have installed pnpm, you can run the `test` script to verify that pnpm is working _and_ that the repository has been cloned correctly: @@ -55,6 +62,8 @@ pnpm test The `test` script and others are in the top-level `package.json` file. +All tests should run sucessfully without any errors or failures. (You might see _lint_ or _formatting_ warnings; those are ok during this step.) + ## Contributing Code The basic steps for contributing code are: @@ -93,17 +102,19 @@ We use the follow naming convention for branches: [feature | bug | chore | docs]/[issue number]_[short description using dashes ('-') or underscores ('_') instead of spaces] ``` -- The first part is the _type_ of change: a feature, bug, chore, or documentation change ('docs') -- followed by a slash (which helps to group like types together in many git tools) -- followed by the issue number -- followed by an underscore ('\_') +- The first part is the **type** of change: a feature, bug, chore, or documentation change ('docs') +- followed by a _slash_ (which helps to group like types together in many git tools) +- followed by the **issue number** +- followed by an _underscore_ ('\_') - followed by a short text description (but use dashes ('-') or underscores ('\_') instead of spaces) +If your work is specific to a single diagram type, it is a good idea to put the diagram type at the start of the dscription. This will help use keep release notes organized: it will help us keep changes for a diagram type together. + **Ex: A new feature described in issue 2945 that adds a new arrow type called 'florbs' to state diagrams** -`feature/2945_state_diagram_arrow_florbs` +`feature/2945_state-diagram-new-arrow-florbs` -**Ex: A bug described in issue 1123 that causes random ugly red text** +**Ex: A bug described in issue 1123 that causes random ugly red text in multiple diagram types** `bug/1123_fix_random_ugly_red_text` ### 2. Write Tests From 6b8f60efcf451cd7c48e141e9160a07f8a19ab72 Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Tue, 15 Nov 2022 12:08:48 -0800 Subject: [PATCH 011/255] nav menu: contributing now points to src/doc about contributing --- packages/mermaid/src/docs/.vitepress/config.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/mermaid/src/docs/.vitepress/config.ts b/packages/mermaid/src/docs/.vitepress/config.ts index ee57b7973..7c52f0079 100644 --- a/packages/mermaid/src/docs/.vitepress/config.ts +++ b/packages/mermaid/src/docs/.vitepress/config.ts @@ -30,6 +30,7 @@ export default defineConfig({ }, }); +// Top (across the page) menu function nav() { return [ { text: 'Intro', link: '/intro/', activeMatch: '/intro/' }, @@ -54,7 +55,7 @@ function nav() { }, { text: 'Contributing', - link: 'https://github.com/mermaid-js/mermaid/blob/develop/CONTRIBUTING.md', + link: '/community/development', }, ], }, From 9c0b81cee01cfd4b265686040205a0fea9c92355 Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Tue, 15 Nov 2022 12:09:36 -0800 Subject: [PATCH 012/255] sidebar menu: remove sub-sub sections since sub menus cannot be collapsed --- .../mermaid/src/docs/.vitepress/config.ts | 30 +++++-------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/packages/mermaid/src/docs/.vitepress/config.ts b/packages/mermaid/src/docs/.vitepress/config.ts index 7c52f0079..2e655c863 100644 --- a/packages/mermaid/src/docs/.vitepress/config.ts +++ b/packages/mermaid/src/docs/.vitepress/config.ts @@ -163,48 +163,32 @@ function sidebarCommunity() { // Development and Contributing function sidebarCommunityDevelopContribute() { - const PAGE_PATH = '/community/development'; + const page_path = '/community/development'; return [ { text: 'Contributing to Mermaid', - link: PAGE_PATH + '#contributing-to-mermaid', + link: page_path + '#contributing-to-mermaid', collapsible: true, items: [ { text: 'Technical Requirements and Setup', - link: pathToId(PAGE_PATH, 'technical-requirements-and-setup'), + link: pathToId(page_path, 'technical-requirements-and-setup'), }, { text: 'Contributing Code', - link: pathToId(PAGE_PATH, 'contributing-code'), - collapsible: true, - items: [ - { - text: '1. Checkout a git branch', - link: pathToId(PAGE_PATH, '_1-checkout-a-git-branch'), - }, - { text: '2. Write Tests', link: pathToId(PAGE_PATH, '_2-write-tests') }, - { - text: '3. Update Documentation', - link: pathToId(PAGE_PATH, '_3-update-documentation'), - }, - { - text: '4. Submit your pull request', - link: pathToId(PAGE_PATH, '_4-submit-your-pull-request'), - }, - ], + link: pathToId(page_path, 'contributing-code'), }, { text: 'Contributing Documentation', - link: pathToId(PAGE_PATH, 'contributing-documentation'), + link: pathToId(page_path, 'contributing-documentation'), }, { text: 'Questions or Suggestions?', - link: pathToId(PAGE_PATH, 'questions-or-suggestions'), + link: pathToId(page_path, 'questions-or-suggestions'), }, { text: 'Last Words', - link: pathToId(PAGE_PATH, 'last-words'), + link: pathToId(page_path, 'last-words'), }, ], }, From 3bdcfd9160857862774446ab90e257e482ef89d9 Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Tue, 15 Nov 2022 13:18:14 -0800 Subject: [PATCH 013/255] add TODO - PRs should start with... (fix|bug|feat|...) --- docs/community/development.md | 2 ++ packages/mermaid/src/docs/community/development.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/docs/community/development.md b/docs/community/development.md index d9c02401a..8503fb141 100644 --- a/docs/community/development.md +++ b/docs/community/development.md @@ -210,6 +210,8 @@ When in doubt, write up and submit what you can. It can be clarified and refined ### 4. Submit your pull request +\[TODO - PR titles should start with (fix | feat | ....)] + We make all changes via Pull Requests (PRs). As we have many Pull Requests from developers new to Mermaid, \ we have put in place a process wherein _knsv, Knut Sveidqvist_ is the primary reviewer of changes and merging pull requests. The process is as follows: diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index 437aa6b8c..91c3e638e 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -197,6 +197,8 @@ When in doubt, write up and submit what you can. It can be clarified and refined ### 4. Submit your pull request +[TODO - PR titles should start with (fix | feat | ....)] + We make all changes via Pull Requests (PRs). As we have many Pull Requests from developers new to Mermaid, \ we have put in place a process wherein _knsv, Knut Sveidqvist_ is the primary reviewer of changes and merging pull requests. The process is as follows: From 449cbdfd023ad4595e21aa2b69c1e2450da470fb Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Fri, 18 Nov 2022 09:03:01 -0800 Subject: [PATCH 014/255] make TODOs bold, ital so they're obv --- docs/CHANGELOG.md | 1054 ---------- docs/community/development.md | 309 --- docs/community/n00b-overview.md | 74 - docs/community/newDiagram.md | 264 --- docs/community/security.md | 29 - docs/config/8.6.0_docs.md | 222 --- docs/config/Tutorials.md | 78 - docs/config/accessibility.md | 360 ---- docs/config/configuration.md | 41 - docs/config/directives.md | 329 ---- docs/config/mermaidCLI.md | 9 - docs/config/n00b-advanced.md | 26 - docs/config/setup/README.md | 13 - docs/config/setup/modules/config.md | 276 --- docs/config/setup/modules/defaultConfig.md | 56 - docs/config/theming.md | 743 ------- docs/config/usage.md | 391 ---- docs/intro/index.md | 405 ---- docs/intro/n00b-gettingStarted.md | 224 --- docs/intro/n00b-syntaxReference.md | 85 - docs/misc/faq.md | 17 - docs/misc/integrations.md | 186 -- docs/syntax/c4c.md | 664 ------- docs/syntax/classDiagram.md | 848 -------- docs/syntax/entityRelationshipDiagram.md | 299 --- docs/syntax/examples.md | 299 --- docs/syntax/flowchart.md | 992 ---------- docs/syntax/gantt.md | 423 ---- docs/syntax/gitgraph.md | 1729 ----------------- docs/syntax/mindmap.md | 243 --- docs/syntax/pie.md | 66 - docs/syntax/requirementDiagram.md | 243 --- docs/syntax/sequenceDiagram.md | 762 -------- docs/syntax/stateDiagram.md | 450 ----- docs/syntax/userJourney.md | 40 - .../mermaid/src/docs/community/development.md | 14 +- 36 files changed, 7 insertions(+), 12256 deletions(-) delete mode 100644 docs/CHANGELOG.md delete mode 100644 docs/community/development.md delete mode 100644 docs/community/n00b-overview.md delete mode 100644 docs/community/newDiagram.md delete mode 100644 docs/community/security.md delete mode 100644 docs/config/8.6.0_docs.md delete mode 100644 docs/config/Tutorials.md delete mode 100644 docs/config/accessibility.md delete mode 100644 docs/config/configuration.md delete mode 100644 docs/config/directives.md delete mode 100644 docs/config/mermaidCLI.md delete mode 100644 docs/config/n00b-advanced.md delete mode 100644 docs/config/setup/README.md delete mode 100644 docs/config/setup/modules/config.md delete mode 100644 docs/config/setup/modules/defaultConfig.md delete mode 100644 docs/config/theming.md delete mode 100644 docs/config/usage.md delete mode 100644 docs/intro/index.md delete mode 100644 docs/intro/n00b-gettingStarted.md delete mode 100644 docs/intro/n00b-syntaxReference.md delete mode 100644 docs/misc/faq.md delete mode 100644 docs/misc/integrations.md delete mode 100644 docs/syntax/c4c.md delete mode 100644 docs/syntax/classDiagram.md delete mode 100644 docs/syntax/entityRelationshipDiagram.md delete mode 100644 docs/syntax/examples.md delete mode 100644 docs/syntax/flowchart.md delete mode 100644 docs/syntax/gantt.md delete mode 100644 docs/syntax/gitgraph.md delete mode 100644 docs/syntax/mindmap.md delete mode 100644 docs/syntax/pie.md delete mode 100644 docs/syntax/requirementDiagram.md delete mode 100644 docs/syntax/sequenceDiagram.md delete mode 100644 docs/syntax/stateDiagram.md delete mode 100644 docs/syntax/userJourney.md diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md deleted file mode 100644 index 520adc7d9..000000000 --- a/docs/CHANGELOG.md +++ /dev/null @@ -1,1054 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/CHANGELOG.md](../packages/mermaid/src/docs/CHANGELOG.md). - -# Change Log - -All changes are in descending order, beginning with the newest (latest) version. - -## Unreleased - -[Full Changelog](https://github.com/knsv/mermaid/compare/8.7.0...HEAD) - -## 8.7.0 (2020-08-09) - -🔖 [Release Notes](https://github.com/mermaid-js/mermaid/releases/tag/8.7.0) | -📜 [Full Changelog](https://github.com/mermaid-js/mermaid/compare/8.6.0...8.7.0) - -This version brings with it a system for [dynamic and integrated configuration of the diagram themes](config/theming.md). -The objective of this is to increase the customizability of mermaid and the ease of Styling, with the customization of themes through the `%%init%%` directive and `initialize` calls. - -Themes follow and build upon the Levels of Configuration and employ `directives` to modify and create custom configurations, as they were introduced in Version [8.6.0](config/8.6.0_docs.md). - -**These Theming Configurations, similar to directives, will also be made applicable in the Live-Editor, for easier styling.** - -### Site-wide Themes - -Site-wide themes are still declared via `initialize` by site owners. - -Example of `Initalize` call setting `theme` to `base`: - -```javascript -mermaidAPI.initialize({ - securityLevel: 'loose', - theme: 'base', -}); -``` - -**Notes**: Only site owners can use the `mermaidAPI.initialize` call, to set values. Site-Users will have to use `%%init%%` to modify or create the theme for their diagrams. - -### Themes at the Local or Current Level - -When Generating a diagram using on a webpage that supports mermaid. -It is also possible to override site-wide theme settings locally, for a specific diagram, using directives, as long as it is not prohibited by the `secure` array. - -**Following is an example:** - -```mermaid-example -%%{init: {'theme':'base'}}%% - graph TD - a --> b -``` - -```mermaid -%%{init: {'theme':'base'}}%% - graph TD - a --> b -``` - -### Making a Custom Theme with `themeVariables` - -The easiest way to make a custom theme is to start with the base theme, and just modify theme variables through `themeVariables`, via `%%init%%`. - -| Parameter | Description | Type | Required | Objects contained | -| -------------- | ------------------------------------------------------------------ | ----- | -------- | ---------------------------------- | -| themeVariables | Array containing objects, modifiable with the `%%init%%` directive | Array | Required | primaryColor, lineColor, textColor | - -Here is an example of overriding `primaryColor` and giving everything a different look, using `%%init%%`. - -```mermaid-example -%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% - graph TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[/Another/] - C ==>|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -```mermaid -%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% - graph TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[/Another/] - C ==>|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -**Notes:** -Leaving it empty will set all variable values to default. - -## 8.6.0 (2020-07-13) - -🔖 [Release Notes](https://github.com/mermaid-js/mermaid/releases/tag/8.6.0) - -[Version 8.6.0](../getting-started/8.6.0_docs.md) introduces New Configuration Protocols and Directives and a Beta for the [New Mermaid Live-Editor](https://mermaid-js.github.io/docs/mermaid-live-editor-beta/#/edit/eyJjb2RlIjoiJSV7aW5pdDoge1widGhlbWVcIjogXCJmb3Jlc3RcIiwgXCJsb2dMZXZlbFwiOiAxIH19JSVcbmdyYXBoIFREXG4gIEFbQ2hyaXN0bWFzXSAtLT58R2V0IG1vbmV5fCBCKEdvIHNob3BwaW5nKVxuICBCIC0tPiBDe0xldCBtZSB0aGlua31cbiAgQyAtLT58T25lfCBEW0xhcHRvcF1cbiAgQyAtLT58VHdvfCBFW2lQaG9uZV1cbiAgQyAtLT58VGhyZWV8IEZbZmE6ZmEtY2FyIENhcl1cblx0XHQiLCJtZXJtYWlkIjp7InRoZW1lIjoiZGFyayJ9fQ) - -**With version 8.6.0 comes the release of directives for mermaid, a new system for modifying configurations, with the aim of establishing centralized, sane defaults and simple implementation.** - -Directives allow for a diagram specific overriding of config, as it has been discussed in Configurations. -This allows site users to input modifications to config alongside diagram definitions, when creating diagrams on a private webpage that supports Mermaid. - -## 8.5.0 (2020-04-11) - -🔖 [Release Notes](https://github.com/mermaid-js/mermaid/releases/tag/untagged-31c93788afe260d914bb) - -This version introduces New diagrams! - -**New diagrams in 8.5** - -With version 8.5 there are some bug fixes and enhancements, plus a new diagram type, entity relationship diagrams. - -![Image showing the new ER diagram type](./img/er.png) - -## 8.2.0 (2019-07-17) - -🏷️ [Tag](https://github.com/mermaid-js/mermaid/tree/8.2.0) - -Version 8.2.0, introduces a security improvement. - -A `securityLevel` configuration has to first be cleared, `securityLevel` sets the level of trust for the parsed diagrams and limits click functionality. -This was introduced in version 8.2 as a security improvement, aimed at preventing malicious use. - -### securityLevel - -| Parameter | Description | Type | Required | Values | -| ------------- | --------------------------------- | ------ | -------- | ------------------------- | -| securitylevel | Level of trust for parsed diagram | String | Required | Strict, Loose, antiscript | - -**Notes:** - -- **strict**: (**default**) tags in text are encoded, click functionality is disabled -- **loose**: tags in text are allowed, click functionality is enabled -- **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled - -⚠️ **Note**: This changes the default behaviour of mermaid so that after upgrade to 8.2, if the `securityLevel` is not configured, tags in flowcharts are encoded as tags and clicking is prohibited. - -If you are taking responsibility for the diagram source security you can set the `securityLevel` to a value of your choosing. -By doing this clicks and tags are again allowed. - -### To change `securityLevel` with `mermaidAPI.initialize`: - -```javascript -mermaidAPI.initialize({ - securityLevel: 'loose', -}); -``` - -**Closed issues:** - -- please add tag for 8.0.0 release [#863](https://github.com/knsv/mermaid/issues/863) -- classDiagram breaks on any edit [#858](https://github.com/knsv/mermaid/issues/858) - -## [8.1.0](https://github.com/knsv/mermaid/tree/8.1.0) (2019-06-25) - -[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.5...8.1.0) - -**Implemented enhancements:** - -- Theme for dark background [#301](https://github.com/knsv/mermaid/issues/301) -- \[Feature request] gantt diagram axis format [#269](https://github.com/knsv/mermaid/issues/269) -- Implement render function for server side rendering using phantomjs [#169](https://github.com/knsv/mermaid/issues/169) - -**Fixed bugs:** - -- mermaid -v filename.mmd gives You must specify at least one source file. [#328](https://github.com/knsv/mermaid/issues/328) -- Not Able to See Labels even htmlLabels:false added [#268](https://github.com/knsv/mermaid/issues/268) - -**Closed issues:** - -- Gantt and sequence diagram do not render [#853](https://github.com/knsv/mermaid/issues/853) -- margins around flowchart are not balanced [#852](https://github.com/knsv/mermaid/issues/852) -- Smaller bundles [#843](https://github.com/knsv/mermaid/issues/843) -- unicode in labels [#776](https://github.com/knsv/mermaid/issues/776) -- Hard-changing drawing of arrows per edge type [#775](https://github.com/knsv/mermaid/issues/775) -- SequenceDiagram wrong [#773](https://github.com/knsv/mermaid/issues/773) -- Render mermaid on github pages with simple code [#772](https://github.com/knsv/mermaid/issues/772) -- FlowChart - large space between text and the image [#754](https://github.com/knsv/mermaid/issues/754) -- Class Diagram Issues when using Mermaid in Stackedit [#748](https://github.com/knsv/mermaid/issues/748) -- Multi-platform CI [#744](https://github.com/knsv/mermaid/issues/744) -- gantt: sections can't have a colon [#742](https://github.com/knsv/mermaid/issues/742) -- Yarn build does not add mermaid.min.css to dist [#732](https://github.com/knsv/mermaid/issues/732) -- Is there a grammar / keyword / more than just the basic examples? [#718](https://github.com/knsv/mermaid/issues/718) -- Click event and react component [#717](https://github.com/knsv/mermaid/issues/717) -- Long text going outside the box [#706](https://github.com/knsv/mermaid/issues/706) -- How to migrate from yUML to mermaid? [#704](https://github.com/knsv/mermaid/issues/704) -- Issue on Dynamic Creation in PHP [#690](https://github.com/knsv/mermaid/issues/690) -- `click "\#target"` and `click "http://url"` should create regular links [#689](https://github.com/knsv/mermaid/issues/689) -- Support Chinese punctuation [#687](https://github.com/knsv/mermaid/issues/687) -- \[Question] Proper way to install on Mac? [#681](https://github.com/knsv/mermaid/issues/681) -- Has Mermaid a graphical interface to make diagrams? [#668](https://github.com/knsv/mermaid/issues/668) -- mermaid installation on debian [#649](https://github.com/knsv/mermaid/issues/649) -- "Cannot activate" in sequenceDiagram [#647](https://github.com/knsv/mermaid/issues/647) -- Link ("click" statement) in flowchart does not work in exported SVG [#646](https://github.com/knsv/mermaid/issues/646) -- How to pass styling [#639](https://github.com/knsv/mermaid/issues/639) -- The live editor cant show seq diagram with notes for 8.0.0-alpha.3 [#638](https://github.com/knsv/mermaid/issues/638) -- import mermaid.css with ES6 + NPM [#634](https://github.com/knsv/mermaid/issues/634) -- Actor line cuts through other elements [#633](https://github.com/knsv/mermaid/issues/633) -- Graph TD line out of the picture (left side) [#630](https://github.com/knsv/mermaid/issues/630) -- Flowchart labels appear "cutoff" [#628](https://github.com/knsv/mermaid/issues/628) -- Uncaught TypeError: \_.constant is not a function (mermaid.js) [#626](https://github.com/knsv/mermaid/issues/626) -- Missing tags and releases for newer versions [#623](https://github.com/knsv/mermaid/issues/623) -- Mermaid and Leo / Leo Vue [#622](https://github.com/knsv/mermaid/issues/622) -- mermaidAPI gantt Vue.js [#621](https://github.com/knsv/mermaid/issues/621) -- Gantt sections are not separated by colors - Fix: set numberSectionStyles to 4 instead of 3 [#620](https://github.com/knsv/mermaid/issues/620) -- how to get mermaidAPI? [#617](https://github.com/knsv/mermaid/issues/617) -- Error in startOnLoad documentation? [#616](https://github.com/knsv/mermaid/issues/616) -- Example export to SVG generates error [#614](https://github.com/knsv/mermaid/issues/614) -- The new online editor does not support previously generated links [#613](https://github.com/knsv/mermaid/issues/613) -- Grammar / Syntax documentation for flowcharts [#607](https://github.com/knsv/mermaid/issues/607) -- Mermaid does not work with d3.js [#606](https://github.com/knsv/mermaid/issues/606) -- Why does this code's flowchart lines get cut-off on screen? [#604](https://github.com/knsv/mermaid/issues/604) -- click keyword does not fire my callback (on the demo Website too) [#603](https://github.com/knsv/mermaid/issues/603) -- Online Editor fails to show exported SVG [#601](https://github.com/knsv/mermaid/issues/601) -- Just saying thanks! [#597](https://github.com/knsv/mermaid/issues/597) -- stylesheet crashed with other library like abcjs [#596](https://github.com/knsv/mermaid/issues/596) -- Missing connection [#594](https://github.com/knsv/mermaid/issues/594) -- How to use mermaid on node.js restful api? [#593](https://github.com/knsv/mermaid/issues/593) -- Remove status code [#589](https://github.com/knsv/mermaid/issues/589) -- Golang based editor [#588](https://github.com/knsv/mermaid/issues/588) -- sequenceDiagram -> notetext css font is hardcoded [#587](https://github.com/knsv/mermaid/issues/587) -- Multiple graph in the live editor [#586](https://github.com/knsv/mermaid/issues/586) -- All \ elements in page are colored black [#584](https://github.com/knsv/mermaid/issues/584) -- Styling: classes aren't applied to elements. [#582](https://github.com/knsv/mermaid/issues/582) -- Rounded connections [#580](https://github.com/knsv/mermaid/issues/580) -- Arrows are not being shown correctly in the dark theme [#578](https://github.com/knsv/mermaid/issues/578) -- The documentation for CLI seems outdated. [#572](https://github.com/knsv/mermaid/issues/572) -- No effect of click event:can not open link [#571](https://github.com/knsv/mermaid/issues/571) -- Text colors are not correct in VSCODE [#570](https://github.com/knsv/mermaid/issues/570) -- Nodes aren't aligned properly (just need an explanation) [#568](https://github.com/knsv/mermaid/issues/568) -- setting margin around figure in R [#567](https://github.com/knsv/mermaid/issues/567) -- Arrows should Come out in upward and Downward direction from decision Node [#566](https://github.com/knsv/mermaid/issues/566) -- TypeError: Cannot read property 'select' of undefined [#563](https://github.com/knsv/mermaid/issues/563) -- A little bug [#557](https://github.com/knsv/mermaid/issues/557) -- Japanese text appears garbled [#554](https://github.com/knsv/mermaid/issues/554) -- classdiagram not works in mermaid live_editor [#553](https://github.com/knsv/mermaid/issues/553) -- font awesome in link text? [#546](https://github.com/knsv/mermaid/issues/546) -- q: heard of the cosmogol standard? [#545](https://github.com/knsv/mermaid/issues/545) -- Arrow heads missing (cli, 7.0.3) [#544](https://github.com/knsv/mermaid/issues/544) -- No Edge Boxes if useHtmlLabels=false [#541](https://github.com/knsv/mermaid/issues/541) -- how to change mermaid text color or line text block color? [#534](https://github.com/knsv/mermaid/issues/534) -- FlowChart visualization broken when downloading from live editor [#533](https://github.com/knsv/mermaid/issues/533) -- Can't get flowchart to render paths at the top of the diagram; I even tried the online editor and that shows the same issue. Thoughts? [#532](https://github.com/knsv/mermaid/issues/532) -- live editor make browser(safari on macOS\&iOS) not longer respond [#531](https://github.com/knsv/mermaid/issues/531) -- css classes need a prefix/namespace [#527](https://github.com/knsv/mermaid/issues/527) -- input activate/deactivate cause safari unresponding [#521](https://github.com/knsv/mermaid/issues/521) -- Cannot Render the Mermaid Graph to PDF ? [#520](https://github.com/knsv/mermaid/issues/520) -- clicking links works from inset in subgraph but not from nodes [#516](https://github.com/knsv/mermaid/issues/516) -- Strange syntax error - when importing mermaid.js [#515](https://github.com/knsv/mermaid/issues/515) -- gantt x-axis display [#510](https://github.com/knsv/mermaid/issues/510) -- phantomjs renamed to phantomjs-prebuilt [#508](https://github.com/knsv/mermaid/issues/508) -- issue when using sphinxcontrib-mermaid extension for sphinx [#507](https://github.com/knsv/mermaid/issues/507) -- layout of docs page looks broken [#504](https://github.com/knsv/mermaid/issues/504) -- Problem showing graph with php on localhost [#502](https://github.com/knsv/mermaid/issues/502) -- logLevel's option doesn't work at 7.0.0 [#501](https://github.com/knsv/mermaid/issues/501) -- How do I get the log for a render or parse attempt? [#500](https://github.com/knsv/mermaid/issues/500) -- Mermaid neutral style style to built in latest release [#499](https://github.com/knsv/mermaid/issues/499) -- Any plans for adding a typescript definition file? [#495](https://github.com/knsv/mermaid/issues/495) -- Gantt diagrams too narrow [#493](https://github.com/knsv/mermaid/issues/493) -- Flowchart edge labels placement [#490](https://github.com/knsv/mermaid/issues/490) -- Very different styles when rendering as png vs. svg [#489](https://github.com/knsv/mermaid/issues/489) -- New editor that supports mermaid: Caret [#488](https://github.com/knsv/mermaid/issues/488) -- Gant PNG margin [#486](https://github.com/knsv/mermaid/issues/486) -- ReferenceError: window is not defined [#485](https://github.com/knsv/mermaid/issues/485) -- Menu and layout bugs in docs [#484](https://github.com/knsv/mermaid/issues/484) -- Mermaid resets some of the page CSS styles [#482](https://github.com/knsv/mermaid/issues/482) -- Arrows rendering incorrectly in online editor [#480](https://github.com/knsv/mermaid/issues/480) -- CSS stroke-dasharray ignored by browsers but not other viewers [#474](https://github.com/knsv/mermaid/issues/474) -- mermaid - Browser Support issue [#472](https://github.com/knsv/mermaid/issues/472) -- Totally love mermaid I might pop! [#471](https://github.com/knsv/mermaid/issues/471) -- Sequence Diagram: Missing x on async arrows (png) [#469](https://github.com/knsv/mermaid/issues/469) -- live editor: the svg file rendered from graph is not supported by browsers [#468](https://github.com/knsv/mermaid/issues/468) -- Not found css [#462](https://github.com/knsv/mermaid/issues/462) -- Phantomjs Dependency [#461](https://github.com/knsv/mermaid/issues/461) -- Mermaid cli not working for subgraphs [#459](https://github.com/knsv/mermaid/issues/459) -- Support for notes across multiple participants? [#458](https://github.com/knsv/mermaid/issues/458) -- Related to Issue #329: Phantomjs issues. [#455](https://github.com/knsv/mermaid/issues/455) -- Add a click style [#426](https://github.com/knsv/mermaid/issues/426) -- Add Parallel block (par) to sequence diagrams [#425](https://github.com/knsv/mermaid/issues/425) -- updating shapes after the flow chart rendering complete [#424](https://github.com/knsv/mermaid/issues/424) -- can't catch parse error Maximum call stack size exceeded on safari [#421](https://github.com/knsv/mermaid/issues/421) -- Arrows endings are missing [#419](https://github.com/knsv/mermaid/issues/419) -- shouldn't mermaid become more like Markdown ? [#417](https://github.com/knsv/mermaid/issues/417) -- Live editor show rendered diagram if syntax invalid [#415](https://github.com/knsv/mermaid/issues/415) -- Linkstyle stroke does not work [#410](https://github.com/knsv/mermaid/issues/410) -- flowchart id's with dots in them .. break links [#408](https://github.com/knsv/mermaid/issues/408) -- Flowchart: Link text beginning with lowercase 'o' causes flowchart to break [#407](https://github.com/knsv/mermaid/issues/407) -- Some Chinese character will case Safari no responding. [#405](https://github.com/knsv/mermaid/issues/405) -- Cannot center-justify text in nodes? [#397](https://github.com/knsv/mermaid/issues/397) -- Edge labels should have white background in live editor [#396](https://github.com/knsv/mermaid/issues/396) -- Live editor does not support activate/deactivate [#394](https://github.com/knsv/mermaid/issues/394) -- Styling subgraph? [#391](https://github.com/knsv/mermaid/issues/391) -- Update live editor to version 6.0.0 [#387](https://github.com/knsv/mermaid/issues/387) -- sequence diagram config issue [#385](https://github.com/knsv/mermaid/issues/385) -- How to add newline in the text [#384](https://github.com/knsv/mermaid/issues/384) -- PhantomJS crashes on a large graph [#380](https://github.com/knsv/mermaid/issues/380) -- Finnish support for class diagrams using plantuml syntax [#377](https://github.com/knsv/mermaid/issues/377) -- mermaidAPI.render generated different svg code from mermaid.int() [#374](https://github.com/knsv/mermaid/issues/374) -- Put your own action on the chart [#372](https://github.com/knsv/mermaid/issues/372) -- when declaring participants the elements are generated twice [#370](https://github.com/knsv/mermaid/issues/370) -- Example Flowchart is cut in display (Chrome). [#368](https://github.com/knsv/mermaid/issues/368) -- Add shebang support to diagrams [#365](https://github.com/knsv/mermaid/issues/365) -- Silencing CLI output [#352](https://github.com/knsv/mermaid/issues/352) -- SequenceDiagram: 3+ Alternative Paths [#348](https://github.com/knsv/mermaid/issues/348) -- Smaller height of actor boxes [#342](https://github.com/knsv/mermaid/issues/342) -- Question: lib/phantomscript.js - foreignObjects in SVG - related to #58 [#340](https://github.com/knsv/mermaid/issues/340) -- npm test fails on osx being blocked at Can not load "PhantomJS", it is not registered! [#337](https://github.com/knsv/mermaid/issues/337) -- Tabs & subgraphs cause rendering error [#336](https://github.com/knsv/mermaid/issues/336) -- Display question: right angles [#335](https://github.com/knsv/mermaid/issues/335) -- No Arrows rendered v0.5.8 [#330](https://github.com/knsv/mermaid/issues/330) -- You had errors in your syntax. Use --help for further information. [#327](https://github.com/knsv/mermaid/issues/327) -- Allow alternate arrow syntax that doesn't close html comments [#322](https://github.com/knsv/mermaid/issues/322) -- Comment in subgraph [#319](https://github.com/knsv/mermaid/issues/319) -- Update graph [#311](https://github.com/knsv/mermaid/issues/311) -- css conflicts with boostrap's css [#308](https://github.com/knsv/mermaid/issues/308) -- Can not get click event to fire. [#306](https://github.com/knsv/mermaid/issues/306) -- Fix phantomjs2 compatibility [#304](https://github.com/knsv/mermaid/issues/304) -- Flowcharts do not work in native IE11 [#303](https://github.com/knsv/mermaid/issues/303) -- Integration with remark.js - tutorial added [#302](https://github.com/knsv/mermaid/issues/302) -- Sequence diagram Loops: changing boxMargin spoils the "loop" notation [#299](https://github.com/knsv/mermaid/issues/299) -- src/mermaid.js generates bad code [#297](https://github.com/knsv/mermaid/issues/297) -- Fresh fork: jasmine tests fail [#294](https://github.com/knsv/mermaid/issues/294) -- CSS clash [#292](https://github.com/knsv/mermaid/issues/292) -- Mermaid does not work in Chrome 48 [#281](https://github.com/knsv/mermaid/issues/281) -- circle and ellipse cannot change color by classDef [#271](https://github.com/knsv/mermaid/issues/271) -- npm run watch doesn't work due missing dependencies [#266](https://github.com/knsv/mermaid/issues/266) -- label out of node [#262](https://github.com/knsv/mermaid/issues/262) -- IE11 Support issue [#261](https://github.com/knsv/mermaid/issues/261) -- mermaid without browser [#260](https://github.com/knsv/mermaid/issues/260) -- Insufficient capacity of gantt diagrams [#226](https://github.com/knsv/mermaid/issues/226) -- some WARN about installation [#222](https://github.com/knsv/mermaid/issues/222) -- Live editor offline access [#217](https://github.com/knsv/mermaid/issues/217) -- suggest: code highlight mode config for editors [#212](https://github.com/knsv/mermaid/issues/212) -- Uncaught RangeError: Maximum call stack size exceeded [#189](https://github.com/knsv/mermaid/issues/189) -- Styling label texts [#50](https://github.com/knsv/mermaid/issues/50) - -**Merged pull requests:** - -- Remove console.log in classDB. [#861](https://github.com/knsv/mermaid/pull/861) ([Arthaey](https://github.com/Arthaey)) -- Bump sshpk from 1.13.1 to 1.16.1 [#851](https://github.com/knsv/mermaid/pull/851) ([dependabot\[bot\]](https://github.com/apps/dependabot)) -- Significantly smaller bundles [#850](https://github.com/knsv/mermaid/pull/850) ([fabiospampinato](https://github.com/fabiospampinato)) -- Support styling of subgraphs [#845](https://github.com/knsv/mermaid/pull/845) ([Qix-](https://github.com/Qix-)) -- fix dark theme loop labels not visible [#837](https://github.com/knsv/mermaid/pull/837) ([jnnnnn](https://github.com/jnnnnn)) -- fix draw function can only call once [#832](https://github.com/knsv/mermaid/pull/832) ([vaniship](https://github.com/vaniship)) -- Fix dotted lines not appearing in flowcharts when HTML labels disabled [#828](https://github.com/knsv/mermaid/pull/828) ([stanhu](https://github.com/stanhu)) -- Fix issue with XML line breaks inside vertex labels [#824](https://github.com/knsv/mermaid/pull/824) ([jsyang](https://github.com/jsyang)) -- fixed diagrams [#810](https://github.com/knsv/mermaid/pull/810) ([0xflotus](https://github.com/0xflotus)) -- Clickable gantt tasks [#804](https://github.com/knsv/mermaid/pull/804) ([abzicht](https://github.com/abzicht)) -- linkStyle now supports list of indexes with a few tests [#798](https://github.com/knsv/mermaid/pull/798) ([ivan-danilov](https://github.com/ivan-danilov)) -- fix class diagram mermaid [#795](https://github.com/knsv/mermaid/pull/795) ([DanShai](https://github.com/DanShai)) -- Added exclude weekdays to definition [#792](https://github.com/knsv/mermaid/pull/792) ([jopapo](https://github.com/jopapo)) -- SVG link rendering [#791](https://github.com/knsv/mermaid/pull/791) ([flying-sheep](https://github.com/flying-sheep)) -- Gantt milestones [#788](https://github.com/knsv/mermaid/pull/788) ([gijswijs](https://github.com/gijswijs)) -- Remove duplicate code [#768](https://github.com/knsv/mermaid/pull/768) ([znxkznxk1030](https://github.com/znxkznxk1030)) -- Render nodes as real links [#765](https://github.com/knsv/mermaid/pull/765) ([flying-sheep](https://github.com/flying-sheep)) -- Fix issue with marker-end. [#757](https://github.com/knsv/mermaid/pull/757) ([gjlubbertsen](https://github.com/gjlubbertsen)) -- Make Class Diagrams usable in Stackedit and Live Editor [#749](https://github.com/knsv/mermaid/pull/749) ([monsterkrampe](https://github.com/monsterkrampe)) -- Adding trapezoid and inverse trapezoid vertex options. [#741](https://github.com/knsv/mermaid/pull/741) ([adamwulf](https://github.com/adamwulf)) -- Add option for right angles [#721](https://github.com/knsv/mermaid/pull/721) ([paulbland](https://github.com/paulbland)) -- Add nested activation classes [#720](https://github.com/knsv/mermaid/pull/720) ([paulbland](https://github.com/paulbland)) -- wip: class diagram cardinality display [#705](https://github.com/knsv/mermaid/pull/705) ([Vrixyz](https://github.com/Vrixyz)) -- add comments about CSS in config [#688](https://github.com/knsv/mermaid/pull/688) ([imma90](https://github.com/imma90)) -- SequenceDiagram: Add support for multiple alt else statements [#641](https://github.com/knsv/mermaid/pull/641) ([sechel](https://github.com/sechel)) -- fix #426 - add class .clickable on nodes with click function or link [#598](https://github.com/knsv/mermaid/pull/598) ([thomasleveil](https://github.com/thomasleveil)) -- Spec fix 1 [#595](https://github.com/knsv/mermaid/pull/595) ([frankschmitt](https://github.com/frankschmitt)) - -## [7.0.5](https://github.com/knsv/mermaid/tree/7.0.5) (2017-09-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.3...7.0.5) - -**Closed issues:** - -- live editor latin error after update [#560](https://github.com/knsv/mermaid/issues/560) -- Simple full example in online documentation is broken [#558](https://github.com/knsv/mermaid/issues/558) -- Graph No Arrow Head v7.0.3 [#543](https://github.com/knsv/mermaid/issues/543) -- Conflict while using mermaid along with core-js [#512](https://github.com/knsv/mermaid/issues/512) -- Export to pdf on website [#496](https://github.com/knsv/mermaid/issues/496) -- New downstream project: Mermaid Preview for VSCode [#442](https://github.com/knsv/mermaid/issues/442) -- Can't Zoom the flowchart ? [#399](https://github.com/knsv/mermaid/issues/399) -- line labels are not rendered correctly in live editor [#366](https://github.com/knsv/mermaid/issues/366) -- mermaid-loader [#361](https://github.com/knsv/mermaid/issues/361) -- Are there any documentation or examples for classDiagram and gitGraph? [#359](https://github.com/knsv/mermaid/issues/359) -- \# character broken in 0.5.8 [#347](https://github.com/knsv/mermaid/issues/347) -- Documentation issue: CSS example is not visible [#345](https://github.com/knsv/mermaid/issues/345) -- Include documentation for command line usage [#326](https://github.com/knsv/mermaid/issues/326) -- Fresh fork: can't build dist [#296](https://github.com/knsv/mermaid/issues/296) -- Invalid value for \ attribute viewBox="0 0 -Infinity -Infinity" [#291](https://github.com/knsv/mermaid/issues/291) -- Webpack require fails [#277](https://github.com/knsv/mermaid/issues/277) -- New documentation - need improved logo [#216](https://github.com/knsv/mermaid/issues/216) - -## [7.0.3](https://github.com/knsv/mermaid/tree/7.0.3) (2017-06-04) - -[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.2...7.0.3) - -**Closed issues:** - -- the documentation website is down [#539](https://github.com/knsv/mermaid/issues/539) -- Good example of interactivity with mermaidAPI [#514](https://github.com/knsv/mermaid/issues/514) - -## [7.0.2](https://github.com/knsv/mermaid/tree/7.0.2) (2017-06-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.0...7.0.2) - -**Closed issues:** - -- CDN is not working [#511](https://github.com/knsv/mermaid/issues/511) -- A sampe sequenceDiagram crashes mermaid-cli [#492](https://github.com/knsv/mermaid/issues/492) -- Mermaid doesn't delete nodes when called multiple times [#491](https://github.com/knsv/mermaid/issues/491) -- API crashes on 2nd render() call [#478](https://github.com/knsv/mermaid/issues/478) -- sequenceDiagram: dotted line for alt and empty bracket should be hidden [#456](https://github.com/knsv/mermaid/issues/456) -- SVG output (almost) not correct [#434](https://github.com/knsv/mermaid/issues/434) -- How to set axisFormatter of gantt in mermaid CLI? [#428](https://github.com/knsv/mermaid/issues/428) -- customizing link style with any color sets `fill` property to `black` instead of `none` [#416](https://github.com/knsv/mermaid/issues/416) -- New line at the end of SVG file [#400](https://github.com/knsv/mermaid/issues/400) -- CLI doesn't work [#389](https://github.com/knsv/mermaid/issues/389) -- Can't render subgraphs with htmlLabels: false [#367](https://github.com/knsv/mermaid/issues/367) -- Color arrowhead [#362](https://github.com/knsv/mermaid/issues/362) -- CLI: Invisible text, lines in SVG output [#341](https://github.com/knsv/mermaid/issues/341) - -**Merged pull requests:** - -- Support Multi-line Actor Descriptions [#764](https://github.com/knsv/mermaid/pull/764) ([watsoncj](https://github.com/watsoncj)) -- Update Travis config [#538](https://github.com/knsv/mermaid/pull/538) ([tylerlong](https://github.com/tylerlong)) -- Fix spelling of 'you' in sequenceDiagram docs [#537](https://github.com/knsv/mermaid/pull/537) ([ctruelson](https://github.com/ctruelson)) -- Improve CLI output [#536](https://github.com/knsv/mermaid/pull/536) ([gibson042](https://github.com/gibson042)) -- Modernize mermaid [#524](https://github.com/knsv/mermaid/pull/524) ([tylerlong](https://github.com/tylerlong)) -- Modernize mermaid [#519](https://github.com/knsv/mermaid/pull/519) ([tylerlong](https://github.com/tylerlong)) -- Update CLI instructions [#509](https://github.com/knsv/mermaid/pull/509) ([filipedeschamps](https://github.com/filipedeschamps)) -- Add style for classDiagram to dark/default theme [#503](https://github.com/knsv/mermaid/pull/503) ([yudenzel](https://github.com/yudenzel)) -- Fix documentation for git graph. [#498](https://github.com/knsv/mermaid/pull/498) ([gomlgs](https://github.com/gomlgs)) -- Fix links in documentations [#497](https://github.com/knsv/mermaid/pull/497) ([saveman71](https://github.com/saveman71)) -- Update README.md with git graph sample [#481](https://github.com/knsv/mermaid/pull/481) ([raghur](https://github.com/raghur)) -- Fix misspelling of “another” [#479](https://github.com/knsv/mermaid/pull/479) ([stevenschobert](https://github.com/stevenschobert)) -- Fixed #456 sequenceDiagram: dotted line for alt and empty bracket sho… [#477](https://github.com/knsv/mermaid/pull/477) ([brookhong](https://github.com/brookhong)) -- Add viewbox attr to class diagram [#473](https://github.com/knsv/mermaid/pull/473) ([gnkm](https://github.com/gnkm)) -- add par statement to sequenceDiagram [#470](https://github.com/knsv/mermaid/pull/470) ([u-minor](https://github.com/u-minor)) - -## [7.0.0](https://github.com/knsv/mermaid/tree/7.0.0) (2017-01-29) - -[Full Changelog](https://github.com/knsv/mermaid/compare/6.0.0...7.0.0) - -**Implemented enhancements:** - -- npm install -g mermaid does not install phantomjs [#329](https://github.com/knsv/mermaid/issues/329) -- activation boxes [#313](https://github.com/knsv/mermaid/issues/313) - -**Closed issues:** - -- demos on io site not working [#466](https://github.com/knsv/mermaid/issues/466) -- Can not be generated PNG pictures through CLI with Chinese [#451](https://github.com/knsv/mermaid/issues/451) -- Round nodes cannot be styled with CSS classes [#443](https://github.com/knsv/mermaid/issues/443) -- webpack gulp UglifyJsPlugin error. [#440](https://github.com/knsv/mermaid/issues/440) -- String concatenation isn't working [#432](https://github.com/knsv/mermaid/issues/432) -- text flow/wrap in actor box of sequence diagram [#422](https://github.com/knsv/mermaid/issues/422) -- Online live editor still use old version [#402](https://github.com/knsv/mermaid/issues/402) -- uncaught TypeError: t.getTransformToElement is not a function [#401](https://github.com/knsv/mermaid/issues/401) -- Only works when using browserify'd code [#373](https://github.com/knsv/mermaid/issues/373) -- document the use of shebang line in mmd files [#364](https://github.com/knsv/mermaid/issues/364) -- Diagrams are small and unreadable in IE 11 - since 0.5.1 [#356](https://github.com/knsv/mermaid/issues/356) -- \[Feature Request] ER-Diagram Support [#354](https://github.com/knsv/mermaid/issues/354) -- The need for mermaid.css should be mentioned explicitly in the intro docs... [#273](https://github.com/knsv/mermaid/issues/273) - -**Merged pull requests:** - -- Update index.html [#465](https://github.com/knsv/mermaid/pull/465) ([bmsleight](https://github.com/bmsleight)) -- Fix for #416, customizing link style with any color sets `fill` property to `black` instead of `none` [#452](https://github.com/knsv/mermaid/pull/452) ([joshuacolvin](https://github.com/joshuacolvin)) -- Allow .node>circle to receive css styles [#449](https://github.com/knsv/mermaid/pull/449) ([bfriedz](https://github.com/bfriedz)) -- Fix spelling [#447](https://github.com/knsv/mermaid/pull/447) ([jawn](https://github.com/jawn)) -- added tests and fix cli css style selector lowercase problem [#445](https://github.com/knsv/mermaid/pull/445) ([whyzdev](https://github.com/whyzdev)) -- Update d3.js [#441](https://github.com/knsv/mermaid/pull/441) ([hetz](https://github.com/hetz)) -- added tests to reproduce #434 in flowchart [#439](https://github.com/knsv/mermaid/pull/439) ([whyzdev](https://github.com/whyzdev)) -- Code Climate config [#437](https://github.com/knsv/mermaid/pull/437) ([larkinscott](https://github.com/larkinscott)) -- fix gantt and sequence digram cli cfg [#435](https://github.com/knsv/mermaid/pull/435) ([whyzdev](https://github.com/whyzdev)) -- fix gantt chart cli configuration broken [#433](https://github.com/knsv/mermaid/pull/433) ([whyzdev](https://github.com/whyzdev)) -- fix gantt chart cli configuration parsing including functions [#430](https://github.com/knsv/mermaid/pull/430) ([whyzdev](https://github.com/whyzdev)) -- Uses an empty text node instead of a string for svg group labels [#429](https://github.com/knsv/mermaid/pull/429) ([daveaglick](https://github.com/daveaglick)) -- use tspan via d3.textwrap to place actor text in sequence diagram [#427](https://github.com/knsv/mermaid/pull/427) ([whyzdev](https://github.com/whyzdev)) -- \#422 use foreignObject/div to place actor label in sequence diagram [#423](https://github.com/knsv/mermaid/pull/423) ([whyzdev](https://github.com/whyzdev)) -- Clarify the need for a CSS stylesheet [#413](https://github.com/knsv/mermaid/pull/413) ([sifb](https://github.com/sifb)) -- Added hads downstream project [#412](https://github.com/knsv/mermaid/pull/412) ([sinedied](https://github.com/sinedied)) -- update usage and fix #273 [#406](https://github.com/knsv/mermaid/pull/406) ([jinntrance](https://github.com/jinntrance)) -- Add https://github.com/raghur/mermaid-filter to downstream projects docs page [#404](https://github.com/knsv/mermaid/pull/404) ([raghur](https://github.com/raghur)) -- New neutral theme [#395](https://github.com/knsv/mermaid/pull/395) ([sinedied](https://github.com/sinedied)) -- fix cli issues [#390](https://github.com/knsv/mermaid/pull/390) ([ben-page](https://github.com/ben-page)) -- Add missing space for 'Labels out of bounds' section [#386](https://github.com/knsv/mermaid/pull/386) ([The-Alchemist](https://github.com/The-Alchemist)) -- Fix typo: `pats` -> `paths` [#382](https://github.com/knsv/mermaid/pull/382) ([swhgoon](https://github.com/swhgoon)) -- Added class diagram example to README.md [#379](https://github.com/knsv/mermaid/pull/379) ([HustLion](https://github.com/HustLion)) -- override normal flowchart arrowhead to allow css styling [#376](https://github.com/knsv/mermaid/pull/376) ([dodoinblue](https://github.com/dodoinblue)) -- added sphinx extension [#371](https://github.com/knsv/mermaid/pull/371) ([mgaitan](https://github.com/mgaitan)) -- Fix typo in the sequence diagram documentation [#369](https://github.com/knsv/mermaid/pull/369) ([ggpasqualino](https://github.com/ggpasqualino)) - -## [6.0.0](https://github.com/knsv/mermaid/tree/6.0.0) (2016-05-29) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.8...6.0.0) - -**Closed issues:** - -- Docs css: code hard to read [#324](https://github.com/knsv/mermaid/issues/324) -- About Markpad integration [#323](https://github.com/knsv/mermaid/issues/323) -- How to link backwards in flowchart? [#321](https://github.com/knsv/mermaid/issues/321) -- Help with editor [#310](https://github.com/knsv/mermaid/issues/310) -- \+1 [#293](https://github.com/knsv/mermaid/issues/293) -- Basic chart does not render on Chome, but does in Firefox [#290](https://github.com/knsv/mermaid/issues/290) -- Live editor is broken [#285](https://github.com/knsv/mermaid/issues/285) -- "No such file or directory" trying to run mermaid 0.5.7 on OS X [#284](https://github.com/knsv/mermaid/issues/284) -- participant name as "Long Long Name" [#283](https://github.com/knsv/mermaid/issues/283) -- Windows - cli - could not find phantomjs at the specified path [#236](https://github.com/knsv/mermaid/issues/236) - -**Merged pull requests:** - -- The option of gantt for the spaces for the section names. [#353](https://github.com/knsv/mermaid/pull/353) ([zeroyonichihachi](https://github.com/zeroyonichihachi)) -- Gitgraph: Make reset work with parent ref carets [#350](https://github.com/knsv/mermaid/pull/350) ([raghur](https://github.com/raghur)) -- Remove the text-shadows that make the text look blurry [#349](https://github.com/knsv/mermaid/pull/349) ([AsaAyers](https://github.com/AsaAyers)) -- add line interpolation to linkStyle in flowchart [#346](https://github.com/knsv/mermaid/pull/346) ([AlanHohn](https://github.com/AlanHohn)) -- Support git graph diagrams in mermaid [#344](https://github.com/knsv/mermaid/pull/344) ([raghur](https://github.com/raghur)) -- Build and test execution changes [#338](https://github.com/knsv/mermaid/pull/338) ([ssbarnea](https://github.com/ssbarnea)) -- Reformatting of css files [#331](https://github.com/knsv/mermaid/pull/331) ([Jmuccigr](https://github.com/Jmuccigr)) -- (WIP) Sequence Diagram Title Support [#320](https://github.com/knsv/mermaid/pull/320) ([bronsoja](https://github.com/bronsoja)) -- activations doc + few fixes [#318](https://github.com/knsv/mermaid/pull/318) ([ciekawy](https://github.com/ciekawy)) -- Dark theme for better contrast on darker backgrounds [#317](https://github.com/knsv/mermaid/pull/317) ([crodriguez1a](https://github.com/crodriguez1a)) -- Activations [#316](https://github.com/knsv/mermaid/pull/316) ([ciekawy](https://github.com/ciekawy)) -- Support leading comments for sequenceDiagrams [#312](https://github.com/knsv/mermaid/pull/312) ([ashsearle](https://github.com/ashsearle)) -- Show a little lenience for white-space around names [#309](https://github.com/knsv/mermaid/pull/309) ([ashsearle](https://github.com/ashsearle)) -- Update list of downstream projects [#307](https://github.com/knsv/mermaid/pull/307) ([maxArturo](https://github.com/maxArturo)) -- Issue 299: Sequence diagram Loops: changing boxMargin spoils the "loop" notation [#300](https://github.com/knsv/mermaid/pull/300) ([LarryKlugerDS](https://github.com/LarryKlugerDS)) -- Issue 297 - src/mermaid.js generates bad code [#298](https://github.com/knsv/mermaid/pull/298) ([LarryKlugerDS](https://github.com/LarryKlugerDS)) -- Updated instructions for running tests [#295](https://github.com/knsv/mermaid/pull/295) ([LarryKlugerDS](https://github.com/LarryKlugerDS)) -- Add Markdown Plus to Downstream projects [#288](https://github.com/knsv/mermaid/pull/288) ([tylerlong](https://github.com/tylerlong)) -- Quote phantomPath so that it doesn't fail on window [#286](https://github.com/knsv/mermaid/pull/286) ([raghur](https://github.com/raghur)) - -## [0.5.8](https://github.com/knsv/mermaid/tree/0.5.8) (2016-01-27) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.7...0.5.8) - -## [0.5.7](https://github.com/knsv/mermaid/tree/0.5.7) (2016-01-25) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.6...0.5.7) - -**Closed issues:** - -- Mermaid + LightPaper = ❤️ [#280](https://github.com/knsv/mermaid/issues/280) -- Bower Integration [#278](https://github.com/knsv/mermaid/issues/278) -- Mermaid breaks when variables end in 'v' [#276](https://github.com/knsv/mermaid/issues/276) -- sequence diagrams don't support participant aliasing [#263](https://github.com/knsv/mermaid/issues/263) -- One diagram that fails to render stops further execution on the page [#259](https://github.com/knsv/mermaid/issues/259) -- Where to find line layout algorithm? [#258](https://github.com/knsv/mermaid/issues/258) -- Compatibility with node.js [#257](https://github.com/knsv/mermaid/issues/257) -- Label resizing with dynamically loaded fonts [#255](https://github.com/knsv/mermaid/issues/255) -- SVG arrowheads are broken in the CLI [#249](https://github.com/knsv/mermaid/issues/249) -- Cannot read property 'replace' of undefined [#239](https://github.com/knsv/mermaid/issues/239) - -**Merged pull requests:** - -- gh-50 Allow styling of edge labels in css [#267](https://github.com/knsv/mermaid/pull/267) ([Anoia](https://github.com/Anoia)) -- Allow sequenceDiagram participant aliasing [#265](https://github.com/knsv/mermaid/pull/265) ([gibson042](https://github.com/gibson042)) - -## [0.5.6](https://github.com/knsv/mermaid/tree/0.5.6) (2015-11-22) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.5...0.5.6) - -**Implemented enhancements:** - -- Add download SVG link to the live editor [#144](https://github.com/knsv/mermaid/issues/144) - -**Fixed bugs:** - -- Live Editor: Permalink address not being parsed [#202](https://github.com/knsv/mermaid/issues/202) - -**Closed issues:** - -- title doesn't work in sequenceDiagram [#248](https://github.com/knsv/mermaid/issues/248) -- hypen-minus should be valid in sequence diagram alt/else/etc. descriptions [#247](https://github.com/knsv/mermaid/issues/247) -- Broken in firefox? [#245](https://github.com/knsv/mermaid/issues/245) -- When there is a Chinese symbol in the flowchart, it will crash。 [#238](https://github.com/knsv/mermaid/issues/238) -- Non-alpha characters included in ALPHA token (flow graph jison) [#232](https://github.com/knsv/mermaid/issues/232) -- subgraph not rendering with change to sample [#231](https://github.com/knsv/mermaid/issues/231) -- sequence diagram requires a new line at the end? [#229](https://github.com/knsv/mermaid/issues/229) - -**Merged pull requests:** - -- Make sequenceDiagram terminal newline optional [#253](https://github.com/knsv/mermaid/pull/253) ([gibson042](https://github.com/gibson042)) -- Support sequenceDiagram "over" notes [#252](https://github.com/knsv/mermaid/pull/252) ([gibson042](https://github.com/gibson042)) -- Properly handle "rest of line" statements [#251](https://github.com/knsv/mermaid/pull/251) ([gibson042](https://github.com/gibson042)) -- CLI: Propagate exit code from lib (i.e., phantomjs) [#250](https://github.com/knsv/mermaid/pull/250) ([gibson042](https://github.com/gibson042)) -- flowRender.js - Fix FontAwesome icon insert [#244](https://github.com/knsv/mermaid/pull/244) ([ma-zal](https://github.com/ma-zal)) -- updated sequence diagram link in live editor [#242](https://github.com/knsv/mermaid/pull/242) ([r-a-v-a-s](https://github.com/r-a-v-a-s)) -- updated links in README.md [#240](https://github.com/knsv/mermaid/pull/240) ([r-a-v-a-s](https://github.com/r-a-v-a-s)) -- Ellipse syntax [#237](https://github.com/knsv/mermaid/pull/237) ([spect88](https://github.com/spect88)) -- Allow keywords as suffixes of node ids [#235](https://github.com/knsv/mermaid/pull/235) ([spect88](https://github.com/spect88)) -- Highlighted the editor in the nav [#234](https://github.com/knsv/mermaid/pull/234) ([knsv](https://github.com/knsv)) -- Live editor tweaks [#233](https://github.com/knsv/mermaid/pull/233) ([spect88](https://github.com/spect88)) -- Add a Gitter chat badge to README.md [#230](https://github.com/knsv/mermaid/pull/230) ([gitter-badger](https://github.com/gitter-badger)) - -## [0.5.5](https://github.com/knsv/mermaid/tree/0.5.5) (2015-10-21) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.4...0.5.5) - -**Closed issues:** - -- sequence diagram, arrowhead instead of crosshead [#227](https://github.com/knsv/mermaid/issues/227) - -**Merged pull requests:** - -- Fix a typo: crosshead --> arrowhead [#228](https://github.com/knsv/mermaid/pull/228) ([tylerlong](https://github.com/tylerlong)) - -## [0.5.4](https://github.com/knsv/mermaid/tree/0.5.4) (2015-10-19) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.3...0.5.4) - -**Implemented enhancements:** - -- Set log level from mermaid configuration [#220](https://github.com/knsv/mermaid/issues/220) -- Links in sequence diagrams [#159](https://github.com/knsv/mermaid/issues/159) -- Add syntax for double headed arrows [#123](https://github.com/knsv/mermaid/issues/123) - -**Fixed bugs:** - -- comment characters `%%` cause parse error [#141](https://github.com/knsv/mermaid/issues/141) - -**Closed issues:** - -- Marker-end arrow cannot be shown for URL with query parameter [#225](https://github.com/knsv/mermaid/issues/225) -- Please update bower's D3 version [#221](https://github.com/knsv/mermaid/issues/221) -- Width fixed to 400px [#204](https://github.com/knsv/mermaid/issues/204) -- render to png from the cli does not display the marker-end arrow heads [#181](https://github.com/knsv/mermaid/issues/181) - -**Merged pull requests:** - -- Allow `end` as a substring of vertex id [#224](https://github.com/knsv/mermaid/pull/224) ([spect88](https://github.com/spect88)) -- Remove duplicate npm dependencies: d3 and he [#223](https://github.com/knsv/mermaid/pull/223) ([spect88](https://github.com/spect88)) - -## [0.5.3](https://github.com/knsv/mermaid/tree/0.5.3) (2015-10-04) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.2...0.5.3) - -## [0.5.2](https://github.com/knsv/mermaid/tree/0.5.2) (2015-10-04) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.1...0.5.2) - -**Implemented enhancements:** - -- Support for hyperlink and tooltip [#34](https://github.com/knsv/mermaid/issues/34) - -**Closed issues:** - -- Installing “atom-mermaid@0.1.3” failed [#218](https://github.com/knsv/mermaid/issues/218) -- node feature request [#211](https://github.com/knsv/mermaid/issues/211) -- Please add prefix for styles [#208](https://github.com/knsv/mermaid/issues/208) -- Bad handling of block arguments [#207](https://github.com/knsv/mermaid/issues/207) -- please consider port to mac osx [#203](https://github.com/knsv/mermaid/issues/203) -- allow phantomjs >=1.9.x [#201](https://github.com/knsv/mermaid/issues/201) -- syntax for venn diagrams? [#200](https://github.com/knsv/mermaid/issues/200) -- Broken CLI Graphs? (v0.5.1) [#196](https://github.com/knsv/mermaid/issues/196) -- Static site does not render under HTTPS [#194](https://github.com/knsv/mermaid/issues/194) -- Error on simple graph [#192](https://github.com/knsv/mermaid/issues/192) -- Escape "~" [#191](https://github.com/knsv/mermaid/issues/191) -- Trying to add link using 'click' to flowchart [#188](https://github.com/knsv/mermaid/issues/188) -- cli: no lines and arrowheads rendered / only dotted lines [#187](https://github.com/knsv/mermaid/issues/187) -- text of mermaid div displayed on page [#186](https://github.com/knsv/mermaid/issues/186) -- using mermaid with laravel [#185](https://github.com/knsv/mermaid/issues/185) -- Atom editor package [#183](https://github.com/knsv/mermaid/issues/183) -- Auto linewrap for notes in sequence diagrams [#178](https://github.com/knsv/mermaid/issues/178) -- Execute code after initialize [#176](https://github.com/knsv/mermaid/issues/176) -- Autoscaling for all diagram types [#175](https://github.com/knsv/mermaid/issues/175) -- Problem wit click event callback [#174](https://github.com/knsv/mermaid/issues/174) -- How to escape characters? [#170](https://github.com/knsv/mermaid/issues/170) -- it can not work [#167](https://github.com/knsv/mermaid/issues/167) -- Broken subgraph using the CLI [#153](https://github.com/knsv/mermaid/issues/153) -- IE Support issue [#142](https://github.com/knsv/mermaid/issues/142) -- Flowchart truncated [#140](https://github.com/knsv/mermaid/issues/140) -- Double Quote as text is not working [#219](https://github.com/knsv/mermaid/issues/219) -- classDef / class not working with htmlLabels? [#210](https://github.com/knsv/mermaid/issues/210) -- Links in graph missing [#209](https://github.com/knsv/mermaid/issues/209) -- Last word in comment boxes getting cut off by word wrap library : ( [#195](https://github.com/knsv/mermaid/issues/195) -- Escaping characters in sequence diagram [#193](https://github.com/knsv/mermaid/issues/193) -- SVG foreignObject rendering [#180](https://github.com/knsv/mermaid/issues/180) -- IE9 issue [#179](https://github.com/knsv/mermaid/issues/179) -- inoperable in an AMD/requirejs environment: IPython Notebook [#127](https://github.com/knsv/mermaid/issues/127) -- \[Parser] Hyphen in participant name bring TypeError [#74](https://github.com/knsv/mermaid/issues/74) - -**Merged pull requests:** - -- Update flowchart.md [#214](https://github.com/knsv/mermaid/pull/214) ([orschiro](https://github.com/orschiro)) -- Default style when using the CLI [#205](https://github.com/knsv/mermaid/pull/205) ([gillesdemey](https://github.com/gillesdemey)) -- Gantt chart - add minutes and seconds durations [#198](https://github.com/knsv/mermaid/pull/198) ([dbrans](https://github.com/dbrans)) -- Using QUnit for AMD testing [#190](https://github.com/knsv/mermaid/pull/190) ([bollwyvl](https://github.com/bollwyvl)) -- Update phantomscript.js [#182](https://github.com/knsv/mermaid/pull/182) ([phairow](https://github.com/phairow)) - -## [0.5.1](https://github.com/knsv/mermaid/tree/0.5.1) (2015-06-21) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.0...0.5.1) - -**Implemented enhancements:** - -- To SVG Export [#146](https://github.com/knsv/mermaid/issues/146) -- Possibility to set the width of the generated flowchart [#129](https://github.com/knsv/mermaid/issues/129) -- Special characters break parsing [#54](https://github.com/knsv/mermaid/issues/54) -- Responsive graph layout for mobile viewers [#51](https://github.com/knsv/mermaid/issues/51) -- Styling connector lines [#31](https://github.com/knsv/mermaid/issues/31) - -**Fixed bugs:** - -- flowchart - styling of edges via css overrides specific styles set in the graph definition [#128](https://github.com/knsv/mermaid/issues/128) - -**Closed issues:** - -- Live editor is broken [#173](https://github.com/knsv/mermaid/issues/173) -- 0.5.0 no longer respects custom date definitions in Gantt diagrams [#171](https://github.com/knsv/mermaid/issues/171) -- Drop label character restrictions [#162](https://github.com/knsv/mermaid/issues/162) -- can't nest subgraphs in flowchart [#161](https://github.com/knsv/mermaid/issues/161) -- Unable to generate gantt diagram with mermaid CLI [#158](https://github.com/knsv/mermaid/issues/158) -- Inline css by "mermaid" [#157](https://github.com/knsv/mermaid/issues/157) -- Finite State Machine Diagram [#152](https://github.com/knsv/mermaid/issues/152) -- How to center align gantt diagram [#150](https://github.com/knsv/mermaid/issues/150) -- Security concern regarding class definition [#148](https://github.com/knsv/mermaid/issues/148) -- File Extension [#147](https://github.com/knsv/mermaid/issues/147) -- `setTimeout` with clusters problematic with programmatic edits and no callback [#133](https://github.com/knsv/mermaid/issues/133) -- module.exports.cloneCssStyles() in combination with Angularjs breaks display in Chrome and IE [#126](https://github.com/knsv/mermaid/issues/126) -- Gantt - suitable xAxis for longer project [#125](https://github.com/knsv/mermaid/issues/125) -- How to get started with this project ? [#64](https://github.com/knsv/mermaid/issues/64) - -**Merged pull requests:** - -- Remove moot `version` property from bower.json [#172](https://github.com/knsv/mermaid/pull/172) ([kkirsche](https://github.com/kkirsche)) - -## [0.5.0](https://github.com/knsv/mermaid/tree/0.5.0) (2015-06-07) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.4.0...0.5.0) - -**Implemented enhancements:** - -- Add a css file, mermaid.css, with default styling [#122](https://github.com/knsv/mermaid/issues/122) -- software architecture diagram [#36](https://github.com/knsv/mermaid/issues/36) -- Support for bar charts and pie diagrams [#22](https://github.com/knsv/mermaid/issues/22) - -**Closed issues:** - -- uglifyjs wanrings which means we can improve the code [#156](https://github.com/knsv/mermaid/issues/156) -- New(er) features unavailable in downloadable js files? [#151](https://github.com/knsv/mermaid/issues/151) -- Add gh-gapes link to description [#143](https://github.com/knsv/mermaid/issues/143) -- Some examples not displayed on Firefox 36.0.1 [#138](https://github.com/knsv/mermaid/issues/138) -- tags ending in a "v" don't render [#132](https://github.com/knsv/mermaid/issues/132) -- Links in flowchart [#131](https://github.com/knsv/mermaid/issues/131) -- Using the library for iOS development [#130](https://github.com/knsv/mermaid/issues/130) -- Add capability for gantt diagrams [#118](https://github.com/knsv/mermaid/issues/118) -- lower case v causes error in the parser [#108](https://github.com/knsv/mermaid/issues/108) -- Label's css conflict with boostrap's .label [#67](https://github.com/knsv/mermaid/issues/67) -- TypeError: Cannot read property 'layout' of undefined [#37](https://github.com/knsv/mermaid/issues/37) - -**Merged pull requests:** - -- Dev 0.5.0 [#168](https://github.com/knsv/mermaid/pull/168) ([knsv](https://github.com/knsv)) -- Fix spacing [#164](https://github.com/knsv/mermaid/pull/164) ([rhcarvalho](https://github.com/rhcarvalho)) -- Fixing typo: "Think" -> "Thick" [#160](https://github.com/knsv/mermaid/pull/160) ([it0a](https://github.com/it0a)) -- IE, local html, cssRules access is denied [#155](https://github.com/knsv/mermaid/pull/155) ([tylerlong](https://github.com/tylerlong)) -- Add automatically generated change log file. [#139](https://github.com/knsv/mermaid/pull/139) ([skywinder](https://github.com/skywinder)) -- Adding init argument to the global API [#137](https://github.com/knsv/mermaid/pull/137) ([bollwyvl](https://github.com/bollwyvl)) -- Add description of manual calling of init [#136](https://github.com/knsv/mermaid/pull/136) ([bollwyvl](https://github.com/bollwyvl)) -- Allow other forms of node selection for init() [#135](https://github.com/knsv/mermaid/pull/135) ([bollwyvl](https://github.com/bollwyvl)) -- Use a library-level variable for assigning ids [#134](https://github.com/knsv/mermaid/pull/134) ([bollwyvl](https://github.com/bollwyvl)) - -## [0.4.0](https://github.com/knsv/mermaid/tree/0.4.0) (2015-03-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.5...0.4.0) - -**Implemented enhancements:** - -- Assymetric shapes not documented [#82](https://github.com/knsv/mermaid/issues/82) -- Improve arrows [#3](https://github.com/knsv/mermaid/issues/3) - -**Fixed bugs:** - -- NoModificationAllowedError [#23](https://github.com/knsv/mermaid/issues/23) - -**Closed issues:** - -- subgraph background is black in rendered flowchart PNG via CLI [#121](https://github.com/knsv/mermaid/issues/121) -- Integrate editor at https://github.com/naseer/mermaid-webapp [#110](https://github.com/knsv/mermaid/issues/110) -- Internet Explorer Support [#99](https://github.com/knsv/mermaid/issues/99) - -## [0.3.5](https://github.com/knsv/mermaid/tree/0.3.5) (2015-02-15) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.4...0.3.5) - -## [0.3.4](https://github.com/knsv/mermaid/tree/0.3.4) (2015-02-15) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.3...0.3.4) - -**Implemented enhancements:** - -- Apply styling from css when using the CLI utility [#85](https://github.com/knsv/mermaid/issues/85) -- Generated SVG works poorly outside web browsers [#58](https://github.com/knsv/mermaid/issues/58) -- Generating SVG text blob for use in Node [#2](https://github.com/knsv/mermaid/issues/2) - -**Closed issues:** - -- Subgraph syntax bug? [#120](https://github.com/knsv/mermaid/issues/120) -- Live editor [#115](https://github.com/knsv/mermaid/issues/115) -- Error in "Basic Syntax" wiki page [#113](https://github.com/knsv/mermaid/issues/113) -- semicolons, anyone? [#111](https://github.com/knsv/mermaid/issues/111) -- undefined `sequenceConfig` fails [#109](https://github.com/knsv/mermaid/issues/109) -- Sequence Diagrams: Show Actors below as well [#106](https://github.com/knsv/mermaid/issues/106) -- Allow overriding sequence diagram configuration (SVG properties) [#103](https://github.com/knsv/mermaid/issues/103) -- Error when rendering A-- This is the text -- B [#102](https://github.com/knsv/mermaid/issues/102) -- Clipping in documentation [#97](https://github.com/knsv/mermaid/issues/97) -- isolate class styling to the svg container [#92](https://github.com/knsv/mermaid/issues/92) -- Make the new graph declaration more visual [#40](https://github.com/knsv/mermaid/issues/40) - -**Merged pull requests:** - -- Add live editor [#119](https://github.com/knsv/mermaid/pull/119) ([naseer](https://github.com/naseer)) -- Adds CSS option to the CLI [#116](https://github.com/knsv/mermaid/pull/116) ([fardog](https://github.com/fardog)) -- Update flowchart.md in response Issue #113 [#114](https://github.com/knsv/mermaid/pull/114) ([vijay40](https://github.com/vijay40)) -- Ignore all files except the license and dist/ folder when installing with Bower. [#112](https://github.com/knsv/mermaid/pull/112) ([jasonbellamy](https://github.com/jasonbellamy)) - -## [0.3.3](https://github.com/knsv/mermaid/tree/0.3.3) (2015-01-25) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.2...0.3.3) - -**Implemented enhancements:** - -- Support for dotted links [#26](https://github.com/knsv/mermaid/issues/26) - -**Closed issues:** - -- Missing arrows in sequence diagram [#98](https://github.com/knsv/mermaid/issues/98) -- Error with >9 linkStyles [#95](https://github.com/knsv/mermaid/issues/95) - -**Merged pull requests:** - -- Require d3 directly to better support Node usage [#107](https://github.com/knsv/mermaid/pull/107) ([markdalgleish](https://github.com/markdalgleish)) -- update doc with -c option [#105](https://github.com/knsv/mermaid/pull/105) ([jjmr](https://github.com/jjmr)) -- Add new parameter to the console client to override the svg configuration in sequence diagrams [#104](https://github.com/knsv/mermaid/pull/104) ([jjmr](https://github.com/jjmr)) -- Text based labels, new shape [#101](https://github.com/knsv/mermaid/pull/101) ([bjowes](https://github.com/bjowes)) -- fix html tags in example usage [#100](https://github.com/knsv/mermaid/pull/100) ([deiwin](https://github.com/deiwin)) - -## [0.3.2](https://github.com/knsv/mermaid/tree/0.3.2) (2015-01-11) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.1...0.3.2) - -**Implemented enhancements:** - -- Make link text look like it is on the line [#53](https://github.com/knsv/mermaid/issues/53) - -**Closed issues:** - -- disable auto render [#91](https://github.com/knsv/mermaid/issues/91) -- Tidy breaks mermaid (linebreaks in \
) [#87](https://github.com/knsv/mermaid/issues/87) -- Bug: \
being rendered as text in node [#73](https://github.com/knsv/mermaid/issues/73) -- Graph edges appear to render outside of the canvas [#70](https://github.com/knsv/mermaid/issues/70) - -**Merged pull requests:** - -- Merge pull request #1 from knsv/master [#96](https://github.com/knsv/mermaid/pull/96) ([gkchic](https://github.com/gkchic)) -- Removed duplicated section in flowchart docs [#94](https://github.com/knsv/mermaid/pull/94) ([kaime](https://github.com/kaime)) -- Grammar changes to sequence page [#93](https://github.com/knsv/mermaid/pull/93) ([gkchic](https://github.com/gkchic)) -- Github buttons [#89](https://github.com/knsv/mermaid/pull/89) ([gkchic](https://github.com/gkchic)) -- Template change [#88](https://github.com/knsv/mermaid/pull/88) ([gkchic](https://github.com/gkchic)) - -## [0.3.1](https://github.com/knsv/mermaid/tree/0.3.1) (2015-01-05) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.0...0.3.1) - -**Implemented enhancements:** - -- Support for sequence diagrams [#16](https://github.com/knsv/mermaid/issues/16) -- Client utility for mermaid [#6](https://github.com/knsv/mermaid/issues/6) - -**Closed issues:** - -- Non ASCII chars in labels [#84](https://github.com/knsv/mermaid/issues/84) -- 'undefined' titles of Quicklinks on the usage page [#80](https://github.com/knsv/mermaid/issues/80) -- \[cli] Enhancement proposal: not fail --version / --help if phantomjs isn't installed [#71](https://github.com/knsv/mermaid/issues/71) - -**Merged pull requests:** - -- Flowchart doc: Text in the circle now in a circle [#81](https://github.com/knsv/mermaid/pull/81) ([Grahack](https://github.com/Grahack)) -- Fix for issue #73 [#79](https://github.com/knsv/mermaid/pull/79) ([it0a](https://github.com/it0a)) -- Ink template [#78](https://github.com/knsv/mermaid/pull/78) ([gkchic](https://github.com/gkchic)) -- Show help and version even if phantom isn't present. Fixes #71 [#75](https://github.com/knsv/mermaid/pull/75) ([fardog](https://github.com/fardog)) -- Add apostrophe & 'and' [#72](https://github.com/knsv/mermaid/pull/72) ([sudodoki](https://github.com/sudodoki)) - -## [0.3.0](https://github.com/knsv/mermaid/tree/0.3.0) (2014-12-22) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.16...0.3.0) - -**Implemented enhancements:** - -- How do I do comments? [#47](https://github.com/knsv/mermaid/issues/47) -- Improve readability with new line as terminator and whitespace [#38](https://github.com/knsv/mermaid/issues/38) - -**Fixed bugs:** - -- This characters failed the lexical parsing [#46](https://github.com/knsv/mermaid/issues/46) - -**Closed issues:** - -- Trailing whitespace at the end of lines is not ignored [#55](https://github.com/knsv/mermaid/issues/55) -- Use classes instead of inline style for easy styling [#24](https://github.com/knsv/mermaid/issues/24) - -**Merged pull requests:** - -- Adds Command Line Interface for generating PNGs from mermaid description files [#69](https://github.com/knsv/mermaid/pull/69) ([fardog](https://github.com/fardog)) -- Allow special symbols for direction along with acronyms [#66](https://github.com/knsv/mermaid/pull/66) ([vijay40](https://github.com/vijay40)) - -## [0.2.16](https://github.com/knsv/mermaid/tree/0.2.16) (2014-12-15) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.15...0.2.16) - -**Fixed bugs:** - -- Lines routed outside visible area [#19](https://github.com/knsv/mermaid/issues/19) - -**Closed issues:** - -- Mermaid not rendering properly on Wordpress pages [#59](https://github.com/knsv/mermaid/issues/59) -- Improve example page with live demo [#52](https://github.com/knsv/mermaid/issues/52) -- Does not render upon AngularJS Updates [#45](https://github.com/knsv/mermaid/issues/45) -- Download link in README.MD doesn't work. [#42](https://github.com/knsv/mermaid/issues/42) -- linkStyle usage is not obvious [#41](https://github.com/knsv/mermaid/issues/41) -- Move \*.spec.js in src/ to test/ [#35](https://github.com/knsv/mermaid/issues/35) - -**Merged pull requests:** - -- New grammar will allow statements ending without semicolon as disccused in Issue #38 [#63](https://github.com/knsv/mermaid/pull/63) ([vijay40](https://github.com/vijay40)) -- Class based styling [#62](https://github.com/knsv/mermaid/pull/62) ([bjowes](https://github.com/bjowes)) -- Fix typos [#60](https://github.com/knsv/mermaid/pull/60) ([sublimino](https://github.com/sublimino)) -- Included .DS_Store in gitignore [#57](https://github.com/knsv/mermaid/pull/57) ([alvynmcq](https://github.com/alvynmcq)) -- Improves readability discussed in issue #38 [#56](https://github.com/knsv/mermaid/pull/56) ([vijay40](https://github.com/vijay40)) -- Added a linting task for gulp [#43](https://github.com/knsv/mermaid/pull/43) ([serv](https://github.com/serv)) - -## [0.2.15](https://github.com/knsv/mermaid/tree/0.2.15) (2014-12-05) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.14...0.2.15) - -**Fixed bugs:** - -- Error with some characters [#25](https://github.com/knsv/mermaid/issues/25) -- Cap-cased words break parser [#8](https://github.com/knsv/mermaid/issues/8) - -**Closed issues:** - -- Question marks don't render properly with /dist/mermaid.full.min.js [#30](https://github.com/knsv/mermaid/issues/30) -- Provide parse function in browser widthout `require`? [#21](https://github.com/knsv/mermaid/issues/21) -- Better label text support [#18](https://github.com/knsv/mermaid/issues/18) - -**Merged pull requests:** - -- Include bower_components/ to .gitignore [#33](https://github.com/knsv/mermaid/pull/33) ([serv](https://github.com/serv)) -- Fixed reference to Git repo. [#32](https://github.com/knsv/mermaid/pull/32) ([guyellis](https://github.com/guyellis)) - -## [0.2.14](https://github.com/knsv/mermaid/tree/0.2.14) (2014-12-03) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.13...0.2.14) - -## [0.2.13](https://github.com/knsv/mermaid/tree/0.2.13) (2014-12-03) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.10...0.2.13) - -**Implemented enhancements:** - -- Publish to NPM [#7](https://github.com/knsv/mermaid/issues/7) - -**Closed issues:** - -- modified init to be applied more than once [#29](https://github.com/knsv/mermaid/issues/29) -- Wanted to know build process for the project. [#28](https://github.com/knsv/mermaid/issues/28) -- can not support Chinese description [#20](https://github.com/knsv/mermaid/issues/20) -- Support unicode chars in labels [#9](https://github.com/knsv/mermaid/issues/9) - -## [0.2.10](https://github.com/knsv/mermaid/tree/0.2.10) (2014-12-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.9...0.2.10) - -## [0.2.9](https://github.com/knsv/mermaid/tree/0.2.9) (2014-12-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.8...0.2.9) - -**Closed issues:** - -- Add link to jsbin playground to README [#11](https://github.com/knsv/mermaid/issues/11) -- What are the requirements ? [#10](https://github.com/knsv/mermaid/issues/10) - -**Merged pull requests:** - -- Allow unicode chars in labels [#13](https://github.com/knsv/mermaid/pull/13) ([codebeige](https://github.com/codebeige)) - -## [0.2.8](https://github.com/knsv/mermaid/tree/0.2.8) (2014-12-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.7...0.2.8) - -## [0.2.7](https://github.com/knsv/mermaid/tree/0.2.7) (2014-12-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.6...0.2.7) - -**Closed issues:** - -- Provide parser as separate module [#4](https://github.com/knsv/mermaid/issues/4) - -## [0.2.6](https://github.com/knsv/mermaid/tree/0.2.6) (2014-11-27) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.5...0.2.6) - -## [0.2.5](https://github.com/knsv/mermaid/tree/0.2.5) (2014-11-27) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.4...0.2.5) - -**Merged pull requests:** - -- Added new shapes! [#1](https://github.com/knsv/mermaid/pull/1) ([bjowes](https://github.com/bjowes)) - -## [0.2.4](https://github.com/knsv/mermaid/tree/0.2.4) (2014-11-25) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.3...0.2.4) - -## [0.2.3](https://github.com/knsv/mermaid/tree/0.2.3) (2014-11-24) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.2...0.2.3) - -## [0.2.2](https://github.com/knsv/mermaid/tree/0.2.2) (2014-11-22) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.1...0.2.2) - -## [0.2.1](https://github.com/knsv/mermaid/tree/0.2.1) (2014-11-22) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.0...0.2.1) - -## [0.2.0](https://github.com/knsv/mermaid/tree/0.2.0) (2014-11-22) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.1.1...0.2.0) - -## [0.1.1](https://github.com/knsv/mermaid/tree/0.1.1) (2014-11-17) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.1.0...0.1.1) - -## [0.1.0](https://github.com/knsv/mermaid/tree/0.1.0) (2014-11-16) diff --git a/docs/community/development.md b/docs/community/development.md deleted file mode 100644 index 8503fb141..000000000 --- a/docs/community/development.md +++ /dev/null @@ -1,309 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/community/development.md](../../packages/mermaid/src/docs/community/development.md). - -# Contributing to Mermaid - -## Contents - -- [Technical Requirements and Setup](#technical-requirements-and-setup) -- [Contributing Code](#contributing-code) -- [Contributing Documentation](#contributing-documentation) -- [Questions or Suggestions?](#questions-or-suggestions) -- [Last Words](#last-words) - ---- - -So you want to help? That's great! - -![Image of happy people jumping with excitement](https://media.giphy.com/media/BlVnrxJgTGsUw/giphy.gif) - -Here are a few things to get you started on the right path. - -## Technical Requirements and Setup - -### Technical Requirements - -These are the tools we use for working with the code and documentation. - -- [volta](https://volta.sh/) to manage node versions. -- [Node.js](https://nodejs.org/en/). `volta install node` -- [pnpm](https://pnpm.io/) package manager. `volta install pnpm` -- [npx](https://docs.npmjs.com/cli/v8/commands/npx) the packaged executor in npm. This is needed [to install pnpm.](#2-install-pnpm) - -Follow [the setup steps below](#setup) to install them and verify they are working - -### Setup - -Follow these steps to set up the environment you need to work on code and/or documentation. - -#### 1. Fork and clone the repository - -In GitHub, you first _fork_ a repository when you are going to make changes and submit pull requests. - -Then you _clone_ a copy to your local development machine (e.g. where you code) to make a copy with all the files to work with. - -[Here is a GitHub document that gives an overview of the process.](https://docs.github.com/en/get-started/quickstart/fork-a-repo) - -#### 2. Install pnpm - -Once you have cloned the repository onto your development machine, change into the `mermaid` project folder so that you can install `pnpm`. You will need `npx` to install pnpm because volta doesn't support it yet. - -Ex: - -```bash -# Change into the mermaid directory (the top level director of the mermaid project repository) -cd mermaid -# npx is required for first install because volta does not support pnpm yet -npx pnpm install -``` - -#### 3. Verify Everything Is Working - -Once you have installed pnpm, you can run the `test` script to verify that pnpm is working _and_ that the repository has been cloned correctly: - -```bash -pnpm test -``` - -The `test` script and others are in the top-level `package.json` file. - -All tests should run sucessfully without any errors or failures. (You might see _lint_ or _formatting_ warnings; those are ok during this step.) - -## Contributing Code - -The basic steps for contributing code are: - -```mermaid-example -graph LR - git[1. Checkout a git branch] --> codeTest[2. write tests and code] --> doc[3. update documentation] --> submit[4.submit a PR] -``` - -```mermaid -graph LR - git[1. Checkout a git branch] --> codeTest[2. write tests and code] --> doc[3. update documentation] --> submit[4.submit a PR] -``` - -1. **Create** and checkout a git branch and work on your code in the branch -2. Write and update **tests** (unit and perhaps even integration (e2e) tests) (If you do TDD/BDD, the order might be different.) -3. **Let users know** that things have changed or been added in the documents! This is often overlooked, but _critical_ -4. **Submit** your code as a _pull request._ - -### 1. Checkout a git branch - -Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspired approach to branching. - -Development is done in the `develop` branch. - -Once development is done we branch a `release` branch from `develop` for testing. - -Once the release happens we merge the `release` branch with `master` and delete the `release` branch. The live product and on-line documentation are what is in the `master` branch. - -**All new work should be based on the `develop` branch.** - -**When you are ready to do work, always, ALWAYS:** - -1. Make sure you have the most up to date version of the `develop` branch. (fetch or pull to update it) -2. Check out the `develop` branch -3. Create a new branch for your work. Please name the branch following our naming convention below. - -We use the follow naming convention for branches: - -```text - [feature | bug | chore | docs]/[issue number]_[short description using dashes ('-') or underscores ('_') instead of spaces] -``` - -- The first part is the **type** of change: a feature, bug, chore, or documentation change ('docs') -- followed by a _slash_ (which helps to group like types together in many git tools) -- followed by the **issue number** -- followed by an _underscore_ ('\_') -- followed by a short text description (but use dashes ('-') or underscores ('\_') instead of spaces) - -If your work is specific to a single diagram type, it is a good idea to put the diagram type at the start of the dscription. This will help use keep release notes organized: it will help us keep changes for a diagram type together. - -**Ex: A new feature described in issue 2945 that adds a new arrow type called 'florbs' to state diagrams** - -`feature/2945_state-diagram-new-arrow-florbs` - -**Ex: A bug described in issue 1123 that causes random ugly red text in multiple diagram types** -`bug/1123_fix_random_ugly_red_text` - -### 2. Write Tests - -Tests ensure that each function, module, or part of code does what it says it will do. This is critically -important when other changes are made to ensure that existing code is not broken (no regression). - -Just as important, the tests act as _specifications:_ they specify what the code does (or should do). -Whenever someone is new to a section of code, they should be able to read the tests to get a thorough understanding of what it does and why. - -If you are fixing a bug, you should add tests to ensure that your code has actually fixed the bug, to specify/describe what the code is doing, and to ensure the bug doesn't happen again. -(If there had been a test for the situation, the bug never would have happened in the first place.) -You may need to change existing tests if they were inaccurate. - -If you are adding a feature, you will definitely need to add tests. Depending on the size of your feature, you may need to add integration tests. - -#### Unit Tests for Parsing - -If you are adding or changing the text that describes a diagram (the _grammar_), you will need to add (or change) tests for the _parser._ - -#### Integration/End-to-End (e2e) tests - -These test the rendering and visual appearance of the diagrams. -This ensures that the rendering of that feature in the e2e will be reviewed in the release process going forward. Less chance that it breaks! - -To start working with the e2e tests: - -1. Run `pnpm run dev` to start the dev server (or use the `pnpm dev` script) -2. Start **Cypress** by running `pnpm exec cypress open` in the **mermaid** folder (or use the `pnpm cypress:open` script). - -The rendering tests are very straightforward to create. There is a function `imgSnapshotTest`, which takes a diagram in text form and the mermaid options, and it renders that diagram in Cypress. - -When running in CI it will take a snapshot of the rendered diagram and compare it with the snapshot from last build and flag it for review if it differs. - -This is what a rendering test looks like: - -```js -it('should render forks and joins', () => { - imgSnapshotTest( - ` - stateDiagram - state fork_state <<fork>> - [*] --> fork_state - fork_state --> State2 - fork_state --> State3 - - state join_state <<join>> - State2 --> join_state - State3 --> join_state - join_state --> State4 - State4 --> [*] - `, - { logLevel: 0 } - ); - cy.get('svg'); -}); -``` - -\[TODO - running the tests against what is expected in development. ] - -\[TODO - how to generate new screenshots] -.... - -### 3. Update Documentation - -If the users have no way to know that things have changed, then you haven't really _fixed_ anything for the users; you've just added to making Mermaid feel broken. -Likewise, if users don't know that there is a new feature that you've implemented, it will forever remain unknown and unused. - -The documentation has to be updated to users know that things have changed and added! - -We know it can sometimes be hard to code _and_ write user documentation. - -\[TODO - how to submit documentation changes -- see [Contributing Documentation](#contributing-documentation) - -Create another issue specifically for the documentation.\ -You will need to help with the PR, but definitely ask for help if you feel stuck. -When it feels hard to write stuff out, explaining it to someone and having that person ask you clarifying questions can often be 80% of the work!] - -When in doubt, write up and submit what you can. It can be clarified and refined later. (With documentation, something is better than nothing!) - -### 4. Submit your pull request - -\[TODO - PR titles should start with (fix | feat | ....)] - -We make all changes via Pull Requests (PRs). As we have many Pull Requests from developers new to Mermaid, \ -we have put in place a process wherein _knsv, Knut Sveidqvist_ is the primary reviewer of changes and merging pull requests. The process is as follows: - -- Large changes are reviewed by knsv or other developer asked to review by knsv -- Smaller, low-risk changes like dependencies, documentation, etc. can be reviewed and merged by active collaborators - -**Reminder: Pull Requests should be submitted to the develop branch.** - -## Contributing Documentation - -\[TODO: This section is still a WIP. It still needs revision.] - -If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? - -The docs are located in the `src/docs` folder and are written in Markdown. Just pick the right section and start typing. -If you want to propose changes to the structure of the documentation, such as adding a new section or a new file you do that via the **[sidebar](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. - -> **All the documents displayed in the GitHub.io page are listed in [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. - -The contents of are based on the docs from the `master` branch. -Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. - -### How to Contribute to Documentation - -We are a little less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator. - -The documentation is located in the `src/docs` directory and organized according to relevant subfolder. - -The contents of are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. - -**The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** - -The `docs` folder will be automatically generated when committing to `src/docs` and should not be edited manually. - -We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation using GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) - -- Documentation (we encourage updates to the `src/docs` folder; you can submit them via direct commits) - -The source files for documentation are in `/packages/mermaid/docs` and are written in markdown. - -**_DO NOT CHANGE FILES IN `/docs`_** - -### The official documentation site - -**[The mermaid documentation site](https://mermaid-js.github.io/mermaid/) is powered by [Docsify](https://docsify.js.org), a simple documentation site generator.** - -\[TODO - how to preview the documents on a local machine? how to run VitePress?] - -If you want to preview the whole documentation site on your machine, you need to install `docsify-cli`: - -Markdown is used to format the text, for more information about Markdown [see the GitHub Markdown help page](https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax). - -To edit Docs on your computer: - -1. Find the Markdown file (.md) to edit in the [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs) directory in the `develop` branch. -2. Create a fork of the develop branch. -3. Make changes or add new documentation. -4. Commit changes to your fork and push it to GitHub. -5. Create a Pull Request of your fork. - -To edit Docs on GitHub: - -1. Login to [GitHub.com](https://www.github.com). -2. Navigate to [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). -3. To edit a file, click the pencil icon at the top-right of the file contents panel. -4. Describe what you changed in the **Propose file change** section, located at the bottom of the page. -5. Submit your changes by clicking the button **Propose file change** at the bottom (by automatic creation of a fork and a new branch). -6. Create a Pull Request of your newly forked branch by clicking the green **Create Pull Request** button. - -## Questions or Suggestions? - -#### First search to see if someone has already asked (and hopefully been answered) or suggested the same thing. - -- search in the Discussions -- search in the open Issues - -If you find an open issue or discussion thread that is similar to your question but isn't answered, -you can let us know that you are also interested in it. \[TODO: describe +1, upvote] -This helps the team know the relative interest in something and helps them set priorities and assignments. - -Feel free to add to the discussion on the issue or topic. - -If you can't find anything that already addresses your question or suggestion, _open a new issue:_ - -Log in to [GitHub.com](https://www.github.com), open or append to an issue [using the GitHub issue tracker of the mermaid-js repository](https://github.com/mermaid-js/mermaid/issues?q=is%3Aissue+is%3Aopen+label%3A%22Area%3A+Documentation%22). - -### How to Contribute a Suggestion - -## Last Words - -Don't get daunted if it is hard in the beginning. We have a great community with only encouraging words. So, if you get stuck, ask for help and hints in the Slack forum. If you want to show off something good, show it off there. - -[Join our Slack community if you want closer contact!](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) - -![Image of superhero wishing you good luck](https://media.giphy.com/media/l49JHz7kJvl6MCj3G/giphy.gif) diff --git a/docs/community/n00b-overview.md b/docs/community/n00b-overview.md deleted file mode 100644 index e0056d912..000000000 --- a/docs/community/n00b-overview.md +++ /dev/null @@ -1,74 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/community/n00b-overview.md](../../packages/mermaid/src/docs/community/n00b-overview.md). - -# Overview for Beginners - -**Explaining with a Diagram** - -A picture is worth a thousand words, a good diagram is undoubtedly worth more. They make understanding easier. - -## Creating and Maintaining Diagrams - -Anyone who has used Visio, or (God Forbid) Excel to make a Gantt Chart, knows how hard it is to create, edit and maintain good visualizations. - -Diagrams/Charts are significant but also become obsolete/inaccurate very fast. This catch-22 hobbles the productivity of teams. - -# Doc Rot in Diagrams - -Doc-Rot kills diagrams as quickly as it does text, but it takes hours in a desktop application to produce a diagram. - -Mermaid seeks to change using markdown-inspired syntax. The process is a quicker, less complicated, and more convenient way of going from concept to visualization. - -It is a relatively straightforward solution to a significant hurdle with the software teams. - -# Definition of Terms/ Dictionary - -**Mermaid text definitions can be saved for later reuse and editing.** - -> These are the Mermaid diagram definitions inside `
` tags, with the `class=mermaid`. - -```html -
-    graph TD
-    A[Client] --> B[Load Balancer]
-    B --> C[Server01]
-    B --> D[Server02]
-
-``` - -**render** - -> This is the core function of the Mermaid API. It reads all the `Mermaid Definitions` inside `div` tags and returns an SVG file, based on the definition. - -**Nodes** - -> These are the boxes that contain text or otherwise discrete pieces of each diagram, separated generally by arrows, except for Gantt Charts and User Journey Diagrams. They will be referred often in the instructions. Read for Diagram Specific [Syntax](../intro/n00b-syntaxReference.md) - -## Advantages of using Mermaid - -- Ease to generate, modify and render diagrams when you make them. -- The number of integrations and plugins it has. -- You can add it to your or companies website. -- Diagrams can be created through comments like this in a script: - -## The catch-22 of Diagrams and Charts: - -**Diagramming and charting is a large waste of developer's time, but not having diagrams ruins productivity.** - -Mermaid solves this by reducing the time and effort required to create diagrams and charts. - -Because, the text base for the diagrams allows it to be updated easily. Also, it can be made part of production scripts (and other pieces of code). So less time is spent on documenting, as a separate task. - -## Catching up with Development - -Being based on markdown, Mermaid can be used, not only by accomplished front-end developers, but by most computer savvy people to render diagrams, at much faster speeds. -In fact one can pick up the syntax for it quite easily from the examples given and there are many tutorials available in the internet. - -## Mermaid is for everyone. - -Video [Tutorials](https://mermaid-js.github.io/mermaid/#/../config/Tutorials) are also available for the mermaid [live editor](https://mermaid.live/). - -Alternatively you can use Mermaid [Plug-Ins](https://mermaid-js.github.io/mermaid/#/./integrations), with tools you already use, like Google Docs. diff --git a/docs/community/newDiagram.md b/docs/community/newDiagram.md deleted file mode 100644 index da86f9838..000000000 --- a/docs/community/newDiagram.md +++ /dev/null @@ -1,264 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/community/newDiagram.md](../../packages/mermaid/src/docs/community/newDiagram.md). - -# Adding a New Diagram/Chart 📊 - -### Step 1: Grammar & Parsing - -#### Grammar - -This would be to define a jison grammar for the new diagram type. That should start with a way to identify that the text in the mermaid tag is a diagram of that type. Create a new folder under diagrams for your new diagram type and a parser folder in it. This leads us to step 2. - -For instance: - -- the flowchart starts with the keyword graph. -- the sequence diagram starts with the keyword sequenceDiagram - -#### Store data found during parsing - -There are some jison specific sub steps here where the parser stores the data encountered when parsing the diagram, this data is later used by the renderer. You can during the parsing call a object provided to the parser by the user of the parser. This object can be called during parsing for storing data. - -```jison -statement - : 'participant' actor { $$='actor'; } - | signal { $$='signal'; } - | note_statement { $$='note'; } - | 'title' message { yy.setTitle($2); } - ; -``` - -In the extract of the grammar above, it is defined that a call to the setTitle method in the data object will be done when parsing and the title keyword is encountered. - -> **Note** -> Make sure that the `parseError` function for the parser is defined and calling `mermaid.parseError`. This way a common way of detecting parse errors is provided for the end-user. - -For more info look in the example diagram type: - -The `yy` object has the following function: - -```javascript -exports.parseError = function (err, hash) { - mermaid.parseError(err, hash); -}; -``` - -when parsing the `yy` object is initialized as per below: - -```javascript -const parser = exampleParser.parser; -parser.yy = db; -``` - -### Step 2: Rendering - -Write a renderer that given the data found during parsing renders the diagram. To look at an example look at sequenceRenderer.js rather then the flowchart renderer as this is a more generic example. - -Place the renderer in the diagram folder. - -### Step 3: Detection of the new diagram type - -The second thing to do is to add the capability to detect the new new diagram to type to the detectType in utils.js. The detection should return a key for the new diagram type. - -### Step 4: The final piece - triggering the rendering - -At this point when mermaid is trying to render the diagram, it will detect it as being of the new type but there will be no match when trying to render the diagram. To fix this add a new case in the switch statement in main.js:init this should match the diagram type returned from step #2. The code in this new case statement should call the renderer for the diagram type with the data found by the parser as an argument. - -## Usage of the parser as a separate module - -### Setup - -```javascript -const graph = require('./graphDb'); -const flow = require('./parser/flow'); -flow.parser.yy = graph; -``` - -### Parsing - -```javascript -flow.parser.parse(text); -``` - -### Data extraction - -```javascript -graph.getDirection(); -graph.getVertices(); -graph.getEdges(); -``` - -The parser is also exposed in the mermaid api by calling: - -```javascript -const parser = mermaid.getParser(); -``` - -Note that the parse needs a graph object to store the data as per: - -```javascript -flow.parser.yy = graph; -``` - -Look at `graphDb.js` for more details on that object. - -## Layout - -If you are using a dagre based layout, please use flowchart-v2 as a template and by doing that you will be using dagre-wrapper instead of dagreD3 which we are migrating away from. - -### Common parts of a diagram - -There are a few features that are common between the different types of diagrams. We try to standardize the diagrams that work as similar as possible for the end user. The commonalities are: - -- Directives, a way of modifying the diagram configuration from within the diagram code. -- Accessibility, a way for an author to provide additional information like titles and descriptions to people accessing a text with diagrams using a screen reader. -- Themes, there is a common way to modify the styling of diagrams in Mermaid. -- Comments should follow mermaid standards - -Here some pointers on how to handle these different areas. - -#### [Directives](../config/directives.md) - -Here is example handling from flowcharts: -Jison: - -```jison -/* lexical grammar */ -%lex -%x open_directive -%x type_directive -%x arg_directive -%x close_directive - -\%\%\{ { this.begin('open_directive'); return 'open_directive'; } -((?:(?!\}\%\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; } -":" { this.popState(); this.begin('arg_directive'); return ':'; } -\}\%\% { this.popState(); this.popState(); return 'close_directive'; } -((?:(?!\}\%\%).|\n)*) return 'arg_directive'; - -/* language grammar */ - -/* ... */ - -directive - : openDirective typeDirective closeDirective separator - | openDirective typeDirective ':' argDirective closeDirective separator - ; - -openDirective - : open_directive { yy.parseDirective('%%{', 'open_directive'); } - ; - -typeDirective - : type_directive { yy.parseDirective($1, 'type_directive'); } - ; - -argDirective - : arg_directive { $1 = $1.trim().replace(/'/g, '"'); yy.parseDirective($1, 'arg_directive'); } - ; - -closeDirective - : close_directive { yy.parseDirective('}%%', 'close_directive', 'flowchart'); } - ; -``` - -It is probably a good idea to keep the handling similar to this in your new diagram. The parseDirective function is provided by the mermaidAPI. - -## Accessibility - -The syntax for adding title and description looks like this: - - accTitle: The title - accDescr: The description - - accDescr { - Syntax for a description text - written on multiple lines. - } - -In a similar way to the directives the jison syntax are quite similar between the diagrams. - -```jison - -* lexical grammar */ -%lex -%x acc_title -%x acc_descr -%x acc_descr_multiline - -%% -accTitle\s*":"\s* { this.begin("acc_title");return 'acc_title'; } -(?!\n|;|#)*[^\n]* { this.popState(); return "acc_title_value"; } -accDescr\s*":"\s* { this.begin("acc_descr");return 'acc_descr'; } -(?!\n|;|#)*[^\n]* { this.popState(); return "acc_descr_value"; } -accDescr\s*"{"\s* { this.begin("acc_descr_multiline");} -[\}] { this.popState(); } -[^\}]* return "acc_descr_multiline_value"; - -statement - : acc_title acc_title_value { $$=$2.trim();yy.setTitle($$); } - | acc_descr acc_descr_value { $$=$2.trim();yy.setAccDescription($$); } - | acc_descr_multiline_value { $$=$1.trim();yy.setAccDescription($$); } - -``` - -The functions for setting title and description are provided by a common module. This is the import from flowDb.js: - - import { - setAccTitle, - getAccTitle, - getAccDescription, - setAccDescription, - clear as commonClear, - } from '../../commonDb'; - -For rendering the accessibility tags you have again an existing function you can use. - -**In the renderer:** - -```js -import addSVGAccessibilityFields from '../../accessibility'; - -/* ... */ - -// Adds title and description to the flow chart -addSVGAccessibilityFields(parser.yy, svg, id); -``` - -## Theming - -Mermaid supports themes and has an integrated theming engine. You can read more about how the themes can be used [in the docs](../config/theming.md). - -When adding themes to a diagram it comes down to a few important locations in the code. - -The entry point for the styling engine is in **src/styles.js**. The getStyles function will be called by Mermaid when the styles are being applied to the diagram. - -This function will in turn call a function _your diagram should provide_ returning the css for the new diagram. The diagram specific, also which is commonly also called getStyles and located in the folder for your diagram under src/diagrams and should be named styles.js. The getStyles function will be called with the theme options as an argument like in the following example: - -```js -const getStyles = (options) => - ` - .line { - stroke-width: 1; - stroke: ${options.lineColor}; - stroke-dasharray: 2; - } - // ... - `; -``` - -Note that you need to provide your function to the main getStyles by adding it into the themes object in **src/styles.js** like in the xyzDiagram in the provided example: - -```js -const themes = { - flowchart, - 'flowchart-v2': flowchart, - sequence, - xyzDiagram, - //... -}; -``` - -The actual options and values for the colors are defined in **src/theme/theme-\[xyz].js**. If you provide the options your diagram needs in the existing theme files then the theming will work smoothly without hiccups. diff --git a/docs/community/security.md b/docs/community/security.md deleted file mode 100644 index 07adbfbf8..000000000 --- a/docs/community/security.md +++ /dev/null @@ -1,29 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/community/security.md](../../packages/mermaid/src/docs/community/security.md). - -# Security - -The Mermaid team takes the security of Mermaid and the applications that use Mermaid seriously. This page describes how to report any vulnerabilities you may find, and lists best practices to minimize the risk of introducing a vulnerability. - -## Reporting vulnerabilities - -To report a vulnerability, please e-mail with a description of the issue, the steps you took to create the issue, affected versions, and if known, mitigations for the issue. - -We aim to reply within three working days, probably much sooner. - -You should expect a close collaboration as we work to resolve the issue you have reported. Please reach out to again if you do not receive prompt attention and regular updates. - -You may also reach out to the team via our public Slack chat channels; however, please make sure to e-mail when reporting an issue, and avoid revealing information about vulnerabilities in public as that could that could put users at risk. - -## Best practices - -Keep current with the latest Mermaid releases. We regularly update Mermaid, and these updates may fix security defects discovered in previous versions. Check the Mermaid release notes for security-related updates. - -Keep your application’s dependencies up to date. Make sure you upgrade your package dependencies to keep the dependencies up to date. Avoid pinning to specific versions for your dependencies and, if you do, make sure you check periodically to see if your dependencies have had security updates, and update the pin accordingly. - -## Configuring DomPurify - -By default Mermaid uses a baseline [DOMPurify](https://github.com/cure53/DOMPurify) config. It is possible to override the options passed to DOMPurify by adding a `dompurifyConfig` key to the Mermaid options. This could potentially break the output of Mermaid so use this with caution. diff --git a/docs/config/8.6.0_docs.md b/docs/config/8.6.0_docs.md deleted file mode 100644 index abd158712..000000000 --- a/docs/config/8.6.0_docs.md +++ /dev/null @@ -1,222 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/8.6.0_docs.md](../../packages/mermaid/src/docs/config/8.6.0_docs.md). - -# Version 8.6.0 Changes - -## [New Mermaid Live-Editor Beta](https://mermaid-js.github.io/docs/mermaid-live-editor-beta/#/edit/eyJjb2RlIjoiJSV7aW5pdDoge1widGhlbWVcIjogXCJmb3Jlc3RcIiwgXCJsb2dMZXZlbFwiOiAxIH19JSVcbmdyYXBoIFREXG4gIEFbQ2hyaXN0bWFzXSAtLT58R2V0IG1vbmV5fCBCKEdvIHNob3BwaW5nKVxuICBCIC0tPiBDe0xldCBtZSB0aGlua31cbiAgQyAtLT58T25lfCBEW0xhcHRvcF1cbiAgQyAtLT58VHdvfCBFW2lQaG9uZV1cbiAgQyAtLT58VGhyZWV8IEZbZmE6ZmEtY2FyIENhcl1cblx0XHQiLCJtZXJtYWlkIjp7InRoZW1lIjoiZGFyayJ9fQ) - -## [CDN](https://unpkg.com/mermaid/) - -With version 8.6.0 comes the release of directives for mermaid, a new system for modifying configurations, with the aim of establishing centralized, sane defaults and simple implementation. - -`directives` allow for a single-use overwriting of `config`, as it has been discussed in [Configurations](../config/configuration.md). -This allows site Diagram Authors to instantiate temporary modifications to `config` through the use of [Directives](directives.md), which are parsed before rendering diagram definitions. This allows the Diagram Authors to alter the appearance of the diagrams. - -**A likely application for this is in the creation of diagrams/charts inside company/organizational webpages, that rely on mermaid for diagram and chart rendering.** - -the `init` directive is the main method of configuration for Site and Current Levels. - -The three levels of are Configuration, Global, Site and Current. - -| Level of Configuration | Description | -| ---------------------- | ----------------------------------- | -| Global Configuration | Default Mermaid Configurations | -| Site Configuration | Configurations made by site owner | -| Current Configuration | Configurations made by Implementors | - -# Limits to Modifying Configurations - -**secure Array** - -| Parameter | Description | Type | Required | Values | -| --------- | ------------------------------------------------ | ----- | -------- | -------------- | -| secure | Array of parameters excluded from init directive | Array | Required | Any parameters | - -The modifiable parts of the Configuration are limited by the secure array, which is an array of immutable parameters, this array can be expanded by site owners. - -**Notes**: secure arrays work like nesting dolls, with the Global Configurations’ secure array holding the default and immutable list of immutable parameters, or the smallest doll, to which site owners may add to, but implementors may not modify it. - -# Secure Arrays - -Site owners can add to the **secure** array using this command: -mermaidAPI.initialize( { startOnLoad: true, secure: \['parameter1', 'parameter2'] } ); - -Default values for the `secure array` consists of: \['secure', 'securityLevel', 'startOnLoad', 'maxTextSize']. These default values are immutable. - -Implementors can only modify configurations using directives, and cannot change the `secure` array. - -# Modifying Configurations and directives: - -The Two types of directives: are `init` (or `initialize`) and `wrap`. - -> **Note** -> All directives are enclosed in `%%{ }%%` - -Older versions of mermaid will not parse directives because `%%` will comment out the directive. This makes the update backwards-compatible. - -# Init - -`init`, or `initialize`: this directive gives the user the ability to overwrite and change the values for any configuration parameters not set in the secure array. - -| Parameter | Description | Type | Required | Values | -| --------- | ----------------------- | --------- | -------- | ----------------------------------------------- | -| init | modifies configurations | Directive | Optional | Any parameters not included in the secure array | - -> **Note** -> init would be an argument-directive: `%%{init: { **insert argument here**}}%%` -> -> The json object that is passed as {**argument** } must be valid, quoted json or it will be ignored. -> **for example**: -> -> `%%{init: {"theme": "default", "logLevel": 1 }}%%` -> -> Configurations that are passed through init cannot change the parameters in a secure array at a higher level. In the event of a collision, mermaid will give priority to secure arrays and parse the request without changing the values of those parameters in conflict. -> -> When deployed within code, init is called before the graph/diagram description. - -**for example**: - -```mermaid-example -%%{init: {"theme": "default", "logLevel": 1 }}%% - graph LR - a-->b - b-->c - c-->d - d-->e - e-->f - f-->g - g--> -``` - -```mermaid -%%{init: {"theme": "default", "logLevel": 1 }}%% - graph LR - a-->b - b-->c - c-->d - d-->e - e-->f - f-->g - g--> -``` - -# Wrap - -| Parameter | Description | Type | Required | Values | -| --------- | ----------------------------- | --------- | -------- | ---------- | -| wrap | a callable text-wrap function | Directive | Optional | %%{wrap}%% | - -> **Note** -> Wrap is a function that is currently only deployable for sequence diagrams. -> -> `Wrap respects a manually added
, so if the user wants to break up their text, they have full control over line breaks by adding
tags.` -> -> It is a non-argument directive and can be executed thusly: -> -> `%%{wrap}%%` . - -**An example of text wrapping in a sequence diagram**: - -!\[Image showing wrapped text]\(img/wrapped text.png) - -# Resetting Configurations: - -There are two more functions in the mermaidAPI that can be called by site owners: **reset** and **globalReset**. - -**reset**: resets the configuration to whatever the last configuration was. This can be done to undo more recent changes set from the last mermaidAPI.initialize({...}) configuration. - -**globalReset** will reset both the current configuration AND the site configuration back to the global defaults. - -**Notes**: Both `reset` and `globalReset` are only available to site owners, and as such implementors have to edit their configs using `init`. - -# Additional Utils to mermaid - -• **memoize**: simple caching for computationally expensive functions, reducing rendering time by about 90%. - -• **assignWithDepth** - an improvement on previous functions with config.js and `Object.assign`. The purpose of this function is to provide a sane mechanism for merging objects, similar to `object.assign`, but with depth. - -Example of **assignWithDepth**: - -![Image showing assignWithDepth](img/assignWithDepth.png) - -Example of **object.Assign**: - -!\[Image showing object.assign without depth]\(img/object.assign without depth.png) - -• **calculateTextDimensions**, **calculateTextWidth**, and **calculateTextHeight** - for measuring text dimensions, width and height. - -**Notes**: For more information on usage, parameters, and return info for these new functions take a look at the jsdocs for them in the utils package. - -# New API Requests Introduced in Version 8.6.0 - -## setSiteConfig - -| Function | Description | Type | Values | Parameters | Returns | -| --------------- | ------------------------------------- | ----------- | --------------------------------------- | ---------- | ---------- | -| `setSiteConfig` | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array | conf | siteConfig | - -> **Note** -> Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls to reset() will reset -> the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) will reset siteConfig and currentConfig -> to the defaultConfig -> Note: currentConfig is set in this function。 -> Default value: will mirror Global Config - -## getSiteConfig - -| Function | Description | Type | Values | -| --------------- | --------------------------------------------------- | ----------- | ---------------------------------- | -| `getSiteConfig` | Returns the current `siteConfig` base configuration | Get Request | Returns Any Values in `siteConfig` | - -> **Note** -> Returns any values in siteConfig. - -## setConfig - -| Function | Description | Type | Values | Parameters | Returns | -| ----------- | ------------------------------------------ | ----------- | --------------------------------- | ---------- | ---------------------------------------------- | -| `setConfig` | Sets the `currentConfig` to desired values | Put Request | Any Values, those in secure array | conf | `currentConfig` merged with the sanitized conf | - -> **Note** -> Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure keys. Any -> values found in conf with key found in siteConfig.secure will be replaced with the corresponding -> siteConfig value. - -## getConfig - -| Function | Description | Type | Return Values | -| ----------- | --------------------------- | ----------- | ------------------------------- | -| `getConfig` | Obtains the `currentConfig` | Get Request | Any Values from `currentConfig` | - -> **Note** -> Returns any values in currentConfig. - -## sanitize - -| Function | Description | Type | Values | -| ---------- | ---------------------------------------- | -------------- | ------ | -| `sanitize` | Sets the `siteConfig` to desired values. | Put Request(?) | None | - -> **Note** -> modifies options in-place -> Ensures options parameter does not attempt to override siteConfig secure keys. - -## reset - -| Function | Description | Type | Required | Values | Parameter | -| -------- | ------------------------------ | ----------- | -------- | ------ | --------- | -| `reset` | Resets `currentConfig` to conf | Put Request | Required | None | conf | - -## conf - -| Parameter | Description | Type | Required | Values | -| --------- | ------------------------------------------------------------ | ---------- | -------- | -------------------------------------------- | -| `conf` | base set of values, which `currentConfig` could be reset to. | Dictionary | Required | Any Values, with respect to the secure Array | - -> **Note** -> default: current siteConfig (optional, default `getSiteConfig()`) - -## For more information, read [Setup](./setup/README.md). diff --git a/docs/config/Tutorials.md b/docs/config/Tutorials.md deleted file mode 100644 index 41e0508cb..000000000 --- a/docs/config/Tutorials.md +++ /dev/null @@ -1,78 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/Tutorials.md](../../packages/mermaid/src/docs/config/Tutorials.md). - -# Tutorials - -This is list of publicly available Tutorials for using Mermaid.JS . This is intended as a basic introduction for the use of the Live Editor for generating diagrams, and deploying Mermaid.JS through HTML. - -**Note that these tutorials might display an older interface, but the usage of the live-editor will largely be the same.** - -For most purposes, you can use the [Live Editor](https://mermaid.live), to quickly and easily render a diagram. - -## Live-Editor Tutorials - -The definitions that can be generated the Live-Editor are also backwards-compatible as of version 8.7.0. - -[Chris Chinchilla: Hands on - Text-based diagrams with Mermaid](https://www.youtube.com/watch?v=4_LdV1cs2sA) - -[GitLab Unfiltered: How to Create Mermaid Diagrams](https://www.youtube.com/watch?v=SQ9QmuTHuSI&t=438s) - -[GitLab Unfiltered: Emilie adds a mermaid diagram to the handbook](https://www.youtube.com/watch?v=5RQqht3NNSE) - -[World of Zero: I Learn How To Build Flowcharts and Signal Diagram's in Mermaid.JS](https://www.youtube.com/watch?v=7_2IroEs6Is&t=207s) - -[Eddie Jaoude: Can you code your diagrams?](https://www.youtube.com/watch?v=9HZzKkAqrX8) - -## Mermaid with HTML - -Examples are provided in [Getting Started](../intro/n00b-gettingStarted.md) - -**CodePen Examples:** - -https://codepen.io/CarlBoneri/pen/BQwZzq - -https://codepen.io/tdkn/pen/vZxQzd - -https://codepen.io/janzeteachesit/pen/OWWZKN - -## Mermaid with Text Area - -https://codepen.io/Ryuno-Ki/pen/LNxwgR - -## Mermaid in open source docs - -[K8s.io Diagram Guide](https://kubernetes.io/docs/contribute/style/diagram-guide/) - -[K8s.dev blog: Improve your documentation with Mermaid.js diagrams](https://www.kubernetes.dev/blog/2021/12/01/improve-your-documentation-with-mermaid.js-diagrams/) - -## Jupyter Integration with mermaid-js - -Here's an example of Python integration with mermaid-js which uses the mermaid.ink service, that displays the graph in a Jupyter notebook. - -```python -import base64 -from IPython.display import Image, display -import matplotlib.pyplot as plt - -def mm(graph): - graphbytes = graph.encode("ascii") - base64_bytes = base64.b64encode(graphbytes) - base64_string = base64_bytes.decode("ascii") - display(Image(url="https://mermaid.ink/img/" + base64_string)) - -mm(""" -graph LR; - A--> B & C & D; - B--> A & E; - C--> A & E; - D--> A & E; - E--> B & C & D; -""") -``` - -**Output** - -![Example graph of the Python integration](img/python-mermaid-integration.png) diff --git a/docs/config/accessibility.md b/docs/config/accessibility.md deleted file mode 100644 index 8fa4aa3ac..000000000 --- a/docs/config/accessibility.md +++ /dev/null @@ -1,360 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/accessibility.md](../../packages/mermaid/src/docs/config/accessibility.md). - -# Accessibility Options - -## Accessibility - -Now with Mermaid library in much wider use, we have started to work towards more accessible features, based on the feedback from the community. - -To begin with, we have added a new feature to Mermaid library, which is to support accessibility options, **Accessibility Title** and **Accessibility Description**. - -This support for accessibility options is available for all the diagrams/chart types. Also, we have tired to keep the same format for the accessibility options, so that it is easy to understand and maintain. - -## Defining Accessibility Options - -### Single line accessibility values - -The diagram authors can now add the accessibility options in the diagram definition, using the `accTitle` and `accDescr` keywords, where each keyword is followed by `:` and the string value for title and description like: - -- `accTitle: "Your Accessibility Title"` or -- `accDescr: "Your Accessibility Description"` - -**When these two options are defined, they will add a corresponding `` and `<desc>` tag in the SVG.** - -Let us take a look at the following example with a flowchart diagram: - -```mermaid-example - graph LR - accTitle: Big decisions - accDescr: Flow chart of the decision making process - A[Hard] -->|Text| B(Round) - B --> C{Decision} - C -->|One| D[Result 1] - -``` - -```mermaid - graph LR - accTitle: Big decisions - accDescr: Flow chart of the decision making process - A[Hard] -->|Text| B(Round) - B --> C{Decision} - C -->|One| D[Result 1] - -``` - -See in the code snippet above, the `accTitle` and `accDescr` are defined in the diagram definition. They result in the following tags in SVG code: - -![Accessibility options rendered inside SVG](img/accessibility-div-example.png) - -### Multi-line Accessibility title/description - -You can also define the accessibility options in a multi-line format, where the keyword is followed by opening curly bracket `{` and then multiple lines, followed by a closing `}`. - -`accTitle: My single line title value` (**_single line format_**) - -vs - -`accDescr: { My multi-line description of the diagram }` (**_multi-line format_**) - -Let us look at it in the following example, with same flowchart: - -```mermaid-example - graph LR - accTitle: Big decisions - - accDescr { - My multi-line description - of the diagram - } - - A[Hard] -->|Text| B(Round) - B --> C{Decision} - C -->|One| D[Result 1] - -``` - -```mermaid - graph LR - accTitle: Big decisions - - accDescr { - My multi-line description - of the diagram - } - - A[Hard] -->|Text| B(Round) - B --> C{Decision} - C -->|One| D[Result 1] - -``` - -See in the code snippet above, the `accTitle` and `accDescr` are defined in the diagram definition. They result in the following tags in SVG code: - -![Accessibility options rendered inside SVG](img/accessibility-div-example-2.png) - -### Sample Code Snippet for other diagram types - -#### Sequence Diagram - -```mermaid-example - sequenceDiagram - accTitle: My Sequence Diagram - accDescr: My Sequence Diagram Description - - Alice->>John: Hello John, how are you? - John-->>Alice: Great! - Alice-)John: See you later! -``` - -```mermaid - sequenceDiagram - accTitle: My Sequence Diagram - accDescr: My Sequence Diagram Description - - Alice->>John: Hello John, how are you? - John-->>Alice: Great! - Alice-)John: See you later! -``` - -#### Class Diagram - -```mermaid-example - classDiagram - accTitle: My Class Diagram - accDescr: My Class Diagram Description - - Vehicle <|-- Car -``` - -```mermaid - classDiagram - accTitle: My Class Diagram - accDescr: My Class Diagram Description - - Vehicle <|-- Car -``` - -#### State Diagram - -```mermaid-example - stateDiagram - accTitle: My State Diagram - accDescr: My State Diagram Description - - s1 --> s2 - -``` - -```mermaid - stateDiagram - accTitle: My State Diagram - accDescr: My State Diagram Description - - s1 --> s2 - -``` - -#### Entity Relationship Diagram - -```mermaid-example - erDiagram - accTitle: My Entity Relationship Diagram - accDescr: My Entity Relationship Diagram Description - - CUSTOMER ||--o{ ORDER : places - ORDER ||--|{ LINE-ITEM : contains - CUSTOMER }|..|{ DELIVERY-ADDRESS : uses - -``` - -```mermaid - erDiagram - accTitle: My Entity Relationship Diagram - accDescr: My Entity Relationship Diagram Description - - CUSTOMER ||--o{ ORDER : places - ORDER ||--|{ LINE-ITEM : contains - CUSTOMER }|..|{ DELIVERY-ADDRESS : uses - -``` - -#### User Journey Diagram - -```mermaid-example - journey - accTitle: My User Journey Diagram - accDescr: My User Journey Diagram Description - - title My working day - section Go to work - Make tea: 5: Me - Go upstairs: 3: Me - Do work: 1: Me, Cat - section Go home - Go downstairs: 5: Me - Sit down: 5: Me - -``` - -```mermaid - journey - accTitle: My User Journey Diagram - accDescr: My User Journey Diagram Description - - title My working day - section Go to work - Make tea: 5: Me - Go upstairs: 3: Me - Do work: 1: Me, Cat - section Go home - Go downstairs: 5: Me - Sit down: 5: Me - -``` - -#### Gantt Chart - -```mermaid-example - gantt - accTitle: My Gantt Chart Accessibility Title - accDescr: My Gantt Chart Accessibility Description - - title A Gantt Diagram - dateFormat YYYY-MM-DD - section Section - A task :a1, 2014-01-01, 30d - Another task :after a1 , 20d - section Another - Task in sec :2014-01-12 , 12d - another task : 24d - -``` - -```mermaid - gantt - accTitle: My Gantt Chart Accessibility Title - accDescr: My Gantt Chart Accessibility Description - - title A Gantt Diagram - dateFormat YYYY-MM-DD - section Section - A task :a1, 2014-01-01, 30d - Another task :after a1 , 20d - section Another - Task in sec :2014-01-12 , 12d - another task : 24d - -``` - -#### Pie Chart - -```mermaid-example - pie - accTitle: My Pie Chart Accessibility Title - accDescr: My Pie Chart Accessibility Description - - title Key elements in Product X - "Calcium" : 42.96 - "Potassium" : 50.05 - "Magnesium" : 10.01 - "Iron" : 5 - -``` - -```mermaid - pie - accTitle: My Pie Chart Accessibility Title - accDescr: My Pie Chart Accessibility Description - - title Key elements in Product X - "Calcium" : 42.96 - "Potassium" : 50.05 - "Magnesium" : 10.01 - "Iron" : 5 - -``` - -#### Requirement Diagram - -```mermaid-example - requirementDiagram - accTitle: My Requirement Diagram - accDescr: My Requirement Diagram Description - - requirement test_req { - id: 1 - text: the test text. - risk: high - verifymethod: test - } - - element test_entity { - type: simulation - } - - test_entity - satisfies -> test_req - -``` - -```mermaid - requirementDiagram - accTitle: My Requirement Diagram - accDescr: My Requirement Diagram Description - - requirement test_req { - id: 1 - text: the test text. - risk: high - verifymethod: test - } - - element test_entity { - type: simulation - } - - test_entity - satisfies -> test_req - -``` - -#### Gitgraph - -```mermaid-example - gitGraph - accTitle: My Gitgraph Accessibility Title - accDescr: My Gitgraph Accessibility Description - - commit - commit - branch develop - checkout develop - commit - commit - checkout main - merge develop - commit - commit - -``` - -```mermaid - gitGraph - accTitle: My Gitgraph Accessibility Title - accDescr: My Gitgraph Accessibility Description - - commit - commit - branch develop - checkout develop - commit - commit - checkout main - merge develop - commit - commit - -``` diff --git a/docs/config/configuration.md b/docs/config/configuration.md deleted file mode 100644 index c7b780143..000000000 --- a/docs/config/configuration.md +++ /dev/null @@ -1,41 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/configuration.md](../../packages/mermaid/src/docs/config/configuration.md). - -# Configuration - -When mermaid starts, configuration is extracted to determine a configuration to be used for a diagram. There are 3 sources for configuration: - -- The default configuration -- Overrides at the site level are set by the initialize call, and will be applied to all diagrams in the site/app. The term for this is the **siteConfig**. -- Directives - diagram authors can update select configuration parameters directly in the diagram code via directives. These are applied to the render config. - -**The render config** is configuration that is used when rendering by applying these configurations. - -## Theme configuration - -## Starting mermaid - -```mermaid-example -sequenceDiagram - Site->>mermaid: initialize - Site->>mermaid: content loaded - mermaid->>mermaidAPI: init -``` - -```mermaid -sequenceDiagram - Site->>mermaid: initialize - Site->>mermaid: content loaded - mermaid->>mermaidAPI: init -``` - -## Initialize - -The initialize call is applied **only once**. It is called by the site integrator in order to override the default configuration at a site level. - -## configApi.reset - -This method resets the configuration for a diagram to the overall site configuration, which is the configuration provided by the site integrator. Before each rendering of a diagram, reset is called at the very beginning. diff --git a/docs/config/directives.md b/docs/config/directives.md deleted file mode 100644 index 550707080..000000000 --- a/docs/config/directives.md +++ /dev/null @@ -1,329 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/directives.md](../../packages/mermaid/src/docs/config/directives.md). - -# Directives - -## Directives - -Directives gives a diagram author the capability to alter the appearance of a diagram before rendering by changing the applied configuration. - -The significance of having directives is that you have them available while writing the diagram, and can modify the default global and diagram specific configurations. So, directives are applied on top of the default configurations. The beauty of directives is that you can use them to alter configuration settings for a specific diagram, i.e. at an individual level. - -While directives allow you to change most of the default configuration settings, there are some that are not available, that too for security reasons. Also, you do have the _option to define the set of configurations_ that you would allow to be available to the diagram author for overriding with help of directives. - -## Types of Directives options - -Mermaid basically supports two types of configuration options to be overridden by directives. - -1. _General/Top Level configurations_ : These are the configurations that are available and applied to all the diagram. **Some of the most important top-level** configurations are: - -- theme -- fontFamily -- logLevel -- securityLevel -- startOnLoad -- secure - -2. _Diagram specific configurations_ : These are the configurations that are available and applied to a specific diagram. For each diagram there are specific configuration that will alter how that particular diagram looks and behaves. - For example, `mirrorActors` is a configuration that is specific to the `SequenceDiagram` and alter whether the actors are mirrored or not. So this config is available only for the `SequenceDiagram` type. - -**NOTE:** These options listed here are not all the configuration options. To get hold of all the configuration options, please refer to the [defaultConfig.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/defaultConfig.ts) in the source code. - - Soon we plan to publish a complete list of top-level configurations & all the diagram specific configurations, with their possible values in the docs - -## Declaring directives - -Now that we have defined the types of configurations that are available, we can learn how to declare directives. -A directive always starts and end `%%` sign with directive text in between, like `%% {directive_text} %%`. - -Here the structure of a directive text is like a nested key-value pair map or a JSON object with root being _init_. Where all the general configurations are defined in the top level, and all the diagram specific configurations are defined one level deeper with diagram type as key/root for that section. - -Following code snippet shows the structure of a directive: - - %%{ - init: { - "theme": "dark", - "fontFamily": "monospace", - "logLevel": "info", - "flowchart": { - "htmlLabels": true, - "curve": "linear" - }, - "sequence": { - "mirrorActors": true - } - } - }%% - -You can also define the directives in a single line, like this: - - %%{init: { **insert argument here**}}%% - -For example, the following code snippet: - - %%{init: { "sequence": { "mirrorActors":false }}}%% - -**Notes:** -The json object that is passed as {**argument** } must be valid key value pairs and encased in quotation marks or it will be ignored. -Valid Key Value pairs can be found in config. - -Example with a simple graph: - -```mermaid-example -%%{init: { 'logLevel': 'debug', 'theme': 'dark' } }%% -graph LR -A-->B -``` - -```mermaid -%%{init: { 'logLevel': 'debug', 'theme': 'dark' } }%% -graph LR -A-->B -``` - -Here the directive declaration will set the `logLevel` to `debug` and the `theme` to `dark` for a rendered mermaid diagram, changing the appearance of the diagram itself. - -Note: You can use 'init' or 'initialize' as both acceptable as init directives. Also note that `%%init%%` and `%%initialize%%` directives will be grouped together after they are parsed. This means: - -```mermaid-example -%%{init: { 'logLevel': 'debug', 'theme': 'forest' } }%% -%%{initialize: { 'logLevel': 'fatal', "theme":'dark', 'startOnLoad': true } }%% -... -``` - -```mermaid -%%{init: { 'logLevel': 'debug', 'theme': 'forest' } }%% -%%{initialize: { 'logLevel': 'fatal', "theme":'dark', 'startOnLoad': true } }%% -... -``` - -parsing the above generates a single `%%init%%` JSON object below, combining the two directives and carrying over the last value given for `loglevel`: - -```json -{ - "logLevel": "fatal", - "theme": "dark", - "startOnLoad": true -} -``` - -This will then be sent to `mermaid.initialize(...)` for rendering. - -## Directive Examples - -More directive examples for diagram specific configuration overrides -Now that the concept of directives has been explained, Let us see some more examples for directives usage: - -### Changing Theme via directive - -The following code snippet changes theme to forest: - -`%%{init: { "theme": "forest" } }%%` - -Possible themes value are: `default`,`base`, `dark`, `forest` and `neutral`. -Default Value is `default`. - -Example: - -```mermaid-example -%%{init: { "theme": "forest" } }%% -graph TD -A(Forest) --> B[/Another/] -A --> C[End] - subgraph section - B - C - end - -``` - -```mermaid -%%{init: { "theme": "forest" } }%% -graph TD -A(Forest) --> B[/Another/] -A --> C[End] - subgraph section - B - C - end - -``` - -### Changing fontFamily via directive - -The following code snippet changes fontFamily to rebuchet MS, Verdana, Arial, Sans-Serif: - -`%%{init: { "fontFamily": "Trebuchet MS, Verdana, Arial, Sans-Serif" } }%%` - -Example: - -```mermaid-example -%%{init: { "fontFamily": "Trebuchet MS, Verdana, Arial, Sans-Serif" } }%% -graph TD -A(Forest) --> B[/Another/] -A --> C[End] - subgraph section - B - C - end - -``` - -```mermaid -%%{init: { "fontFamily": "Trebuchet MS, Verdana, Arial, Sans-Serif" } }%% -graph TD -A(Forest) --> B[/Another/] -A --> C[End] - subgraph section - B - C - end - -``` - -### Changing logLevel via directive - -The following code snippet changes logLevel to 2: - -`%%{init: { "logLevel": 2 } }%%` - -Possible logLevel values are: - -- `1` for _debug_, -- `2` for _info_ -- `3` for _warn_ -- `4` for _error_ -- `5` for _only fatal errors_ - -Default Value is `5`. - -Example: - -```mermaid-example -%%{init: { "logLevel": 2 } }%% -graph TD -A(Forest) --> B[/Another/] -A --> C[End] - subgraph section - B - C - end -``` - -```mermaid -%%{init: { "logLevel": 2 } }%% -graph TD -A(Forest) --> B[/Another/] -A --> C[End] - subgraph section - B - C - end -``` - -### Changing flowchart config via directive - -Some common flowchart configurations are: - -- _htmlLabels_: true/false -- _curve_: linear/curve -- _diagramPadding_: number -- _useMaxWidth_: number - -For complete list of flowchart configurations, see [defaultConfig.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/defaultConfig.ts) in the source code. -_Soon we plan to publish a complete list all diagram specific configurations updated in the docs_ - -The following code snippet changes flowchart config: - -`%%{init: { "flowchart": { "htmlLabels": true, "curve": "linear" } } }%%` - -Here were are overriding only the flowchart config, and not the general config, where HtmlLabels is set to true and curve is set to linear. - -```mermaid-example -%%{init: { "flowchart": { "htmlLabels": true, "curve": "linear" } } }%% -graph TD -A(Forest) --> B[/Another/] -A --> C[End] - subgraph section - B - C - end -``` - -```mermaid -%%{init: { "flowchart": { "htmlLabels": true, "curve": "linear" } } }%% -graph TD -A(Forest) --> B[/Another/] -A --> C[End] - subgraph section - B - C - end -``` - -### Changing Sequence diagram config via directive - -Some common sequence configurations are: - -- _width_: number -- _height_: number -- _messageAlign_: left, center, right -- _mirrorActors_: boolean -- _useMaxWidth_: boolean -- _rightAngles_: boolean -- _showSequenceNumbers_: boolean -- _wrap_: boolean - -For complete list of sequence diagram configurations, see _defaultConfig.ts_ in the source code. -_Soon we plan to publish a complete list all diagram specific configurations updated in the docs_ - -So, `wrap` by default has a value of `false` for sequence diagrams. - -Let us see an example: - -```mermaid-example -sequenceDiagram - -Alice->Bob: Hello Bob, how are you? -Bob->Alice: Fine, How did you mother like the book I suggested? And did you catch with the new book about alien invasion? -Alice->Bob: Good. -Bob->Alice: Cool -``` - -```mermaid -sequenceDiagram - -Alice->Bob: Hello Bob, how are you? -Bob->Alice: Fine, How did you mother like the book I suggested? And did you catch with the new book about alien invasion? -Alice->Bob: Good. -Bob->Alice: Cool -``` - -Now let us enable wrap for sequence diagrams. - -The following code snippet changes sequence diagram config for `wrap` to `true`: - -`%%{init: { "sequence": { "wrap": true} } }%%` - -Using in the diagram above, the wrap will be enabled. - -```mermaid-example -%%{init: { "sequence": { "wrap": true, "width":300 } } }%% -sequenceDiagram -Alice->Bob: Hello Bob, how are you? -Bob->Alice: Fine, How did you mother like the book I suggested? And did you catch with the new book about alien invasion? -Alice->Bob: Good. -Bob->Alice: Cool -``` - -```mermaid -%%{init: { "sequence": { "wrap": true, "width":300 } } }%% -sequenceDiagram -Alice->Bob: Hello Bob, how are you? -Bob->Alice: Fine, How did you mother like the book I suggested? And did you catch with the new book about alien invasion? -Alice->Bob: Good. -Bob->Alice: Cool -``` diff --git a/docs/config/mermaidCLI.md b/docs/config/mermaidCLI.md deleted file mode 100644 index 530ac93ab..000000000 --- a/docs/config/mermaidCLI.md +++ /dev/null @@ -1,9 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/mermaidCLI.md](../../packages/mermaid/src/docs/config/mermaidCLI.md). - -# mermaid CLI - -mermaid CLI has been moved to [mermaid-cli](https://github.com/mermaid-js/mermaid-cli). Please read its documentation instead. diff --git a/docs/config/n00b-advanced.md b/docs/config/n00b-advanced.md deleted file mode 100644 index 5dd907429..000000000 --- a/docs/config/n00b-advanced.md +++ /dev/null @@ -1,26 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/n00b-advanced.md](../../packages/mermaid/src/docs/config/n00b-advanced.md). - -# Advanced n00b mermaid (Coming soon..) - -## splitting mermaid code from html - -A more condensed html code can be achieved by embedding the mermaid code in its own .js file, which is referenced like so: - - stuff stuff - </div> - </body> - </html> - -The actual mermaid file could for example look like this: - - mermaid content... - ---- - -## mermaid configuration options - -... diff --git a/docs/config/setup/README.md b/docs/config/setup/README.md deleted file mode 100644 index 1cf82797d..000000000 --- a/docs/config/setup/README.md +++ /dev/null @@ -1,13 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/setup/README.md](../../../packages/mermaid/src/docs/config/setup/README.md). - -# mermaid - -## Modules - -- [config](modules/config.md) -- [defaultConfig](modules/defaultConfig.md) -- [mermaidAPI](modules/mermaidAPI.md) diff --git a/docs/config/setup/modules/config.md b/docs/config/setup/modules/config.md deleted file mode 100644 index 993a7627b..000000000 --- a/docs/config/setup/modules/config.md +++ /dev/null @@ -1,276 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/setup/modules/config.md](../../../../packages/mermaid/src/docs/config/setup/modules/config.md). - -# Module: config - -## Variables - -### defaultConfig - -• `Const` **defaultConfig**: `MermaidConfig` - -#### Defined in - -[config.ts:7](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L7) - -## Functions - -### addDirective - -▸ **addDirective**(`directive`): `void` - -Pushes in a directive to the configuration - -#### Parameters - -| Name | Type | Description | -| :---------- | :---- | :----------------------- | -| `directive` | `any` | The directive to push in | - -#### Returns - -`void` - -#### Defined in - -[config.ts:193](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L193) - ---- - -### getConfig - -▸ **getConfig**(): `MermaidConfig` - -## getConfig - -| Function | Description | Type | Return Values | -| --------- | ------------------------- | ----------- | ------------------------------ | -| getConfig | Obtains the currentConfig | Get Request | Any Values from current Config | - -**Notes**: Returns **any** the currentConfig - -#### Returns - -`MermaidConfig` - -The currentConfig - -#### Defined in - -[config.ts:138](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L138) - ---- - -### getSiteConfig - -▸ **getSiteConfig**(): `MermaidConfig` - -## getSiteConfig - -| Function | Description | Type | Values | -| ------------- | ------------------------------------------------- | ----------- | -------------------------------- | -| setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig | - -**Notes**: Returns **any** values in siteConfig. - -#### Returns - -`MermaidConfig` - -The siteConfig - -#### Defined in - -[config.ts:97](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L97) - ---- - -### reset - -▸ **reset**(`config?`): `void` - -## reset - -| Function | Description | Type | Required | Values | -| -------- | ---------------------------- | ----------- | -------- | ------ | -| reset | Resets currentConfig to conf | Put Request | Required | None | - -## conf - -| Parameter | Description | Type | Required | Values | -| --------- | -------------------------------------------------------------- | ---------- | -------- | -------------------------------------------- | -| conf | base set of values, which currentConfig could be **reset** to. | Dictionary | Required | Any Values, with respect to the secure Array | - -**Notes**: (default: current siteConfig ) (optional, default `getSiteConfig()`) - -#### Parameters - -| Name | Type | Default value | Description | -| :------- | :-------------- | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `config` | `MermaidConfig` | `siteConfig` | base set of values, which currentConfig could be **reset** to. Defaults to the current siteConfig (e.g returned by [getSiteConfig](config.md#getsiteconfig)). | - -#### Returns - -`void` - -#### Defined in - -[config.ts:225](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L225) - ---- - -### sanitize - -▸ **sanitize**(`options`): `void` - -## sanitize - -| Function | Description | Type | Values | -| -------- | -------------------------------------- | ----------- | ------ | -| sanitize | Sets the siteConfig to desired values. | Put Request | None | - -Ensures options parameter does not attempt to override siteConfig secure keys **Notes**: modifies -options in-place - -#### Parameters - -| Name | Type | Description | -| :-------- | :---- | :-------------------------------- | -| `options` | `any` | The potential setConfig parameter | - -#### Returns - -`void` - -#### Defined in - -[config.ts:153](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L153) - ---- - -### saveConfigFromInitialize - -▸ **saveConfigFromInitialize**(`conf`): `void` - -#### Parameters - -| Name | Type | -| :----- | :-------------- | -| `conf` | `MermaidConfig` | - -#### Returns - -`void` - -#### Defined in - -[config.ts:76](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L76) - ---- - -### setConfig - -▸ **setConfig**(`conf`): `MermaidConfig` - -## setConfig - -| Function | Description | Type | Values | -| ------------- | ------------------------------------- | ----------- | --------------------------------------- | -| setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array | - -**Notes**: Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure -keys. Any values found in conf with key found in siteConfig.secure will be replaced with the -corresponding siteConfig value. - -#### Parameters - -| Name | Type | Description | -| :----- | :-------------- | :-------------------------- | -| `conf` | `MermaidConfig` | The potential currentConfig | - -#### Returns - -`MermaidConfig` - -The currentConfig merged with the sanitized conf - -#### Defined in - -[config.ts:114](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L114) - ---- - -### setSiteConfig - -▸ **setSiteConfig**(`conf`): `MermaidConfig` - -## setSiteConfig - -| Function | Description | Type | Values | -| ------------- | ------------------------------------- | ----------- | --------------------------------------- | -| setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array | - -**Notes:** Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls -to reset() will reset the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) -will reset siteConfig and currentConfig to the defaultConfig Note: currentConfig is set in this -function _Default value: At default, will mirror Global Config_ - -#### Parameters - -| Name | Type | Description | -| :----- | :-------------- | :------------------------------------------ | -| `conf` | `MermaidConfig` | The base currentConfig to use as siteConfig | - -#### Returns - -`MermaidConfig` - -The new siteConfig - -#### Defined in - -[config.ts:62](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L62) - ---- - -### updateCurrentConfig - -▸ **updateCurrentConfig**(`siteCfg`, `_directives`): `MermaidConfig` - -#### Parameters - -| Name | Type | -| :------------ | :-------------- | -| `siteCfg` | `MermaidConfig` | -| `_directives` | `any`\[] | - -#### Returns - -`MermaidConfig` - -#### Defined in - -[config.ts:14](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L14) - ---- - -### updateSiteConfig - -▸ **updateSiteConfig**(`conf`): `MermaidConfig` - -#### Parameters - -| Name | Type | -| :----- | :-------------- | -| `conf` | `MermaidConfig` | - -#### Returns - -`MermaidConfig` - -#### Defined in - -[config.ts:80](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L80) diff --git a/docs/config/setup/modules/defaultConfig.md b/docs/config/setup/modules/defaultConfig.md deleted file mode 100644 index c7ad1402f..000000000 --- a/docs/config/setup/modules/defaultConfig.md +++ /dev/null @@ -1,56 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/setup/modules/defaultConfig.md](../../../../packages/mermaid/src/docs/config/setup/modules/defaultConfig.md). - -# Module: defaultConfig - -## Variables - -### configKeys - -• `Const` **configKeys**: `string`\[] - -#### Defined in - -[defaultConfig.ts:1881](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L1881) - ---- - -### default - -• `Const` **default**: `Partial`<`MermaidConfig`> - -**Configuration methods in Mermaid version 8.6.0 have been updated, to learn more\[[click -here](8.6.0_docs.md)].** - -## **What follows are config instructions for older versions** - -These are the default options which can be overridden with the initialization call like so: - -**Example 1:** - -```js -mermaid.initialize({ flowchart: { htmlLabels: false } }); -``` - -**Example 2:** - -```html -<script> - const config = { - startOnLoad: true, - flowchart: { useMaxWidth: true, htmlLabels: true, curve: 'cardinal' }, - securityLevel: 'loose', - }; - mermaid.initialize(config); -</script> -``` - -A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults). -A description of each option follows below. - -#### Defined in - -[defaultConfig.ts:33](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L33) diff --git a/docs/config/theming.md b/docs/config/theming.md deleted file mode 100644 index cfd86caa0..000000000 --- a/docs/config/theming.md +++ /dev/null @@ -1,743 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/theming.md](../../packages/mermaid/src/docs/config/theming.md). - -# Theme Configuration - -With Version 8.7.0 Mermaid comes out with a system for dynamic and integrated configuration of themes. The intent is to increase the customizability and ease of styling for mermaid diagrams. - -The theme can be altered by changing the root level variable `theme` variable in the configuration. To change it for the whole site you must use the `initialize` call. To do it for just for a single diagram you can use the `%%init%%` directive - -Themes follow and build upon the Levels of Configuration, and employ `directives` to modify and create custom configurations, as they were introduced in Version [8.6.0](./8.6.0_docs.md). - -## Deployable Themes - -The following are a list of **Deployable themes**, sample `%%init%%` directives and `initialize` calls. - -1. **base**- Designed to be modified, as the name implies it is supposed to be used as the base for making custom themes. - -2. **forest**- A theme full of light greens that is easy on the eyes. - -3. **dark**- A theme that would go well with other dark-colored elements. - -4. **default**- The default theme for all diagrams. - -5. **neutral**- The theme to be used for black and white printing. - -## Site-wide Themes - -Site-wide themes are declared via `initialize` by site owners. - -Example of `Initialize` call setting `theme` to `base`: - -```javascript -mermaidAPI.initialize({ - securityLevel: 'loose', - theme: 'base', -}); -``` - -**Notes**: Only site owners can use the `mermaidAPI.initialize` call, to set values. Site-Users will have to use `%%init%%` to modify or create the theme for their diagrams. - -## Themes at the Local or Current Level - -When Generating a diagram using on a webpage that supports mermaid. It is also possible to override site-wide theme settings locally, for a specific diagram, using directives, as long as it is not prohibited by the `secure` array. - -```mermaid-example -%%{init: {'theme':'base'}}%% - graph TD - a --> b -``` - -```mermaid -%%{init: {'theme':'base'}}%% - graph TD - a --> b -``` - -Here is an example of how `%%init%%` can set the theme to 'base', this assumes that `themeVariables` are set to default: - -```mermaid-example -%%{init: {'theme':'base'}}%% - graph TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[/Another/] - C ==>|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -```mermaid -%%{init: {'theme':'base'}}%% - graph TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[/Another/] - C ==>|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -# List of Themes - -# Customizing Themes with `themeVariables` - -The easiest way to make a custom theme is to start with the base theme, and just modify theme variables through `themeVariables`, via `%%init%%`. - -| Parameter | Description | Type | Required | Objects contained | -| -------------- | ------------------------------------------------------------------ | ----- | -------- | ---------------------------------- | -| themeVariables | Array containing objects, modifiable with the `%%init%%` directive | Array | Required | primaryColor, lineColor, textColor | - -**Here is an example of overriding `primaryColor` through `themeVariables` and giving everything a different look, using `%%init%%`.** - -```mermaid-example -%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% - graph TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[/Another/] - C ==>|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -```mermaid -%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% - graph TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[/Another/] - C ==>|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -**Notes:** -Leaving it empty will set all variable values to default. - -## Color and Color Calculation: - -Color definitions have certain interactions in mermaid, this is in order to ensure visibility for diagrams. Mermaid will adjust some variables automatically, when colors are changed in order to compensate and maintain readability. - -**The Default Value Column** to the right of the Variable column will denote the Variable paired/associated with the Variable on the left and the nature of this pairing or association. If it for instance says primaryColor it means that it gets primaryColor as default value. If it says "based on primaryColor" it means that it is calculated/ derived from primaryColor. This calculation can be primary color inversion, a change of hue, darkening or lightening by 10%, etc. - -You can create your own themes, by changing any of the given variables below. If you are using a dark background, set dark mode to true to adjust the colors. It is possible to override the calculations using the variable names below, with `%%init%%` if you wish to style it differently. - -## Theme Variables Reference Table - -> **Note** -> Variables that are unique to some diagrams can be affected by changes in Theme Variables - -| Variable | Default/Base/Factor value | Calc | Description | -| -------------------- | ------------------------------ | ---- | -------------------------------------------------------------------------------------------------------------------------------- | -| darkMode | false | | Boolean Value that dictates how to calculate colors. "true" will activate darkmode. | -| background | #f4f4f4 | | Used to calculate color for items that should either be background colored or contrasting to the background. | -| fontFamily | "trebuchet ms", verdana, arial | | | -| fontSize | 16px | | Font Size, in pixels | -| primaryColor | #fff4dd | | Color to be used as background in nodes, other colors will be derived from this | -| primaryBorderColor | based on primaryColor | \* | Color to be used as border in nodes using primaryColor | -| primaryTextColor | based on darkMode #ddd/#333 | \* | Color to be used as text color in nodes using primaryColor | -| secondaryColor | based on primaryColor | \* | | -| secondaryBorderColor | based on secondaryColor | \* | Color to be used as border in nodes using secondaryColor | -| secondaryTextColor | based on secondaryColor | \* | Color to be used as text color in nodes using secondaryColor | -| tertiaryColor | based on primaryColor | \* | | -| tertiaryBorderColor | based on tertiaryColor | \* | Color to be used as border in nodes using tertiaryColor | -| tertiaryTextColor | based on tertiaryColor | \* | Color to be used as text color in nodes using tertiaryColor | -| noteBkgColor | #fff5ad | | Color used as background in notes | -| noteTextColor | #333 | | Text color in note rectangles. | -| noteBorderColor | based on noteBkgColor | \* | Border color in note rectangles. | -| lineColor | based on background | \* | | -| textColor | based on primaryTextColor | \* | Text in diagram over the background for instance text on labels and on signals in sequence diagram or the title in gantt diagram | -| mainBkg | based on primaryColor | \* | Background in flowchart objects like rects/circles, class diagram classes, sequence diagram etc | -| errorBkgColor | tertiaryColor | \* | Color for syntax error message | -| errorTextColor | tertiaryTextColor | \* | Color for syntax error message | - -# What follows are Variables, specific to different diagrams and charts. - -## Some Theme Variables serve as, or affect the Default Values for Specific Diagram Variables, unless changed using `%%init%%` . - -## Flowchart - -| Variable | Default/ Associated Value | Calc | Description | -| ------------------- | ------------------------- | ---- | ---------------------------- | -| nodeBorder | primaryBorderColor | \* | Node Border Color | -| clusterBkg | tertiaryColor | \* | Background in subgraphs | -| clusterBorder | tertiaryBorderColor | \* | Cluster Border Color | -| defaultLinkColor | lineColor | \* | Link Color | -| titleColor | tertiaryTextColor | \* | Title Color | -| edgeLabelBackground | based on secondaryColor | \* | | -| nodeTextColor | primaryTextColor | \* | Color for text inside Nodes. | - -# sequence diagram - -| name | Default value | Calc | Description | -| --------------------- | ----------------------- | ---- | --------------------------- | -| actorBorder | primaryBorderColor | \* | Actor Border Color | -| actorBkg | mainBkg | \* | Actor Background Color | -| actorTextColor | primaryTextColor | \* | Actor Text Color | -| actorLineColor | grey | \* | Actor Line Color | -| signalColor | textColor | \* | Signal Color | -| signalTextColor | textColor | \* | Signal Text Color | -| labelBoxBkgColor | actorBkg | \* | Label Box Background Color | -| labelBoxBorderColor | actorBorder | \* | Label Box Border Color | -| labelTextColor | actorTextColor | \* | Label Text Color | -| loopTextColor | actorTextColor | \* | Loop ext Color | -| activationBorderColor | based on secondaryColor | \* | Activation Border Color | -| activationBkgColor | secondaryColor | \* | Activation Background Color | -| sequenceNumberColor | based on lineColor | \* | Sequence Number Color | - -# state colors - -| name | Default value | Calc | Description | -| ------------- | ---------------- | ---- | -------------------------------------------- | -| labelColor | primaryTextColor | \* | | -| altBackground | tertiaryColor | \* | Used for background in deep composite states | - -# class colors - -| name | Default value | Calc | Description | -| --------- | ------------- | ---- | ------------------------------- | -| classText | textColor | \* | Color of Text in class diagrams | - -# User journey colors - -| name | Default value | Calc | Description | -| --------- | ----------------------- | ---- | --------------------------------------- | -| fillType0 | primaryColor | \* | Fill for 1st section in journey diagram | -| fillType1 | secondaryColor | \* | Fill for 2nd section in journey diagram | -| fillType2 | based on primaryColor | \* | Fill for 3rd section in journey diagram | -| fillType3 | based on secondaryColor | \* | Fill for 4th section in journey diagram | -| fillType4 | based on primaryColor | \* | Fill for 5th section in journey diagram | -| fillType5 | based on secondaryColor | \* | Fill for 6th section in journey diagram | -| fillType6 | based on primaryColor | \* | Fill for 7th section in journey diagram | -| fillType7 | based on secondaryColor | \* | Fill for 8th section in journey diagram | - -\*\*Notes: Values are meant to create an alternating look. - -# Here is an example of overriding `primaryColor` and giving everything a different look, using `%%init%%`. - -```mermaid-example -%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% - graph TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[/Another/] - C ==>|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -```mermaid -%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% - graph TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[/Another/] - C ==>|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -\*\*This got a bit too dark and bit too colorful. With some easy steps this can be fixed: - -- Make the primary color a little lighter -- set the tertiary color to a reddish shade as well -- make the edge label background differ from the subgraph by setting the edgeLabelBackground - -```mermaid-example -%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ffcccc', 'edgeLabelBackground':'#ffffee', 'tertiaryColor': '#fff0f0'}}}%% - graph TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[/Another/] - C ==>|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -```mermaid -%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ffcccc', 'edgeLabelBackground':'#ffffee', 'tertiaryColor': '#fff0f0'}}}%% - graph TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[/Another/] - C ==>|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -The Theming Engine does not admit color codes and will only accept proper color values. Color Names is not supported so for instance, the color value 'red' will not work, but '#ff0000' will work. - -# Common theming activities - -## How to change the color of the arrows - -# Examples: - -When adjusting a theme it might be helpful to look at how your preferred theme goes with the diagrams, to evaluate whether everything is visible and looks good. -In the following examples, the directive `init` is used, with the `theme` being declared as `base`. For more information on using directives, read the documentation for [Version 8.6.0](/8.6.0_docs.md) - -### Flowchart - -```mermaid-example -%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% - graph TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[/Another/] - C ==>|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -```mermaid -%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% - graph TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[/Another/] - C ==>|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -### Flowchart (beta) - -```mermaid-example -%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% - flowchart TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[Another] - C ==>|One| D[Laptop] - C x--x|Two| E[iPhone] - C o--o|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -```mermaid -%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% - flowchart TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[Another] - C ==>|One| D[Laptop] - C x--x|Two| E[iPhone] - C o--o|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -### Sequence diagram - -```mermaid-example -%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% - sequenceDiagram - autonumber - par Action 1 - Alice->>John: Hello John, how are you? - and Action 2 - Alice->>Bob: Hello Bob, how are you? - end - Alice->>+John: Hello John, how are you? - Alice->>+John: John, can you hear me? - John-->>-Alice: Hi Alice, I can hear you! - Note right of John: John is perceptive - John-->>-Alice: I feel great! - loop Every minute - John-->Alice: Great! - end -``` - -```mermaid -%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% - sequenceDiagram - autonumber - par Action 1 - Alice->>John: Hello John, how are you? - and Action 2 - Alice->>Bob: Hello Bob, how are you? - end - Alice->>+John: Hello John, how are you? - Alice->>+John: John, can you hear me? - John-->>-Alice: Hi Alice, I can hear you! - Note right of John: John is perceptive - John-->>-Alice: I feel great! - loop Every minute - John-->Alice: Great! - end -``` - -### Class diagram - -```mermaid-example -%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% - -classDiagram - Animal "1" <|-- Duck - Animal <|-- Fish - Animal <--o Zebra - Animal : +int age - Animal : +String gender - Animal: +isMammal() - Animal: +mate() - class Duck{ - +String beakColor - +swim() - +quack() - } - class Fish{ - -int sizeInFeet - -canEat() - } - class Zebra{ - +bool is_wild - +run() - } -``` - -```mermaid -%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% - -classDiagram - Animal "1" <|-- Duck - Animal <|-- Fish - Animal <--o Zebra - Animal : +int age - Animal : +String gender - Animal: +isMammal() - Animal: +mate() - class Duck{ - +String beakColor - +swim() - +quack() - } - class Fish{ - -int sizeInFeet - -canEat() - } - class Zebra{ - +bool is_wild - +run() - } -``` - -### Gantt - -```mermaid-example -gantt - dateFormat YYYY-MM-DD - title Adding GANTT diagram functionality to mermaid - excludes :excludes the named dates/days from being included in a charted task.. - section A section - Completed task :done, des1, 2014-01-06,2014-01-08 - Active task :active, des2, 2014-01-09, 3d - Future task : des3, after des2, 5d - Future task2 : des4, after des3, 5d - - section Critical tasks - Completed task in the critical line :crit, done, 2014-01-06,24h - Implement parser and jison :crit, done, after des1, 2d - Create tests for parser :crit, active, 3d - Future task in critical line :crit, 5d - Create tests for renderer :2d - Add to mermaid :1d - - section Documentation - Describe gantt syntax :active, a1, after des1, 3d - Add gantt diagram to demo page :after a1 , 20h - Add another diagram to demo page :doc1, after a1 , 48h - - section Last section - Describe gantt syntax :after doc1, 3d - Add gantt diagram to demo page :20h - Add another diagram to demo page :48h -``` - -```mermaid -gantt - dateFormat YYYY-MM-DD - title Adding GANTT diagram functionality to mermaid - excludes :excludes the named dates/days from being included in a charted task.. - section A section - Completed task :done, des1, 2014-01-06,2014-01-08 - Active task :active, des2, 2014-01-09, 3d - Future task : des3, after des2, 5d - Future task2 : des4, after des3, 5d - - section Critical tasks - Completed task in the critical line :crit, done, 2014-01-06,24h - Implement parser and jison :crit, done, after des1, 2d - Create tests for parser :crit, active, 3d - Future task in critical line :crit, 5d - Create tests for renderer :2d - Add to mermaid :1d - - section Documentation - Describe gantt syntax :active, a1, after des1, 3d - Add gantt diagram to demo page :after a1 , 20h - Add another diagram to demo page :doc1, after a1 , 48h - - section Last section - Describe gantt syntax :after doc1, 3d - Add gantt diagram to demo page :20h - Add another diagram to demo page :48h -``` - -### State diagram - -```mermaid-example -%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% - stateDiagram - [*] --> Active - - state Active { - [*] --> NumLockOff - NumLockOff --> NumLockOn : EvNumLockPressed - NumLockOn --> NumLockOff : EvNumLockPressed - -- - [*] --> CapsLockOff - CapsLockOff --> CapsLockOn : EvCapsLockPressed - CapsLockOn --> CapsLockOff : EvCapsLockPressed - -- - [*] --> ScrollLockOff - ScrollLockOff --> ScrollLockOn : EvCapsLockPressed - ScrollLockOn --> ScrollLockOff : EvCapsLockPressed - } - state SomethingElse { - A --> B - B --> A - } - - Active --> SomethingElse - note right of SomethingElse : This is the note to the right. - - SomethingElse --> [*] - -``` - -```mermaid -%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% - stateDiagram - [*] --> Active - - state Active { - [*] --> NumLockOff - NumLockOff --> NumLockOn : EvNumLockPressed - NumLockOn --> NumLockOff : EvNumLockPressed - -- - [*] --> CapsLockOff - CapsLockOff --> CapsLockOn : EvCapsLockPressed - CapsLockOn --> CapsLockOff : EvCapsLockPressed - -- - [*] --> ScrollLockOff - ScrollLockOff --> ScrollLockOn : EvCapsLockPressed - ScrollLockOn --> ScrollLockOff : EvCapsLockPressed - } - state SomethingElse { - A --> B - B --> A - } - - Active --> SomethingElse - note right of SomethingElse : This is the note to the right. - - SomethingElse --> [*] - -``` - -### State diagram (beta) - -```mermaid-example -%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% -stateDiagram-v2 - [*] --> Active - - state Active { - [*] --> NumLockOff - NumLockOff --> NumLockOn : EvNumLockPressed - NumLockOn --> NumLockOff : EvNumLockPressed - -- - [*] --> CapsLockOff - CapsLockOff --> CapsLockOn : EvCapsLockPressed - CapsLockOn --> CapsLockOff : EvCapsLockPressed - -- - [*] --> ScrollLockOff - ScrollLockOff --> ScrollLockOn : EvCapsLockPressed - ScrollLockOn --> ScrollLockOff : EvCapsLockPressed - } - state SomethingElse { - A --> B - B --> A - } - - Active --> SomethingElse2 - note right of SomethingElse2 : This is the note to the right. - - SomethingElse2 --> [*] -``` - -```mermaid -%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% -stateDiagram-v2 - [*] --> Active - - state Active { - [*] --> NumLockOff - NumLockOff --> NumLockOn : EvNumLockPressed - NumLockOn --> NumLockOff : EvNumLockPressed - -- - [*] --> CapsLockOff - CapsLockOff --> CapsLockOn : EvCapsLockPressed - CapsLockOn --> CapsLockOff : EvCapsLockPressed - -- - [*] --> ScrollLockOff - ScrollLockOff --> ScrollLockOn : EvCapsLockPressed - ScrollLockOn --> ScrollLockOff : EvCapsLockPressed - } - state SomethingElse { - A --> B - B --> A - } - - Active --> SomethingElse2 - note right of SomethingElse2 : This is the note to the right. - - SomethingElse2 --> [*] -``` - -### Entity Relations diagram - -```mermaid-example - erDiagram - CUSTOMER }|..|{ DELIVERY-ADDRESS : has - CUSTOMER ||--o{ ORDER : places - CUSTOMER ||--o{ INVOICE : "liable for" - DELIVERY-ADDRESS ||--o{ ORDER : receives - INVOICE ||--|{ ORDER : covers - ORDER ||--|{ ORDER-ITEM : includes - PRODUCT-CATEGORY ||--|{ PRODUCT : contains - PRODUCT ||--o{ ORDER-ITEM : "ordered in" -``` - -```mermaid - erDiagram - CUSTOMER }|..|{ DELIVERY-ADDRESS : has - CUSTOMER ||--o{ ORDER : places - CUSTOMER ||--o{ INVOICE : "liable for" - DELIVERY-ADDRESS ||--o{ ORDER : receives - INVOICE ||--|{ ORDER : covers - ORDER ||--|{ ORDER-ITEM : includes - PRODUCT-CATEGORY ||--|{ PRODUCT : contains - PRODUCT ||--o{ ORDER-ITEM : "ordered in" -``` - -### User journey diagram - -```mermaid-example -journey - title My working day - section Go to work - Make tea: 5: Me - Go upstairs: 3: Me - Do work: 1: Me, Cat - section Go home - Go downstairs: 5: Me - Sit down: 5: Me -``` - -```mermaid -journey - title My working day - section Go to work - Make tea: 5: Me - Go upstairs: 3: Me - Do work: 1: Me, Cat - section Go home - Go downstairs: 5: Me - Sit down: 5: Me -``` diff --git a/docs/config/usage.md b/docs/config/usage.md deleted file mode 100644 index a0fb371cd..000000000 --- a/docs/config/usage.md +++ /dev/null @@ -1,391 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/usage.md](../../packages/mermaid/src/docs/config/usage.md). - -# Usage - -Mermaid is a JavaScript tool that makes use of a Markdown based syntax to render customizable diagrams, charts and visualizations. - -Diagrams can be re-rendered/modified by modifying their descriptions. - -### CDN - -<https://unpkg.com/mermaid/> - -Please note that you can switch versions through the dropdown box at the top right. - -## Using mermaid - -For the majority of users, Using the [Live Editor](https://mermaid.live/) would be sufficient, however you may also opt to deploy mermaid as a dependency or using the [Mermaid API](./setup/README.md). - -We have compiled some Video [Tutorials](./Tutorials.md) on how to use the mermaid Live Editor. - -**Installing and Hosting Mermaid on a Webpage** - -**Using the npm package** - - 1. You will need to install node v16, which would have npm. - - 2. download yarn using npm. - - 3. enter the following command: - yarn add mermaid - - 4. At this point, you can add mermaid as a dev dependency using this command: - yarn add --dev mermaid - - 5. Alternatively, you can also deploy mermaid using the script tag in an HTML file with mermaid diagram descriptions. - as is shown in the example below - -**Hosting mermaid on a web page.** - -> Note:This topic explored in greater depth in the [User Guide for Beginners](../intro/n00b-gettingStarted.md) - -The easiest way to integrate mermaid on a web page requires two elements: - -- A graph definition, inside `<pre>` tags labeled `class=mermaid`. Example: - -```html -<pre class="mermaid"> - graph LR - A --- B - B-->C[fa:fa-ban forbidden] - B-->D(fa:fa-spinner); -</pre> -``` - -- Inclusion of the mermaid address in the html page body using a `script` tag as an ESM import, and the `mermaidAPI` call. - -Example: - -```html -<script type="module"> - import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; - mermaid.initialize({ startOnLoad: true }); -</script> -``` - -**Following these directions, mermaid starts at page load and (when the page has loaded) it will locate the graph definitions inside the `pre` tags with `class="mermaid"` and return diagrams in SVG form, following given definitions.** - -## Simple full example: - -```html -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8" /> - </head> - <body> - <pre class="mermaid"> - graph LR - A --- B - B-->C[fa:fa-ban forbidden] - B-->D(fa:fa-spinner); - </pre> - <script type="module"> - import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; - mermaid.initialize({ startOnLoad: true }); - </script> - </body> -</html> -``` - -## Notes: - -An id attribute is also added to mermaid tags without one. - -Mermaid can load multiple diagrams, in the same page. - -> Try it out, save this code as HTML and load it using any browser.(Except Internet Explorer, please don't use Internet Explorer.) - -## Enabling Click Event and Tags in Nodes - -A `securityLevel` configuration has to first be cleared, `securityLevel` sets the level of trust for the parsed diagrams and limits click functionality. This was introduce in version 8.2 as a security improvement, aimed at preventing malicious use. - -**It is the site owner's responsibility to discriminate between trustworthy and untrustworthy user-bases and we encourage the use of discretion.** - -## securityLevel - -| Parameter | Description | Type | Required | Values | -| ------------- | --------------------------------- | ------ | -------- | ------------------------------------------ | -| securityLevel | Level of trust for parsed diagram | String | Required | 'sandbox', 'strict', 'loose', 'antiscript' | - -Values: - -- **strict**: (**default**) tags in text are encoded, click functionality is disabled -- **loose**: tags in text are allowed, click functionality is enabled -- **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled -- **sandbox**: With this security level all rendering takes place in a sandboxed iframe. This prevent any JavaScript running in the context. This may hinder interactive functionality of the diagram like scripts, popups in sequence diagram or links to other tabs/targets etc. - -> **Note** -> This changes the default behaviour of mermaid so that after upgrade to 8.2, unless the `securityLevel` is not changed, tags in flowcharts are encoded as tags and clicking is disabled. -> **sandbox** security level is still in the beta version. - -**If you are taking responsibility for the diagram source security you can set the `securityLevel` to a value of your choosing . This allows clicks and tags are allowed.** - -**To change `securityLevel`, you have to call `mermaidAPI.initialize`:** - -```javascript -mermaidAPI.initialize({ - securityLevel: 'loose', -}); -``` - -### Labels out of bounds - -If you use dynamically loaded fonts that are loaded through CSS, such as Google fonts, mermaid should wait for the -whole page to load (dom + assets, particularly the fonts file). - -```javascript -$(document).load(function () { - mermaid.initialize(); -}); -``` - -or - -```javascript -$(document).ready(function () { - mermaid.initialize(); -}); -``` - -Not doing so will most likely result in mermaid rendering graphs that have labels out of bounds. The default integration in mermaid uses the window.load event to start rendering. - -If your page has other fonts in its body those might be used instead of the mermaid font. Specifying the font in your styling is a workaround for this. - -```css -div.mermaid { - font-family: 'trebuchet ms', verdana, arial; -} -``` - -### Calling `mermaid.init` - -By default, `mermaid.init` will be called when the document is ready, finding all elements with -`class="mermaid"`. If you are adding content after mermaid is loaded, or otherwise need -finer-grained control of this behavior, you can call `init` yourself with: - -- a configuration object -- some nodes, as - - a node - - an array-like of nodes - - or W3C selector that will find your nodes - -Example: - -```javascript -mermaid.init({ noteMargin: 10 }, '.someOtherClass'); -``` - -Or with no config object, and a jQuery selection: - -```javascript -mermaid.init(undefined, $('#someId .yetAnotherClass')); -``` - -> **Warning** -> This type of integration is deprecated. Instead the preferred way of handling more complex integration is to use the mermaidAPI instead. - -## Usage with webpack - -mermaid fully supports webpack. Here is a [working demo](https://github.com/mermaidjs/mermaid-webpack-demo). - -## API usage - -The main idea of the API is to be able to call a render function with the graph definition as a string. The render function -will render the graph and call a callback with the resulting SVG code. With this approach it is up to the site creator to -fetch the graph definition from the site (perhaps from a textarea), render it and place the graph somewhere in the site. - -The example below show an outline of how this could be used. The example just logs the resulting SVG to the JavaScript console. - -```html -<script type="module"> - import mermaid from './mermaid.mjs'; - mermaid.mermaidAPI.initialize({ startOnLoad: false }); - $(async function () { - // Example of using the API var - element = document.querySelector('#graphDiv'); - const insertSvg = function (svgCode, bindFunctions) { - element.innerHTML = svgCode; - }; - const graphDefinition = 'graph TB\na-->b'; - const graph = await mermaid.mermaidAPI.render('graphDiv', graphDefinition, insertSvg); - }); -</script> -``` - -### Binding events - -Sometimes the generated graph also has defined interactions like tooltip and click events. When using the API one must -add those events after the graph has been inserted into the DOM. - -The example code below is an extract of what mermaid does when using the API. The example shows how it is possible to -bind events to an SVG when using the API for rendering. - -```javascript -const insertSvg = function (svgCode, bindFunctions) { - element.innerHTML = svgCode; - if (typeof callback !== 'undefined') { - callback(id); - } - bindFunctions(element); -}; - -const id = 'theGraph'; - -mermaidAPI.render(id, txt, insertSvg, element); -``` - -1. The graph is generated using the render call. -2. After generation the render function calls the provided callback function, in this case it's called insertSvg. -3. The callback function is called with two parameters, the SVG code of the generated graph and a function. This function binds events to the SVG **after** it is inserted into the DOM. -4. Insert the SVG code into the DOM for presentation. -5. Call the binding function that binds the events. - -## Example of a marked renderer - -This is the renderer used for transforming the documentation from Markdown to html with mermaid diagrams in the html. - -```javascript -const renderer = new marked.Renderer(); -renderer.code = function (code, language) { - if (code.match(/^sequenceDiagram/) || code.match(/^graph/)) { - return '<pre class="mermaid">' + code + '</pre>'; - } else { - return '<pre><code>' + code + '</code></pre>'; - } -}; -``` - -Another example in CoffeeScript that also includes the mermaid script tag in the generated markup. - -```coffee -marked = require 'marked' - -module.exports = (options) -> - hasMermaid = false - renderer = new marked.Renderer() - renderer.defaultCode = renderer.code - renderer.code = (code, language) -> - if language is 'mermaid' - html = '' - if not hasMermaid - hasMermaid = true - html += '<script src="'+options.mermaidPath+'"></script>' - html + '<pre class="mermaid">'+code+'</pre>' - else - @defaultCode(code, language) - - renderer -``` - -## Advanced usage - -**Syntax validation without rendering (Work in Progress)** - -The **mermaid.parse(txt)** function validates graph definitions without rendering a graph. **[This function is still a work in progress](https://github.com/mermaid-js/mermaid/issues/1066), find alternatives below.** - -The function **mermaid.parse(txt)**, takes a text string as an argument and returns true if the definition follows mermaid's syntax and -false if it does not. The parseError function will be called when the parse function returns false. - -When the parser encounters invalid syntax the **mermaid.parseError** function is called. It is possible to override this -function in order to handle the error in an application-specific way. - -The code-example below in meta code illustrates how this could work: - -```javascript -mermaid.parseError = function (err, hash) { - displayErrorInGui(err); -}; - -const textFieldUpdated = function () { - const textStr = getTextFromFormField('code'); - - if (mermaid.parse(textStr)) { - reRender(textStr); - } -}; - -bindEventHandler('change', 'code', textFieldUpdated); -``` - -**Alternative to mermaid.parse():** -One effective and more future-proof method of validating your graph definitions, is to paste and render them via the [Mermaid Live Editor](https://mermaid.live/). This will ensure that your code is compliant with the syntax of Mermaid's most recent version. - -## Configuration - -Mermaid takes a number of options which lets you tweak the rendering of the diagrams. Currently there are three ways of -setting the options in mermaid. - -1. Instantiation of the configuration using the initialize call -2. _Using the global mermaid object_ - **Deprecated** -3. _using the global mermaid_config object_ - **Deprecated** -4. Instantiation of the configuration using the **mermaid.init** call- **Deprecated** - -The list above has two ways too many of doing this. Three are deprecated and will eventually be removed. The list of -configuration objects are described [in the mermaidAPI documentation](./setup/README.md). - -## Using the `mermaidAPI.initialize`/`mermaid.initialize` call - -The future proof way of setting the configuration is by using the initialization call to mermaid or mermaidAPI depending -on what kind of integration you use. - -```html -<script src="../dist/mermaid.js"></script> -<script> - let config = { startOnLoad: true, flowchart: { useMaxWidth: false, htmlLabels: true } }; - mermaid.initialize(config); -</script> -``` - -> **Note** -> This is the preferred way of configuring mermaid. - -### The following methods are deprecated and are kept only for backwards compatibility. - -## Using the mermaid object - -Is it possible to set some configuration via the mermaid object. The two parameters that are supported using this -approach are: - -- mermaid.startOnLoad -- mermaid.htmlLabels - -```javascript -mermaid.startOnLoad = true; -``` - -> **Warning** -> This way of setting the configuration is deprecated. Instead the preferred way is to use the initialize method. This functionality is only kept for backwards compatibility. - -## Using the mermaid_config - -It is possible to set some configuration via the mermaid object. The two parameters that are supported using this -approach are: - -- mermaid_config.startOnLoad -- mermaid_config.htmlLabels - -```javascript -mermaid_config.startOnLoad = true; -``` - -> **Warning** -> This way of setting the configuration is deprecated. Instead the preferred way is to use the initialize method. This functionality is only kept for backwards compatibility. - -## Using the mermaid.init call - -To set some configuration via the mermaid object. The two parameters that are supported using this approach are: - -- mermaid_config.startOnLoad -- mermaid_config.htmlLabels - -```javascript -mermaid_config.startOnLoad = true; -``` - -> **Warning** -> This way of setting the configuration is deprecated. Instead the preferred way is to use the initialize method. This functionality is only kept for backwards compatibility. diff --git a/docs/intro/index.md b/docs/intro/index.md deleted file mode 100644 index a3ed371ac..000000000 --- a/docs/intro/index.md +++ /dev/null @@ -1,405 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/intro/index.md](../../packages/mermaid/src/docs/intro/index.md). - -# About Mermaid - -**Mermaid lets you create diagrams and visualizations using text and code.** - -It is a JavaScript based diagramming and charting tool that renders Markdown-inspired text definitions to create and modify diagrams dynamically. - -> If you are familiar with Markdown you should have no problem learning [Mermaid's Syntax](n00b-syntaxReference.md). - -<img src="/header.png" alt="" /> - -[![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [![Twitter Follow](https://img.shields.io/twitter/follow/mermaidjs_?style=social)](https://twitter.com/mermaidjs_) - -<!-- Mermaid book banner --> - -[![Explore Mermaid.js in depth, with real-world examples, tips & tricks from the creator... The first official book on Mermaid is available for purchase. Check it out!](img/book-banner-post-release.jpg)](https://mermaid-js.github.io/mermaid/landing/) - -<!-- <Main description> --> - -Mermaid is a JavaScript based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams. The main purpose of Mermaid is to help documentation catch up with development. - -> Doc-Rot is a Catch-22 that Mermaid helps to solve. - -Diagramming and documentation costs precious developer time and gets outdated quickly. -But not having diagrams or docs ruins productivity and hurts organizational learning.<br/> -Mermaid addresses this problem by enabling users to create easily modifiable diagrams, it can also be made part of production scripts (and other pieces of code).<br/> <br/> -Mermaid allows even non-programmers to easily create detailed and diagrams through the [Mermaid Live Editor](https://mermaid.live/).<br/> -[Tutorials](../config/Tutorials.md) has video tutorials. -Use Mermaid with your favorite applications, check out the list of [Integrations and Usages of Mermaid](../misc/integrations.md). - -For a more detailed introduction to Mermaid and some of its more basic uses, look to the [Beginner's Guide](../community/n00b-overview.md) and [Usage](../config/usage.md). - -🌐 [CDN](https://unpkg.com/mermaid/) | 📖 [Documentation](https://mermaidjs.github.io) | 🙌 [Contribution](../community/development.md) | 🔌 [Plug-Ins](../misc/integrations.md) - -> 🖖 Keep a steady pulse: mermaid needs more Collaborators, [Read More](https://github.com/knsv/mermaid/issues/866). - -:trophy: **Mermaid was nominated and won the [JS Open Source Awards (2019)](https://osawards.com/javascript/#nominees) in the category "The most exciting use of technology"!!!** - -**Thanks to all involved, people committing pull requests, people answering questions and special thanks to Tyler Long who is helping me maintain the project 🙏** - -In our release process we rely heavily on visual regression tests using [applitools](https://applitools.com/). Applitools is a great service which has been easy to use and integrate with our tests. - -<a href="https://applitools.com/"> -<svg width="170" height="32" viewBox="0 0 170 32" fill="none" xmlns="http://www.w3.org/2000/svg"><mask id="a" maskUnits="userSpaceOnUse" x="27" y="0" width="143" height="32"><path fill-rule="evenodd" clip-rule="evenodd" d="M27.732.227h141.391v31.19H27.733V.227z" fill="#fff"></path></mask><g mask="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M153.851 22.562l1.971-3.298c1.291 1.219 3.837 2.402 5.988 2.402 1.971 0 2.903-.753 2.903-1.829 0-2.832-10.253-.502-10.253-7.313 0-2.904 2.51-5.45 7.099-5.45 2.904 0 5.234 1.004 6.955 2.367l-1.829 3.226c-1.039-1.075-3.011-2.008-5.126-2.008-1.65 0-2.725.717-2.725 1.685 0 2.546 10.289.395 10.289 7.386 0 3.19-2.724 5.52-7.528 5.52-3.012 0-5.916-1.003-7.744-2.688zm-5.7 2.259h4.553V.908h-4.553v23.913zm-6.273-8.676c0-2.689-1.578-5.02-4.446-5.02-2.832 0-4.409 2.331-4.409 5.02 0 2.724 1.577 5.055 4.409 5.055 2.868 0 4.446-2.33 4.446-5.055zm-13.588 0c0-4.912 3.442-9.07 9.142-9.07 5.736 0 9.178 4.158 9.178 9.07 0 4.911-3.442 9.106-9.178 9.106-5.7 0-9.142-4.195-9.142-9.106zm-5.628 0c0-2.689-1.577-5.02-4.445-5.02-2.832 0-4.41 2.331-4.41 5.02 0 2.724 1.578 5.055 4.41 5.055 2.868 0 4.445-2.33 4.445-5.055zm-13.587 0c0-4.912 3.441-9.07 9.142-9.07 5.736 0 9.178 4.158 9.178 9.07 0 4.911-3.442 9.106-9.178 9.106-5.701 0-9.142-4.195-9.142-9.106zm-8.425 4.338v-8.999h-2.868v-3.98h2.868V2.773h4.553v4.733h3.514v3.979h-3.514v7.78c0 1.111.574 1.936 1.578 1.936.681 0 1.326-.251 1.577-.538l.968 3.478c-.681.609-1.9 1.11-3.8 1.11-3.191 0-4.876-1.648-4.876-4.767zm-8.962 4.338h4.553V7.505h-4.553V24.82zm-.43-21.905a2.685 2.685 0 012.688-2.69c1.506 0 2.725 1.184 2.725 2.69a2.724 2.724 0 01-2.725 2.724c-1.47 0-2.688-1.219-2.688-2.724zM84.482 24.82h4.553V.908h-4.553v23.913zm-6.165-8.676c0-2.976-1.793-5.02-4.41-5.02-1.47 0-3.119.825-3.908 1.973v6.094c.753 1.111 2.438 2.008 3.908 2.008 2.617 0 4.41-2.044 4.41-5.055zm-8.318 6.453v8.82h-4.553V7.504H70v2.187c1.327-1.685 3.227-2.618 5.342-2.618 4.446 0 7.672 3.299 7.672 9.07 0 5.773-3.226 9.107-7.672 9.107-2.043 0-3.907-.86-5.342-2.653zm-10.718-6.453c0-2.976-1.793-5.02-4.41-5.02-1.47 0-3.119.825-3.908 1.973v6.094c.753 1.111 2.438 2.008 3.908 2.008 2.617 0 4.41-2.044 4.41-5.055zm-8.318 6.453v8.82H46.41V7.504h4.553v2.187c1.327-1.685 3.227-2.618 5.342-2.618 4.446 0 7.672 3.299 7.672 9.07 0 5.773-3.226 9.107-7.672 9.107-2.043 0-3.908-.86-5.342-2.653zm-11.758-1.936V18.51c-.753-1.004-2.187-1.542-3.657-1.542-1.793 0-3.263.968-3.263 2.617 0 1.65 1.47 2.582 3.263 2.582 1.47 0 2.904-.502 3.657-1.506zm0 4.159v-1.829c-1.183 1.434-3.227 2.259-5.485 2.259-2.761 0-5.988-1.864-5.988-5.736 0-4.087 3.227-5.593 5.988-5.593 2.33 0 4.337.753 5.485 2.115V13.85c0-1.756-1.506-2.904-3.8-2.904-1.829 0-3.55.717-4.984 2.044L28.63 9.8c2.115-1.901 4.84-2.726 7.564-2.726 3.98 0 7.6 1.578 7.6 6.561v11.186h-4.588z" fill="#00A298"></path></g><path fill-rule="evenodd" clip-rule="evenodd" d="M14.934 16.177c0 1.287-.136 2.541-.391 3.752-1.666-1.039-3.87-2.288-6.777-3.752 2.907-1.465 5.11-2.714 6.777-3.753.255 1.211.39 2.466.39 3.753m4.6-7.666V4.486a78.064 78.064 0 01-4.336 3.567c-1.551-2.367-3.533-4.038-6.14-5.207C11.1 4.658 12.504 6.7 13.564 9.262 5.35 15.155 0 16.177 0 16.177s5.35 1.021 13.564 6.915c-1.06 2.563-2.463 4.603-4.507 6.415 2.607-1.169 4.589-2.84 6.14-5.207a77.978 77.978 0 014.336 3.568v-4.025s-.492-.82-2.846-2.492c.6-1.611.93-3.354.93-5.174a14.8 14.8 0 00-.93-5.174c2.354-1.673 2.846-2.492 2.846-2.492" fill="#00A298"></path></svg> -</a> - -## Diagram Types - -### [Flowchart](../syntax/flowchart.md?id=flowcharts-basic-syntax) - -```mermaid-example -graph TD; - A-->B; - A-->C; - B-->D; - C-->D; -``` - -```mermaid -graph TD; - A-->B; - A-->C; - B-->D; - C-->D; -``` - -### [Sequence diagram](../syntax/sequenceDiagram.md) - -```mermaid-example -sequenceDiagram - participant Alice - participant Bob - Alice->>John: Hello John, how are you? - loop Healthcheck - John->>John: Fight against hypochondria - end - Note right of John: Rational thoughts <br/>prevail! - John-->>Alice: Great! - John->>Bob: How about you? - Bob-->>John: Jolly good! -``` - -```mermaid -sequenceDiagram - participant Alice - participant Bob - Alice->>John: Hello John, how are you? - loop Healthcheck - John->>John: Fight against hypochondria - end - Note right of John: Rational thoughts <br/>prevail! - John-->>Alice: Great! - John->>Bob: How about you? - Bob-->>John: Jolly good! -``` - -### [Gantt diagram](../syntax/gantt.md) - -```mermaid-example -gantt -dateFormat YYYY-MM-DD -title Adding GANTT diagram to mermaid -excludes weekdays 2014-01-10 - -section A section -Completed task :done, des1, 2014-01-06,2014-01-08 -Active task :active, des2, 2014-01-09, 3d -Future task : des3, after des2, 5d -Future task2 : des4, after des3, 5d -``` - -```mermaid -gantt -dateFormat YYYY-MM-DD -title Adding GANTT diagram to mermaid -excludes weekdays 2014-01-10 - -section A section -Completed task :done, des1, 2014-01-06,2014-01-08 -Active task :active, des2, 2014-01-09, 3d -Future task : des3, after des2, 5d -Future task2 : des4, after des3, 5d -``` - -### [Class diagram](../syntax/classDiagram.md) - -```mermaid-example -classDiagram -Class01 <|-- AveryLongClass : Cool -Class03 *-- Class04 -Class05 o-- Class06 -Class07 .. Class08 -Class09 --> C2 : Where am i? -Class09 --* C3 -Class09 --|> Class07 -Class07 : equals() -Class07 : Object[] elementData -Class01 : size() -Class01 : int chimp -Class01 : int gorilla -Class08 <--> C2: Cool label -``` - -```mermaid -classDiagram -Class01 <|-- AveryLongClass : Cool -Class03 *-- Class04 -Class05 o-- Class06 -Class07 .. Class08 -Class09 --> C2 : Where am i? -Class09 --* C3 -Class09 --|> Class07 -Class07 : equals() -Class07 : Object[] elementData -Class01 : size() -Class01 : int chimp -Class01 : int gorilla -Class08 <--> C2: Cool label -``` - -### [Git graph](../syntax/gitgraph.md) - -```mermaid-example - gitGraph - commit - commit - branch develop - commit - commit - commit - checkout main - commit - commit -``` - -```mermaid - gitGraph - commit - commit - branch develop - commit - commit - commit - checkout main - commit - commit -``` - -### [Entity Relationship Diagram - :exclamation: experimental](../syntax/entityRelationshipDiagram.md) - -```mermaid-example -erDiagram - CUSTOMER ||--o{ ORDER : places - ORDER ||--|{ LINE-ITEM : contains - CUSTOMER }|..|{ DELIVERY-ADDRESS : uses - -``` - -```mermaid -erDiagram - CUSTOMER ||--o{ ORDER : places - ORDER ||--|{ LINE-ITEM : contains - CUSTOMER }|..|{ DELIVERY-ADDRESS : uses - -``` - -### [User Journey Diagram](../syntax/userJourney.md) - -```mermaid-example -journey - title My working day - section Go to work - Make tea: 5: Me - Go upstairs: 3: Me - Do work: 1: Me, Cat - section Go home - Go downstairs: 5: Me - Sit down: 5: Me -``` - -```mermaid -journey - title My working day - section Go to work - Make tea: 5: Me - Go upstairs: 3: Me - Do work: 1: Me, Cat - section Go home - Go downstairs: 5: Me - Sit down: 5: Me -``` - -## Installation - -**In depth guides and examples can be found at [Getting Started](./n00b-gettingStarted.md) and [Usage](../config/usage.md).** - -**It would also be helpful to learn more about mermaid's [Syntax](./n00b-syntaxReference.md).** - -### CDN - - https://unpkg.com/mermaid@<version>/dist/ - -To select a version: - -Replace `<version>` with the desired version number. - -Latest Version: <https://unpkg.com/browse/mermaid@8.8.0/> - -## Deploying Mermaid - -To Deploy Mermaid: - -1. You will need to install node v16, which would have npm -2. Install mermaid - - NPM: `npm i mermaid` - - Yarn: `yarn add mermaid` - - Pnpm: `pnpm add mermaid` - -### [Mermaid API](../config/setup/README.md): - -**To deploy mermaid without a bundler, one can insert a `script` tag with an absolute address and a `mermaid.initialize` call into the HTML like so:** - -```html -<script type="module"> - import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; - mermaid.initialize({ startOnLoad: true }); -</script> -``` - -**Doing so will command the mermaid parser to look for the `<div>` or `<pre>` tags with `class="mermaid"`. From these tags mermaid will try to read the diagram/chart definitions and render them into SVG charts.** - -**Examples can be found at** [Other examples](../syntax/examples.md) - -## Sibling projects - -- [Mermaid Live Editor](https://github.com/mermaid-js/mermaid-live-editor) -- [Mermaid CLI](https://github.com/mermaid-js/mermaid-cli) -- [Mermaid Webpack Demo](https://github.com/mermaidjs/mermaid-webpack-demo) -- [Mermaid Parcel Demo](https://github.com/mermaidjs/mermaid-parcel-demo) - -## Request for Assistance - -Things are piling up and I have a hard time keeping up. It would be great if we could form a core team of developers to cooperate -with the future development of mermaid. - -As part of this team you would get write access to the repository and would -represent the project when answering questions and issues. - -Together we could continue the work with things like: - -- Adding more types of diagrams like mindmaps, ert diagrams, etc. -- Improving existing diagrams - -Don't hesitate to contact me if you want to get involved! - -## For contributors - -### Requirements - -- [volta](https://volta.sh/) to manage node versions. -- [Node.js](https://nodejs.org/en/). `volta install node` -- [pnpm](https://pnpm.io/) package manager. `volta install pnpm` - -## Development Installation - -```bash -git clone git@github.com:mermaid-js/mermaid.git -cd mermaid -# npx is required for first install as volta support for pnpm is not added yet. -npx pnpm install -pnpm test -``` - -### Lint - -```sh -pnpm lint -``` - -We use [eslint](https://eslint.org/). -We recommend you to install [editor plugins](https://eslint.org/docs/user-guide/integrations) to get real time lint result. - -### Test - -```sh -pnpm test -``` - -Manual test in browser: open `dist/index.html` - -### Release - -For those who have the permission to do so: - -Update version number in `package.json`. - -```sh -npm publish -``` - -The above command generates files into the `dist` folder and publishes them to \<npmjs.org>. - -## Related projects - -- [Command Line Interface](https://github.com/mermaid-js/mermaid-cli) -- [Live Editor](https://github.com/mermaid-js/mermaid-live-editor) -- [HTTP Server](https://github.com/TomWright/mermaid-server) - -## Contributors [![Good first issue](https://img.shields.io/github/labels/mermaid-js/mermaid/Good%20first%20issue%21)](https://github.com/mermaid-js/mermaid/issues?q=is%3Aissue+is%3Aopen+label%3A%22Good+first+issue%21%22) [![Contributors](https://img.shields.io/github/contributors/mermaid-js/mermaid)](https://github.com/mermaid-js/mermaid/graphs/contributors) [![Commits](https://img.shields.io/github/commit-activity/m/mermaid-js/mermaid)](https://github.com/mermaid-js/mermaid/graphs/contributors) - -Mermaid is a growing community and is always accepting new contributors. There's a lot of different ways to help out and we're always looking for extra hands! Look at [this issue](https://github.com/mermaid-js/mermaid/issues/866) if you want to know where to start helping out. - -Detailed information about how to contribute can be found in the [contribution guide](https://github.com/mermaid-js/mermaid/blob/develop/CONTRIBUTING.md) - -## Security and safe diagrams - -For public sites, it can be precarious to retrieve text from users on the internet, storing that content for presentation in a browser at a later stage. The reason is that the user content can contain embedded malicious scripts that will run when the data is presented. For Mermaid this is a risk, specially as mermaid diagrams contain many characters that are used in html which makes the standard sanitation unusable as it also breaks the diagrams. We still make an effort to sanitize the incoming code and keep refining the process but it is hard to guarantee that there are no loop holes. - -As an extra level of security for sites with external users we are happy to introduce a new security level in which the diagram is rendered in a sandboxed iframe preventing JavaScript in the code from being executed. This is a great step forward for better security. - -_Unfortunately you can not have a cake and eat it at the same time which in this case means that some of the interactive functionality gets blocked along with the possible malicious code._ - -## Reporting vulnerabilities - -To report a vulnerability, please e-mail security@mermaid.live with a description of the issue, the steps you took to create the issue, affected versions, and if known, mitigations for the issue. - -## Appreciation - -A quick note from Knut Sveidqvist: - -> _Many thanks to the [d3](https://d3js.org/) and [dagre-d3](https://github.com/cpettitt/dagre-d3) projects for providing the graphical layout and drawing libraries!_ -> -> _Thanks also to the [js-sequence-diagram](https://bramp.github.io/js-sequence-diagrams) project for usage of the grammar for the sequence diagrams. Thanks to Jessica Peter for inspiration and starting point for gantt rendering._ -> -> _Thank you to [Tyler Long](https://github.com/tylerlong) who has been a collaborator since April 2017._ -> -> _Thank you to the ever-growing list of [contributors](https://github.com/knsv/mermaid/graphs/contributors) that brought the project this far!_ - ---- - -_Mermaid was created by Knut Sveidqvist for easier documentation._ - -<style scoped> - #contributors + p, - #about-mermaid + p + p + blockquote + img + p - { - display: flex - } - - #contributors + p a, - #about-mermaid + p + p + blockquote + img + p a - { - margin: 0 0.5rem - } - - .dark #VPContent > div > div > div.content > div > main > div > div > img - { - filter: invert(1) hue-rotate(217deg) contrast(0.72); - } -</style> diff --git a/docs/intro/n00b-gettingStarted.md b/docs/intro/n00b-gettingStarted.md deleted file mode 100644 index 498aa1595..000000000 --- a/docs/intro/n00b-gettingStarted.md +++ /dev/null @@ -1,224 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/intro/n00b-gettingStarted.md](../../packages/mermaid/src/docs/intro/n00b-gettingStarted.md). - -# A Mermaid User-Guide for Beginners - -Mermaid is composed of three parts: Deployment, Syntax and Configuration. - -This section talks about the different ways to deploy Mermaid. Learning the [Syntax](n00b-syntaxReference.md) would be of great help to the beginner. - -> Generally the live editor is enough for most general uses of mermaid, and is a good place to start learning. - -**Absolute beginners are advised to view the Video [Tutorials](../config/Tutorials.md) on the Live Editor, to gain a better understanding of mermaid.** - -## Four ways of using mermaid: - -1. Using the Mermaid Live Editor at [mermaid.live](https://mermaid.live). -2. Using [mermaid plugins](../misc/integrations.md) with programs you are familiar with. -3. Calling the Mermaid JavaScript API. -4. Deploying Mermaid as a dependency. - -**Note: It is our recommendation that you review all approaches, and choose the one that is best for your project.** - -> More in depth information can be found at [Usage](../config/usage.md). - -## 1. Using the Live Editor - -Available at [mermaid.live](https://mermaid.live) - -```mermaid-example -graph TD - A[Enter Chart Definition] --> B(Preview) - B --> C{decide} - C --> D[Keep] - C --> E[Edit Definition] - E --> B - D --> F[Save Image and Code] - F --> B -``` - -```mermaid -graph TD - A[Enter Chart Definition] --> B(Preview) - B --> C{decide} - C --> D[Keep] - C --> E[Edit Definition] - E --> B - D --> F[Save Image and Code] - F --> B -``` - -In the `Code` section one can write or edit raw mermaid code, and instantly `Preview` the rendered result on the panel beside it. - -The `Configuration` Section is for changing the appearance and behavior of mermaid diagrams. An easy introduction to mermaid configuration is found in the [Advanced usage](../config/n00b-advanced.md) section. A complete configuration reference cataloging the default values can be found on the [mermaidAPI](../config/setup/README.md) page. - -![Code,Config and Preview](./img/Code-Preview-Config.png) - -### Editing History - -Your code will be autosaved every minute into the Timeline tab of History which shows the most recent 30 items. - -You can manually save code by clicking the Save icon in the History section. It can also be accessed in the Saved tab. This is stored in the browser storage only. - -### Saving a Diagram: - -You may choose any of the methods below, to save it - -**We recommend that you save your diagram code on top of any method you choose, in order to make edits and modifications further down the line.** - -![Flowchart](./img/Live-Editor-Choices.png) - -### Editing your diagrams - -Editing is as easy as pasting your **Diagram code**, into the `code` section of the `Live Editor`. - -### Loading from Gists - -The Gist you create should have a code.mmd file and optionally a config.json. [Example](https://gist.github.com/sidharthv96/6268a23e673a533dcb198f241fd7012a) - -To load a gist into the Editor, you can use https://mermaid.live/edit?gist=https://gist.github.com/sidharthv96/6268a23e673a533dcb198f241fd7012a - -and to View, https://mermaid.live/view?gist=https://gist.github.com/sidharthv96/6268a23e673a533dcb198f241fd7012a - -## 2. Using Mermaid Plugins: - -You can generate mermaid diagrams from within popular applications using plug-ins. It can be done in the same way, you would use the Live Editor. Here's a list of [Mermaid Plugins](../misc/integrations.md). - -**This is covered in greater detail in the [Usage section](../config/usage.md)** - -## 3. Calling the JavaScript API - -This method can be used with any common web server like Apache, IIS, nginx, node express. - -You will also need a text editing tool like Notepad++ to generate a .html file. It is then deployed by a web browser (such as Firefox, Chrome, Safari, but not Internet Explorer). - -The API works by pulling rendering instructions from the source `mermaid.js` in order to render diagrams on the page. - -### Requirements for the Mermaid API. - -When writing the .html file, we give two instructions inside the html code to the web browser: - -a. The mermaid code for the diagram we want to create. - -b. The importing of mermaid library through the `mermaid.esm.js` or `mermaid.esm.min.mjs` and the `mermaid.initialize()` call, which dictates the appearance of diagrams and also starts the rendering process . - -**a. The embedded mermaid diagram definition inside a `<pre class="mermaid">`:** - -```html -<body> - Here is a mermaid diagram: - <pre class="mermaid"> - graph TD - A[Client] --> B[Load Balancer] - B --> C[Server01] - B --> D[Server02] - </pre> -</body> -``` - -**Notes**: Every Mermaid chart/graph/diagram definition, should have separate `<pre>` tags. - -**b. The import of mermaid and the `mermaid.initialize()` call.** - -`mermaid.initialize()` call takes all the definitions contained in all the `<pre class="mermaid">` tags that it finds in the html body and renders them into diagrams. Example: - -```html -<body> - <script type="module"> - import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; - mermaid.initialize({ startOnLoad: true }); - </script> -</body> -``` - -**Notes**: -Rendering in Mermaid is initialized by `mermaid.initialize()` call. You can place `mermaid.initialize()` inside `mermaid.min.js` for brevity. However, doing the opposite lets you control when it starts looking for `<div>`tags inside the web page with `mermaid.initialize()`. This is useful when you think that not all `<div>` tags may have loaded on the execution of `mermaid.min.js` file. - -`startOnLoad` is one of the parameters that can be defined by `mermaid.initialize()` - -| Parameter | Description | Type | Values | -| ----------- | --------------------------------- | ------- | ----------- | -| startOnLoad | Toggle for Rendering upon loading | Boolean | true, false | - -### Working Examples - -**Here is a full working example of the mermaidAPI being called through the CDN:** - -```html -<html> - <body> - Here is one mermaid diagram: - <pre class="mermaid"> - graph TD - A[Client] --> B[Load Balancer] - B --> C[Server1] - B --> D[Server2] - </pre> - - And here is another: - <pre class="mermaid"> - graph TD - A[Client] -->|tcp_123| B - B(Load Balancer) - B -->|tcp_456| C[Server1] - B -->|tcp_456| D[Server2] - </pre> - - <script type="module"> - import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; - mermaid.initialize({ startOnLoad: true }); - </script> - </body> -</html> -``` - -**Another Option:** -In this example mermaid.js is referenced in `src` as a separate JavaScript file, in an example Path. - -```html -<html lang="en"> - <head> - <meta charset="utf-8" /> - </head> - <body> - <pre class="mermaid"> - graph LR - A --- B - B-->C[fa:fa-ban forbidden] - B-->D(fa:fa-spinner); - </pre> - <pre class="mermaid"> - graph TD - A[Client] --> B[Load Balancer] - B --> C[Server1] - B --> D[Server2] - </pre> - <script type="module"> - import mermaid from 'The/Path/In/Your/Package/mermaid.esm.mjs'; - mermaid.initialize({ startOnLoad: true }); - </script> - </body> -</html> -``` - ---- - -## 4. Adding Mermaid as a dependency. - -1. install node v16, which would have npm - -2. download yarn using npm by entering the command below: - npm install -g yarn - -3. After yarn installs, enter the following command: - yarn add mermaid - -4. To add Mermaid as a Dev Dependency - yarn add --dev mermaid - -**Comments from Knut Sveidqvist, creator of mermaid:** - -- In early versions of mermaid, the `<script>` tag was invoked in the `<head>` part of the web page. Nowadays we can place it in the `<body>` as seen above. Older parts of the documentation frequently reflects the previous way which still works. diff --git a/docs/intro/n00b-syntaxReference.md b/docs/intro/n00b-syntaxReference.md deleted file mode 100644 index c51b1680e..000000000 --- a/docs/intro/n00b-syntaxReference.md +++ /dev/null @@ -1,85 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/intro/n00b-syntaxReference.md](../../packages/mermaid/src/docs/intro/n00b-syntaxReference.md). - -# Diagram Syntax - -Mermaid's syntax is used to create diagrams. You'll find that it is not too tricky and can be learned in a day. The next sections dive deep into the syntax of each diagram type. - -Syntax, together with Deployment and Configuration constitute the whole of Mermaid. - -Diagram Examples can be found in the [Mermaid Live Editor](https://mermaid.live), it is also a great practice area. - -## Syntax Structure - -One would notice that all **Diagrams definitions begin** with a declaration of the **diagram type**, followed by the definitions of the diagram and its contents. This declaration notifies the parser which kind of diagram the code is supposed to generate. - -**Example** : The code below is for an Entity Relationship Diagram, specified by the `erDiagram` declaration. What follows is the definition of the different `Entities` represented in it. - -```mermaid-example -erDiagram - CUSTOMER }|..|{ DELIVERY-ADDRESS : has - CUSTOMER ||--o{ ORDER : places - CUSTOMER ||--o{ INVOICE : "liable for" - DELIVERY-ADDRESS ||--o{ ORDER : receives - INVOICE ||--|{ ORDER : covers - ORDER ||--|{ ORDER-ITEM : includes - PRODUCT-CATEGORY ||--|{ PRODUCT : contains - PRODUCT ||--o{ ORDER-ITEM : "ordered in" -``` - -```mermaid -erDiagram - CUSTOMER }|..|{ DELIVERY-ADDRESS : has - CUSTOMER ||--o{ ORDER : places - CUSTOMER ||--o{ INVOICE : "liable for" - DELIVERY-ADDRESS ||--o{ ORDER : receives - INVOICE ||--|{ ORDER : covers - ORDER ||--|{ ORDER-ITEM : includes - PRODUCT-CATEGORY ||--|{ PRODUCT : contains - PRODUCT ||--o{ ORDER-ITEM : "ordered in" -``` - -The [Getting Started](./n00b-gettingStarted.md) section can also provide some practical examples of mermaid syntax. - -## Diagram Breaking - -One should **beware the use of some words or symbols** that can break diagrams. These words or symbols are few and often only affect specific types of diagrams. The table below will continuously be updated. - -| Diagram Breakers | Reason | Solution | -| ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------- | ------------------------------------------------- | -| **Comments** | | | -| [` %%{``}%% `](https://github.com/mermaid-js/mermaid/issues/1968) | Similar to [Directives](../config/directives.md) confuses the renderer. | In comments using `%%`, avoid using "{}". | -| **Flow-Charts** | | | -| 'end' | The word "End" can cause Flowcharts and Sequence diagrams to break | Wrap them in quotation marks to prevent breakage. | -| [Nodes inside Nodes](../syntax/flowchart.md?id=special-characters-that-break-syntax) | Mermaid gets confused with nested shapes | wrap them in quotation marks to prevent breaking | - -### Mermaid Live Editor - -Now, that you've seen what you should not add to your diagrams, you can play around with them in the [Mermaid Live Editor](https://mermaid.live). - -# Configuration - -Configuration is the third part of Mermaid, after deployment and syntax. It deals with the different ways that Mermaid can be customized across different deployments. - -If you are interested in altering and customizing your Mermaid Diagrams, you will find the methods and values available for [Configuration](../config/setup/README.md) here. It includes themes. -This section will introduce the different methods of configuring the behaviors and appearances of Mermaid Diagrams. -The following are the most commonly used methods, and they are all tied to Mermaid [Deployment](./n00b-gettingStarted.md) methods. - -### Configuration Section in the [Live Editor](https://mermaid.live). - -Here you can edit certain values to change the behavior and appearance of the diagram. - -### [The initialize() call](https://mermaid-js.github.io/mermaid/#/n00b-gettingStarted?id=_3-calling-the-javascript-api), - -Used when Mermaid is called via an API, or through a `<script>` tag. - -### [Directives](../config/directives.md), - -Allows for the limited reconfiguration of a diagram just before it is rendered. It can alter the font style, color and other aesthetic aspects of the diagram. You can pass a directive alongside your definition inside `%%{ }%%`. It can be done either above or below your diagram definition. - -### [Theme Manipulation](../config/theming.md): - -An application of using Directives to change [Themes](../config/theming.md). `Theme` is a value within Mermaid's configuration that dictates the color scheme for diagrams. diff --git a/docs/misc/faq.md b/docs/misc/faq.md deleted file mode 100644 index c7155a5b0..000000000 --- a/docs/misc/faq.md +++ /dev/null @@ -1,17 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/misc/faq.md](../../packages/mermaid/src/docs/misc/faq.md). - -# Frequently Asked Questions - -1. [How to add title to flowchart?](https://github.com/knsv/mermaid/issues/556#issuecomment-363182217) -2. [How to specify custom CSS file?](https://github.com/mermaidjs/mermaid.cli/pull/24#issuecomment-373402785) -3. [How to fix tooltip misplacement issue?](https://github.com/knsv/mermaid/issues/542#issuecomment-3343564621) -4. [How to specify gantt diagram xAxis format?](https://github.com/knsv/mermaid/issues/269#issuecomment-373229136) -5. [How to bind an event?](https://github.com/knsv/mermaid/issues/372) -6. [How to add newline in the text?](https://github.com/knsv/mermaid/issues/384#issuecomment-281339381) -7. [How to have special characters in link text?](https://github.com/knsv/mermaid/issues/407#issuecomment-329944735) -8. [How to change Flowchart curve style?](https://github.com/knsv/mermaid/issues/580#issuecomment-373929046) -9. [How to create a Flowchart end-Node that says "End"](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897) diff --git a/docs/misc/integrations.md b/docs/misc/integrations.md deleted file mode 100644 index f9fe5761f..000000000 --- a/docs/misc/integrations.md +++ /dev/null @@ -1,186 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/misc/integrations.md](../../packages/mermaid/src/docs/misc/integrations.md). - -# Integrations - -The following list is a compilation of different integrations and plugins that allow the rendering of mermaid definitions within other applications. - -They also serve as proof of concept, for the variety of things that can be built with mermaid. - -## Productivity - -- [GitHub](https://github.com) (**Native support**) - - [Using code blocks](https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/) (**Native support**) - - [GitHub action: Compile mermaid to image](https://github.com/neenjaw/compile-mermaid-markdown-action) - - [svg-generator](https://github.com/SimonKenyonShepard/mermaidjs-github-svg-generator) -- [GitLab](https://docs.gitlab.com/ee/user/markdown.html#diagrams-and-flowcharts) (**Native support**) -- [Gitea](https://gitea.io) (**Native support**) -- [Azure Devops](https://docs.microsoft.com/en-us/azure/devops/project/wiki/wiki-markdown-guidance?view=azure-devops#add-mermaid-diagrams-to-a-wiki-page) (**Native support**) -- [Tuleap](https://docs.tuleap.org/user-guide/writing-in-tuleap.html#graphs) (**Native support**) -- [Joplin](https://joplinapp.org) (**Native support**) -- [Notion](https://notion.so) (**Native support**) -- [Observable](https://observablehq.com/@observablehq/mermaid) (**Native support**) -- [Obsidian](https://help.obsidian.md/How+to/Format+your+notes#Diagram) (**Native support**) -- [GitBook](https://gitbook.com) - - [Mermaid Plugin](https://github.com/JozoVilcek/gitbook-plugin-mermaid) - - [Markdown with Mermaid CLI](https://github.com/miao1007/gitbook-plugin-mermaid-cli) - - [Mermaid plugin for GitBook](https://github.com/wwformat/gitbook-plugin-mermaid-pdf) -- [LiveBook](https://livebook.dev) (**Native support**) -- [Atlassian Products](https://www.atlassian.com) - - [Mermaid Plugin for Confluence](https://marketplace.atlassian.com/apps/1214124/mermaid-plugin-for-confluence?hosting=server&tab=overview) - - [CloudScript.io Addon](https://marketplace.atlassian.com/apps/1219878/cloudscript-io-mermaid-addon?hosting=cloud&tab=overview) - - [Auto convert diagrams in Jira](https://github.com/coddingtonbear/jirafs-mermaid) -- [Redmine](https://redmine.org) - - [Mermaid Macro](https://www.redmine.org/plugins/redmine_mermaid_macro) - - [redmine-mermaid](https://github.com/styz/redmine_mermaid) - - [markdown-for-mermaid-plugin](https://github.com/jamieh-mongolian/markdown-for-mermaid-plugin) -- [JetBrains IDE eg Pycharm](https://www.jetbrains.com/go/guide/tips/mermaid-js-support-in-markdown/) -- [mermerd](https://github.com/KarnerTh/mermerd) - -## CRM/ERP/Similar - -- [coreBOS](https://blog.corebos.org/blog/december2019) - -## Blogs - -- [Wordpress](https://wordpress.org) - - [WordPress Markdown Editor](https://wordpress.org/plugins/wp-githuber-md) - - [WP-ReliableMD](https://wordpress.org/plugins/wp-reliablemd/) -- [Hexo](https://hexo.io) - - [hexo-filter-mermaid-diagrams](https://github.com/webappdevelp/hexo-filter-mermaid-diagrams) - - [hexo-tag-mermaid](https://github.com/JameChou/hexo-tag-mermaid) - - [hexo-mermaid-diagrams](https://github.com/mslxl/hexo-mermaid-diagrams) - -## CMS - -- [VitePress](https://vitepress.vuejs.org/) - - [Plugin for Mermaid.js](https://emersonbottero.github.io/vitepress-plugin-mermaid/) -- [VuePress](https://vuepress.vuejs.org/) - - [Plugin for Mermaid.js](https://github.com/eFrane/vuepress-plugin-mermaidjs) -- [Grav CMS](https://getgrav.org/) - - [Mermaid Diagrams](https://github.com/DanielFlaum/grav-plugin-mermaid-diagrams) - - [Gitlab Markdown Adapter](https://github.com/Goutte/grav-plugin-gitlab-markdown-adapter) - -## Communication - -- [Discourse](https://discourse.org) - - [Mermaid Plugin](https://github.com/pnewell/discourse-mermaid), [And](https://github.com/unfoldingWord-dev/discourse-mermaid) -- [Mattermost](https://mattermost.com/) - - [Mermaid Plugin](https://github.com/SpikeTings/Mermaid) -- [phpBB](https://phpbb.com) - - [phpbb-ext-mermaid](https://github.com/AlfredoRamos/phpbb-ext-mermaid) -- [NodeBB](https://nodebb.org) - - [Mermaid Plugin](https://www.npmjs.com/package/nodebb-plugin-mermaid) - -## Wikis - -- [MediaWiki](https://www.mediawiki.org) - - [Mermaid Extension](https://www.mediawiki.org/wiki/Extension:Mermaid) - - [Flex Diagrams Extension](https://www.mediawiki.org/wiki/Extension:Flex_Diagrams) -- [Semantic Media Wiki](https://semantic-mediawiki.org) - - [Mermaid Plugin](https://github.com/SemanticMediaWiki/Mermaid) -- [FosWiki](https://foswiki.org) - - [Mermaid Plugin](https://foswiki.org/Extensions/MermaidPlugin) -- [DokuWiki](https://dokuwiki.org) - - [Flowcharts](https://www.dokuwiki.org/plugin:flowcharts?s[]=mermaid) - - [ComboStrap](https://combostrap.com/mermaid) -- [TiddlyWiki](https://tiddlywiki.com/) - - [mermaid-tw5: full js library](https://github.com/efurlanm/mermaid-tw5) - - [tw5-mermaid: wrapper for Mermaid Live](https://github.com/jasonmhoule/tw5-mermaid) - -## Editor Plugins - -- [Vs Code](https://code.visualstudio.com/) - - [Markdown Preview Mermaid Support](https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid) - - [Mermaid Preview](https://marketplace.visualstudio.com/items?itemName=vstirbu.vscode-mermaid-preview) - - [Mermaid Markdown Syntax Highlighting](https://marketplace.visualstudio.com/items?itemName=bpruitt-goddard.mermaid-markdown-syntax-highlighting) - - [Mermaid Editor](https://marketplace.visualstudio.com/items?itemName=tomoyukim.vscode-mermaid-editor) - - [Mermaid Export](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.mermaid-export) - - [Markdown PDF](https://marketplace.visualstudio.com/items?itemName=yzane.markdown-pdf) - - [Preview](https://marketplace.visualstudio.com/items?itemName=searKing.preview-vscode) - - [Preview Sequence Diagrams](https://marketplace.visualstudio.com/items?itemName=arichika.previewseqdiag-vscode) -- [Markdown-It](https://github.com/markdown-it/markdown-it) - - [Textual UML Parser](https://github.com/manastalukdar/markdown-it-textual-uml) - - [Mermaid Plugin](https://github.com/tylingsoft/markdown-it-mermaid) - - [md-it-mermaid](https://github.com/iamcco/md-it-mermaid) - - [markdown-it-mermaid-fence-new](https://github.com/Revomatico/markdown-it-mermaid-fence-new) - - [markdown-it-mermaid-less](https://github.com/searKing/markdown-it-mermaid-less) -- [Atom](https://atom.io) - - [Markdown Preview Enhanced](https://atom.io/packages/markdown-preview-enhanced) - - [Atom Mermaid](https://atom.io/packages/atom-mermaid) - - [Language Mermaid Syntax Highlighter](https://atom.io/packages/language-mermaid) -- [Sublime Text 3](https://sublimetext.com) - - [Mermaid Package](https://packagecontrol.io/packages/Mermaid) -- [Astah](https://astah.net) - - [Export to Mermaid](https://github.com/Avens666/Astah_Jude_UML_export_to_Markdown-mermaid-Plantuml-) -- [Light Table](http://lighttable.com/) - - [Mermaid Plugin](https://github.com/cldwalker/Mermaid) -- [Draw.io](https://draw.io) - [Plugin](https://github.com/nopeslide/drawio_mermaid_plugin) -- [Inkdrop](https://www.inkdrop.app) - [Plugin](https://github.com/inkdropapp/inkdrop-mermaid) -- [Vim](https://www.vim.org) - - [Vim Diagram Syntax](https://github.com/zhaozg/vim-diagram) -- [GNU Emacs](https://www.gnu.org/software/emacs/) - - [Major mode for .mmd files](https://github.com/abrochard/mermaid-mode) - - [Org-Mode integration](https://github.com/arnm/ob-mermaid) -- [Brackets](https://brackets.io/) - - [Mermaid Preview](https://github.com/AlanHohn/mermaid-preview) -- [Iodide](https://github.com/iodide-project/iodide) - - [iodide-mermaid-plugin](https://github.com/iodide-project/iodide-mermaid-plugin) -- [Google docs](https://docs.google.com/) - - [Mermaid plugin for google docs](https://workspace.google.com/marketplace/app/mermaid/636321283856) -- [Podlite](https://github.com/zag/podlite-desktop) - - [Named block =Diagram](https://github.com/zag/podlite/tree/main/packages/podlite-diagrams) -- [GNU Nano](https://www.nano-editor.org/) - - [Nano Mermaid](https://github.com/Yash-Singh1/nano-mermaid) - -## Document Generation - -- [Sphinx](https://www.sphinx-doc.org/en/master/) - - [sphinxcontrib-mermaid](https://github.com/mgaitan/sphinxcontrib-mermaid) -- [remark.js](https://remark.js.org/) - - [remark-mermaid](https://github.com/temando/remark-mermaid) -- [jSDoc](https://jsdoc.app/) - - [jsdoc-mermaid](https://github.com/Jellyvision/jsdoc-mermaid) -- [MkDocs](https://mkdocs.org) - - [mkdocs-mermaid2-plugin](https://github.com/fralau/mkdocs-mermaid2-plugin) - - [mkdocs-material](https://github.com/squidfunk/mkdocs-material), check the [docs](https://squidfunk.github.io/mkdocs-material/reference/diagrams/) -- [Type Doc](https://typedoc.org/) - - [typedoc-plugin-mermaid](https://www.npmjs.com/package/typedoc-plugin-mermaid) -- [Docsy Hugo Theme](https://www.docsy.dev/docs/adding-content/lookandfeel/#diagrams-with-mermaid) (Native support in theme) -- [Codedoc](https://codedoc.cc/) - - [codedoc-mermaid-plugin](https://www.npmjs.com/package/codedoc-mermaid-plugin) -- [mdbook](https://rust-lang.github.io/mdBook/index.html) - - [mdbook-mermaid](https://github.com/badboy/mdbook-mermaid) - -## Browser Extensions - -| Name | Chrome Web Store | Firefox Add-ons | Opera | Edge | Source/Repository | -| ------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| GitHub + Mermaid | - | [🦊🔗](https://addons.mozilla.org/firefox/addon/github-mermaid/) | - | - | [🐙🔗](https://github.com/BackMarket/github-mermaid-extension) | -| Asciidoctor Live Preview | [🎡🔗](https://chrome.google.com/webstore/detail/asciidoctorjs-live-previe/iaalpfgpbocpdfblpnhhgllgbdbchmia) | - | - | [🌀🔗](https://microsoftedge.microsoft.com/addons/detail/asciidoctorjs-live-previ/pefkelkanablhjdekgdahplkccnbdggd?hl=en-US) | - | -| Diagram Tab | - | - | - | - | [🐙🔗](https://github.com/khafast/diagramtab) | -| Markdown Diagrams | [🎡🔗](https://chrome.google.com/webstore/detail/markdown-diagrams/pmoglnmodacnbbofbgcagndelmgaclel/) | [🦊🔗](https://addons.mozilla.org/en-US/firefox/addon/markdown-diagrams/) | [🔴🔗](https://addons.opera.com/en/extensions/details/markdown-diagrams/) | [🌀🔗](https://microsoftedge.microsoft.com/addons/detail/markdown-diagrams/hceenoomhhdkjjijnmlclkpenkapfihe) | [🐙🔗](https://github.com/marcozaccari/markdown-diagrams-browser-extension/tree/master/doc/examples) | -| Markdown Viewer | - | [🦊🔗](https://addons.mozilla.org/en-US/firefox/addon/markdown-viewer-chrome/) | - | - | [🐙🔗](https://github.com/simov/markdown-viewer) | -| Extensions for Mermaid | - | [🦊🔗](https://addons.mozilla.org/en-US/firefox/addon/markdown-viewer-chrome/) | [🔴🔗](https://addons.opera.com/en/extensions/details/extensions-for-mermaid/) | - | [🐙🔗](https://github.com/Stefan-S/mermaid-extension) | -| Chrome Diagrammer | [🎡🔗](https://chrome.google.com/webstore/detail/chrome-diagrammer/bkpbgjmkomfoakfklcjeoegkklgjnnpk) | - | - | - | - | -| Mermaid Diagrams | [🎡🔗](https://chrome.google.com/webstore/detail/mermaid-diagrams/phfcghedmopjadpojhmmaffjmfiakfil) | - | - | - | - | -| Monkeys | [🎡🔗](https://chrome.google.com/webstore/detail/monkeys-mermaid-for-githu/cplfdpoajbclbgphaphphcldamfkjlgi) | - | - | - | - | -| Mermaid Previewer | [🎡🔗](https://chrome.google.com/webstore/detail/mermaid-previewer/oidjnlhbegipkcklbdfnbkikplpghfdl) | - | - | - | - | - -## Other - -- [Jekyll](https://jekyllrb.com/) - - [jekyll-mermaid](https://rubygems.org/gems/jekyll-mermaid) - - [jekyll-mermaid-diagrams](https://github.com/fuzhibo/jekyll-mermaid-diagrams) -- [Reveal.js](https://github.com/hakimel/reveal.js) - - [reveal.js-mermaid-plugin](https://github.com/ludwick/reveal.js-mermaid-plugin) -- [Bisheng](https://www.npmjs.com/package/bisheng) - - [bisheng-plugin-mermaid](https://github.com/yct21/bisheng-plugin-mermaid) -- [Reveal CK](https://github.com/jedcn/reveal-ck) - - [reveal-ck-mermaid-plugin](https://github.com/tmtm/reveal-ck-mermaid-plugin) -- [mermaid-server: Generate diagrams using a HTTP request](https://github.com/TomWright/mermaid-server) -- [ExDoc](https://github.com/elixir-lang/ex_doc) - - [Rendering Mermaid graphs](https://github.com/elixir-lang/ex_doc#rendering-mermaid-graphs) diff --git a/docs/syntax/c4c.md b/docs/syntax/c4c.md deleted file mode 100644 index ef1295450..000000000 --- a/docs/syntax/c4c.md +++ /dev/null @@ -1,664 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/c4c.md](../../packages/mermaid/src/docs/syntax/c4c.md). - -# C4 Diagrams - -> C4 Diagram: This is an experimental diagram for now. The syntax and properties can change in future releases. Proper documentation will be provided when the syntax is stable. - -Mermaid's c4 diagram syntax is compatible with plantUML. See example below: - -```mermaid-example - C4Context - title System Context diagram for Internet Banking System - Enterprise_Boundary(b0, "BankBoundary0") { - Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.") - Person(customerB, "Banking Customer B") - Person_Ext(customerC, "Banking Customer C", "desc") - - Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.") - - System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.") - - Enterprise_Boundary(b1, "BankBoundary") { - - SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") - - System_Boundary(b2, "BankBoundary2") { - System(SystemA, "Banking System A") - System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts. next line.") - } - - System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.") - SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.") - - Boundary(b3, "BankBoundary3", "boundary") { - SystemQueue(SystemF, "Banking System F Queue", "A system of the bank.") - SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.") - } - } - } - - BiRel(customerA, SystemAA, "Uses") - BiRel(SystemAA, SystemE, "Uses") - Rel(SystemAA, SystemC, "Sends e-mails", "SMTP") - Rel(SystemC, customerA, "Sends e-mails to") - - UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red") - UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5") - UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10") - UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50") - UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20") - - UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1") - - -``` - -```mermaid - C4Context - title System Context diagram for Internet Banking System - Enterprise_Boundary(b0, "BankBoundary0") { - Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.") - Person(customerB, "Banking Customer B") - Person_Ext(customerC, "Banking Customer C", "desc") - - Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.") - - System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.") - - Enterprise_Boundary(b1, "BankBoundary") { - - SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") - - System_Boundary(b2, "BankBoundary2") { - System(SystemA, "Banking System A") - System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts. next line.") - } - - System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.") - SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.") - - Boundary(b3, "BankBoundary3", "boundary") { - SystemQueue(SystemF, "Banking System F Queue", "A system of the bank.") - SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.") - } - } - } - - BiRel(customerA, SystemAA, "Uses") - BiRel(SystemAA, SystemE, "Uses") - Rel(SystemAA, SystemC, "Sends e-mails", "SMTP") - Rel(SystemC, customerA, "Sends e-mails to") - - UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red") - UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5") - UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10") - UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50") - UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20") - - UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1") - - -``` - -For an example, see the source code demos/index.html - -5 types of C4 charts are supported. - -- System Context (C4Context) -- Container diagram (C4Container) -- Component diagram (C4Component) -- Dynamic diagram (C4Dynamic) -- Deployment diagram (C4Deployment) - -Please refer to the linked document [C4-PlantUML syntax](https://github.com/plantuml-stdlib/C4-PlantUML/blob/master/README.md) for how to write the c4 diagram. - -C4 diagram is fixed style, such as css color, so different css is not provided under different skins. -updateElementStyle and UpdateElementStyle are written in the diagram last part. updateElementStyle is inconsistent with the original definition and updates the style of the relationship, including the offset of the text label relative to the original position. - -The layout does not use a fully automated layout algorithm. The position of shapes is adjusted by changing the order in which statements are written. So there is no plan to support the following Layout statements. -The number of shapes per row and the number of boundaries can be adjusted using UpdateLayoutConfig. - -- Layout -- - Lay_U, Lay_Up -- - Lay_D, Lay_Down -- - Lay_L, Lay_Left -- - Lay_R, Lay_Right - -The following unfinished features are not supported in the short term. - -- \[ ] sprite - -- \[ ] tags - -- \[ ] link - -- \[ ] Legend - -- \[x] System Context - -- - \[x] Person(alias, label, ?descr, ?sprite, ?tags, $link) - -- - \[x] Person_Ext - -- - \[x] System(alias, label, ?descr, ?sprite, ?tags, $link) - -- - \[x] SystemDb - -- - \[x] SystemQueue - -- - \[x] System_Ext - -- - \[x] SystemDb_Ext - -- - \[x] SystemQueue_Ext - -- - \[x] Boundary(alias, label, ?type, ?tags, $link) - -- - \[x] Enterprise_Boundary(alias, label, ?tags, $link) - -- - \[x] System_Boundary - -- \[x] Container diagram - -- - \[x] Container(alias, label, ?techn, ?descr, ?sprite, ?tags, $link) - -- - \[x] ContainerDb - -- - \[x] ContainerQueue - -- - \[x] Container_Ext - -- - \[x] ContainerDb_Ext - -- - \[x] ContainerQueue_Ext - -- - \[x] Container_Boundary(alias, label, ?tags, $link) - -- \[x] Component diagram - -- - \[x] Component(alias, label, ?techn, ?descr, ?sprite, ?tags, $link) - -- - \[x] ComponentDb - -- - \[x] ComponentQueue - -- - \[x] Component_Ext - -- - \[x] ComponentDb_Ext - -- - \[x] ComponentQueue_Ext - -- \[x] Dynamic diagram - -- - \[x] RelIndex(index, from, to, label, ?tags, $link) - -- \[x] Deployment diagram - -- - \[x] Deployment_Node(alias, label, ?type, ?descr, ?sprite, ?tags, $link) - -- - \[x] Node(alias, label, ?type, ?descr, ?sprite, ?tags, $link): short name of Deployment_Node() - -- - \[x] Node_L(alias, label, ?type, ?descr, ?sprite, ?tags, $link): left aligned Node() - -- - \[x] Node_R(alias, label, ?type, ?descr, ?sprite, ?tags, $link): right aligned Node() - -- \[x] Relationship Types - -- - \[x] Rel(from, to, label, ?techn, ?descr, ?sprite, ?tags, $link) - -- - \[x] BiRel (bidirectional relationship) - -- - \[x] Rel_U, Rel_Up - -- - \[x] Rel_D, Rel_Down - -- - \[x] Rel_L, Rel_Left - -- - \[x] Rel_R, Rel_Right - -- - \[x] Rel_Back - -- - \[x] RelIndex \* Compatible with C4-Plantuml syntax, but ignores the index parameter. The sequence number is determined by the order in which the rel statements are written. - -- \[ ] Custom tags/stereotypes support and skin param updates - -- - \[ ] AddElementTag(tagStereo, ?bgColor, ?fontColor, ?borderColor, ?shadowing, ?shape, ?sprite, ?techn, ?legendText, ?legendSprite): Introduces a new element tag. The styles of the tagged elements are updated and the tag is displayed in the calculated legend. - -- - \[ ] AddRelTag(tagStereo, ?textColor, ?lineColor, ?lineStyle, ?sprite, ?techn, ?legendText, ?legendSprite): Introduces a new Relationship tag. The styles of the tagged relationships are updated and the tag is displayed in the calculated legend. - -- - \[x] UpdateElementStyle(elementName, ?bgColor, ?fontColor, ?borderColor, ?shadowing, ?shape, ?sprite, ?techn, ?legendText, ?legendSprite): This call updates the default style of the elements (component, ...) and creates no additional legend entry. - -- - \[x] UpdateRelStyle(from, to, ?textColor, ?lineColor, ?offsetX, ?offsetY): This call updates the default relationship colors and creates no additional legend entry. Two new parameters, offsetX and offsetY, are added to set the offset of the original position of the text. - -- - \[ ] RoundedBoxShape(): This call returns the name of the rounded box shape and can be used as ?shape argument. - -- - \[ ] EightSidedShape(): This call returns the name of the eight sided shape and can be used as ?shape argument. - -- - \[ ] DashedLine(): This call returns the name of the dashed line and can be used as ?lineStyle argument. - -- - \[ ] DottedLine(): This call returns the name of the dotted line and can be used as ?lineStyle argument. - -- - \[ ] BoldLine(): This call returns the name of the bold line and can be used as ?lineStyle argument. - -- - \[x] UpdateLayoutConfig(?c4ShapeInRow, ?c4BoundaryInRow): New. This call updates the default c4ShapeInRow(4) and c4BoundaryInRow(2). - -There are two ways to assign parameters with question marks. One uses the non-named parameter assignment method in the order of the parameters, and the other uses the named parameter assignment method, where the name must start with a $ symbol. - -Example: UpdateRelStyle(from, to, ?textColor, ?lineColor, ?offsetX, ?offsetY) - -``` -UpdateRelStyle(customerA, bankA, "red", "blue", "-40", "60") -UpdateRelStyle(customerA, bankA, $offsetX="-40", $offsetY="60", $lineColor="blue", $textColor="red") -UpdateRelStyle(customerA, bankA, $offsetY="60") - -``` - -## C4 System Context Diagram (C4Context) - -```mermaid-example - C4Context - title System Context diagram for Internet Banking System - Enterprise_Boundary(b0, "BankBoundary0") { - Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.") - Person(customerB, "Banking Customer B") - Person_Ext(customerC, "Banking Customer C", "desc") - - Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.") - - System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.") - - Enterprise_Boundary(b1, "BankBoundary") { - - SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") - - System_Boundary(b2, "BankBoundary2") { - System(SystemA, "Banking System A") - System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts. next line.") - } - - System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.") - SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.") - - Boundary(b3, "BankBoundary3", "boundary") { - SystemQueue(SystemF, "Banking System F Queue", "A system of the bank.") - SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.") - } - } - } - - BiRel(customerA, SystemAA, "Uses") - BiRel(SystemAA, SystemE, "Uses") - Rel(SystemAA, SystemC, "Sends e-mails", "SMTP") - Rel(SystemC, customerA, "Sends e-mails to") - - UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red") - UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5") - UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10") - UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50") - UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20") - - UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1") - -``` - -```mermaid - C4Context - title System Context diagram for Internet Banking System - Enterprise_Boundary(b0, "BankBoundary0") { - Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.") - Person(customerB, "Banking Customer B") - Person_Ext(customerC, "Banking Customer C", "desc") - - Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.") - - System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.") - - Enterprise_Boundary(b1, "BankBoundary") { - - SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") - - System_Boundary(b2, "BankBoundary2") { - System(SystemA, "Banking System A") - System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts. next line.") - } - - System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.") - SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.") - - Boundary(b3, "BankBoundary3", "boundary") { - SystemQueue(SystemF, "Banking System F Queue", "A system of the bank.") - SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.") - } - } - } - - BiRel(customerA, SystemAA, "Uses") - BiRel(SystemAA, SystemE, "Uses") - Rel(SystemAA, SystemC, "Sends e-mails", "SMTP") - Rel(SystemC, customerA, "Sends e-mails to") - - UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red") - UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5") - UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10") - UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50") - UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20") - - UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1") - -``` - -## C4 Container diagram (C4Container) - -```mermaid-example - C4Container - title Container diagram for Internet Banking System - - System_Ext(email_system, "E-Mail System", "The internal Microsoft Exchange system", $tags="v1.0") - Person(customer, Customer, "A customer of the bank, with personal bank accounts", $tags="v1.0") - - Container_Boundary(c1, "Internet Banking") { - Container(spa, "Single-Page App", "JavaScript, Angular", "Provides all the Internet banking functionality to cutomers via their web browser") - Container_Ext(mobile_app, "Mobile App", "C#, Xamarin", "Provides a limited subset of the Internet banking functionality to customers via their mobile device") - Container(web_app, "Web Application", "Java, Spring MVC", "Delivers the static content and the Internet banking SPA") - ContainerDb(database, "Database", "SQL Database", "Stores user registration information, hashed auth credentials, access logs, etc.") - ContainerDb_Ext(backend_api, "API Application", "Java, Docker Container", "Provides Internet banking functionality via API") - - } - - System_Ext(banking_system, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") - - Rel(customer, web_app, "Uses", "HTTPS") - UpdateRelStyle(customer, web_app, $offsetY="60", $offsetX="90") - Rel(customer, spa, "Uses", "HTTPS") - UpdateRelStyle(customer, spa, $offsetY="-40") - Rel(customer, mobile_app, "Uses") - UpdateRelStyle(customer, mobile_app, $offsetY="-30") - - Rel(web_app, spa, "Delivers") - UpdateRelStyle(web_app, spa, $offsetX="130") - Rel(spa, backend_api, "Uses", "async, JSON/HTTPS") - Rel(mobile_app, backend_api, "Uses", "async, JSON/HTTPS") - Rel_Back(database, backend_api, "Reads from and writes to", "sync, JDBC") - - Rel(email_system, customer, "Sends e-mails to") - UpdateRelStyle(email_system, customer, $offsetX="-45") - Rel(backend_api, email_system, "Sends e-mails using", "sync, SMTP") - UpdateRelStyle(backend_api, email_system, $offsetY="-60") - Rel(backend_api, banking_system, "Uses", "sync/async, XML/HTTPS") - UpdateRelStyle(backend_api, banking_system, $offsetY="-50", $offsetX="-140") - -``` - -```mermaid - C4Container - title Container diagram for Internet Banking System - - System_Ext(email_system, "E-Mail System", "The internal Microsoft Exchange system", $tags="v1.0") - Person(customer, Customer, "A customer of the bank, with personal bank accounts", $tags="v1.0") - - Container_Boundary(c1, "Internet Banking") { - Container(spa, "Single-Page App", "JavaScript, Angular", "Provides all the Internet banking functionality to cutomers via their web browser") - Container_Ext(mobile_app, "Mobile App", "C#, Xamarin", "Provides a limited subset of the Internet banking functionality to customers via their mobile device") - Container(web_app, "Web Application", "Java, Spring MVC", "Delivers the static content and the Internet banking SPA") - ContainerDb(database, "Database", "SQL Database", "Stores user registration information, hashed auth credentials, access logs, etc.") - ContainerDb_Ext(backend_api, "API Application", "Java, Docker Container", "Provides Internet banking functionality via API") - - } - - System_Ext(banking_system, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") - - Rel(customer, web_app, "Uses", "HTTPS") - UpdateRelStyle(customer, web_app, $offsetY="60", $offsetX="90") - Rel(customer, spa, "Uses", "HTTPS") - UpdateRelStyle(customer, spa, $offsetY="-40") - Rel(customer, mobile_app, "Uses") - UpdateRelStyle(customer, mobile_app, $offsetY="-30") - - Rel(web_app, spa, "Delivers") - UpdateRelStyle(web_app, spa, $offsetX="130") - Rel(spa, backend_api, "Uses", "async, JSON/HTTPS") - Rel(mobile_app, backend_api, "Uses", "async, JSON/HTTPS") - Rel_Back(database, backend_api, "Reads from and writes to", "sync, JDBC") - - Rel(email_system, customer, "Sends e-mails to") - UpdateRelStyle(email_system, customer, $offsetX="-45") - Rel(backend_api, email_system, "Sends e-mails using", "sync, SMTP") - UpdateRelStyle(backend_api, email_system, $offsetY="-60") - Rel(backend_api, banking_system, "Uses", "sync/async, XML/HTTPS") - UpdateRelStyle(backend_api, banking_system, $offsetY="-50", $offsetX="-140") - -``` - -## C4 Component diagram (C4Component) - -```mermaid-example - C4Component - title Component diagram for Internet Banking System - API Application - - Container(spa, "Single Page Application", "javascript and angular", "Provides all the internet banking functionality to customers via their web browser.") - Container(ma, "Mobile App", "Xamarin", "Provides a limited subset ot the internet banking functionality to customers via their mobile mobile device.") - ContainerDb(db, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") - System_Ext(mbs, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") - - Container_Boundary(api, "API Application") { - Component(sign, "Sign In Controller", "MVC Rest Controller", "Allows users to sign in to the internet banking system") - Component(accounts, "Accounts Summary Controller", "MVC Rest Controller", "Provides customers with a summary of their bank accounts") - Component(security, "Security Component", "Spring Bean", "Provides functionality related to singing in, changing passwords, etc.") - Component(mbsfacade, "Mainframe Banking System Facade", "Spring Bean", "A facade onto the mainframe banking system.") - - Rel(sign, security, "Uses") - Rel(accounts, mbsfacade, "Uses") - Rel(security, db, "Read & write to", "JDBC") - Rel(mbsfacade, mbs, "Uses", "XML/HTTPS") - } - - Rel_Back(spa, sign, "Uses", "JSON/HTTPS") - Rel(spa, accounts, "Uses", "JSON/HTTPS") - - Rel(ma, sign, "Uses", "JSON/HTTPS") - Rel(ma, accounts, "Uses", "JSON/HTTPS") - - UpdateRelStyle(spa, sign, $offsetY="-40") - UpdateRelStyle(spa, accounts, $offsetX="40", $offsetY="40") - - UpdateRelStyle(ma, sign, $offsetX="-90", $offsetY="40") - UpdateRelStyle(ma, accounts, $offsetY="-40") - - UpdateRelStyle(sign, security, $offsetX="-160", $offsetY="10") - UpdateRelStyle(accounts, mbsfacade, $offsetX="140", $offsetY="10") - UpdateRelStyle(security, db, $offsetY="-40") - UpdateRelStyle(mbsfacade, mbs, $offsetY="-40") - -``` - -```mermaid - C4Component - title Component diagram for Internet Banking System - API Application - - Container(spa, "Single Page Application", "javascript and angular", "Provides all the internet banking functionality to customers via their web browser.") - Container(ma, "Mobile App", "Xamarin", "Provides a limited subset ot the internet banking functionality to customers via their mobile mobile device.") - ContainerDb(db, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") - System_Ext(mbs, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") - - Container_Boundary(api, "API Application") { - Component(sign, "Sign In Controller", "MVC Rest Controller", "Allows users to sign in to the internet banking system") - Component(accounts, "Accounts Summary Controller", "MVC Rest Controller", "Provides customers with a summary of their bank accounts") - Component(security, "Security Component", "Spring Bean", "Provides functionality related to singing in, changing passwords, etc.") - Component(mbsfacade, "Mainframe Banking System Facade", "Spring Bean", "A facade onto the mainframe banking system.") - - Rel(sign, security, "Uses") - Rel(accounts, mbsfacade, "Uses") - Rel(security, db, "Read & write to", "JDBC") - Rel(mbsfacade, mbs, "Uses", "XML/HTTPS") - } - - Rel_Back(spa, sign, "Uses", "JSON/HTTPS") - Rel(spa, accounts, "Uses", "JSON/HTTPS") - - Rel(ma, sign, "Uses", "JSON/HTTPS") - Rel(ma, accounts, "Uses", "JSON/HTTPS") - - UpdateRelStyle(spa, sign, $offsetY="-40") - UpdateRelStyle(spa, accounts, $offsetX="40", $offsetY="40") - - UpdateRelStyle(ma, sign, $offsetX="-90", $offsetY="40") - UpdateRelStyle(ma, accounts, $offsetY="-40") - - UpdateRelStyle(sign, security, $offsetX="-160", $offsetY="10") - UpdateRelStyle(accounts, mbsfacade, $offsetX="140", $offsetY="10") - UpdateRelStyle(security, db, $offsetY="-40") - UpdateRelStyle(mbsfacade, mbs, $offsetY="-40") - -``` - -## C4 Dynamic diagram (C4Dynamic) - -```mermaid-example - C4Dynamic - title Dynamic diagram for Internet Banking System - API Application - - ContainerDb(c4, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") - Container(c1, "Single-Page Application", "JavaScript and Angular", "Provides all of the Internet banking functionality to customers via their web browser.") - Container_Boundary(b, "API Application") { - Component(c3, "Security Component", "Spring Bean", "Provides functionality Related to signing in, changing passwords, etc.") - Component(c2, "Sign In Controller", "Spring MVC Rest Controller", "Allows users to sign in to the Internet Banking System.") - } - Rel(c1, c2, "Submits credentials to", "JSON/HTTPS") - Rel(c2, c3, "Calls isAuthenticated() on") - Rel(c3, c4, "select * from users where username = ?", "JDBC") - - UpdateRelStyle(c1, c2, $textColor="red", $offsetY="-40") - UpdateRelStyle(c2, c3, $textColor="red", $offsetX="-40", $offsetY="60") - UpdateRelStyle(c3, c4, $textColor="red", $offsetY="-40", $offsetX="10") - -``` - -```mermaid - C4Dynamic - title Dynamic diagram for Internet Banking System - API Application - - ContainerDb(c4, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") - Container(c1, "Single-Page Application", "JavaScript and Angular", "Provides all of the Internet banking functionality to customers via their web browser.") - Container_Boundary(b, "API Application") { - Component(c3, "Security Component", "Spring Bean", "Provides functionality Related to signing in, changing passwords, etc.") - Component(c2, "Sign In Controller", "Spring MVC Rest Controller", "Allows users to sign in to the Internet Banking System.") - } - Rel(c1, c2, "Submits credentials to", "JSON/HTTPS") - Rel(c2, c3, "Calls isAuthenticated() on") - Rel(c3, c4, "select * from users where username = ?", "JDBC") - - UpdateRelStyle(c1, c2, $textColor="red", $offsetY="-40") - UpdateRelStyle(c2, c3, $textColor="red", $offsetX="-40", $offsetY="60") - UpdateRelStyle(c3, c4, $textColor="red", $offsetY="-40", $offsetX="10") - -``` - -## C4 Deployment diagram (C4Deployment) - -```mermaid-example - C4Deployment - title Deployment Diagram for Internet Banking System - Live - - Deployment_Node(mob, "Customer's mobile device", "Apple IOS or Android"){ - Container(mobile, "Mobile App", "Xamarin", "Provides a limited subset of the Internet Banking functionality to customers via their mobile device.") - } - - Deployment_Node(comp, "Customer's computer", "Mircosoft Windows or Apple macOS"){ - Deployment_Node(browser, "Web Browser", "Google Chrome, Mozilla Firefox,<br/> Apple Safari or Microsoft Edge"){ - Container(spa, "Single Page Application", "JavaScript and Angular", "Provides all of the Internet Banking functionality to customers via their web browser.") - } - } - - Deployment_Node(plc, "Big Bank plc", "Big Bank plc data center"){ - Deployment_Node(dn, "bigbank-api*** x8", "Ubuntu 16.04 LTS"){ - Deployment_Node(apache, "Apache Tomcat", "Apache Tomcat 8.x"){ - Container(api, "API Application", "Java and Spring MVC", "Provides Internet Banking functionality via a JSON/HTTPS API.") - } - } - Deployment_Node(bb2, "bigbank-web*** x4", "Ubuntu 16.04 LTS"){ - Deployment_Node(apache2, "Apache Tomcat", "Apache Tomcat 8.x"){ - Container(web, "Web Application", "Java and Spring MVC", "Delivers the static content and the Internet Banking single page application.") - } - } - Deployment_Node(bigbankdb01, "bigbank-db01", "Ubuntu 16.04 LTS"){ - Deployment_Node(oracle, "Oracle - Primary", "Oracle 12c"){ - ContainerDb(db, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") - } - } - Deployment_Node(bigbankdb02, "bigbank-db02", "Ubuntu 16.04 LTS") { - Deployment_Node(oracle2, "Oracle - Secondary", "Oracle 12c") { - ContainerDb(db2, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") - } - } - } - - Rel(mobile, api, "Makes API calls to", "json/HTTPS") - Rel(spa, api, "Makes API calls to", "json/HTTPS") - Rel_U(web, spa, "Delivers to the customer's web browser") - Rel(api, db, "Reads from and writes to", "JDBC") - Rel(api, db2, "Reads from and writes to", "JDBC") - Rel_R(db, db2, "Replicates data to") - - UpdateRelStyle(spa, api, $offsetY="-40") - UpdateRelStyle(web, spa, $offsetY="-40") - UpdateRelStyle(api, db, $offsetY="-20", $offsetX="5") - UpdateRelStyle(api, db2, $offsetX="-40", $offsetY="-20") - UpdateRelStyle(db, db2, $offsetY="-10") - -``` - -```mermaid - C4Deployment - title Deployment Diagram for Internet Banking System - Live - - Deployment_Node(mob, "Customer's mobile device", "Apple IOS or Android"){ - Container(mobile, "Mobile App", "Xamarin", "Provides a limited subset of the Internet Banking functionality to customers via their mobile device.") - } - - Deployment_Node(comp, "Customer's computer", "Mircosoft Windows or Apple macOS"){ - Deployment_Node(browser, "Web Browser", "Google Chrome, Mozilla Firefox,<br/> Apple Safari or Microsoft Edge"){ - Container(spa, "Single Page Application", "JavaScript and Angular", "Provides all of the Internet Banking functionality to customers via their web browser.") - } - } - - Deployment_Node(plc, "Big Bank plc", "Big Bank plc data center"){ - Deployment_Node(dn, "bigbank-api*** x8", "Ubuntu 16.04 LTS"){ - Deployment_Node(apache, "Apache Tomcat", "Apache Tomcat 8.x"){ - Container(api, "API Application", "Java and Spring MVC", "Provides Internet Banking functionality via a JSON/HTTPS API.") - } - } - Deployment_Node(bb2, "bigbank-web*** x4", "Ubuntu 16.04 LTS"){ - Deployment_Node(apache2, "Apache Tomcat", "Apache Tomcat 8.x"){ - Container(web, "Web Application", "Java and Spring MVC", "Delivers the static content and the Internet Banking single page application.") - } - } - Deployment_Node(bigbankdb01, "bigbank-db01", "Ubuntu 16.04 LTS"){ - Deployment_Node(oracle, "Oracle - Primary", "Oracle 12c"){ - ContainerDb(db, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") - } - } - Deployment_Node(bigbankdb02, "bigbank-db02", "Ubuntu 16.04 LTS") { - Deployment_Node(oracle2, "Oracle - Secondary", "Oracle 12c") { - ContainerDb(db2, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") - } - } - } - - Rel(mobile, api, "Makes API calls to", "json/HTTPS") - Rel(spa, api, "Makes API calls to", "json/HTTPS") - Rel_U(web, spa, "Delivers to the customer's web browser") - Rel(api, db, "Reads from and writes to", "JDBC") - Rel(api, db2, "Reads from and writes to", "JDBC") - Rel_R(db, db2, "Replicates data to") - - UpdateRelStyle(spa, api, $offsetY="-40") - UpdateRelStyle(web, spa, $offsetY="-40") - UpdateRelStyle(api, db, $offsetY="-20", $offsetX="5") - UpdateRelStyle(api, db2, $offsetX="-40", $offsetY="-20") - UpdateRelStyle(db, db2, $offsetY="-10") - -``` diff --git a/docs/syntax/classDiagram.md b/docs/syntax/classDiagram.md deleted file mode 100644 index d57125c84..000000000 --- a/docs/syntax/classDiagram.md +++ /dev/null @@ -1,848 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/classDiagram.md](../../packages/mermaid/src/docs/syntax/classDiagram.md). - -# Class diagrams - -> "In software engineering, a class diagram in the Unified Modeling Language (UML) is a type of static structure diagram that describes the structure of a system by showing the system's classes, their attributes, operations (or methods), and the relationships among objects." -> Wikipedia - -The class diagram is the main building block of object-oriented modeling. It is used for general conceptual modeling of the structure of the application, and for detailed modeling to translate the models into programming code. Class diagrams can also be used for data modeling. The classes in a class diagram represent both the main elements, interactions in the application, and the classes to be programmed. - -Mermaid can render class diagrams. - -```mermaid-example -classDiagram - note "From Duck till Zebra" - Animal <|-- Duck - note for Duck "can fly\ncan swim\ncan dive\ncan help in debugging" - Animal <|-- Fish - Animal <|-- Zebra - Animal : +int age - Animal : +String gender - Animal: +isMammal() - Animal: +mate() - class Duck{ - +String beakColor - +swim() - +quack() - } - class Fish{ - -int sizeInFeet - -canEat() - } - class Zebra{ - +bool is_wild - +run() - } -``` - -```mermaid -classDiagram - note "From Duck till Zebra" - Animal <|-- Duck - note for Duck "can fly\ncan swim\ncan dive\ncan help in debugging" - Animal <|-- Fish - Animal <|-- Zebra - Animal : +int age - Animal : +String gender - Animal: +isMammal() - Animal: +mate() - class Duck{ - +String beakColor - +swim() - +quack() - } - class Fish{ - -int sizeInFeet - -canEat() - } - class Zebra{ - +bool is_wild - +run() - } -``` - -## Syntax - -### Class - -UML provides mechanisms to represent class members, such as attributes and methods, and additional information about them. -A single instance of a class in the diagram contains three compartments: - -- The top compartment contains the name of the class. It is printed in bold and centered, and the first letter is capitalized. It may also contain optional annotation text describing the nature of the class. -- The middle compartment contains the attributes of the class. They are left-aligned and the first letter is lowercase. -- The bottom compartment contains the operations the class can execute. They are also left-aligned and the first letter is lowercase. - -```mermaid-example -classDiagram - class BankAccount - BankAccount : +String owner - BankAccount : +Bigdecimal balance - BankAccount : +deposit(amount) - BankAccount : +withdrawal(amount) - -``` - -```mermaid -classDiagram - class BankAccount - BankAccount : +String owner - BankAccount : +Bigdecimal balance - BankAccount : +deposit(amount) - BankAccount : +withdrawal(amount) - -``` - -## Define a class - -There are two ways to define a class: - -- Explicitly using keyword **class** like `class Animal` which would define the Animal class. -- Via a **relationship** which defines two classes at a time along with their relationship. For instance, `Vehicle <|-- Car`. - -```mermaid-example -classDiagram - class Animal - Vehicle <|-- Car -``` - -```mermaid -classDiagram - class Animal - Vehicle <|-- Car -``` - -Naming convention: a class name should be composed only of alphanumeric characters (including unicode), and underscores. - -## Defining Members of a class - -UML provides mechanisms to represent class members such as attributes and methods, as well as additional information about them. - -Mermaid distinguishes between attributes and functions/methods based on if the **parenthesis** `()` are present or not. The ones with `()` are treated as functions/methods, and all others as attributes. - -There are two ways to define the members of a class, and regardless of whichever syntax is used to define the members, the output will still be same. The two different ways are : - -- Associate a member of a class using **:** (colon) followed by member name, useful to define one member at a time. For example: - -```mermaid-example -classDiagram -class BankAccount -BankAccount : +String owner -BankAccount : +BigDecimal balance -BankAccount : +deposit(amount) -BankAccount : +withdrawal(amount) -``` - -```mermaid -classDiagram -class BankAccount -BankAccount : +String owner -BankAccount : +BigDecimal balance -BankAccount : +deposit(amount) -BankAccount : +withdrawal(amount) -``` - -- Associate members of a class using **{}** brackets, where members are grouped within curly brackets. Suitable for defining multiple members at once. For example: - -```mermaid-example -classDiagram -class BankAccount{ - +String owner - +BigDecimal balance - +deposit(amount) - +withdrawal(amount) -} -``` - -```mermaid -classDiagram -class BankAccount{ - +String owner - +BigDecimal balance - +deposit(amount) - +withdrawal(amount) -} -``` - -#### Return Type - -Optionally you can end a method/function definition with the data type that will be returned (note: there must be a space between the final `)` and the return type). An example: - -```mermaid-example -classDiagram -class BankAccount{ - +String owner - +BigDecimal balance - +deposit(amount) bool - +withdrawal(amount) int -} -``` - -```mermaid -classDiagram -class BankAccount{ - +String owner - +BigDecimal balance - +deposit(amount) bool - +withdrawal(amount) int -} -``` - -#### Generic Types - -Members can be defined using generic types, such as `List<int>`, for fields, parameters, and return types by enclosing the type within `~` (**tilde**). Note: **nested** type declarations such as `List<List<int>>` are not currently supported. - -Generics can be represented as part of a class definition and also in the parameters or the return value of a method/function: - -```mermaid-example -classDiagram -class Square~Shape~{ - int id - List~int~ position - setPoints(List~int~ points) - getPoints() List~int~ -} - -Square : -List~string~ messages -Square : +setMessages(List~string~ messages) -Square : +getMessages() List~string~ -``` - -```mermaid -classDiagram -class Square~Shape~{ - int id - List~int~ position - setPoints(List~int~ points) - getPoints() List~int~ -} - -Square : -List~string~ messages -Square : +setMessages(List~string~ messages) -Square : +getMessages() List~string~ -``` - -#### Return Type - -Optionally you can end the method/function definition with the data type that will be returned. - -#### Visibility - -To describe the visibility (or encapsulation) of an attribute or method/function that is a part of a class (i.e. a class member), optional notation may be placed before that members' name: - -- `+` Public -- `-` Private -- `#` Protected -- `~` Package/Internal - -> _note_ you can also include additional _classifiers_ to a method definition by adding the following notation to the _end_ of the method, i.e.: after the `()`: -> -> - `*` Abstract e.g.: `someAbstractMethod()*` -> - `$` Static e.g.: `someStaticMethod()$` - -> _note_ you can also include additional _classifiers_ to a field definition by adding the following notation to the end of its name: -> -> - `$` Static e.g.: `String someField$` - -## Defining Relationship - -A relationship is a general term covering the specific types of logical connections found on class and object diagrams. - - [classA][Arrow][ClassB] - -There are eight different types of relations defined for classes under UML which are currently supported: - -| Type | Description | -| ------- | ------------- | -| `<\|--` | Inheritance | -| `\*--` | Composition | -| `o--` | Aggregation | -| `-->` | Association | -| `--` | Link (Solid) | -| `..>` | Dependency | -| `..\|>` | Realization | -| `..` | Link (Dashed) | - -```mermaid-example -classDiagram -classA <|-- classB -classC *-- classD -classE o-- classF -classG <-- classH -classI -- classJ -classK <.. classL -classM <|.. classN -classO .. classP - -``` - -```mermaid -classDiagram -classA <|-- classB -classC *-- classD -classE o-- classF -classG <-- classH -classI -- classJ -classK <.. classL -classM <|.. classN -classO .. classP - -``` - -We can use the labels to describe the nature of the relation between two classes. Also, arrowheads can be used in the opposite direction as well: - -```mermaid-example -classDiagram -classA --|> classB : Inheritance -classC --* classD : Composition -classE --o classF : Aggregation -classG --> classH : Association -classI -- classJ : Link(Solid) -classK ..> classL : Dependency -classM ..|> classN : Realization -classO .. classP : Link(Dashed) - -``` - -```mermaid -classDiagram -classA --|> classB : Inheritance -classC --* classD : Composition -classE --o classF : Aggregation -classG --> classH : Association -classI -- classJ : Link(Solid) -classK ..> classL : Dependency -classM ..|> classN : Realization -classO .. classP : Link(Dashed) - -``` - -### Labels on Relations - -It is possible to add label text to a relation: - - [classA][Arrow][ClassB]:LabelText - -```mermaid-example -classDiagram -classA <|-- classB : implements -classC *-- classD : composition -classE o-- classF : aggregation -``` - -```mermaid -classDiagram -classA <|-- classB : implements -classC *-- classD : composition -classE o-- classF : aggregation -``` - -### Two-way relations - -Relations can logically represent an N:M association: - -```mermaid-example -classDiagram - Animal <|--|> Zebra -``` - -```mermaid -classDiagram - Animal <|--|> Zebra -``` - -Here is the syntax: - - [Relation Type][Link][Relation Type] - -Where `Relation Type` can be one of: - -| Type | Description | -| ----- | ----------- | -| `<\|` | Inheritance | -| `\*` | Composition | -| `o` | Aggregation | -| `>` | Association | -| `<` | Association | -| `\|>` | Realization | - -And `Link` can be one of: - -| Type | Description | -| ---- | ----------- | -| -- | Solid | -| .. | Dashed | - -## Cardinality / Multiplicity on relations - -Multiplicity or cardinality in class diagrams indicates the number of instances of one class that can be linked to an instance of the other class. For example, each company will have one or more employees (not zero), and each employee currently works for zero or one companies. - -Multiplicity notations are placed near the end of an association. - -The different cardinality options are : - -- `1` Only 1 -- `0..1` Zero or One -- `1..*` One or more -- `*` Many -- `n` n {where n>1} -- `0..n` zero to n {where n>1} -- `1..n` one to n {where n>1} - -Cardinality can be easily defined by placing the text option within quotes `"` before or after a given arrow. For example: - - [classA] "cardinality1" [Arrow] "cardinality2" [ClassB]:LabelText - -```mermaid-example -classDiagram - Customer "1" --> "*" Ticket - Student "1" --> "1..*" Course - Galaxy --> "many" Star : Contains -``` - -```mermaid -classDiagram - Customer "1" --> "*" Ticket - Student "1" --> "1..*" Course - Galaxy --> "many" Star : Contains -``` - -## Annotations on classes - -It is possible to annotate classes with markers to provide additional metadata about the class. This can give a clearer indication about its nature. Some common annotations include: - -- `<<Interface>>` To represent an Interface class -- `<<Abstract>>` To represent an abstract class -- `<<Service>>` To represent a service class -- `<<Enumeration>>` To represent an enum - -Annotations are defined within the opening `<<` and closing `>>`. There are two ways to add an annotation to a class, and either way the output will be same: - -- In a **_separate line_** after a class is defined: - -```mermaid-example -classDiagram -class Shape -<<interface>> Shape -Shape : noOfVertices -Shape : draw() -``` - -```mermaid -classDiagram -class Shape -<<interface>> Shape -Shape : noOfVertices -Shape : draw() -``` - -- In a **_nested structure_** along with the class definition: - -```mermaid-example -classDiagram -class Shape{ - <<interface>> - noOfVertices - draw() -} -class Color{ - <<enumeration>> - RED - BLUE - GREEN - WHITE - BLACK -} - -``` - -```mermaid -classDiagram -class Shape{ - <<interface>> - noOfVertices - draw() -} -class Color{ - <<enumeration>> - RED - BLUE - GREEN - WHITE - BLACK -} - -``` - -## Comments - -Comments can be entered within a class diagram, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text until the next newline will be treated as a comment, including any class diagram syntax. - -```mermaid-example -classDiagram -%% This whole line is a comment classDiagram class Shape <<interface>> -class Shape{ - <<interface>> - noOfVertices - draw() -} -``` - -```mermaid -classDiagram -%% This whole line is a comment classDiagram class Shape <<interface>> -class Shape{ - <<interface>> - noOfVertices - draw() -} -``` - -## Setting the direction of the diagram - -With class diagrams you can use the direction statement to set the direction in which the diagram will render: - -```mermaid-example -classDiagram - direction RL - class Student { - -idCard : IdCard - } - class IdCard{ - -id : int - -name : string - } - class Bike{ - -id : int - -name : string - } - Student "1" --o "1" IdCard : carries - Student "1" --o "1" Bike : rides -``` - -```mermaid -classDiagram - direction RL - class Student { - -idCard : IdCard - } - class IdCard{ - -id : int - -name : string - } - class Bike{ - -id : int - -name : string - } - Student "1" --o "1" IdCard : carries - Student "1" --o "1" Bike : rides -``` - -## Interaction - -It is possible to bind a click event to a node. The click can lead to either a javascript callback or to a link which will be opened in a new browser tab. **Note**: This functionality is disabled when using `securityLevel='strict'` and enabled when using `securityLevel='loose'`. - -You would define these actions on a separate line after all classes have been declared. - - action className "reference" "tooltip" - click className call callback() "tooltip" - click className href "url" "tooltip" - -- _action_ is either `link` or `callback`, depending on which type of interaction you want to have called -- _className_ is the id of the node that the action will be associated with -- _reference_ is either the url link, or the function name for callback. -- (_optional_) tooltip is a string to be displayed when hovering over element (note: The styles of the tooltip are set by the class .mermaidTooltip.) -- note: callback function will be called with the nodeId as parameter. - -## Notes - -It is possible to add notes on digram using `note "line1\nline2"` or note for class using `note for class "line1\nline2"` - -### Examples - -_URL Link:_ - -```mermaid-example -classDiagram -class Shape -link Shape "https://www.github.com" "This is a tooltip for a link" -class Shape2 -click Shape2 href "https://www.github.com" "This is a tooltip for a link" -``` - -```mermaid -classDiagram -class Shape -link Shape "https://www.github.com" "This is a tooltip for a link" -class Shape2 -click Shape2 href "https://www.github.com" "This is a tooltip for a link" -``` - -_Callback:_ - -```mermaid-example -classDiagram -class Shape -callback Shape "callbackFunction" "This is a tooltip for a callback" -class Shape2 -click Shape2 call callbackFunction() "This is a tooltip for a callback" -``` - -```mermaid -classDiagram -class Shape -callback Shape "callbackFunction" "This is a tooltip for a callback" -class Shape2 -click Shape2 call callbackFunction() "This is a tooltip for a callback" -``` - -```html -<script> - const callbackFunction = function () { - alert('A callback was triggered'); - }; -</script> -``` - -```mermaid-example -classDiagram - class Class01 - class Class02 - callback Class01 "callbackFunction" "Callback tooltip" - link Class02 "https://www.github.com" "This is a link" - class Class03 - class Class04 - click Class03 call callbackFunction() "Callback tooltip" - click Class04 href "https://www.github.com" "This is a link" -``` - -```mermaid -classDiagram - class Class01 - class Class02 - callback Class01 "callbackFunction" "Callback tooltip" - link Class02 "https://www.github.com" "This is a link" - class Class03 - class Class04 - click Class03 call callbackFunction() "Callback tooltip" - click Class04 href "https://www.github.com" "This is a link" -``` - -> **Success** The tooltip functionality and the ability to link to urls are available from version 0.5.2. - -Beginner's tip—a full example using interactive links in an HTML page: - -```html -<body> - <pre class="mermaid"> - classDiagram - Animal <|-- Duck - Animal <|-- Fish - Animal <|-- Zebra - Animal : +int age - Animal : +String gender - Animal: +isMammal() - Animal: +mate() - class Duck{ - +String beakColor - +swim() - +quack() - } - class Fish{ - -int sizeInFeet - -canEat() - } - class Zebra{ - +bool is_wild - +run() - } - - callback Duck callback "Tooltip" - link Zebra "https://www.github.com" "This is a link" - </pre> - - <script> - const callback = function () { - alert('A callback was triggered'); - }; - const config = { - startOnLoad: true, - securityLevel: 'loose', - }; - mermaid.initialize(config); - </script> -</body> -``` - -## Styling - -### Styling a node - -It is possible to apply specific styles such as a thicker border or a different background color to individual nodes. This is done by predefining classes in css styles that can be applied from the graph definition: - -```html -<style> - .cssClass > rect { - fill: #ff0000; - stroke: #ffff00; - stroke-width: 4px; - } -</style> -``` - -Then attaching that class to a specific node: - - cssClass "nodeId1" cssClass; - -It is also possible to attach a class to a list of nodes in one statement: - - cssClass "nodeId1,nodeId2" cssClass; - -A shorter form of adding a class is to attach the classname to the node using the `:::` operator: - -```mermaid-example -classDiagram - class Animal:::cssClass -``` - -```mermaid -classDiagram - class Animal:::cssClass -``` - -Or: - -```mermaid-example -classDiagram - class Animal:::cssClass { - -int sizeInFeet - -canEat() - } -``` - -```mermaid -classDiagram - class Animal:::cssClass { - -int sizeInFeet - -canEat() - } -``` - -?> cssClasses cannot be added using this shorthand method at the same time as a relation statement. - -?> Due to limitations with existing markup for class diagrams, it is not currently possible to define css classes within the diagram itself. **_Coming soon!_** - -### Default Styles - -The main styling of the class diagram is done with a preset number of css classes. During rendering these classes are extracted from the file located at src/themes/class.scss. The classes used here are described below: - -| Class | Description | -| ------------------ | ----------------------------------------------------------------- | -| g.classGroup text | Styles for general class text | -| classGroup .title | Styles for general class title | -| g.classGroup rect | Styles for class diagram rectangle | -| g.classGroup line | Styles for class diagram line | -| .classLabel .box | Styles for class label box | -| .classLabel .label | Styles for class label text | -| composition | Styles for composition arrow head and arrow line | -| aggregation | Styles for aggregation arrow head and arrow line(dashed or solid) | -| dependency | Styles for dependency arrow head and arrow line | - -#### Sample stylesheet - -```scss -body { - background: white; -} - -g.classGroup text { - fill: $nodeBorder; - stroke: none; - font-family: 'trebuchet ms', verdana, arial; - font-family: var(--mermaid-font-family); - font-size: 10px; - - .title { - font-weight: bolder; - } -} - -g.classGroup rect { - fill: $nodeBkg; - stroke: $nodeBorder; -} - -g.classGroup line { - stroke: $nodeBorder; - stroke-width: 1; -} - -.classLabel .box { - stroke: none; - stroke-width: 0; - fill: $nodeBkg; - opacity: 0.5; -} - -.classLabel .label { - fill: $nodeBorder; - font-size: 10px; -} - -.relation { - stroke: $nodeBorder; - stroke-width: 1; - fill: none; -} - -@mixin composition { - fill: $nodeBorder; - stroke: $nodeBorder; - stroke-width: 1; -} - -#compositionStart { - @include composition; -} - -#compositionEnd { - @include composition; -} - -@mixin aggregation { - fill: $nodeBkg; - stroke: $nodeBorder; - stroke-width: 1; -} - -#aggregationStart { - @include aggregation; -} - -#aggregationEnd { - @include aggregation; -} - -#dependencyStart { - @include composition; -} - -#dependencyEnd { - @include composition; -} - -#extensionStart { - @include composition; -} - -#extensionEnd { - @include composition; -} -``` - -## Configuration - -`Coming soon!` diff --git a/docs/syntax/entityRelationshipDiagram.md b/docs/syntax/entityRelationshipDiagram.md deleted file mode 100644 index fef7b6fee..000000000 --- a/docs/syntax/entityRelationshipDiagram.md +++ /dev/null @@ -1,299 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md](../../packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md). - -# Entity Relationship Diagrams - -> An entity–relationship model (or ER model) describes interrelated things of interest in a specific domain of knowledge. A basic ER model is composed of entity types (which classify the things of interest) and specifies relationships that can exist between entities (instances of those entity types). Wikipedia. - -Note that practitioners of ER modelling almost always refer to _entity types_ simply as _entities_. For example the `CUSTOMER` entity _type_ would be referred to simply as the `CUSTOMER` entity. This is so common it would be inadvisable to do anything else, but technically an entity is an abstract _instance_ of an entity type, and this is what an ER diagram shows - abstract instances, and the relationships between them. This is why entities are always named using singular nouns. - -Mermaid can render ER diagrams - -```mermaid-example -erDiagram - CUSTOMER ||--o{ ORDER : places - ORDER ||--|{ LINE-ITEM : contains - CUSTOMER }|..|{ DELIVERY-ADDRESS : uses -``` - -```mermaid -erDiagram - CUSTOMER ||--o{ ORDER : places - ORDER ||--|{ LINE-ITEM : contains - CUSTOMER }|..|{ DELIVERY-ADDRESS : uses -``` - -Entity names are often capitalised, although there is no accepted standard on this, and it is not required in Mermaid. - -Relationships between entities are represented by lines with end markers representing cardinality. Mermaid uses the most popular crow's foot notation. The crow's foot intuitively conveys the possibility of many instances of the entity that it connects to. - -ER diagrams can be used for various purposes, ranging from abstract logical models devoid of any implementation details, through to physical models of relational database tables. It can be useful to include attribute definitions on ER diagrams to aid comprehension of the purpose and meaning of entities. These do not necessarily need to be exhaustive; often a small subset of attributes is enough. Mermaid allows them to be defined in terms of their _type_ and _name_. - -```mermaid-example -erDiagram - CUSTOMER ||--o{ ORDER : places - CUSTOMER { - string name - string custNumber - string sector - } - ORDER ||--|{ LINE-ITEM : contains - ORDER { - int orderNumber - string deliveryAddress - } - LINE-ITEM { - string productCode - int quantity - float pricePerUnit - } -``` - -```mermaid -erDiagram - CUSTOMER ||--o{ ORDER : places - CUSTOMER { - string name - string custNumber - string sector - } - ORDER ||--|{ LINE-ITEM : contains - ORDER { - int orderNumber - string deliveryAddress - } - LINE-ITEM { - string productCode - int quantity - float pricePerUnit - } -``` - -When including attributes on ER diagrams, you must decide whether to include foreign keys as attributes. This probably depends on how closely you are trying to represent relational table structures. If your diagram is a _logical_ model which is not meant to imply a relational implementation, then it is better to leave these out because the associative relationships already convey the way that entities are associated. For example, a JSON data structure can implement a one-to-many relationship without the need for foreign key properties, using arrays. Similarly an object-oriented programming language may use pointers or references to collections. Even for models that are intended for relational implementation, you might decide that inclusion of foreign key attributes duplicates information already portrayed by the relationships, and does not add meaning to entities. Ultimately, it's your choice. - -## Syntax - -### Entities and Relationships - -Mermaid syntax for ER diagrams is compatible with PlantUML, with an extension to label the relationship. Each statement consists of the following parts: - - <first-entity> [<relationship> <second-entity> : <relationship-label>] - -Where: - -- `first-entity` is the name of an entity. Names must begin with an alphabetic character and may also contain digits, hyphens, and underscores. -- `relationship` describes the way that both entities inter-relate. See below. -- `second-entity` is the name of the other entity. -- `relationship-label` describes the relationship from the perspective of the first entity. - -For example: - - PROPERTY ||--|{ ROOM : contains - -This statement can be read as _a property contains one or more rooms, and a room is part of one and only one property_. You can see that the label here is from the first entity's perspective: a property contains a room, but a room does not contain a property. When considered from the perspective of the second entity, the equivalent label is usually very easy to infer. (Some ER diagrams label relationships from both perspectives, but this is not supported here, and is usually superfluous). - -Only the `first-entity` part of a statement is mandatory. This makes it possible to show an entity with no relationships, which can be useful during iterative construction of diagrams. If any other parts of a statement are specified, then all parts are mandatory. - -### Relationship Syntax - -The `relationship` part of each statement can be broken down into three sub-components: - -- the cardinality of the first entity with respect to the second, -- whether the relationship confers identity on a 'child' entity -- the cardinality of the second entity with respect to the first - -Cardinality is a property that describes how many elements of another entity can be related to the entity in question. In the above example a `PROPERTY` can have one or more `ROOM` instances associated to it, whereas a `ROOM` can only be associated with one `PROPERTY`. In each cardinality marker there are two characters. The outermost character represents a maximum value, and the innermost character represents a minimum value. The table below summarises possible cardinalities. - -| Value (left) | Value (right) | Meaning | -| :----------: | :-----------: | ----------------------------- | -| `\|o` | `o\|` | Zero or one | -| `\|\|` | `\|\|` | Exactly one | -| `}o` | `o{` | Zero or more (no upper limit) | -| `}\|` | `\|{` | One or more (no upper limit) | - -**Aliases** - -| Value (left) | Value (right) | Alias for | -| :----------: | :-----------: | ------------ | -| one or zero | one or zero | Zero or one | -| zero or one | zero or one | Zero or one | -| one or more | one or more | One or more | -| one or many | one or many | One or more | -| many(1) | many(1) | One or more | -| 1+ | 1+ | One or more | -| zero or more | zero or more | Zero or more | -| zero or many | zero or many | Zero or more | -| many(0) | many(1) | Zero or more | -| 0+ | 0+ | Zero or more | -| only one | only one | Exactly one | -| 1 | 1 | Exactly one | - -### Identification - -Relationships may be classified as either _identifying_ or _non-identifying_ and these are rendered with either solid or dashed lines respectively. This is relevant when one of the entities in question can not have independent existence without the other. For example a firm that insures people to drive cars might need to store data on `NAMED-DRIVER`s. In modelling this we might start out by observing that a `CAR` can be driven by many `PERSON` instances, and a `PERSON` can drive many `CAR`s - both entities can exist without the other, so this is a non-identifying relationship that we might specify in Mermaid as: `PERSON }|..|{ CAR : "driver"`. Note the two dots in the middle of the relationship that will result in a dashed line being drawn between the two entities. But when this many-to-many relationship is resolved into two one-to-many relationships, we observe that a `NAMED-DRIVER` cannot exist without both a `PERSON` and a `CAR` - the relationships become identifying and would be specified using hyphens, which translate to a solid line: - -**Aliases** - -| Value | Alias for | -| :-----------: | :---------------: | -| to | _identifying_ | -| optionally to | _non-identifying_ | - -```mermaid-example -erDiagram - CAR ||--o{ NAMED-DRIVER : allows - PERSON ||--o{ NAMED-DRIVER : is -``` - -```mermaid -erDiagram - CAR ||--o{ NAMED-DRIVER : allows - PERSON ||--o{ NAMED-DRIVER : is -``` - -### Attributes - -Attributes can be defined for entities by specifying the entity name followed by a block containing multiple `type name` pairs, where a block is delimited by an opening `{` and a closing `}`. For example: - -```mermaid-example -erDiagram - CAR ||--o{ NAMED-DRIVER : allows - CAR { - string registrationNumber - string make - string model - } - PERSON ||--o{ NAMED-DRIVER : is - PERSON { - string firstName - string lastName - int age - } -``` - -```mermaid -erDiagram - CAR ||--o{ NAMED-DRIVER : allows - CAR { - string registrationNumber - string make - string model - } - PERSON ||--o{ NAMED-DRIVER : is - PERSON { - string firstName - string lastName - int age - } -``` - -The attributes are rendered inside the entity boxes: - -```mermaid-example -erDiagram - CAR ||--o{ NAMED-DRIVER : allows - CAR { - string registrationNumber - string make - string model - } - PERSON ||--o{ NAMED-DRIVER : is - PERSON { - string firstName - string lastName - int age - } -``` - -```mermaid -erDiagram - CAR ||--o{ NAMED-DRIVER : allows - CAR { - string registrationNumber - string make - string model - } - PERSON ||--o{ NAMED-DRIVER : is - PERSON { - string firstName - string lastName - int age - } -``` - -The `type` and `name` values must begin with an alphabetic character and may contain digits, hyphens or underscores. Other than that, there are no restrictions, and there is no implicit set of valid data types. - -#### Attribute Keys and Comments - -Attributes may also have a `key` or comment defined. Keys can be "PK" or "FK", for Primary Key or Foreign Key. And a `comment` is defined by double quotes at the end of an attribute. Comments themselves cannot have double-quote characters in them. - -```mermaid-example -erDiagram - CAR ||--o{ NAMED-DRIVER : allows - CAR { - string allowedDriver FK "The license of the allowed driver" - string registrationNumber - string make - string model - } - PERSON ||--o{ NAMED-DRIVER : is - PERSON { - string driversLicense PK "The license #" - string firstName - string lastName - int age - } - MANUFACTURER only one to zero or more CAR -``` - -```mermaid -erDiagram - CAR ||--o{ NAMED-DRIVER : allows - CAR { - string allowedDriver FK "The license of the allowed driver" - string registrationNumber - string make - string model - } - PERSON ||--o{ NAMED-DRIVER : is - PERSON { - string driversLicense PK "The license #" - string firstName - string lastName - int age - } - MANUFACTURER only one to zero or more CAR -``` - -### Other Things - -- If you want the relationship label to be more than one word, you must use double quotes around the phrase -- If you don't want a label at all on a relationship, you must use an empty double-quoted string - -## Styling - -### Config options - -For simple color customization: - -| Name | Used as | -| :------- | :------------------------------------------------------------------- | -| `fill` | Background color of an entity or attribute | -| `stroke` | Border color of an entity or attribute, line color of a relationship | - -### Classes used - -The following CSS class selectors are available for richer styling: - -| Selector | Description | -| :------------------------- | :---------------------------------------------------- | -| `.er.attributeBoxEven` | The box containing attributes on even-numbered rows | -| `.er.attributeBoxOdd` | The box containing attributes on odd-numbered rows | -| `.er.entityBox` | The box representing an entity | -| `.er.entityLabel` | The label for an entity | -| `.er.relationshipLabel` | The label for a relationship | -| `.er.relationshipLabelBox` | The box surrounding a relationship label | -| `.er.relationshipLine` | The line representing a relationship between entities | diff --git a/docs/syntax/examples.md b/docs/syntax/examples.md deleted file mode 100644 index ae2ba0ed3..000000000 --- a/docs/syntax/examples.md +++ /dev/null @@ -1,299 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/examples.md](../../packages/mermaid/src/docs/syntax/examples.md). - -# Examples - -This page contains a collection of examples of diagrams and charts that can be created through mermaid and its myriad applications. - -**If you wish to learn how to support mermaid on your webpage, read the [Beginner's Guide](../config/usage.md?id=usage).** - -**If you wish to learn about mermaid's syntax, Read the [Diagram Syntax](../syntax/flowchart.md?id=flowcharts-basic-syntax) section.** - -## Basic Pie Chart - -```mermaid-example -pie title NETFLIX - "Time spent looking for movie" : 90 - "Time spent watching it" : 10 -``` - -```mermaid -pie title NETFLIX - "Time spent looking for movie" : 90 - "Time spent watching it" : 10 -``` - -```mermaid-example -pie title What Voldemort doesn't have? - "FRIENDS" : 2 - "FAMILY" : 3 - "NOSE" : 45 -``` - -```mermaid -pie title What Voldemort doesn't have? - "FRIENDS" : 2 - "FAMILY" : 3 - "NOSE" : 45 -``` - -## Basic sequence diagram - -```mermaid-example -sequenceDiagram - Alice ->> Bob: Hello Bob, how are you? - Bob-->>John: How about you John? - Bob--x Alice: I am good thanks! - Bob-x John: I am good thanks! - Note right of John: Bob thinks a long<br/>long time, so long<br/>that the text does<br/>not fit on a row. - - Bob-->Alice: Checking with John... - Alice->John: Yes... John, how are you? -``` - -```mermaid -sequenceDiagram - Alice ->> Bob: Hello Bob, how are you? - Bob-->>John: How about you John? - Bob--x Alice: I am good thanks! - Bob-x John: I am good thanks! - Note right of John: Bob thinks a long<br/>long time, so long<br/>that the text does<br/>not fit on a row. - - Bob-->Alice: Checking with John... - Alice->John: Yes... John, how are you? -``` - -## Basic flowchart - -```mermaid-example -graph LR - A[Square Rect] -- Link text --> B((Circle)) - A --> C(Round Rect) - B --> D{Rhombus} - C --> D -``` - -```mermaid -graph LR - A[Square Rect] -- Link text --> B((Circle)) - A --> C(Round Rect) - B --> D{Rhombus} - C --> D -``` - -## Larger flowchart with some styling - -```mermaid-example -graph TB - sq[Square shape] --> ci((Circle shape)) - - subgraph A - od>Odd shape]-- Two line<br/>edge comment --> ro - di{Diamond with <br/> line break} -.-> ro(Rounded<br>square<br>shape) - di==>ro2(Rounded square shape) - end - - %% Notice that no text in shape are added here instead that is appended further down - e --> od3>Really long text with linebreak<br>in an Odd shape] - - %% Comments after double percent signs - e((Inner / circle<br>and some odd <br>special characters)) --> f(,.?!+-*ز) - - cyr[Cyrillic]-->cyr2((Circle shape Начало)); - - classDef green fill:#9f6,stroke:#333,stroke-width:2px; - classDef orange fill:#f96,stroke:#333,stroke-width:4px; - class sq,e green - class di orange -``` - -```mermaid -graph TB - sq[Square shape] --> ci((Circle shape)) - - subgraph A - od>Odd shape]-- Two line<br/>edge comment --> ro - di{Diamond with <br/> line break} -.-> ro(Rounded<br>square<br>shape) - di==>ro2(Rounded square shape) - end - - %% Notice that no text in shape are added here instead that is appended further down - e --> od3>Really long text with linebreak<br>in an Odd shape] - - %% Comments after double percent signs - e((Inner / circle<br>and some odd <br>special characters)) --> f(,.?!+-*ز) - - cyr[Cyrillic]-->cyr2((Circle shape Начало)); - - classDef green fill:#9f6,stroke:#333,stroke-width:2px; - classDef orange fill:#f96,stroke:#333,stroke-width:4px; - class sq,e green - class di orange -``` - -## SequenceDiagram: Loops, alt and opt - -```mermaid-example -sequenceDiagram - loop Daily query - Alice->>Bob: Hello Bob, how are you? - alt is sick - Bob->>Alice: Not so good :( - else is well - Bob->>Alice: Feeling fresh like a daisy - end - - opt Extra response - Bob->>Alice: Thanks for asking - end - end -``` - -```mermaid -sequenceDiagram - loop Daily query - Alice->>Bob: Hello Bob, how are you? - alt is sick - Bob->>Alice: Not so good :( - else is well - Bob->>Alice: Feeling fresh like a daisy - end - - opt Extra response - Bob->>Alice: Thanks for asking - end - end -``` - -## SequenceDiagram: Message to self in loop - -```mermaid-example -sequenceDiagram - participant Alice - participant Bob - Alice->>John: Hello John, how are you? - loop Healthcheck - John->>John: Fight against hypochondria - end - Note right of John: Rational thoughts<br/>prevail... - John-->>Alice: Great! - John->>Bob: How about you? - Bob-->>John: Jolly good! -``` - -```mermaid -sequenceDiagram - participant Alice - participant Bob - Alice->>John: Hello John, how are you? - loop Healthcheck - John->>John: Fight against hypochondria - end - Note right of John: Rational thoughts<br/>prevail... - John-->>Alice: Great! - John->>Bob: How about you? - Bob-->>John: Jolly good! -``` - -## Sequence Diagram: Blogging app service communication - -```mermaid-example -sequenceDiagram - participant web as Web Browser - participant blog as Blog Service - participant account as Account Service - participant mail as Mail Service - participant db as Storage - - Note over web,db: The user must be logged in to submit blog posts - web->>+account: Logs in using credentials - account->>db: Query stored accounts - db->>account: Respond with query result - - alt Credentials not found - account->>web: Invalid credentials - else Credentials found - account->>-web: Successfully logged in - - Note over web,db: When the user is authenticated, they can now submit new posts - web->>+blog: Submit new post - blog->>db: Store post data - - par Notifications - blog--)mail: Send mail to blog subscribers - blog--)db: Store in-site notifications - and Response - blog-->>-web: Successfully posted - end - end - -``` - -```mermaid -sequenceDiagram - participant web as Web Browser - participant blog as Blog Service - participant account as Account Service - participant mail as Mail Service - participant db as Storage - - Note over web,db: The user must be logged in to submit blog posts - web->>+account: Logs in using credentials - account->>db: Query stored accounts - db->>account: Respond with query result - - alt Credentials not found - account->>web: Invalid credentials - else Credentials found - account->>-web: Successfully logged in - - Note over web,db: When the user is authenticated, they can now submit new posts - web->>+blog: Submit new post - blog->>db: Store post data - - par Notifications - blog--)mail: Send mail to blog subscribers - blog--)db: Store in-site notifications - and Response - blog-->>-web: Successfully posted - end - end - -``` - -## A commit flow diagram. - -```mermaid-example -gitGraph: - commit "Ashish" - branch newbranch - checkout newbranch - commit id:"1111" - commit tag:"test" - checkout main - commit type: HIGHLIGHT - commit - merge newbranch - commit - branch b2 - commit -``` - -```mermaid -gitGraph: - commit "Ashish" - branch newbranch - checkout newbranch - commit id:"1111" - commit tag:"test" - checkout main - commit type: HIGHLIGHT - commit - merge newbranch - commit - branch b2 - commit -``` diff --git a/docs/syntax/flowchart.md b/docs/syntax/flowchart.md deleted file mode 100644 index 234f46236..000000000 --- a/docs/syntax/flowchart.md +++ /dev/null @@ -1,992 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/flowchart.md](../../packages/mermaid/src/docs/syntax/flowchart.md). - -# Flowcharts - Basic Syntax - -All Flowcharts are composed of **nodes**, the geometric shapes and **edges**, the arrows or lines. The mermaid code defines the way that these **nodes** and **edges** are made and interact. - -It can also accommodate different arrow types, multi directional arrows, and linking to and from subgraphs. - -> **Important note**: Do not type the word "end" as a Flowchart node. Capitalize all or any one the letters to keep the flowchart from breaking, i.e, "End" or "END". Or you can apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). - -### A node (default) - -```mermaid-example -flowchart LR - id -``` - -```mermaid -flowchart LR - id -``` - -> **Note** The id is what is displayed in the box. - -### A node with text - -It is also possible to set text in the box that differs from the id. If this is done several times, it is the last text -found for the node that will be used. Also if you define edges for the node later on, you can omit text definitions. The -one previously defined will be used when rendering the box. - -```mermaid-example -flowchart LR - id1[This is the text in the box] -``` - -```mermaid -flowchart LR - id1[This is the text in the box] -``` - -## Graph - -This statement declares the direction of the Flowchart. - -This declares the flowchart is oriented from top to bottom (`TD` or `TB`). - -```mermaid-example -flowchart TD - Start --> Stop -``` - -```mermaid -flowchart TD - Start --> Stop -``` - -This declares the flowchart is oriented from left to right (`LR`). - -```mermaid-example -flowchart LR - Start --> Stop -``` - -```mermaid -flowchart LR - Start --> Stop -``` - -## Flowchart Orientation - -Possible FlowChart orientations are: - -- TB - top to bottom -- TD - top-down/ same as top to bottom -- BT - bottom to top -- RL - right to left -- LR - left to right - -## Node shapes - -### A node with round edges - -```mermaid-example -flowchart LR - id1(This is the text in the box) -``` - -```mermaid -flowchart LR - id1(This is the text in the box) -``` - -### A stadium-shaped node - -```mermaid-example -flowchart LR - id1([This is the text in the box]) -``` - -```mermaid -flowchart LR - id1([This is the text in the box]) -``` - -### A node in a subroutine shape - -```mermaid-example -flowchart LR - id1[[This is the text in the box]] -``` - -```mermaid -flowchart LR - id1[[This is the text in the box]] -``` - -### A node in a cylindrical shape - -```mermaid-example -flowchart LR - id1[(Database)] -``` - -```mermaid -flowchart LR - id1[(Database)] -``` - -### A node in the form of a circle - -```mermaid-example -flowchart LR - id1((This is the text in the circle)) -``` - -```mermaid -flowchart LR - id1((This is the text in the circle)) -``` - -### A node in an asymmetric shape - -```mermaid-example -flowchart LR - id1>This is the text in the box] -``` - -```mermaid -flowchart LR - id1>This is the text in the box] -``` - -Currently only the shape above is possible and not its mirror. _This might change with future releases._ - -### A node (rhombus) - -```mermaid-example -flowchart LR - id1{This is the text in the box} -``` - -```mermaid -flowchart LR - id1{This is the text in the box} -``` - -### A hexagon node - -Code: - -```mermaid-example -flowchart LR - id1{{This is the text in the box}} -``` - -```mermaid -flowchart LR - id1{{This is the text in the box}} -``` - -Render: - -```mermaid-example -flowchart LR - id1{{This is the text in the box}} -``` - -```mermaid -flowchart LR - id1{{This is the text in the box}} -``` - -### Parallelogram - -```mermaid-example -flowchart TD - id1[/This is the text in the box/] -``` - -```mermaid -flowchart TD - id1[/This is the text in the box/] -``` - -### Parallelogram alt - -```mermaid-example -flowchart TD - id1[\This is the text in the box\] -``` - -```mermaid -flowchart TD - id1[\This is the text in the box\] -``` - -### Trapezoid - -```mermaid-example -flowchart TD - A[/Christmas\] -``` - -```mermaid -flowchart TD - A[/Christmas\] -``` - -### Trapezoid alt - -```mermaid-example -flowchart TD - B[\Go shopping/] -``` - -```mermaid -flowchart TD - B[\Go shopping/] -``` - -### Double circle - -```mermaid-example -flowchart TD - id1(((This is the text in the circle))) -``` - -```mermaid -flowchart TD - id1(((This is the text in the circle))) -``` - -## Links between nodes - -Nodes can be connected with links/edges. It is possible to have different types of links or attach a text string to a link. - -### A link with arrow head - -```mermaid-example -flowchart LR - A-->B -``` - -```mermaid -flowchart LR - A-->B -``` - -### An open link - -```mermaid-example -flowchart LR - A --- B -``` - -```mermaid -flowchart LR - A --- B -``` - -### Text on links - -```mermaid-example -flowchart LR - A-- This is the text! ---B -``` - -```mermaid -flowchart LR - A-- This is the text! ---B -``` - -or - -```mermaid-example -flowchart LR - A---|This is the text|B -``` - -```mermaid -flowchart LR - A---|This is the text|B -``` - -### A link with arrow head and text - -```mermaid-example -flowchart LR - A-->|text|B -``` - -```mermaid -flowchart LR - A-->|text|B -``` - -or - -```mermaid-example -flowchart LR - A-- text -->B -``` - -```mermaid -flowchart LR - A-- text -->B -``` - -### Dotted link - -```mermaid-example -flowchart LR - A-.->B; -``` - -```mermaid -flowchart LR - A-.->B; -``` - -### Dotted link with text - -```mermaid-example -flowchart LR - A-. text .-> B -``` - -```mermaid -flowchart LR - A-. text .-> B -``` - -### Thick link - -```mermaid-example -flowchart LR - A ==> B -``` - -```mermaid -flowchart LR - A ==> B -``` - -### Thick link with text - -```mermaid-example -flowchart LR - A == text ==> B -``` - -```mermaid -flowchart LR - A == text ==> B -``` - -### Chaining of links - -It is possible declare many links in the same line as per below: - -```mermaid-example -flowchart LR - A -- text --> B -- text2 --> C -``` - -```mermaid -flowchart LR - A -- text --> B -- text2 --> C -``` - -It is also possible to declare multiple nodes links in the same line as per below: - -```mermaid-example -flowchart LR - a --> b & c--> d -``` - -```mermaid -flowchart LR - a --> b & c--> d -``` - -You can then describe dependencies in a very expressive way. Like the one-liner below: - -```mermaid-example -flowchart TB - A & B--> C & D -``` - -```mermaid -flowchart TB - A & B--> C & D -``` - -If you describe the same diagram using the the basic syntax, it will take four lines. A -word of warning, one could go overboard with this making the flowchart harder to read in -markdown form. The Swedish word `lagom` comes to mind. It means, not too much and not too little. -This goes for expressive syntaxes as well. - -```mermaid-example -flowchart TB - A --> C - A --> D - B --> C - B --> D -``` - -```mermaid -flowchart TB - A --> C - A --> D - B --> C - B --> D -``` - -### New arrow types - -There are new types of arrows supported as per below: - -```mermaid-example -flowchart LR - A --o B - B --x C -``` - -```mermaid -flowchart LR - A --o B - B --x C -``` - -### Multi directional arrows - -There is the possibility to use multidirectional arrows. - -```mermaid-example -flowchart LR - A o--o B - B <--> C - C x--x D -``` - -```mermaid -flowchart LR - A o--o B - B <--> C - C x--x D -``` - -### Minimum length of a link - -Each node in the flowchart is ultimately assigned to a rank in the rendered -graph, i.e. to a vertical or horizontal level (depending on the flowchart -orientation), based on the nodes to which it is linked. By default, links -can span any number of ranks, but you can ask for any link to be longer -than the others by adding extra dashes in the link definition. - -In the following example, two extra dashes are added in the link from node _B_ -to node _E_, so that it spans two more ranks than regular links: - -```mermaid-example -flowchart TD - A[Start] --> B{Is it?} - B -->|Yes| C[OK] - C --> D[Rethink] - D --> B - B ---->|No| E[End] -``` - -```mermaid -flowchart TD - A[Start] --> B{Is it?} - B -->|Yes| C[OK] - C --> D[Rethink] - D --> B - B ---->|No| E[End] -``` - -> **Note** Links may still be made longer than the requested number of ranks -> by the rendering engine to accommodate other requests. - -When the link label is written in the middle of the link, the extra dashes must -be added on the right side of the link. The following example is equivalent to -the previous one: - -```mermaid-example -flowchart TD - A[Start] --> B{Is it?} - B -- Yes --> C[OK] - C --> D[Rethink] - D --> B - B -- No ----> E[End] -``` - -```mermaid -flowchart TD - A[Start] --> B{Is it?} - B -- Yes --> C[OK] - C --> D[Rethink] - D --> B - B -- No ----> E[End] -``` - -For dotted or thick links, the characters to add are equals signs or dots, -as summed up in the following table: - -| Length | 1 | 2 | 3 | -| ----------------- | :----: | :-----: | :------: | -| Normal | `---` | `----` | `-----` | -| Normal with arrow | `-->` | `--->` | `---->` | -| Thick | `===` | `====` | `=====` | -| Thick with arrow | `==>` | `===>` | `====>` | -| Dotted | `-.-` | `-..-` | `-...-` | -| Dotted with arrow | `-.->` | `-..->` | `-...->` | - -## Special characters that break syntax - -It is possible to put text within quotes in order to render more troublesome characters. As in the example below: - -```mermaid-example -flowchart LR - id1["This is the (text) in the box"] -``` - -```mermaid -flowchart LR - id1["This is the (text) in the box"] -``` - -### Entity codes to escape characters - -It is possible to escape characters using the syntax exemplified here. - -```mermaid-example - flowchart LR - A["A double quote:#quot;"] -->B["A dec char:#9829;"] -``` - -```mermaid - flowchart LR - A["A double quote:#quot;"] -->B["A dec char:#9829;"] -``` - -Numbers given are base 10, so `#` can be encoded as `#35;`. It is also supported to use HTML character names. - -## Subgraphs - - subgraph title - graph definition - end - -An example below: - -```mermaid-example -flowchart TB - c1-->a2 - subgraph one - a1-->a2 - end - subgraph two - b1-->b2 - end - subgraph three - c1-->c2 - end -``` - -```mermaid -flowchart TB - c1-->a2 - subgraph one - a1-->a2 - end - subgraph two - b1-->b2 - end - subgraph three - c1-->c2 - end -``` - -You can also set an explicit id for the subgraph. - -```mermaid-example -flowchart TB - c1-->a2 - subgraph ide1 [one] - a1-->a2 - end -``` - -```mermaid -flowchart TB - c1-->a2 - subgraph ide1 [one] - a1-->a2 - end -``` - -## flowcharts - -With the graphtype flowchart it is also possible to set edges to and from subgraphs as in the flowchart below. - -```mermaid-example -flowchart TB - c1-->a2 - subgraph one - a1-->a2 - end - subgraph two - b1-->b2 - end - subgraph three - c1-->c2 - end - one --> two - three --> two - two --> c2 -``` - -```mermaid -flowchart TB - c1-->a2 - subgraph one - a1-->a2 - end - subgraph two - b1-->b2 - end - subgraph three - c1-->c2 - end - one --> two - three --> two - two --> c2 -``` - -## Direction in subgraphs - -With the graphtype flowcharts you can use the direction statement to set the direction which the subgraph will render like in this example. - -```mermaid-example -flowchart LR - subgraph TOP - direction TB - subgraph B1 - direction RL - i1 -->f1 - end - subgraph B2 - direction BT - i2 -->f2 - end - end - A --> TOP --> B - B1 --> B2 -``` - -```mermaid -flowchart LR - subgraph TOP - direction TB - subgraph B1 - direction RL - i1 -->f1 - end - subgraph B2 - direction BT - i2 -->f2 - end - end - A --> TOP --> B - B1 --> B2 -``` - -## Interaction - -It is possible to bind a click event to a node, the click can lead to either a javascript callback or to a link which will be opened in a new browser tab. **Note**: This functionality is disabled when using `securityLevel='strict'` and enabled when using `securityLevel='loose'`. - - click nodeId callback - click nodeId call callback() - -- nodeId is the id of the node -- callback is the name of a javascript function defined on the page displaying the graph, the function will be called with the nodeId as parameter. - -Examples of tooltip usage below: - -```html -<script> - const callback = function () { - alert('A callback was triggered'); - }; -</script> -``` - -The tooltip text is surrounded in double quotes. The styles of the tooltip are set by the class `.mermaidTooltip`. - -```mermaid-example -flowchart LR - A-->B - B-->C - C-->D - click A callback "Tooltip for a callback" - click B "https://www.github.com" "This is a tooltip for a link" - click A call callback() "Tooltip for a callback" - click B href "https://www.github.com" "This is a tooltip for a link" -``` - -```mermaid -flowchart LR - A-->B - B-->C - C-->D - click A callback "Tooltip for a callback" - click B "https://www.github.com" "This is a tooltip for a link" - click A call callback() "Tooltip for a callback" - click B href "https://www.github.com" "This is a tooltip for a link" -``` - -> **Success** The tooltip functionality and the ability to link to urls are available from version 0.5.2. - -?> Due to limitations with how Docsify handles JavaScript callback functions, an alternate working demo for the above code can be viewed at [this jsfiddle](https://jsfiddle.net/s37cjoau/3/). - -Links are opened in the same browser tab/window by default. It is possible to change this by adding a link target to the click definition (`_self`, `_blank`, `_parent` and `_top` are supported): - -```mermaid-example -flowchart LR - A-->B - B-->C - C-->D - D-->E - click A "https://www.github.com" _blank - click B "https://www.github.com" "Open this in a new tab" _blank - click C href "https://www.github.com" _blank - click D href "https://www.github.com" "Open this in a new tab" _blank -``` - -```mermaid -flowchart LR - A-->B - B-->C - C-->D - D-->E - click A "https://www.github.com" _blank - click B "https://www.github.com" "Open this in a new tab" _blank - click C href "https://www.github.com" _blank - click D href "https://www.github.com" "Open this in a new tab" _blank -``` - -Beginner's tip—a full example using interactive links in a html context: - -```html -<body> - <pre class="mermaid"> - flowchart LR - A-->B - B-->C - C-->D - click A callback "Tooltip" - click B "https://www.github.com" "This is a link" - click C call callback() "Tooltip" - click D href "https://www.github.com" "This is a link" - </pre> - - <script> - const callback = function () { - alert('A callback was triggered'); - }; - const config = { - startOnLoad: true, - flowchart: { useMaxWidth: true, htmlLabels: true, curve: 'cardinal' }, - securityLevel: 'loose', - }; - mermaid.initialize(config); - </script> -</body> -``` - -### Comments - -Comments can be entered within a flow diagram, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any flow syntax - -```mermaid-example -flowchart LR -%% this is a comment A -- text --> B{node} - A -- text --> B -- text2 --> C -``` - -```mermaid -flowchart LR -%% this is a comment A -- text --> B{node} - A -- text --> B -- text2 --> C -``` - -## Styling and classes - -### Styling links - -It is possible to style links. For instance, you might want to style a link that is going backwards in the flow. As links -have no ids in the same way as nodes, some other way of deciding what style the links should be attached to is required. -Instead of ids, the order number of when the link was defined in the graph is used, or use default to apply to all links. -In the example below the style defined in the linkStyle statement will belong to the fourth link in the graph: - - linkStyle 3 stroke:#ff3,stroke-width:4px,color:red; - -### Styling line curves - -It is possible to style the type of curve used for lines between items, if the default method does not meet your needs. -Available curve styles include `basis`, `bump`, `linear`, `monotoneX`, `monotoneY`, `natural`, `step`, `stepAfter`, -and `stepBefore`. - -In this example, a left-to-right graph uses the `stepBefore` curve style: - - %%{ init: { 'flowchart': { 'curve': 'stepBefore' } } }%% - graph LR - -For a full list of available curves, including an explanation of custom curves, refer to -the [Shapes](https://github.com/d3/d3-shape/blob/main/README.md#curves) documentation in the -[d3-shape](https://github.com/d3/d3-shape/) project. - -### Styling a node - -It is possible to apply specific styles such as a thicker border or a different background color to a node. - -```mermaid-example -flowchart LR - id1(Start)-->id2(Stop) - style id1 fill:#f9f,stroke:#333,stroke-width:4px - style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5 -``` - -```mermaid -flowchart LR - id1(Start)-->id2(Stop) - style id1 fill:#f9f,stroke:#333,stroke-width:4px - style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5 -``` - -#### Classes - -More convenient than defining the style every time is to define a class of styles and attach this class to the nodes that -should have a different look. - -a class definition looks like the example below: - - classDef className fill:#f9f,stroke:#333,stroke-width:4px; - -Attachment of a class to a node is done as per below: - - class nodeId1 className; - -It is also possible to attach a class to a list of nodes in one statement: - - class nodeId1,nodeId2 className; - -A shorter form of adding a class is to attach the classname to the node using the `:::`operator as per below: - -```mermaid-example -flowchart LR - A:::someclass --> B - classDef someclass fill:#f96 -``` - -```mermaid -flowchart LR - A:::someclass --> B - classDef someclass fill:#f96 -``` - -### Css classes - -It is also possible to predefine classes in css styles that can be applied from the graph definition as in the example -below: - -**Example style** - -```html -<style> - .cssClass > rect { - fill: #ff0000; - stroke: #ffff00; - stroke-width: 4px; - } -</style> -``` - -**Example definition** - -```mermaid-example -flowchart LR - A-->B[AAA<span>BBB</span>] - B-->D - class A cssClass -``` - -```mermaid -flowchart LR - A-->B[AAA<span>BBB</span>] - B-->D - class A cssClass -``` - -### Default class - -If a class is named default it will be assigned to all classes without specific class definitions. - - classDef default fill:#f9f,stroke:#333,stroke-width:4px; - -## Basic support for fontawesome - -It is possible to add icons from fontawesome. - -The icons are accessed via the syntax fa:#icon class name#. - -```mermaid-example -flowchart TD - B["fab:fa-twitter for peace"] - B-->C[fa:fa-ban forbidden] - B-->D(fa:fa-spinner) - B-->E(A fa:fa-camera-retro perhaps?) -``` - -```mermaid -flowchart TD - B["fab:fa-twitter for peace"] - B-->C[fa:fa-ban forbidden] - B-->D(fa:fa-spinner) - B-->E(A fa:fa-camera-retro perhaps?) -``` - -?> Mermaid is now only compatible with Font Awesome versions 4 and 5. Check that you are using the correct version of Font Awesome. - -## Graph declarations with spaces between vertices and link and without semicolon - -- In graph declarations, the statements also can now end without a semicolon. After release 0.2.16, ending a graph statement with semicolon is just optional. So the below graph declaration is also valid along with the old declarations of the graph. - -- A single space is allowed between vertices and the link. However there should not be any space between a vertex and its text and a link and its text. The old syntax of graph declaration will also work and hence this new feature is optional and is introduced to improve readability. - -Below is the new declaration of the graph edges which is also valid along with the old declaration of the graph edges. - -```mermaid-example -flowchart LR - A[Hard edge] -->|Link text| B(Round edge) - B --> C{Decision} - C -->|One| D[Result one] - C -->|Two| E[Result two] -``` - -```mermaid -flowchart LR - A[Hard edge] -->|Link text| B(Round edge) - B --> C{Decision} - C -->|One| D[Result one] - C -->|Two| E[Result two] -``` - -## Configuration... - -Is it possible to adjust the width of the rendered flowchart. - -This is done by defining **mermaid.flowchartConfig** or by the CLI to use a JSON file with the configuration. How to use the CLI is described in the mermaidCLI page. -mermaid.flowchartConfig can be set to a JSON string with config parameters or the corresponding object. - -```javascript -mermaid.flowchartConfig = { - width: 100% -} -``` diff --git a/docs/syntax/gantt.md b/docs/syntax/gantt.md deleted file mode 100644 index b20b6b776..000000000 --- a/docs/syntax/gantt.md +++ /dev/null @@ -1,423 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/gantt.md](../../packages/mermaid/src/docs/syntax/gantt.md). - -# Gantt diagrams - -> A Gantt chart is a type of bar chart, first developed by Karol Adamiecki in 1896, and independently by Henry Gantt in the 1910s, that illustrates a project schedule and the amount of time it would take for any one project to finish. Gantt charts illustrate number of days between the start and finish dates of the terminal elements and summary elements of a project. - -## A note to users - -Gantt Charts will record each scheduled task as one continuous bar that extends from the left to the right. The x axis represents time and the y records the different tasks and the order in which they are to be completed. - -It is important to remember that when a date, day, or collection of dates specific to a task are "excluded", the Gantt Chart will accommodate those changes by extending an equal number of days, towards the right, not by creating a gap inside the task. -As shown here ![](./img/Gantt-excluded-days-within.png) - -However, if the excluded dates are between two tasks that are set to start consecutively, the excluded dates will be skipped graphically and left blank, and the following task will begin after the end of the excluded dates. -As shown here ![](./img/Gantt-long-weekend-look.png) - -A Gantt chart is useful for tracking the amount of time it would take before a project is finished, but it can also be used to graphically represent "non-working days", with a few tweaks. - -Mermaid can render Gantt diagrams as SVG, PNG or a MarkDown link that can be pasted into docs. - -```mermaid-example -gantt - title A Gantt Diagram - dateFormat YYYY-MM-DD - section Section - A task :a1, 2014-01-01, 30d - Another task :after a1 , 20d - section Another - Task in sec :2014-01-12 , 12d - another task : 24d -``` - -```mermaid -gantt - title A Gantt Diagram - dateFormat YYYY-MM-DD - section Section - A task :a1, 2014-01-01, 30d - Another task :after a1 , 20d - section Another - Task in sec :2014-01-12 , 12d - another task : 24d -``` - -## Syntax - -```mermaid-example -gantt - dateFormat YYYY-MM-DD - title Adding GANTT diagram functionality to mermaid - excludes weekends - %% (`excludes` accepts specific dates in YYYY-MM-DD format, days of the week ("sunday") or "weekends", but not the word "weekdays".) - - section A section - Completed task :done, des1, 2014-01-06,2014-01-08 - Active task :active, des2, 2014-01-09, 3d - Future task : des3, after des2, 5d - Future task2 : des4, after des3, 5d - - section Critical tasks - Completed task in the critical line :crit, done, 2014-01-06,24h - Implement parser and jison :crit, done, after des1, 2d - Create tests for parser :crit, active, 3d - Future task in critical line :crit, 5d - Create tests for renderer :2d - Add to mermaid :1d - Functionality added :milestone, 2014-01-25, 0d - - section Documentation - Describe gantt syntax :active, a1, after des1, 3d - Add gantt diagram to demo page :after a1 , 20h - Add another diagram to demo page :doc1, after a1 , 48h - - section Last section - Describe gantt syntax :after doc1, 3d - Add gantt diagram to demo page :20h - Add another diagram to demo page :48h -``` - -```mermaid -gantt - dateFormat YYYY-MM-DD - title Adding GANTT diagram functionality to mermaid - excludes weekends - %% (`excludes` accepts specific dates in YYYY-MM-DD format, days of the week ("sunday") or "weekends", but not the word "weekdays".) - - section A section - Completed task :done, des1, 2014-01-06,2014-01-08 - Active task :active, des2, 2014-01-09, 3d - Future task : des3, after des2, 5d - Future task2 : des4, after des3, 5d - - section Critical tasks - Completed task in the critical line :crit, done, 2014-01-06,24h - Implement parser and jison :crit, done, after des1, 2d - Create tests for parser :crit, active, 3d - Future task in critical line :crit, 5d - Create tests for renderer :2d - Add to mermaid :1d - Functionality added :milestone, 2014-01-25, 0d - - section Documentation - Describe gantt syntax :active, a1, after des1, 3d - Add gantt diagram to demo page :after a1 , 20h - Add another diagram to demo page :doc1, after a1 , 48h - - section Last section - Describe gantt syntax :after doc1, 3d - Add gantt diagram to demo page :20h - Add another diagram to demo page :48h -``` - -It is possible to set multiple dependencies separated by space: - -```mermaid-example - gantt - apple :a, 2017-07-20, 1w - banana :crit, b, 2017-07-23, 1d - cherry :active, c, after b a, 1d -``` - -```mermaid - gantt - apple :a, 2017-07-20, 1w - banana :crit, b, 2017-07-23, 1d - cherry :active, c, after b a, 1d -``` - -### Title - -The `title` is an _optional_ string to be displayed at the top of the Gantt chart to describe the chart as a whole. - -### Section statements - -You can divide the chart into various sections, for example to separate different parts of a project like development and documentation. - -To do so, start a line with the `section` keyword and give it a name. (Note that unlike with the [title for the entire chart](#title), this name is _required_. - -### Milestones - -You can add milestones to the diagrams. Milestones differ from tasks as they represent a single instant in time and are identified by the keyword `milestone`. Below is an example on how to use milestones. As you may notice, the exact location of the milestone is determined by the initial date for the milestone and the "duration" of the task this way: _initial date_+_duration_/2. - -```mermaid-example -gantt -dateFormat HH:mm -axisFormat %H:%M -Initial milestone : milestone, m1, 17:49,2min -taska2 : 10min -taska3 : 5min -Final milestone : milestone, m2, 18:14, 2min -``` - -```mermaid -gantt -dateFormat HH:mm -axisFormat %H:%M -Initial milestone : milestone, m1, 17:49,2min -taska2 : 10min -taska3 : 5min -Final milestone : milestone, m2, 18:14, 2min -``` - -## Setting dates - -`dateFormat` defines the format of the date **input** of your gantt elements. How these dates are represented in the rendered chart **output** are defined by `axisFormat`. - -### Input date format - -The default input date format is `YYYY-MM-DD`. You can define your custom `dateFormat`. - - dateFormat YYYY-MM-DD - -The following formatting options are supported: - - Input Example Description: - YYYY 2014 4 digit year - YY 14 2 digit year - Q 1..4 Quarter of year. Sets month to first month in quarter. - M MM 1..12 Month number - MMM MMMM January..Dec Month name in locale set by moment.locale() - D DD 1..31 Day of month - Do 1st..31st Day of month with ordinal - DDD DDDD 1..365 Day of year - X 1410715640.579 Unix timestamp - x 1410715640579 Unix ms timestamp - H HH 0..23 24 hour time - h hh 1..12 12 hour time used with a A. - a A am pm Post or ante meridiem - m mm 0..59 Minutes - s ss 0..59 Seconds - S 0..9 Tenths of a second - SS 0..99 Hundreds of a second - SSS 0..999 Thousandths of a second - Z ZZ +12:00 Offset from UTC as +-HH:mm, +-HHmm, or Z - -More info in: https://momentjs.com/docs/#/parsing/string-format/ - -### Output date format on the axis - -The default output date format is `YYYY-MM-DD`. You can define your custom `axisFormat`, like `2020-Q1` for the first quarter of the year 2020. - - axisFormat %Y-%m-%d - -The following formatting strings are supported: - - %a - abbreviated weekday name. - %A - full weekday name. - %b - abbreviated month name. - %B - full month name. - %c - date and time, as "%a %b %e %H:%M:%S %Y". - %d - zero-padded day of the month as a decimal number [01,31]. - %e - space-padded day of the month as a decimal number [ 1,31]; equivalent to %_d. - %H - hour (24-hour clock) as a decimal number [00,23]. - %I - hour (12-hour clock) as a decimal number [01,12]. - %j - day of the year as a decimal number [001,366]. - %m - month as a decimal number [01,12]. - %M - minute as a decimal number [00,59]. - %L - milliseconds as a decimal number [000, 999]. - %p - either AM or PM. - %S - second as a decimal number [00,61]. - %U - week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. - %w - weekday as a decimal number [0(Sunday),6]. - %W - week number of the year (Monday as the first day of the week) as a decimal number [00,53]. - %x - date, as "%m/%d/%Y". - %X - time, as "%H:%M:%S". - %y - year without century as a decimal number [00,99]. - %Y - year with century as a decimal number. - %Z - time zone offset, such as "-0700". - %% - a literal "%" character. - -More info in: <https://github.com/d3/d3-time-format/tree/v4.0.0#locale_format> - -### Axis ticks - -The default output ticks are auto. You can custom your `tickInterval`, like `1day` or `1week`. - - tickInterval 1day - -The pattern is: - - /^([1-9][0-9]*)(minute|hour|day|week|month)$/ - -More info in: <https://github.com/d3/d3-time#interval_every> - -## Comments - -Comments can be entered within a gantt chart, which will be ignored by the parser. Comments need to be on their own line and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any diagram syntax - -```mermaid-example -gantt - title A Gantt Diagram - %% this is a comment - dateFormat YYYY-MM-DD - section Section - A task :a1, 2014-01-01, 30d - Another task :after a1 , 20d - section Another - Task in sec :2014-01-12 , 12d - another task : 24d - -``` - -```mermaid -gantt - title A Gantt Diagram - %% this is a comment - dateFormat YYYY-MM-DD - section Section - A task :a1, 2014-01-01, 30d - Another task :after a1 , 20d - section Another - Task in sec :2014-01-12 , 12d - another task : 24d - -``` - -## Styling - -Styling of the Gantt diagram is done by defining a number of CSS classes. During rendering, these classes are extracted from the file located at src/diagrams/gantt/styles.js - -### Classes used - -| Class | Description | -| --------------------- | ---------------------------------------------------------------------- | -| grid.tick | Styling for the Grid Lines | -| grid.path | Styling for the Grid's borders | -| .taskText | Task Text Styling | -| .taskTextOutsideRight | Styling for Task Text that exceeds the activity bar towards the right. | -| .taskTextOutsideLeft | Styling for Task Text that exceeds the activity bar, towards the left. | -| todayMarker | Toggle and Styling for the "Today Marker" | - -### Sample stylesheet - -```css -.grid .tick { - stroke: lightgrey; - opacity: 0.3; - shape-rendering: crispEdges; -} -.grid path { - stroke-width: 0; -} - -#tag { - color: white; - background: #fa283d; - width: 150px; - position: absolute; - display: none; - padding: 3px 6px; - margin-left: -80px; - font-size: 11px; -} - -#tag:before { - border: solid transparent; - content: ' '; - height: 0; - left: 50%; - margin-left: -5px; - position: absolute; - width: 0; - border-width: 10px; - border-bottom-color: #fa283d; - top: -20px; -} -.taskText { - fill: white; - text-anchor: middle; -} -.taskTextOutsideRight { - fill: black; - text-anchor: start; -} -.taskTextOutsideLeft { - fill: black; - text-anchor: end; -} -``` - -## Today marker - -You can style or hide the marker for the current date. To style it, add a value for the `todayMarker` key. - - todayMarker stroke-width:5px,stroke:#0f0,opacity:0.5 - -To hide the marker, set `todayMarker` to `off`. - - todayMarker off - -## Configuration - -It is possible to adjust the margins for rendering the gantt diagram. - -This is done by defining the `ganttConfig` part of the configuration object. -How to use the CLI is described in the [mermaidCLI](../config/mermaidCLI.md) page. - -mermaid.ganttConfig can be set to a JSON string with config parameters or the corresponding object. - -```javascript -mermaid.ganttConfig = { - titleTopMargin: 25, - barHeight: 20, - barGap: 4, - topPadding: 75, - sidePadding: 75, -}; -``` - -### Possible configuration params: - -| Param | Description | Default value | -| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------- | -| mirrorActor | Turns on/off the rendering of actors below the diagram as well as above it | false | -| bottomMarginAdj | Adjusts how far down the graph ended. Wide borders styles with css could generate unwanted clipping which is why this config param exists. | 1 | - -## Interaction - -It is possible to bind a click event to a task. The click can lead to either a javascript callback or to a link which will be opened in the current browser tab. **Note**: This functionality is disabled when using `securityLevel='strict'` and enabled when using `securityLevel='loose'`. - - click taskId call callback(arguments) - click taskId href URL - -- taskId is the id of the task -- callback is the name of a javascript function defined on the page displaying the graph, the function will be called with the taskId as the parameter if no other arguments are specified. - -Beginner's tip—a full example using interactive links in an html context: - -```html -<body> - <pre class="mermaid"> - gantt - dateFormat YYYY-MM-DD - - section Clickable - Visit mermaidjs :active, cl1, 2014-01-07, 3d - Print arguments :cl2, after cl1, 3d - Print task :cl3, after cl2, 3d - - click cl1 href "https://mermaidjs.github.io/" - click cl2 call printArguments("test1", "test2", test3) - click cl3 call printTask() - </pre> - - <script> - const printArguments = function (arg1, arg2, arg3) { - alert('printArguments called with arguments: ' + arg1 + ', ' + arg2 + ', ' + arg3); - }; - const printTask = function (taskId) { - alert('taskId: ' + taskId); - }; - const config = { - startOnLoad: true, - securityLevel: 'loose', - }; - mermaid.initialize(config); - </script> -</body> -``` diff --git a/docs/syntax/gitgraph.md b/docs/syntax/gitgraph.md deleted file mode 100644 index cd1a3f12a..000000000 --- a/docs/syntax/gitgraph.md +++ /dev/null @@ -1,1729 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/gitgraph.md](../../packages/mermaid/src/docs/syntax/gitgraph.md). - -# Gitgraph Diagrams - -> A Git Graph is a pictorial representation of git commits and git actions(commands) on various branches. - -These kind of diagram are particularly helpful to developers and devops teams to share their Git branching strategies. For example, it makes it easier to visualize how git flow works. - -Mermaid can render Git diagrams - -```mermaid-example - gitGraph - commit - commit - branch develop - checkout develop - commit - commit - checkout main - merge develop - commit - commit -``` - -```mermaid - gitGraph - commit - commit - branch develop - checkout develop - commit - commit - checkout main - merge develop - commit - commit -``` - -In Mermaid, we support the basic git operations like: - -- _commit_ : Representing a new commit on the current branch. -- _branch_ : To create & switch to a new branch, setting it as the current branch. -- _checkout_ : To checking out an existing branch and setting it as the current branch. -- _merge_ : To merge an existing branch onto the current branch. - -With the help of these key git commands, you will be able to draw a gitgraph in Mermaid very easily and quickly. -Entity names are often capitalized, although there is no accepted standard on this, and it is not required in Mermaid. - -## Syntax - -Mermaid syntax for a gitgraph is very straight-forward and simple. It follows a declarative-approach, where each commit is drawn on the timeline in the diagram, in order of its occurrences/presence in code. Basically, it follows the insertion order for each command. - -First thing you do is to declare your diagram type using the **gitgraph** keyword. This `gitgraph` keyword, tells Mermaid that you wish to draw a gitgraph, and parse the diagram code accordingly. - -Each gitgraph, is initialized with **_main_** branch. So unless you create a different branch, by-default the commits will go to the main branch. This is driven with how git works, where in the beginning you always start with the main branch (formerly called as **_master_** branch). And by-default, `main` branch is set as your **_current branch_**. - -You make use of **_commit_** keyword to register a commit on the current branch. Let see how this works: - -A simple gitgraph showing three commits on the default (**_main_**) branch: - -```mermaid-example - gitGraph - commit - commit - commit -``` - -```mermaid - gitGraph - commit - commit - commit -``` - -If you look closely at the previous example, you can see the default branch `main` along with three commits. Also, notice that by default each commit has been given a unique & random ID. What if you wanted to give your own custom ID to a commit? Yes, it is possible to do that with Mermaid. - -### Adding custom commit id - -For a given commit you may specify a custom ID at the time of declaring it using the `id` attribute, followed by `:` and your custom value within a `""` quote. For example: `commit id: "your_custom_id"` - -Let us see how this works with the help of the following diagram: - -```mermaid-example - gitGraph - commit id: "Alpha" - commit id: "Beta" - commit id: "Gamma" -``` - -```mermaid - gitGraph - commit id: "Alpha" - commit id: "Beta" - commit id: "Gamma" -``` - -In this example, we have given our custom IDs to the commits. - -### Modifying commit type - -In Mermaid, a commit can be of three type, which render a bit different in the diagram. These types are: - -- `NORMAL` : Default commit type. Represented by a solid circle in the diagram -- `REVERSE` : To emphasize a commit as a reverse commit. Represented by a crossed solid circle in the diagram. -- `HIGHLIGHT` : To highlight a particular commit in the diagram. Represented by a filled rectangle in the diagram. - -For a given commit you may specify its type at the time of declaring it using the `type` attribute, followed by `:` and the required type option discussed above. For example: `commit type: HIGHLIGHT` - -NOTE: If no commit type is specified, `NORMAL` is picked as default. - -Let us see how these different commit type look with the help of the following diagram: - -```mermaid-example - gitGraph - commit id: "Normal" - commit - commit id: "Reverse" type: REVERSE - commit - commit id: "Highlight" type: HIGHLIGHT - commit -``` - -```mermaid - gitGraph - commit id: "Normal" - commit - commit id: "Reverse" type: REVERSE - commit - commit id: "Highlight" type: HIGHLIGHT - commit -``` - -In this example, we have specified different types to each commit. Also, see how we have included both `id` and `type` together at the time of declaring our commits. - -### Adding Tags - -For a given commit you may decorate it as a **tag**, similar to the concept of tags or release version in git world. -You can attach a custom tag at the time of declaring a commit using the `tag` attribute, followed by `:` and your custom value within `""` quote. For example: `commit tag: "your_custom_tag"` - -Let us see how this works with the help of the following diagram: - -```mermaid-example - gitGraph - commit - commit id: "Normal" tag: "v1.0.0" - commit - commit id: "Reverse" type: REVERSE tag: "RC_1" - commit - commit id: "Highlight" type: HIGHLIGHT tag: "8.8.4" - commit -``` - -```mermaid - gitGraph - commit - commit id: "Normal" tag: "v1.0.0" - commit - commit id: "Reverse" type: REVERSE tag: "RC_1" - commit - commit id: "Highlight" type: HIGHLIGHT tag: "8.8.4" - commit -``` - -In this example, we have given custom tags to the commits. Also, see how we have combined all these attributes in a single commit declaration. You can mix-match these attributes as you like. - -### Create a new branch - -In Mermaid, in-order to create a new branch, you make use of the `branch` keyword. You also need to provide a name of the new branch. The name has to be unique and cannot be that of an existing branch. A branch name that could be confused for a keyword must be quoted within `""`. Usage examples: `branch develop`, `branch "cherry-pick"` - -When Mermaid, reads the `branch` keyword, it creates a new branch and sets it as the current branch. Equivalent to you creating a new branch and checking it out in Git world. - -Let see this in an example: - -```mermaid-example - gitGraph - commit - commit - branch develop - commit - commit - commit -``` - -```mermaid - gitGraph - commit - commit - branch develop - commit - commit - commit -``` - -In this example, see how we started with default `main` branch, and pushed two commits on that. -Then we created the `develop` branch, and all commits afterwards are put on the `develop` branch as it became the current branch. - -### Checking out an existing branch - -In Mermaid, in order to switch to an existing branch, you make use of the `checkout` keyword. You also need to provide a name of an existing branch. If no branch is found with the given name, it will result in console error. Usage example: `checkout develop` - -When Mermaid, reads the `checkout` keyword, it finds the given branch and sets it as the current branch. Equivalent to checking out a branch in the Git world. - -Let see modify our previous example: - -```mermaid-example - gitGraph - commit - commit - branch develop - commit - commit - commit - checkout main - commit - commit -``` - -```mermaid - gitGraph - commit - commit - branch develop - commit - commit - commit - checkout main - commit - commit -``` - -In this example, see how we started with default `main` branch, and pushed two commits on that. -Then we created the `develop` branch, and all three commits afterwards are put on the `develop` branch as it became the current branch. -After this we made use of the `checkout` keyword to set the current branch as `main`, and all commit that follow are registered against the current branch, i.e. `main`. - -### Merging two branches - -In Mermaid, in order to merge or join to an existing branch, you make use of the `merge` keyword. You also need to provide the name of an existing branch to merge from. If no branch is found with the given name, it will result in console error. Also, you can only merge two separate branches, and cannot merge a branch with itself. In such case an error is throw. - -Usage example: `merge develop` - -When Mermaid, reads the `merge` keyword, it finds the given branch and its head commit (the last commit on that branch), and joins it with the head commit on the **current branch**. Each merge results in a **_merge commit_**, represented in the diagram with **filled double circle**. - -Let us modify our previous example to merge our two branches: - -```mermaid-example - gitGraph - commit - commit - branch develop - commit - commit - commit - checkout main - commit - commit - merge develop - commit - commit -``` - -```mermaid - gitGraph - commit - commit - branch develop - commit - commit - commit - checkout main - commit - commit - merge develop - commit - commit -``` - -In this example, see how we started with default `main` branch, and pushed two commits on that. -Then we created the `develop` branch, and all three commits afterwards are put on the `develop` branch as it became the current branch. -After this we made use of the `checkout` keyword to set the current branch as `main`, and all commits that follow are registered against the current branch, i.e. `main`. -After this we merge the `develop` branch onto the current branch `main`, resulting in a merge commit. -Since the current branch at this point is still `main`, the last two commits are registered against that. - -You can also decorate your merge with similar attributes as you did for the commit using: - -- `id`--> To override the default ID with custom ID -- `tag`--> To add a custom tag to your merge commit -- `type`--> To override the default shape of merge commit. Here you can use other commit type mentioned earlier. - -And you can choose to use none, some or all of these attributes together. -For example: `merge develop id: "my_custom_id" tag: "my_custom_tag" type: REVERSE` - -Let us see how this works with the help of the following diagram: - -```mermaid-example - gitGraph - commit id: "1" - commit id: "2" - branch nice_feature - checkout nice_feature - commit id: "3" - checkout main - commit id: "4" - checkout nice_feature - branch very_nice_feature - checkout very_nice_feature - commit id: "5" - checkout main - commit id: "6" - checkout nice_feature - commit id: "7" - checkout main - merge nice_feature id: "customID" tag: "customTag" type: REVERSE - checkout very_nice_feature - commit id: "8" - checkout main - commit id: "9" -``` - -```mermaid - gitGraph - commit id: "1" - commit id: "2" - branch nice_feature - checkout nice_feature - commit id: "3" - checkout main - commit id: "4" - checkout nice_feature - branch very_nice_feature - checkout very_nice_feature - commit id: "5" - checkout main - commit id: "6" - checkout nice_feature - commit id: "7" - checkout main - merge nice_feature id: "customID" tag: "customTag" type: REVERSE - checkout very_nice_feature - commit id: "8" - checkout main - commit id: "9" -``` - -### Cherry Pick commit from another branch - -Similar to how 'git' allows you to cherry-pick a commit from **another branch** onto the **current** branch, Mermaid also supports this functionality. You can also cherry-pick a commit from another branch using the `cherry-pick` keyword. - -To use the `cherry-pick` keyword, you must specify the id using the `id` attribute, followed by `:` and your desired commit id within a `""` quote. For example: - -`cherry-pick id: "your_custom_id"` - -Here, a new commit representing the cherry-pick is created on the current branch, and is visually highlighted in the diagram with a **cherry** and a tag depicting the commit id from which it is cherry-picked from. - -A few important rules to note here are: - -1. You need to provide the `id` for an existing commit to be cherry-picked. If given commit id does not exist it will result in an error. For this, make use of the `commit id:$value` format of declaring commits. See the examples from above. -2. The given commit must not exist on the current branch. The cherry-picked commit must always be a different branch than the current branch. -3. Current branch must have at least one commit, before you can cherry-pick, otherwise it will cause an error is throw. - -Let see an example: - -```mermaid-example - gitGraph - commit id: "ZERO" - branch develop - commit id:"A" - checkout main - commit id:"ONE" - checkout develop - commit id:"B" - checkout main - commit id:"TWO" - cherry-pick id:"A" - commit id:"THREE" - checkout develop - commit id:"C" -``` - -```mermaid - gitGraph - commit id: "ZERO" - branch develop - commit id:"A" - checkout main - commit id:"ONE" - checkout develop - commit id:"B" - checkout main - commit id:"TWO" - cherry-pick id:"A" - commit id:"THREE" - checkout develop - commit id:"C" -``` - -## Gitgraph specific configuration options - -In Mermaid, you have the option to configure the gitgraph diagram. You can configure the following options: - -- `showBranches` : Boolean, default is `true`. If set to `false`, the branches are not shown in the diagram. -- `showCommitLabel` : Boolean, default is `true`. If set to `false`, the commit labels are not shown in the diagram. -- `mainBranchName` : String, default is `main`. The name of the default/root branch. -- `mainBranchOrder` : Position of the main branch in the list of branches. default is `0`, meaning, by default `main` branch is the first in the order. - -Let's look at them one by one. - -## Hiding Branch names and lines - -Sometimes you may want to hide the branch names and lines from the diagram. You can do this by using the `showBranches` keyword. By default its value is `true`. You can set it to `false` using directives. - -Usage example: - -```mermaid-example -%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': false}} }%% - gitGraph - commit - branch hotfix - checkout hotfix - commit - branch develop - checkout develop - commit id:"ash" tag:"abc" - branch featureB - checkout featureB - commit type:HIGHLIGHT - checkout main - checkout hotfix - commit type:NORMAL - checkout develop - commit type:REVERSE - checkout featureB - commit - checkout main - merge hotfix - checkout featureB - commit - checkout develop - branch featureA - commit - checkout develop - merge hotfix - checkout featureA - commit - checkout featureB - commit - checkout develop - merge featureA - branch release - checkout release - commit - checkout main - commit - checkout release - merge main - checkout develop - merge release -``` - -```mermaid -%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': false}} }%% - gitGraph - commit - branch hotfix - checkout hotfix - commit - branch develop - checkout develop - commit id:"ash" tag:"abc" - branch featureB - checkout featureB - commit type:HIGHLIGHT - checkout main - checkout hotfix - commit type:NORMAL - checkout develop - commit type:REVERSE - checkout featureB - commit - checkout main - merge hotfix - checkout featureB - commit - checkout develop - branch featureA - commit - checkout develop - merge hotfix - checkout featureA - commit - checkout featureB - commit - checkout develop - merge featureA - branch release - checkout release - commit - checkout main - commit - checkout release - merge main - checkout develop - merge release -``` - -## Commit labels Layout: Rotated or Horizontal - -Mermaid supports two types of commit labels layout. The default layout is **rotated**, which means the labels are placed below the commit circle, rotated at 45 degrees for better readability. This is particularly useful for commits with long labels. - -The other option is **horizontal**, which means the labels are placed below the commit circle centred horizontally, and are not rotated. This is particularly useful for commits with short labels. - -You can change the layout of the commit labels by using the `rotateCommitLabel` keyword in the directive. It defaults to `true`, which means the commit labels are rotated. - -Usage example: Rotated commit labels - -```mermaid-example -%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'rotateCommitLabel': true}} }%% -gitGraph - commit id: "feat(api): ..." - commit id: "a" - commit id: "b" - commit id: "fix(client): .extra long label.." - branch c2 - commit id: "feat(modules): ..." - commit id: "test(client): ..." - checkout main - commit id: "fix(api): ..." - commit id: "ci: ..." - branch b1 - commit - branch b2 - commit -``` - -```mermaid -%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'rotateCommitLabel': true}} }%% -gitGraph - commit id: "feat(api): ..." - commit id: "a" - commit id: "b" - commit id: "fix(client): .extra long label.." - branch c2 - commit id: "feat(modules): ..." - commit id: "test(client): ..." - checkout main - commit id: "fix(api): ..." - commit id: "ci: ..." - branch b1 - commit - branch b2 - commit -``` - -Usage example: Horizontal commit labels - -```mermaid-example -%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'rotateCommitLabel': false}} }%% -gitGraph - commit id: "feat(api): ..." - commit id: "a" - commit id: "b" - commit id: "fix(client): .extra long label.." - branch c2 - commit id: "feat(modules): ..." - commit id: "test(client): ..." - checkout main - commit id: "fix(api): ..." - commit id: "ci: ..." - branch b1 - commit - branch b2 - commit -``` - -```mermaid -%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'rotateCommitLabel': false}} }%% -gitGraph - commit id: "feat(api): ..." - commit id: "a" - commit id: "b" - commit id: "fix(client): .extra long label.." - branch c2 - commit id: "feat(modules): ..." - commit id: "test(client): ..." - checkout main - commit id: "fix(api): ..." - commit id: "ci: ..." - branch b1 - commit - branch b2 - commit -``` - -## Hiding commit labels - -Sometimes you may want to hide the commit labels from the diagram. You can do this by using the `showCommitLabel` keyword. By default its value is `true`. You can set it to `false` using directives. - -Usage example: - -```mermaid-example -%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': false,'showCommitLabel': false}} }%% - gitGraph - commit - branch hotfix - checkout hotfix - commit - branch develop - checkout develop - commit id:"ash" - branch featureB - checkout featureB - commit type:HIGHLIGHT - checkout main - checkout hotfix - commit type:NORMAL - checkout develop - commit type:REVERSE - checkout featureB - commit - checkout main - merge hotfix - checkout featureB - commit - checkout develop - branch featureA - commit - checkout develop - merge hotfix - checkout featureA - commit - checkout featureB - commit - checkout develop - merge featureA - branch release - checkout release - commit - checkout main - commit - checkout release - merge main - checkout develop - merge release -``` - -```mermaid -%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': false,'showCommitLabel': false}} }%% - gitGraph - commit - branch hotfix - checkout hotfix - commit - branch develop - checkout develop - commit id:"ash" - branch featureB - checkout featureB - commit type:HIGHLIGHT - checkout main - checkout hotfix - commit type:NORMAL - checkout develop - commit type:REVERSE - checkout featureB - commit - checkout main - merge hotfix - checkout featureB - commit - checkout develop - branch featureA - commit - checkout develop - merge hotfix - checkout featureA - commit - checkout featureB - commit - checkout develop - merge featureA - branch release - checkout release - commit - checkout main - commit - checkout release - merge main - checkout develop - merge release -``` - -## Customizing main branch name - -Sometimes you may want to customize the name of the main/default branch. You can do this by using the `mainBranchName` keyword. By default its value is `main`. You can set it to any string using directives. - -Usage example: - -```mermaid-example -%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true, 'showCommitLabel':true,'mainBranchName': 'MetroLine1'}} }%% - gitGraph - commit id:"NewYork" - commit id:"Dallas" - branch MetroLine2 - commit id:"LosAngeles" - commit id:"Chicago" - commit id:"Houston" - branch MetroLine3 - commit id:"Phoenix" - commit type: HIGHLIGHT id:"Denver" - commit id:"Boston" - checkout MetroLine1 - commit id:"Atlanta" - merge MetroLine3 - commit id:"Miami" - commit id:"Washington" - merge MetroLine2 tag:"MY JUNCTION" - commit id:"Boston" - commit id:"Detroit" - commit type:REVERSE id:"SanFrancisco" -``` - -```mermaid -%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true, 'showCommitLabel':true,'mainBranchName': 'MetroLine1'}} }%% - gitGraph - commit id:"NewYork" - commit id:"Dallas" - branch MetroLine2 - commit id:"LosAngeles" - commit id:"Chicago" - commit id:"Houston" - branch MetroLine3 - commit id:"Phoenix" - commit type: HIGHLIGHT id:"Denver" - commit id:"Boston" - checkout MetroLine1 - commit id:"Atlanta" - merge MetroLine3 - commit id:"Miami" - commit id:"Washington" - merge MetroLine2 tag:"MY JUNCTION" - commit id:"Boston" - commit id:"Detroit" - commit type:REVERSE id:"SanFrancisco" -``` - -Look at the imaginary railroad map created using Mermaid. Here, we have changed the default main branch name to `MetroLine1`. - -## Customizing branch ordering - -In Mermaid, by default the branches are shown in the order of their definition or appearance in the diagram code. - -Sometimes you may want to customize the order of the branches. You can do this by using the `order` keyword next the branch definition. You can set it to a positive number. - -Mermaid follows the given precedence order of the `order` keyword. - -- Main branch is always shown first as it has default order value of `0`. (unless its order is modified and changed from `0` using the `mainBranchOrder` keyword in the config) -- Next, All branches without an `order` are shown in the order of their appearance in the diagram code. -- Next, All branches with an `order` are shown in the order of their `order` value. - -To fully control the order of all the branches, you must define `order` for all the branches. - -Usage example: - -```mermaid-example -%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true, 'showCommitLabel':true}} }%% - gitGraph - commit - branch test1 order: 3 - branch test2 order: 2 - branch test3 order: 1 - -``` - -```mermaid -%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true, 'showCommitLabel':true}} }%% - gitGraph - commit - branch test1 order: 3 - branch test2 order: 2 - branch test3 order: 1 - -``` - -Look at the diagram, all the branches are following the order defined. - -Usage example: - -```mermaid-example -%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true, 'showCommitLabel':true,'mainBranchOrder': 2}} }%% - gitGraph - commit - branch test1 order: 3 - branch test2 - branch test3 - branch test4 order: 1 - -``` - -```mermaid -%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true, 'showCommitLabel':true,'mainBranchOrder': 2}} }%% - gitGraph - commit - branch test1 order: 3 - branch test2 - branch test3 - branch test4 order: 1 - -``` - -Look at the diagram, here, all the branches without a specified order are drawn in their order of definition. -Then, `test4` branch is drawn because the order of `1`. -Then, `main` branch is drawn because the order of `2`. -And, lastly `test1`is drawn because the order of `3`. - -NOTE: Because we have overridden the `mainBranchOrder` to `2`, the `main` branch is not drawn in the beginning, instead follows the ordering. - -Here, we have changed the default main branch name to `MetroLine1`. - -## Themes - -Mermaid supports a bunch of pre-defined themes which you can use to find the right one for you. PS: you can actually override an existing theme's variable to get your own custom theme going. Learn more about theming your diagram [here](../config/theming.md). - -The following are the different pre-defined theme options: - -- `base` -- `forest` -- `dark` -- `default` -- `neutral` - -**NOTE**: To change theme you can either use the `initialize` call or _directives_. Learn more about [directives](../config/directives.md) -Let's put them to use, and see how our sample diagram looks in different themes: - -### Base Theme - -```mermaid-example -%%{init: { 'logLevel': 'debug', 'theme': 'base' } }%% - gitGraph - commit - branch hotfix - checkout hotfix - commit - branch develop - checkout develop - commit id:"ash" tag:"abc" - branch featureB - checkout featureB - commit type:HIGHLIGHT - checkout main - checkout hotfix - commit type:NORMAL - checkout develop - commit type:REVERSE - checkout featureB - commit - checkout main - merge hotfix - checkout featureB - commit - checkout develop - branch featureA - commit - checkout develop - merge hotfix - checkout featureA - commit - checkout featureB - commit - checkout develop - merge featureA - branch release - checkout release - commit - checkout main - commit - checkout release - merge main - checkout develop - merge release -``` - -```mermaid -%%{init: { 'logLevel': 'debug', 'theme': 'base' } }%% - gitGraph - commit - branch hotfix - checkout hotfix - commit - branch develop - checkout develop - commit id:"ash" tag:"abc" - branch featureB - checkout featureB - commit type:HIGHLIGHT - checkout main - checkout hotfix - commit type:NORMAL - checkout develop - commit type:REVERSE - checkout featureB - commit - checkout main - merge hotfix - checkout featureB - commit - checkout develop - branch featureA - commit - checkout develop - merge hotfix - checkout featureA - commit - checkout featureB - commit - checkout develop - merge featureA - branch release - checkout release - commit - checkout main - commit - checkout release - merge main - checkout develop - merge release -``` - -### Forest Theme - -```mermaid-example -%%{init: { 'logLevel': 'debug', 'theme': 'forest' } }%% - gitGraph - commit - branch hotfix - checkout hotfix - commit - branch develop - checkout develop - commit id:"ash" tag:"abc" - branch featureB - checkout featureB - commit type:HIGHLIGHT - checkout main - checkout hotfix - commit type:NORMAL - checkout develop - commit type:REVERSE - checkout featureB - commit - checkout main - merge hotfix - checkout featureB - commit - checkout develop - branch featureA - commit - checkout develop - merge hotfix - checkout featureA - commit - checkout featureB - commit - checkout develop - merge featureA - branch release - checkout release - commit - checkout main - commit - checkout release - merge main - checkout develop - merge release -``` - -```mermaid -%%{init: { 'logLevel': 'debug', 'theme': 'forest' } }%% - gitGraph - commit - branch hotfix - checkout hotfix - commit - branch develop - checkout develop - commit id:"ash" tag:"abc" - branch featureB - checkout featureB - commit type:HIGHLIGHT - checkout main - checkout hotfix - commit type:NORMAL - checkout develop - commit type:REVERSE - checkout featureB - commit - checkout main - merge hotfix - checkout featureB - commit - checkout develop - branch featureA - commit - checkout develop - merge hotfix - checkout featureA - commit - checkout featureB - commit - checkout develop - merge featureA - branch release - checkout release - commit - checkout main - commit - checkout release - merge main - checkout develop - merge release -``` - -### Default Theme - -```mermaid-example -%%{init: { 'logLevel': 'debug', 'theme': 'default' } }%% - gitGraph - commit type:HIGHLIGHT - branch hotfix - checkout hotfix - commit - branch develop - checkout develop - commit id:"ash" tag:"abc" - branch featureB - checkout featureB - commit type:HIGHLIGHT - checkout main - checkout hotfix - commit type:NORMAL - checkout develop - commit type:REVERSE - checkout featureB - commit - checkout main - merge hotfix - checkout featureB - commit - checkout develop - branch featureA - commit - checkout develop - merge hotfix - checkout featureA - commit - checkout featureB - commit - checkout develop - merge featureA - branch release - checkout release - commit - checkout main - commit - checkout release - merge main - checkout develop - merge release -``` - -```mermaid -%%{init: { 'logLevel': 'debug', 'theme': 'default' } }%% - gitGraph - commit type:HIGHLIGHT - branch hotfix - checkout hotfix - commit - branch develop - checkout develop - commit id:"ash" tag:"abc" - branch featureB - checkout featureB - commit type:HIGHLIGHT - checkout main - checkout hotfix - commit type:NORMAL - checkout develop - commit type:REVERSE - checkout featureB - commit - checkout main - merge hotfix - checkout featureB - commit - checkout develop - branch featureA - commit - checkout develop - merge hotfix - checkout featureA - commit - checkout featureB - commit - checkout develop - merge featureA - branch release - checkout release - commit - checkout main - commit - checkout release - merge main - checkout develop - merge release -``` - -### Dark Theme - -```mermaid-example -%%{init: { 'logLevel': 'debug', 'theme': 'dark' } }%% - gitGraph - commit - branch hotfix - checkout hotfix - commit - branch develop - checkout develop - commit id:"ash" tag:"abc" - branch featureB - checkout featureB - commit type:HIGHLIGHT - checkout main - checkout hotfix - commit type:NORMAL - checkout develop - commit type:REVERSE - checkout featureB - commit - checkout main - merge hotfix - checkout featureB - commit - checkout develop - branch featureA - commit - checkout develop - merge hotfix - checkout featureA - commit - checkout featureB - commit - checkout develop - merge featureA - branch release - checkout release - commit - checkout main - commit - checkout release - merge main - checkout develop - merge release -``` - -```mermaid -%%{init: { 'logLevel': 'debug', 'theme': 'dark' } }%% - gitGraph - commit - branch hotfix - checkout hotfix - commit - branch develop - checkout develop - commit id:"ash" tag:"abc" - branch featureB - checkout featureB - commit type:HIGHLIGHT - checkout main - checkout hotfix - commit type:NORMAL - checkout develop - commit type:REVERSE - checkout featureB - commit - checkout main - merge hotfix - checkout featureB - commit - checkout develop - branch featureA - commit - checkout develop - merge hotfix - checkout featureA - commit - checkout featureB - commit - checkout develop - merge featureA - branch release - checkout release - commit - checkout main - commit - checkout release - merge main - checkout develop - merge release -``` - -### Neutral Theme - -```mermaid-example -%%{init: { 'logLevel': 'debug', 'theme': 'neutral' } }%% - gitGraph - commit - branch hotfix - checkout hotfix - commit - branch develop - checkout develop - commit id:"ash" tag:"abc" - branch featureB - checkout featureB - commit type:HIGHLIGHT - checkout main - checkout hotfix - commit type:NORMAL - checkout develop - commit type:REVERSE - checkout featureB - commit - checkout main - merge hotfix - checkout featureB - commit - checkout develop - branch featureA - commit - checkout develop - merge hotfix - checkout featureA - commit - checkout featureB - commit - checkout develop - merge featureA - branch release - checkout release - commit - checkout main - commit - checkout release - merge main - checkout develop - merge release -``` - -```mermaid -%%{init: { 'logLevel': 'debug', 'theme': 'neutral' } }%% - gitGraph - commit - branch hotfix - checkout hotfix - commit - branch develop - checkout develop - commit id:"ash" tag:"abc" - branch featureB - checkout featureB - commit type:HIGHLIGHT - checkout main - checkout hotfix - commit type:NORMAL - checkout develop - commit type:REVERSE - checkout featureB - commit - checkout main - merge hotfix - checkout featureB - commit - checkout develop - branch featureA - commit - checkout develop - merge hotfix - checkout featureA - commit - checkout featureB - commit - checkout develop - merge featureA - branch release - checkout release - commit - checkout main - commit - checkout release - merge main - checkout develop - merge release -``` - -## Customize using Theme Variables - -Mermaid allows you to customize your diagram using theme variables which govern the look and feel of various elements of the diagram. - -For understanding let us take a sample diagram with theme `default`, the default values of the theme variables is picked automatically from the theme. Later on we will see how to override the default values of the theme variables. - -See how the default theme is used to set the colors for the branches: - -```mermaid-example -%%{init: { 'logLevel': 'debug', 'theme': 'default' } }%% - gitGraph - commit - branch develop - commit tag:"v1.0.0" - commit - checkout main - commit type: HIGHLIGHT - commit - merge develop - commit - branch featureA - commit -``` - -```mermaid -%%{init: { 'logLevel': 'debug', 'theme': 'default' } }%% - gitGraph - commit - branch develop - commit tag:"v1.0.0" - commit - checkout main - commit type: HIGHLIGHT - commit - merge develop - commit - branch featureA - commit -``` - -> #### IMPORTANT: -> -> Mermaid supports the theme variables to override the default values for **up to 8 branches**, i.e., you can set the color/styling of up to 8 branches using theme variables. After this threshold of 8 branches, the theme variables are reused in the cyclic manner, i.e. the 9th branch will use the color/styling of the 1st branch, or the branch at index position '8' will use the color/styling of the branch at index position '0'. -> _More on this in the next section. See examples on **Customizing branch label colors** below_ - -### Customizing branch colors - -You can customize the branch colors using the `git0` to `git7` theme variables. Mermaid allows you to set the colors for up-to 8 branches, where `git0` variable will drive the value of the first branch, `git1` will drive the value of the second branch and so on. - -NOTE: Default values for these theme variables are picked from the selected theme. If you want to override the default values, you can use the `initialize` call to add your custom theme variable values. - -Example: - -Now let's override the default values for the `git0` to `git3` variables: - -```mermaid-example - %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { - 'git0': '#ff0000', - 'git1': '#00ff00', - 'git2': '#0000ff', - 'git3': '#ff00ff', - 'git4': '#00ffff', - 'git5': '#ffff00', - 'git6': '#ff00ff', - 'git7': '#00ffff' - } } }%% - gitGraph - commit - branch develop - commit tag:"v1.0.0" - commit - checkout main - commit type: HIGHLIGHT - commit - merge develop - commit - branch featureA - commit - -``` - -```mermaid - %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { - 'git0': '#ff0000', - 'git1': '#00ff00', - 'git2': '#0000ff', - 'git3': '#ff00ff', - 'git4': '#00ffff', - 'git5': '#ffff00', - 'git6': '#ff00ff', - 'git7': '#00ffff' - } } }%% - gitGraph - commit - branch develop - commit tag:"v1.0.0" - commit - checkout main - commit type: HIGHLIGHT - commit - merge develop - commit - branch featureA - commit - -``` - -See how the branch colors are changed to the values specified in the theme variables. - -### Customizing branch label colors - -You can customize the branch label colors using the `gitBranchLabel0` to `gitBranchLabel7` theme variables. Mermaid allows you to set the colors for up-to 8 branches, where `gitBranchLabel0` variable will drive the value of the first branch label, `gitBranchLabel1` will drive the value of the second branch label and so on. - -Lets see how the default theme is used to set the colors for the branch labels: - -Now let's override the default values for the `gitBranchLabel0` to `gitBranchLabel2` variables: - -```mermaid-example - %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { - 'gitBranchLabel0': '#ffffff', - 'gitBranchLabel1': '#ffffff', - 'gitBranchLabel2': '#ffffff', - 'gitBranchLabel3': '#ffffff', - 'gitBranchLabel4': '#ffffff', - 'gitBranchLabel5': '#ffffff', - 'gitBranchLabel6': '#ffffff', - 'gitBranchLabel7': '#ffffff', - 'gitBranchLabel8': '#ffffff', - 'gitBranchLabel9': '#ffffff' - } } }%% - gitGraph - checkout main - branch branch1 - branch branch2 - branch branch3 - branch branch4 - branch branch5 - branch branch6 - branch branch7 - branch branch8 - branch branch9 - checkout branch1 - commit -``` - -```mermaid - %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { - 'gitBranchLabel0': '#ffffff', - 'gitBranchLabel1': '#ffffff', - 'gitBranchLabel2': '#ffffff', - 'gitBranchLabel3': '#ffffff', - 'gitBranchLabel4': '#ffffff', - 'gitBranchLabel5': '#ffffff', - 'gitBranchLabel6': '#ffffff', - 'gitBranchLabel7': '#ffffff', - 'gitBranchLabel8': '#ffffff', - 'gitBranchLabel9': '#ffffff' - } } }%% - gitGraph - checkout main - branch branch1 - branch branch2 - branch branch3 - branch branch4 - branch branch5 - branch branch6 - branch branch7 - branch branch8 - branch branch9 - checkout branch1 - commit -``` - -Here, you can see that `branch8` and `branch9` colors and the styles are being picked from branch at index position `0` (`main`) and `1`(`branch1`) respectively, i.e., **branch themeVariables are repeated cyclically**. - -### Customizing Commit colors - -You can customize commit using the `commitLabelColor` and `commitLabelBackground` theme variables for changes in the commit label color and background color respectively. - -Example: -Now let's override the default values for the `commitLabelColor` to `commitLabelBackground` variables: - -```mermaid-example - %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { - 'commitLabelColor': '#ff0000', - 'commitLabelBackground': '#00ff00' - } } }%% - gitGraph - commit - branch develop - commit tag:"v1.0.0" - commit - checkout main - commit type: HIGHLIGHT - commit - merge develop - commit - branch featureA - commit - -``` - -```mermaid - %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { - 'commitLabelColor': '#ff0000', - 'commitLabelBackground': '#00ff00' - } } }%% - gitGraph - commit - branch develop - commit tag:"v1.0.0" - commit - checkout main - commit type: HIGHLIGHT - commit - merge develop - commit - branch featureA - commit - -``` - -See how the commit label color and background color are changed to the values specified in the theme variables. - -### Customizing Commit Label Font Size - -You can customize commit using the `commitLabelFontSize` theme variables for changing in the font soze of the commit label . - -Example: -Now let's override the default values for the `commitLabelFontSize` variable: - -```mermaid-example - %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { - 'commitLabelColor': '#ff0000', - 'commitLabelBackground': '#00ff00', - 'commitLabelFontSize': '16px' - } } }%% - gitGraph - commit - branch develop - commit tag:"v1.0.0" - commit - checkout main - commit type: HIGHLIGHT - commit - merge develop - commit - branch featureA - commit - -``` - -```mermaid - %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { - 'commitLabelColor': '#ff0000', - 'commitLabelBackground': '#00ff00', - 'commitLabelFontSize': '16px' - } } }%% - gitGraph - commit - branch develop - commit tag:"v1.0.0" - commit - checkout main - commit type: HIGHLIGHT - commit - merge develop - commit - branch featureA - commit - -``` - -See how the commit label font size changed. - -### Customizing Tag Label Font Size - -You can customize commit using the `tagLabelFontSize` theme variables for changing in the font soze of the tag label . - -Example: -Now let's override the default values for the `tagLabelFontSize` variable: - -```mermaid-example - %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { - 'commitLabelColor': '#ff0000', - 'commitLabelBackground': '#00ff00', - 'tagLabelFontSize': '16px' - } } }%% - gitGraph - commit - branch develop - commit tag:"v1.0.0" - commit - checkout main - commit type: HIGHLIGHT - commit - merge develop - commit - branch featureA - commit - -``` - -```mermaid - %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { - 'commitLabelColor': '#ff0000', - 'commitLabelBackground': '#00ff00', - 'tagLabelFontSize': '16px' - } } }%% - gitGraph - commit - branch develop - commit tag:"v1.0.0" - commit - checkout main - commit type: HIGHLIGHT - commit - merge develop - commit - branch featureA - commit - -``` - -See how the tag label font size changed. - -### Customizing Tag colors - -You can customize tag using the `tagLabelColor`,`tagLabelBackground` and `tagLabelBorder` theme variables for changes in the tag label color,tag label background color and tag label border respectively. -Example: -Now let's override the default values for the `tagLabelColor`, `tagLabelBackground` and to `tagLabelBorder` variables: - -```mermaid-example - %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { - 'tagLabelColor': '#ff0000', - 'tagLabelBackground': '#00ff00', - 'tagLabelBorder': '#0000ff' - } } }%% - gitGraph - commit - branch develop - commit tag:"v1.0.0" - commit - checkout main - commit type: HIGHLIGHT - commit - merge develop - commit - branch featureA - commit - -``` - -```mermaid - %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { - 'tagLabelColor': '#ff0000', - 'tagLabelBackground': '#00ff00', - 'tagLabelBorder': '#0000ff' - } } }%% - gitGraph - commit - branch develop - commit tag:"v1.0.0" - commit - checkout main - commit type: HIGHLIGHT - commit - merge develop - commit - branch featureA - commit - -``` - -See how the tag colors are changed to the values specified in the theme variables. - -### Customizing Highlight commit colors - -You can customize the highlight commit colors in relation to the branch it is on using the `gitInv0` to `gitInv7` theme variables. Mermaid allows you to set the colors for up-to 8 branches specific highlight commit, where `gitInv0` variable will drive the value of the first branch's highlight commits, `gitInv1` will drive the value of the second branch's highlight commit label and so on. - -Example: - -Now let's override the default values for the `git0` to `git3` variables: - -```mermaid-example - %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { - 'gitInv0': '#ff0000' - } } }%% - gitGraph - commit - branch develop - commit tag:"v1.0.0" - commit - checkout main - commit type: HIGHLIGHT - commit - merge develop - commit - branch featureA - commit - -``` - -```mermaid - %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { - 'gitInv0': '#ff0000' - } } }%% - gitGraph - commit - branch develop - commit tag:"v1.0.0" - commit - checkout main - commit type: HIGHLIGHT - commit - merge develop - commit - branch featureA - commit - -``` - -See how the highlighted commit color on the first branch is changed to the value specified in the theme variable `gitInv0`. diff --git a/docs/syntax/mindmap.md b/docs/syntax/mindmap.md deleted file mode 100644 index 26a1065be..000000000 --- a/docs/syntax/mindmap.md +++ /dev/null @@ -1,243 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/mindmap.md](../../packages/mermaid/src/docs/syntax/mindmap.md). - -# Mindmap - -> Mindmap: This is an experimental diagram for now. The syntax and properties can change in future releases. The syntax is stable except for the icon integration which is the experimental part. - -"A mind map is a diagram used to visually organize information into a hierarchy, showing relationships among pieces of the whole. It is often created around a single concept, drawn as an image in the center of a blank page, to which associated representations of ideas such as images, words and parts of words are added. Major ideas are connected directly to the central concept, and other ideas branch out from those major ideas." Wikipedia - -### An example of a mindmap. - -```mermaid-example -mindmap - root((mindmap)) - Origins - Long history - ::icon(fa fa-book) - Popularisation - British popular psychology author Tony Buzan - Research - On effectivness<br/>and eatures - On Automatic creation - Uses - Creative techniques - Strategic planning - Argument mapping - Tools - Pen and paper - Mermaid - -``` - -```mermaid -mindmap - root((mindmap)) - Origins - Long history - ::icon(fa fa-book) - Popularisation - British popular psychology author Tony Buzan - Research - On effectivness<br/>and eatures - On Automatic creation - Uses - Creative techniques - Strategic planning - Argument mapping - Tools - Pen and paper - Mermaid - -``` - -## Syntax - -The syntax for creating Mindmaps is simple and relies on indentation for setting the levels in the hierarchy. - -In the following example you can see how there are 3 different levels. One with starting at the left of the text and another level with two rows starting at the same column, defining the node A. At the end there is one more level where the text is indented further then the previous lines defining the nodes B and C. - - mindmap - Root - A - B - C - -In summary is a simple text outline where there are one node at the root level called `Root` which has one child `A`. `A` in turn has two children `B`and `C`. In the diagram below we can see this rendered as a mindmap. - -```mermaid-example -mindmap -Root - A - B - C -``` - -```mermaid -mindmap -Root - A - B - C -``` - -In this way we can use a text outline to generate a hierarchical mindmap. - -## Different shapes - -Mermaids mindmaps can show node using different shapes. When specifying a shape for a node the syntax for the is similar to flowchart nodes, with an id followed by the shape definition and with the text within the shape delimiters. Where possible we try/will try to keep the same shapes as for flowcharts even though they are not all supported from the start. - -Mindmap can show the following shapes: - -### Square - -```mermaid-example -mindmap - id[I am a square] -``` - -```mermaid -mindmap - id[I am a square] -``` - -### Rounded square - -```mermaid-example -mindmap - id(I am a rounded square) -``` - -```mermaid -mindmap - id(I am a rounded square) -``` - -### Circle - -```mermaid-example -mindmap - id((I am a circle)) -``` - -```mermaid -mindmap - id((I am a circle)) -``` - -### Bang - -```mermaid-example -mindmap - id))I am a bang(( -``` - -```mermaid -mindmap - id))I am a bang(( -``` - -### Cloud - -```mermaid-example -mindmap - id)I am a cloud( -``` - -```mermaid -mindmap - id)I am a cloud( -``` - -### Default - -```mermaid-example -mindmap - I am the default shape -``` - -```mermaid -mindmap - I am the default shape -``` - -More shapes will be added, beginning with the shapes available in flowcharts. - -# Icons and classes - -## icons - -As with flowcharts you can add icons to your nodes but with an updated syntax. The styling for the font based icons are added during the integration so that they are available for the web page. _This is not something a diagram author can do but has to be done with the site administrator or the integrator_. Once the icon fonts are in place you add them to the mind map nodes using the `::icon()` syntax. You place the classes for the icon within the parenthesis like in the following example where icons for material design and fontawesome 4 are displayed. The intention is that this approach should be used for all diagrams supporting icons. **Experimental feature:** This wider scope is also the reason Mindmaps are experimental as this syntax and approach could change. - -```mermaid-example -mindmap - Root - A - ::icon(fa fa-book) - B(B) - ::icon(mdi mdi-skull-outline) -``` - -```mermaid -mindmap - Root - A - ::icon(fa fa-book) - B(B) - ::icon(mdi mdi-skull-outline) -``` - -## Classes - -Again the syntax for adding classes is similar to flowcharts. You can add classes using a triple colon following a number of css classes separated by space. In the following example one of the nodes has two custom classes attached urgent turning the background red and the text white and large increasing the font size: - -```mermaid-example -mindmap - Root - A[A] - :::urgent large - B(B) - C -``` - -```mermaid -mindmap - Root - A[A] - :::urgent large - B(B) - C -``` - -_These classes needs top be supplied by the site administrator._ - -## Unclear indentation - -The actual indentation does not really matter only compared with the previous rows. If we take the previous example and disrupt it a little we can se how the calculations are performed. Let us start with placing C with a smaller indentation than `B`but larger then `A`. - - mindmap - Root - A - B - C - -This outline is unclear as `B` clearly is a child of `A` but when we move on to `C` the clarity is lost. `C` is not a child of `B` with a higher indentation nor does it have the same indentation as `B`. The only thing that is clear is that the first node with smaller indentation, indicating a parent, is A. Then Mermaid relies on this known truth and compensates for the unclear indentation and selects `A` as a parent of `C` leading till the same diagram with `B` and `C` as siblings. - -```mermaid-example -mindmap -Root - A - B - C -``` - -```mermaid -mindmap -Root - A - B - C -``` diff --git a/docs/syntax/pie.md b/docs/syntax/pie.md deleted file mode 100644 index 6801b3619..000000000 --- a/docs/syntax/pie.md +++ /dev/null @@ -1,66 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/pie.md](../../packages/mermaid/src/docs/syntax/pie.md). - -# Pie chart diagrams - -> A pie chart (or a circle chart) is a circular statistical graphic, which is divided into slices to illustrate numerical proportion. In a pie chart, the arc length of each slice (and consequently its central angle and area), is proportional to the quantity it represents. While it is named for its resemblance to a pie which has been sliced, there are variations on the way it can be presented. The earliest known pie chart is generally credited to William Playfair's Statistical Breviary of 1801 -> \-Wikipedia - -Mermaid can render Pie Chart diagrams. - -```mermaid-example -pie title Pets adopted by volunteers - "Dogs" : 386 - "Cats" : 85 - "Rats" : 15 -``` - -```mermaid -pie title Pets adopted by volunteers - "Dogs" : 386 - "Cats" : 85 - "Rats" : 15 -``` - -## Syntax - -Drawing a pie chart is really simple in mermaid. - -- Start with `pie` keyword to begin the diagram - - `showData` to render the actual data values after the legend text. This is **_OPTIONAL_** -- Followed by `title` keyword and its value in string to give a title to the pie-chart. This is **_OPTIONAL_** -- Followed by dataSet. Pie slices will be ordered clockwise in the same order as the labels. - - `label` for a section in the pie diagram within `" "` quotes. - - Followed by `:` colon as separator - - Followed by `positive numeric value` (supported upto two decimal places) - -\[pie] \[showData] (OPTIONAL) -\[title] \[titlevalue] (OPTIONAL) -"\[datakey1]" : \[dataValue1] -"\[datakey2]" : \[dataValue2] -"\[datakey3]" : \[dataValue3] -. -. - -## Example - -```mermaid-example -pie showData - title Key elements in Product X - "Calcium" : 42.96 - "Potassium" : 50.05 - "Magnesium" : 10.01 - "Iron" : 5 -``` - -```mermaid -pie showData - title Key elements in Product X - "Calcium" : 42.96 - "Potassium" : 50.05 - "Magnesium" : 10.01 - "Iron" : 5 -``` diff --git a/docs/syntax/requirementDiagram.md b/docs/syntax/requirementDiagram.md deleted file mode 100644 index f8a0cafa9..000000000 --- a/docs/syntax/requirementDiagram.md +++ /dev/null @@ -1,243 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/requirementDiagram.md](../../packages/mermaid/src/docs/syntax/requirementDiagram.md). - -# Requirement Diagram - -> A Requirement diagram provides a visualization for requirements and their connections, to each other and other documented elements. The modeling specs follow those defined by SysML v1.6. - -Rendering requirements is straightforward. - -```mermaid-example - requirementDiagram - - requirement test_req { - id: 1 - text: the test text. - risk: high - verifymethod: test - } - - element test_entity { - type: simulation - } - - test_entity - satisfies -> test_req -``` - -```mermaid - requirementDiagram - - requirement test_req { - id: 1 - text: the test text. - risk: high - verifymethod: test - } - - element test_entity { - type: simulation - } - - test_entity - satisfies -> test_req -``` - -## Syntax - -There are three types of components to a requirement diagram: requirement, element, and relationship. - -The grammar for defining each is defined below. Words denoted in angle brackets, such as `<word>`, are enumerated keywords that have options elaborated in a table. `user_defined_...` is use in any place where user input is expected. - -An important note on user text: all input can be surrounded in quotes or not. For example, both `Id: "here is an example"` and `Id: here is an example` are both valid. However, users must be careful with unquoted input. The parser will fail if another keyword is detected. - -### Requirement - -A requirement definition contains a requirement type, name, id, text, risk, and verification method. The syntax follows: - - <type> user_defined_name { - id: user_defined_id - text: user_defined text - risk: <risk> - verifymethod: <method> - } - -Type, risk, and method are enumerations defined in SysML. - -| Keyword | Options | -| ------------------ | ----------------------------------------------------------------------------------------------------------------------- | -| Type | requirement, functionalRequirement, interfaceRequirement, performanceRequirement, physicalRequirement, designConstraint | -| Risk | Low, Medium, High | -| VerificationMethod | Analysis, Inspection, Test, Demonstration | - -### Element - -An element definition contains an element name, type, and document reference. These three are all user defined. The element feature is intended to be lightweight but allow requirements to be connected to portions of other documents. - - element user_defined_name { - type: user_defined_type - docref: user_defined_ref - } - -### Relationship - -Relationships are comprised of a source node, destination node, and relationship type. - -Each follows the definition format of - - {name of source} - <type> -> {name of destination} - -or - - {name of destination} <- <type> - {name of source} - -"name of source" and "name of destination" should be names of requirement or element nodes defined elsewhere. - -A relationship type can be one of contains, copies, derives, satisfies, verifies, refines, or traces. - -Each relationship is labeled in the diagram. - -## Larger Example - -This example uses all features of the diagram. - -```mermaid-example - requirementDiagram - - requirement test_req { - id: 1 - text: the test text. - risk: high - verifymethod: test - } - - functionalRequirement test_req2 { - id: 1.1 - text: the second test text. - risk: low - verifymethod: inspection - } - - performanceRequirement test_req3 { - id: 1.2 - text: the third test text. - risk: medium - verifymethod: demonstration - } - - interfaceRequirement test_req4 { - id: 1.2.1 - text: the fourth test text. - risk: medium - verifymethod: analysis - } - - physicalRequirement test_req5 { - id: 1.2.2 - text: the fifth test text. - risk: medium - verifymethod: analysis - } - - designConstraint test_req6 { - id: 1.2.3 - text: the sixth test text. - risk: medium - verifymethod: analysis - } - - element test_entity { - type: simulation - } - - element test_entity2 { - type: word doc - docRef: reqs/test_entity - } - - element test_entity3 { - type: "test suite" - docRef: github.com/all_the_tests - } - - - test_entity - satisfies -> test_req2 - test_req - traces -> test_req2 - test_req - contains -> test_req3 - test_req3 - contains -> test_req4 - test_req4 - derives -> test_req5 - test_req5 - refines -> test_req6 - test_entity3 - verifies -> test_req5 - test_req <- copies - test_entity2 -``` - -```mermaid - requirementDiagram - - requirement test_req { - id: 1 - text: the test text. - risk: high - verifymethod: test - } - - functionalRequirement test_req2 { - id: 1.1 - text: the second test text. - risk: low - verifymethod: inspection - } - - performanceRequirement test_req3 { - id: 1.2 - text: the third test text. - risk: medium - verifymethod: demonstration - } - - interfaceRequirement test_req4 { - id: 1.2.1 - text: the fourth test text. - risk: medium - verifymethod: analysis - } - - physicalRequirement test_req5 { - id: 1.2.2 - text: the fifth test text. - risk: medium - verifymethod: analysis - } - - designConstraint test_req6 { - id: 1.2.3 - text: the sixth test text. - risk: medium - verifymethod: analysis - } - - element test_entity { - type: simulation - } - - element test_entity2 { - type: word doc - docRef: reqs/test_entity - } - - element test_entity3 { - type: "test suite" - docRef: github.com/all_the_tests - } - - - test_entity - satisfies -> test_req2 - test_req - traces -> test_req2 - test_req - contains -> test_req3 - test_req3 - contains -> test_req4 - test_req4 - derives -> test_req5 - test_req5 - refines -> test_req6 - test_entity3 - verifies -> test_req5 - test_req <- copies - test_entity2 -``` diff --git a/docs/syntax/sequenceDiagram.md b/docs/syntax/sequenceDiagram.md deleted file mode 100644 index 4e89eb0c6..000000000 --- a/docs/syntax/sequenceDiagram.md +++ /dev/null @@ -1,762 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/sequenceDiagram.md](../../packages/mermaid/src/docs/syntax/sequenceDiagram.md). - -# Sequence diagrams - -> A Sequence diagram is an interaction diagram that shows how processes operate with one another and in what order. - -Mermaid can render sequence diagrams. - -```mermaid-example -sequenceDiagram - Alice->>John: Hello John, how are you? - John-->>Alice: Great! - Alice-)John: See you later! -``` - -```mermaid -sequenceDiagram - Alice->>John: Hello John, how are you? - John-->>Alice: Great! - Alice-)John: See you later! -``` - -> **Note** -> A note on nodes, the word "end" could potentially break the diagram, due to the way that the mermaid language is scripted. -> -> If unavoidable, one must use parentheses(), quotation marks "", or brackets {},\[], to enclose the word "end". i.e : (end), \[end], {end}. - -## Syntax - -### Participants - -The participants can be defined implicitly as in the first example on this page. The participants or actors are -rendered in order of appearance in the diagram source text. Sometimes you might want to show the participants in a -different order than how they appear in the first message. It is possible to specify the actor's order of -appearance by doing the following: - -```mermaid-example -sequenceDiagram - participant Alice - participant Bob - Alice->>Bob: Hi Bob - Bob->>Alice: Hi Alice -``` - -```mermaid -sequenceDiagram - participant Alice - participant Bob - Alice->>Bob: Hi Bob - Bob->>Alice: Hi Alice -``` - -### Actors - -If you specifically want to use the actor symbol instead of a rectangle with text you can do so by using actor statements as per below. - -```mermaid-example -sequenceDiagram - actor Alice - actor Bob - Alice->>Bob: Hi Bob - Bob->>Alice: Hi Alice -``` - -```mermaid -sequenceDiagram - actor Alice - actor Bob - Alice->>Bob: Hi Bob - Bob->>Alice: Hi Alice -``` - -### Aliases - -The actor can have a convenient identifier and a descriptive label. - -```mermaid-example -sequenceDiagram - participant A as Alice - participant J as John - A->>J: Hello John, how are you? - J->>A: Great! -``` - -```mermaid -sequenceDiagram - participant A as Alice - participant J as John - A->>J: Hello John, how are you? - J->>A: Great! -``` - -## Messages - -Messages can be of two displayed either solid or with a dotted line. - - [Actor][Arrow][Actor]:Message text - -There are six types of arrows currently supported: - -| Type | Description | -| ---- | ------------------------------------------------ | -| -> | Solid line without arrow | -| --> | Dotted line without arrow | -| ->> | Solid line with arrowhead | -| -->> | Dotted line with arrowhead | -| -x | Solid line with a cross at the end | -| --x | Dotted line with a cross at the end. | -| -) | Solid line with an open arrow at the end (async) | -| --) | Dotted line with a open arrow at the end (async) | - -## Activations - -It is possible to activate and deactivate an actor. (de)activation can be dedicated declarations: - -```mermaid-example -sequenceDiagram - Alice->>John: Hello John, how are you? - activate John - John-->>Alice: Great! - deactivate John -``` - -```mermaid -sequenceDiagram - Alice->>John: Hello John, how are you? - activate John - John-->>Alice: Great! - deactivate John -``` - -There is also a shortcut notation by appending `+`/`-` suffix to the message arrow: - -```mermaid-example -sequenceDiagram - Alice->>+John: Hello John, how are you? - John-->>-Alice: Great! -``` - -```mermaid -sequenceDiagram - Alice->>+John: Hello John, how are you? - John-->>-Alice: Great! -``` - -Activations can be stacked for same actor: - -```mermaid-example -sequenceDiagram - Alice->>+John: Hello John, how are you? - Alice->>+John: John, can you hear me? - John-->>-Alice: Hi Alice, I can hear you! - John-->>-Alice: I feel great! -``` - -```mermaid -sequenceDiagram - Alice->>+John: Hello John, how are you? - Alice->>+John: John, can you hear me? - John-->>-Alice: Hi Alice, I can hear you! - John-->>-Alice: I feel great! -``` - -## Notes - -It is possible to add notes to a sequence diagram. This is done by the notation -Note \[ right of | left of | over ] \[Actor]: Text in note content - -See the example below: - -```mermaid-example -sequenceDiagram - participant John - Note right of John: Text in note -``` - -```mermaid -sequenceDiagram - participant John - Note right of John: Text in note -``` - -It is also possible to create notes spanning two participants: - -```mermaid-example -sequenceDiagram - Alice->John: Hello John, how are you? - Note over Alice,John: A typical interaction -``` - -```mermaid -sequenceDiagram - Alice->John: Hello John, how are you? - Note over Alice,John: A typical interaction -``` - -## Loops - -It is possible to express loops in a sequence diagram. This is done by the notation - - loop Loop text - ... statements ... - end - -See the example below: - -```mermaid-example -sequenceDiagram - Alice->John: Hello John, how are you? - loop Every minute - John-->Alice: Great! - end -``` - -```mermaid -sequenceDiagram - Alice->John: Hello John, how are you? - loop Every minute - John-->Alice: Great! - end -``` - -## Alt - -It is possible to express alternative paths in a sequence diagram. This is done by the notation - - alt Describing text - ... statements ... - else - ... statements ... - end - -or if there is sequence that is optional (if without else). - - opt Describing text - ... statements ... - end - -See the example below: - -```mermaid-example -sequenceDiagram - Alice->>Bob: Hello Bob, how are you? - alt is sick - Bob->>Alice: Not so good :( - else is well - Bob->>Alice: Feeling fresh like a daisy - end - opt Extra response - Bob->>Alice: Thanks for asking - end -``` - -```mermaid -sequenceDiagram - Alice->>Bob: Hello Bob, how are you? - alt is sick - Bob->>Alice: Not so good :( - else is well - Bob->>Alice: Feeling fresh like a daisy - end - opt Extra response - Bob->>Alice: Thanks for asking - end -``` - -## Parallel - -It is possible to show actions that are happening in parallel. - -This is done by the notation - - par [Action 1] - ... statements ... - and [Action 2] - ... statements ... - and [Action N] - ... statements ... - end - -See the example below: - -```mermaid-example -sequenceDiagram - par Alice to Bob - Alice->>Bob: Hello guys! - and Alice to John - Alice->>John: Hello guys! - end - Bob-->>Alice: Hi Alice! - John-->>Alice: Hi Alice! -``` - -```mermaid -sequenceDiagram - par Alice to Bob - Alice->>Bob: Hello guys! - and Alice to John - Alice->>John: Hello guys! - end - Bob-->>Alice: Hi Alice! - John-->>Alice: Hi Alice! -``` - -It is also possible to nest parallel blocks. - -```mermaid-example -sequenceDiagram - par Alice to Bob - Alice->>Bob: Go help John - and Alice to John - Alice->>John: I want this done today - par John to Charlie - John->>Charlie: Can we do this today? - and John to Diana - John->>Diana: Can you help us today? - end - end -``` - -```mermaid -sequenceDiagram - par Alice to Bob - Alice->>Bob: Go help John - and Alice to John - Alice->>John: I want this done today - par John to Charlie - John->>Charlie: Can we do this today? - and John to Diana - John->>Diana: Can you help us today? - end - end -``` - -## Critical Region - -It is possible to show actions that must happen automatically with conditional handling of circumstances. - -This is done by the notation - - critical [Action that must be performed] - ... statements ... - option [Circumstance A] - ... statements ... - option [Circumstance B] - ... statements ... - end - -See the example below: - -```mermaid-example -sequenceDiagram - critical Establish a connection to the DB - Service-->DB: connect - option Network timeout - Service-->Service: Log error - option Credentials rejected - Service-->Service: Log different error - end -``` - -```mermaid -sequenceDiagram - critical Establish a connection to the DB - Service-->DB: connect - option Network timeout - Service-->Service: Log error - option Credentials rejected - Service-->Service: Log different error - end -``` - -It is also possible to have no options at all - -```mermaid-example -sequenceDiagram - critical Establish a connection to the DB - Service-->DB: connect - end -``` - -```mermaid -sequenceDiagram - critical Establish a connection to the DB - Service-->DB: connect - end -``` - -This critical block can also be nested, equivalently to the `par` statement as seen above. - -## Break - -It is possible to indicate a stop of the sequence within the flow (usually used to model exceptions). - -This is done by the notation - - break [something happened] - ... statements ... - end - -See the example below: - -```mermaid-example -sequenceDiagram - Consumer-->API: Book something - API-->BookingService: Start booking process - break when the booking process fails - API-->Consumer: show failure - end - API-->BillingService: Start billing process -``` - -```mermaid -sequenceDiagram - Consumer-->API: Book something - API-->BookingService: Start booking process - break when the booking process fails - API-->Consumer: show failure - end - API-->BillingService: Start billing process -``` - -## Background Highlighting - -It is possible to highlight flows by providing colored background rects. This is done by the notation - -The colors are defined using rgb and rgba syntax. - - rect rgb(0, 255, 0) - ... content ... - end - -<!----> - - rect rgba(0, 0, 255, .1) - ... content ... - end - -See the examples below: - -```mermaid-example -sequenceDiagram - participant Alice - participant John - - rect rgb(191, 223, 255) - note right of Alice: Alice calls John. - Alice->>+John: Hello John, how are you? - rect rgb(200, 150, 255) - Alice->>+John: John, can you hear me? - John-->>-Alice: Hi Alice, I can hear you! - end - John-->>-Alice: I feel great! - end - Alice ->>+ John: Did you want to go to the game tonight? - John -->>- Alice: Yeah! See you there. - -``` - -```mermaid -sequenceDiagram - participant Alice - participant John - - rect rgb(191, 223, 255) - note right of Alice: Alice calls John. - Alice->>+John: Hello John, how are you? - rect rgb(200, 150, 255) - Alice->>+John: John, can you hear me? - John-->>-Alice: Hi Alice, I can hear you! - end - John-->>-Alice: I feel great! - end - Alice ->>+ John: Did you want to go to the game tonight? - John -->>- Alice: Yeah! See you there. - -``` - -## Comments - -Comments can be entered within a sequence diagram, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any diagram syntax - -```mermaid-example -sequenceDiagram - Alice->>John: Hello John, how are you? - %% this is a comment - John-->>Alice: Great! -``` - -```mermaid -sequenceDiagram - Alice->>John: Hello John, how are you? - %% this is a comment - John-->>Alice: Great! -``` - -## Entity codes to escape characters - -It is possible to escape characters using the syntax exemplified here. - -```mermaid-example -sequenceDiagram - A->>B: I #9829; you! - B->>A: I #9829; you #infin; times more! -``` - -```mermaid -sequenceDiagram - A->>B: I #9829; you! - B->>A: I #9829; you #infin; times more! -``` - -Numbers given are base 10, so `#` can be encoded as `#35;`. It is also supported to use HTML character names. - -Because semicolons can be used instead of line breaks to define the markup, you need to use `#59;` to include a semicolon in message text. - -## sequenceNumbers - -It is possible to get a sequence number attached to each arrow in a sequence diagram. This can be configured when adding mermaid to the website as shown below: - -```html -<script> - mermaid.initialize({ sequence: { showSequenceNumbers: true } }); -</script> -``` - -It can also be be turned on via the diagram code as in the diagram: - -```mermaid-example -sequenceDiagram - autonumber - Alice->>John: Hello John, how are you? - loop Healthcheck - John->>John: Fight against hypochondria - end - Note right of John: Rational thoughts! - John-->>Alice: Great! - John->>Bob: How about you? - Bob-->>John: Jolly good! -``` - -```mermaid -sequenceDiagram - autonumber - Alice->>John: Hello John, how are you? - loop Healthcheck - John->>John: Fight against hypochondria - end - Note right of John: Rational thoughts! - John-->>Alice: Great! - John->>Bob: How about you? - Bob-->>John: Jolly good! -``` - -## Actor Menus - -Actors can have popup-menus containing individualized links to external pages. For example, if an actor represented a web service, useful links might include a link to the service health dashboard, repo containing the code for the service, or a wiki page describing the service. - -This can be configured by adding one or more link lines with the format: - - link <actor>: <link-label> @ <link-url> - -```mermaid-example -sequenceDiagram - participant Alice - participant John - link Alice: Dashboard @ https://dashboard.contoso.com/alice - link Alice: Wiki @ https://wiki.contoso.com/alice - link John: Dashboard @ https://dashboard.contoso.com/john - link John: Wiki @ https://wiki.contoso.com/john - Alice->>John: Hello John, how are you? - John-->>Alice: Great! - Alice-)John: See you later! -``` - -```mermaid -sequenceDiagram - participant Alice - participant John - link Alice: Dashboard @ https://dashboard.contoso.com/alice - link Alice: Wiki @ https://wiki.contoso.com/alice - link John: Dashboard @ https://dashboard.contoso.com/john - link John: Wiki @ https://wiki.contoso.com/john - Alice->>John: Hello John, how are you? - John-->>Alice: Great! - Alice-)John: See you later! -``` - -#### Advanced Menu Syntax - -There is an advanced syntax that relies on JSON formatting. If you are comfortable with JSON format, then this exists as well. - -This can be configured by adding the links lines with the format: - - links <actor>: <json-formatted link-name link-url pairs> - -An example is below: - -```mermaid-example -sequenceDiagram - participant Alice - participant John - links Alice: {"Dashboard": "https://dashboard.contoso.com/alice", "Wiki": "https://wiki.contoso.com/alice"} - links John: {"Dashboard": "https://dashboard.contoso.com/john", "Wiki": "https://wiki.contoso.com/john"} - Alice->>John: Hello John, how are you? - John-->>Alice: Great! - Alice-)John: See you later! -``` - -```mermaid -sequenceDiagram - participant Alice - participant John - links Alice: {"Dashboard": "https://dashboard.contoso.com/alice", "Wiki": "https://wiki.contoso.com/alice"} - links John: {"Dashboard": "https://dashboard.contoso.com/john", "Wiki": "https://wiki.contoso.com/john"} - Alice->>John: Hello John, how are you? - John-->>Alice: Great! - Alice-)John: See you later! -``` - -## Styling - -Styling of a sequence diagram is done by defining a number of css classes. During rendering these classes are extracted from the file located at src/themes/sequence.scss - -### Classes used - -| Class | Description | -| ------------ | ----------------------------------------------------------- | -| actor | Style for the actor box at the top of the diagram. | -| text.actor | Styles for text in the actor box at the top of the diagram. | -| actor-line | The vertical line for an actor. | -| messageLine0 | Styles for the solid message line. | -| messageLine1 | Styles for the dotted message line. | -| messageText | Defines styles for the text on the message arrows. | -| labelBox | Defines styles label to left in a loop. | -| labelText | Styles for the text in label for loops. | -| loopText | Styles for the text in the loop box. | -| loopLine | Defines styles for the lines in the loop box. | -| note | Styles for the note box. | -| noteText | Styles for the text on in the note boxes. | - -### Sample stylesheet - -```css -body { - background: white; -} - -.actor { - stroke: #ccccff; - fill: #ececff; -} -text.actor { - fill: black; - stroke: none; - font-family: Helvetica; -} - -.actor-line { - stroke: grey; -} - -.messageLine0 { - stroke-width: 1.5; - stroke-dasharray: '2 2'; - marker-end: 'url(#arrowhead)'; - stroke: black; -} - -.messageLine1 { - stroke-width: 1.5; - stroke-dasharray: '2 2'; - stroke: black; -} - -#arrowhead { - fill: black; -} - -.messageText { - fill: black; - stroke: none; - font-family: 'trebuchet ms', verdana, arial; - font-size: 14px; -} - -.labelBox { - stroke: #ccccff; - fill: #ececff; -} - -.labelText { - fill: black; - stroke: none; - font-family: 'trebuchet ms', verdana, arial; -} - -.loopText { - fill: black; - stroke: none; - font-family: 'trebuchet ms', verdana, arial; -} - -.loopLine { - stroke-width: 2; - stroke-dasharray: '2 2'; - marker-end: 'url(#arrowhead)'; - stroke: #ccccff; -} - -.note { - stroke: #decc93; - fill: #fff5ad; -} - -.noteText { - fill: black; - stroke: none; - font-family: 'trebuchet ms', verdana, arial; - font-size: 14px; -} -``` - -## Configuration - -Is it possible to adjust the margins for rendering the sequence diagram. - -This is done by defining `mermaid.sequenceConfig` or by the CLI to use a json file with the configuration. -How to use the CLI is described in the [mermaidCLI](../config/mermaidCLI.md) page. -`mermaid.sequenceConfig` can be set to a JSON string with config parameters or the corresponding object. - -```javascript -mermaid.sequenceConfig = { - diagramMarginX: 50, - diagramMarginY: 10, - boxTextMargin: 5, - noteMargin: 10, - messageMargin: 35, - mirrorActors: true, -}; -``` - -### Possible configuration parameters: - -| Parameter | Description | Default value | -| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------ | -| mirrorActors | Turns on/off the rendering of actors below the diagram as well as above it | false | -| bottomMarginAdj | Adjusts how far down the graph ended. Wide borders styles with css could generate unwanted clipping which is why this config param exists. | 1 | -| actorFontSize | Sets the font size for the actor's description | 14 | -| actorFontFamily | Sets the font family for the actor's description | "Open Sans", sans-serif | -| actorFontWeight | Sets the font weight for the actor's description | "Open Sans", sans-serif | -| noteFontSize | Sets the font size for actor-attached notes | 14 | -| noteFontFamily | Sets the font family for actor-attached notes | "trebuchet ms", verdana, arial | -| noteFontWeight | Sets the font weight for actor-attached notes | "trebuchet ms", verdana, arial | -| noteAlign | Sets the text alignment for text in actor-attached notes | center | -| messageFontSize | Sets the font size for actor<->actor messages | 16 | -| messageFontFamily | Sets the font family for actor<->actor messages | "trebuchet ms", verdana, arial | -| messageFontWeight | Sets the font weight for actor<->actor messages | "trebuchet ms", verdana, arial | diff --git a/docs/syntax/stateDiagram.md b/docs/syntax/stateDiagram.md deleted file mode 100644 index ec91411f6..000000000 --- a/docs/syntax/stateDiagram.md +++ /dev/null @@ -1,450 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/stateDiagram.md](../../packages/mermaid/src/docs/syntax/stateDiagram.md). - -# State diagrams - -> "A state diagram is a type of diagram used in computer science and related fields to describe the behavior of systems. State diagrams require that the system described is composed of a finite number of states; sometimes, this is indeed the case, while at other times this is a reasonable abstraction." Wikipedia - -Mermaid can render state diagrams. The syntax tries to be compliant with the syntax used in plantUml as this will make it easier for users to share diagrams between mermaid and plantUml. - -```mermaid-example -stateDiagram-v2 - [*] --> Still - Still --> [*] - - Still --> Moving - Moving --> Still - Moving --> Crash - Crash --> [*] -``` - -```mermaid -stateDiagram-v2 - [*] --> Still - Still --> [*] - - Still --> Moving - Moving --> Still - Moving --> Crash - Crash --> [*] -``` - -Older renderer: - -```mermaid-example -stateDiagram - [*] --> Still - Still --> [*] - - Still --> Moving - Moving --> Still - Moving --> Crash - Crash --> [*] -``` - -```mermaid -stateDiagram - [*] --> Still - Still --> [*] - - Still --> Moving - Moving --> Still - Moving --> Crash - Crash --> [*] -``` - -In state diagrams systems are described in terms of its states and how the systems state can change to another state via a transitions. The example diagram above shows three states **Still**, **Moving** and **Crash**. You start in the state of Still. From Still you can change the state to Moving. In Moving you can change the state either back to Still or to Crash. There is no transition from Still to Crash. - -## States - -A state can be declared in multiple ways. The simplest way is to define a state id as a description. - -```mermaid-example -stateDiagram-v2 - s1 -``` - -```mermaid -stateDiagram-v2 - s1 -``` - -Another way is by using the state keyword with a description as per below: - -```mermaid-example -stateDiagram-v2 - state "This is a state description" as s2 -``` - -```mermaid -stateDiagram-v2 - state "This is a state description" as s2 -``` - -Another way to define a state with a description is to define the state id followed by a colon and the description: - -```mermaid-example -stateDiagram-v2 - s2 : This is a state description -``` - -```mermaid -stateDiagram-v2 - s2 : This is a state description -``` - -## Transitions - -Transitions are path/edges when one state passes into another. This is represented using text arrow, "-->". - -When you define a transition between two states and the states are not already defined the undefined states are defined with the id from the transition. You can later add descriptions to states defined this way. - -```mermaid-example -stateDiagram-v2 - s1 --> s2 -``` - -```mermaid -stateDiagram-v2 - s1 --> s2 -``` - -It is possible to add text to a transition. To describe what it represents. - -```mermaid-example -stateDiagram-v2 - s1 --> s2: A transition -``` - -```mermaid -stateDiagram-v2 - s1 --> s2: A transition -``` - -## Start and End - -There are two special states indicating the start and stop of the diagram. These are written with the \[\*] syntax and the direction of the transition to it defines it either as a start or a stop state. - -```mermaid-example -stateDiagram-v2 - [*] --> s1 - s1 --> [*] -``` - -```mermaid -stateDiagram-v2 - [*] --> s1 - s1 --> [*] -``` - -## Composite states - -In a real world use of state diagrams you often end up with diagrams that are multi-dimensional as one state can -have several internal states. These are called composite states in this terminology. - -In order to define a composite state you need to use the state keyword followed by an id and the body of the composite state between {}. See the example below: - -```mermaid-example -stateDiagram-v2 - [*] --> First - state First { - [*] --> second - second --> [*] - } -``` - -```mermaid -stateDiagram-v2 - [*] --> First - state First { - [*] --> second - second --> [*] - } -``` - -You can do this in several layers: - -```mermaid-example -stateDiagram-v2 - [*] --> First - - state First { - [*] --> Second - - state Second { - [*] --> second - second --> Third - - state Third { - [*] --> third - third --> [*] - } - } - } -``` - -```mermaid -stateDiagram-v2 - [*] --> First - - state First { - [*] --> Second - - state Second { - [*] --> second - second --> Third - - state Third { - [*] --> third - third --> [*] - } - } - } -``` - -You can also define transitions also between composite states: - -```mermaid-example -stateDiagram-v2 - [*] --> First - First --> Second - First --> Third - - state First { - [*] --> fir - fir --> [*] - } - state Second { - [*] --> sec - sec --> [*] - } - state Third { - [*] --> thi - thi --> [*] - } -``` - -```mermaid -stateDiagram-v2 - [*] --> First - First --> Second - First --> Third - - state First { - [*] --> fir - fir --> [*] - } - state Second { - [*] --> sec - sec --> [*] - } - state Third { - [*] --> thi - thi --> [*] - } -``` - -_You can not define transitions between internal states belonging to different composite states_ - -## Choice - -Sometimes you need to model a choice between two or more paths, you can do so using <\<choice>>. - -```mermaid-example -stateDiagram-v2 - state if_state <<choice>> - [*] --> IsPositive - IsPositive --> if_state - if_state --> False: if n < 0 - if_state --> True : if n >= 0 -``` - -```mermaid -stateDiagram-v2 - state if_state <<choice>> - [*] --> IsPositive - IsPositive --> if_state - if_state --> False: if n < 0 - if_state --> True : if n >= 0 -``` - -## Forks - -It is possible to specify a fork in the diagram using <\<fork>> <\<join>>. - -```mermaid-example - stateDiagram-v2 - state fork_state <<fork>> - [*] --> fork_state - fork_state --> State2 - fork_state --> State3 - - state join_state <<join>> - State2 --> join_state - State3 --> join_state - join_state --> State4 - State4 --> [*] -``` - -```mermaid - stateDiagram-v2 - state fork_state <<fork>> - [*] --> fork_state - fork_state --> State2 - fork_state --> State3 - - state join_state <<join>> - State2 --> join_state - State3 --> join_state - join_state --> State4 - State4 --> [*] -``` - -## Notes - -Sometimes nothing says it better then a Post-it note. That is also the case in state diagrams. - -Here you can choose to put the note to the _right of_ or to the _left of_ a node. - -```mermaid-example - stateDiagram-v2 - State1: The state with a note - note right of State1 - Important information! You can write - notes. - end note - State1 --> State2 - note left of State2 : This is the note to the left. -``` - -```mermaid - stateDiagram-v2 - State1: The state with a note - note right of State1 - Important information! You can write - notes. - end note - State1 --> State2 - note left of State2 : This is the note to the left. -``` - -## Concurrency - -As in plantUml you can specify concurrency using the -- symbol. - -```mermaid-example -stateDiagram-v2 - [*] --> Active - - state Active { - [*] --> NumLockOff - NumLockOff --> NumLockOn : EvNumLockPressed - NumLockOn --> NumLockOff : EvNumLockPressed - -- - [*] --> CapsLockOff - CapsLockOff --> CapsLockOn : EvCapsLockPressed - CapsLockOn --> CapsLockOff : EvCapsLockPressed - -- - [*] --> ScrollLockOff - ScrollLockOff --> ScrollLockOn : EvScrollLockPressed - ScrollLockOn --> ScrollLockOff : EvScrollLockPressed - } -``` - -```mermaid -stateDiagram-v2 - [*] --> Active - - state Active { - [*] --> NumLockOff - NumLockOff --> NumLockOn : EvNumLockPressed - NumLockOn --> NumLockOff : EvNumLockPressed - -- - [*] --> CapsLockOff - CapsLockOff --> CapsLockOn : EvCapsLockPressed - CapsLockOn --> CapsLockOff : EvCapsLockPressed - -- - [*] --> ScrollLockOff - ScrollLockOff --> ScrollLockOn : EvScrollLockPressed - ScrollLockOn --> ScrollLockOff : EvScrollLockPressed - } -``` - -## Setting the direction of the diagram - -With state diagrams you can use the direction statement to set the direction which the diagram will render like in this example. - -```mermaid-example -stateDiagram - direction LR - [*] --> A - A --> B - B --> C - state B { - direction LR - a --> b - } - B --> D -``` - -```mermaid -stateDiagram - direction LR - [*] --> A - A --> B - B --> C - state B { - direction LR - a --> b - } - B --> D -``` - -## Comments - -Comments can be entered within a state diagram chart, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any diagram syntax - -```mermaid-example -stateDiagram-v2 - [*] --> Still - Still --> [*] -%% this is a comment - Still --> Moving - Moving --> Still %% another comment - Moving --> Crash - Crash --> [*] -``` - -```mermaid -stateDiagram-v2 - [*] --> Still - Still --> [*] -%% this is a comment - Still --> Moving - Moving --> Still %% another comment - Moving --> Crash - Crash --> [*] -``` - -## Styling - -Styling of the a state diagram is done by defining a number of css classes. During rendering these classes are extracted from the file located at src/themes/state.scss - -## Spaces in state names - -Spaces can be added to a state by defining it at the top and referencing the acronym later. - -```mermaid-example -stateDiagram-v2 - Yswsii: Your state with spaces in it - [*] --> Yswsii -``` - -```mermaid -stateDiagram-v2 - Yswsii: Your state with spaces in it - [*] --> Yswsii -``` diff --git a/docs/syntax/userJourney.md b/docs/syntax/userJourney.md deleted file mode 100644 index 73fcb7468..000000000 --- a/docs/syntax/userJourney.md +++ /dev/null @@ -1,40 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/userJourney.md](../../packages/mermaid/src/docs/syntax/userJourney.md). - -# User Journey Diagram - -> User journeys describe at a high level of detail exactly what steps different users take to complete a specific task within a system, application or website. This technique shows the current (as-is) user workflow, and reveals areas of improvement for the to-be workflow. (Wikipedia) - -Mermaid can render user journey diagrams: - -```mermaid-example -journey - title My working day - section Go to work - Make tea: 5: Me - Go upstairs: 3: Me - Do work: 1: Me, Cat - section Go home - Go downstairs: 5: Me - Sit down: 5: Me -``` - -```mermaid -journey - title My working day - section Go to work - Make tea: 5: Me - Go upstairs: 3: Me - Do work: 1: Me, Cat - section Go home - Go downstairs: 5: Me - Sit down: 5: Me -``` - -Each user journey is split into sections, these describe the part of the task -the user is trying to complete. - -Tasks syntax is `Task name: <score>: <comma separated list of actors>` diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index 91c3e638e..1bcdca66a 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -173,9 +173,9 @@ it('should render forks and joins', () => { }); ``` -[TODO - running the tests against what is expected in development. ] +**_[TODO - running the tests against what is expected in development. ]_** -[TODO - how to generate new screenshots] +**_[TODO - how to generate new screenshots]_** .... ### 3. Update Documentation @@ -187,7 +187,7 @@ The documentation has to be updated to users know that things have changed and a We know it can sometimes be hard to code _and_ write user documentation. -[TODO - how to submit documentation changes -- see [Contributing Documentation](#contributing-documentation) +_**[TODO - how to submit documentation changes.** A few words plus a link to [Contributing Documentation](#contributing-documentation)_ Create another issue specifically for the documentation. You will need to help with the PR, but definitely ask for help if you feel stuck. @@ -197,7 +197,7 @@ When in doubt, write up and submit what you can. It can be clarified and refined ### 4. Submit your pull request -[TODO - PR titles should start with (fix | feat | ....)] +**[TODO - PR titles should start with (fix | feat | ....)]** We make all changes via Pull Requests (PRs). As we have many Pull Requests from developers new to Mermaid, \ we have put in place a process wherein _knsv, Knut Sveidqvist_ is the primary reviewer of changes and merging pull requests. The process is as follows: @@ -209,7 +209,7 @@ we have put in place a process wherein _knsv, Knut Sveidqvist_ is the primary re ## Contributing Documentation -[TODO: This section is still a WIP. It still needs revision.] +**_[TODO: This section is still a WIP. It still needs revision.]_** If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? @@ -245,7 +245,7 @@ The source files for documentation are in `/packages/mermaid/docs` and are writt **[The mermaid documentation site](https://mermaid-js.github.io/mermaid/) is powered by [Docsify](https://docsify.js.org), a simple documentation site generator.** -[TODO - how to preview the documents on a local machine? how to run VitePress?] +**_[TODO - how to preview the documents on a local machine? how to run VitePress?]_** If you want to preview the whole documentation site on your machine, you need to install `docsify-cli`: @@ -276,7 +276,7 @@ To edit Docs on GitHub: - search in the open Issues If you find an open issue or discussion thread that is similar to your question but isn't answered, -you can let us know that you are also interested in it. [TODO: describe +1, upvote] +you can let us know that you are also interested in it. **_[TODO: describe upvoting]_** This helps the team know the relative interest in something and helps them set priorities and assignments. Feel free to add to the discussion on the issue or topic. From acebcbffc82a50304cf8f2e55b3c84326903c313 Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" <ashley.engelund@gmail.com> Date: Fri, 18 Nov 2022 09:06:48 -0800 Subject: [PATCH 015/255] /doc files changed --- docs/CHANGELOG.md | 1054 ++++++++++++ docs/community/development.md | 309 ++++ docs/community/n00b-overview.md | 74 + docs/community/newDiagram.md | 264 +++ docs/community/security.md | 29 + docs/config/8.6.0_docs.md | 222 +++ docs/config/Tutorials.md | 78 + docs/config/accessibility.md | 360 ++++ docs/config/configuration.md | 41 + docs/config/directives.md | 329 ++++ docs/config/mermaidCLI.md | 9 + docs/config/n00b-advanced.md | 26 + docs/config/setup/README.md | 13 + docs/config/setup/modules/config.md | 276 ++++ docs/config/setup/modules/defaultConfig.md | 56 + docs/config/theming.md | 743 +++++++++ docs/config/usage.md | 391 +++++ docs/intro/index.md | 405 +++++ docs/intro/n00b-gettingStarted.md | 224 +++ docs/intro/n00b-syntaxReference.md | 85 + docs/misc/faq.md | 17 + docs/misc/integrations.md | 186 +++ docs/syntax/c4c.md | 664 ++++++++ docs/syntax/classDiagram.md | 848 ++++++++++ docs/syntax/entityRelationshipDiagram.md | 299 ++++ docs/syntax/examples.md | 299 ++++ docs/syntax/flowchart.md | 992 +++++++++++ docs/syntax/gantt.md | 423 +++++ docs/syntax/gitgraph.md | 1729 ++++++++++++++++++++ docs/syntax/mindmap.md | 243 +++ docs/syntax/pie.md | 66 + docs/syntax/requirementDiagram.md | 243 +++ docs/syntax/sequenceDiagram.md | 762 +++++++++ docs/syntax/stateDiagram.md | 450 +++++ docs/syntax/userJourney.md | 40 + 35 files changed, 12249 insertions(+) create mode 100644 docs/CHANGELOG.md create mode 100644 docs/community/development.md create mode 100644 docs/community/n00b-overview.md create mode 100644 docs/community/newDiagram.md create mode 100644 docs/community/security.md create mode 100644 docs/config/8.6.0_docs.md create mode 100644 docs/config/Tutorials.md create mode 100644 docs/config/accessibility.md create mode 100644 docs/config/configuration.md create mode 100644 docs/config/directives.md create mode 100644 docs/config/mermaidCLI.md create mode 100644 docs/config/n00b-advanced.md create mode 100644 docs/config/setup/README.md create mode 100644 docs/config/setup/modules/config.md create mode 100644 docs/config/setup/modules/defaultConfig.md create mode 100644 docs/config/theming.md create mode 100644 docs/config/usage.md create mode 100644 docs/intro/index.md create mode 100644 docs/intro/n00b-gettingStarted.md create mode 100644 docs/intro/n00b-syntaxReference.md create mode 100644 docs/misc/faq.md create mode 100644 docs/misc/integrations.md create mode 100644 docs/syntax/c4c.md create mode 100644 docs/syntax/classDiagram.md create mode 100644 docs/syntax/entityRelationshipDiagram.md create mode 100644 docs/syntax/examples.md create mode 100644 docs/syntax/flowchart.md create mode 100644 docs/syntax/gantt.md create mode 100644 docs/syntax/gitgraph.md create mode 100644 docs/syntax/mindmap.md create mode 100644 docs/syntax/pie.md create mode 100644 docs/syntax/requirementDiagram.md create mode 100644 docs/syntax/sequenceDiagram.md create mode 100644 docs/syntax/stateDiagram.md create mode 100644 docs/syntax/userJourney.md diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md new file mode 100644 index 000000000..520adc7d9 --- /dev/null +++ b/docs/CHANGELOG.md @@ -0,0 +1,1054 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/CHANGELOG.md](../packages/mermaid/src/docs/CHANGELOG.md). + +# Change Log + +All changes are in descending order, beginning with the newest (latest) version. + +## Unreleased + +[Full Changelog](https://github.com/knsv/mermaid/compare/8.7.0...HEAD) + +## 8.7.0 (2020-08-09) + +🔖 [Release Notes](https://github.com/mermaid-js/mermaid/releases/tag/8.7.0) | +📜 [Full Changelog](https://github.com/mermaid-js/mermaid/compare/8.6.0...8.7.0) + +This version brings with it a system for [dynamic and integrated configuration of the diagram themes](config/theming.md). +The objective of this is to increase the customizability of mermaid and the ease of Styling, with the customization of themes through the `%%init%%` directive and `initialize` calls. + +Themes follow and build upon the Levels of Configuration and employ `directives` to modify and create custom configurations, as they were introduced in Version [8.6.0](config/8.6.0_docs.md). + +**These Theming Configurations, similar to directives, will also be made applicable in the Live-Editor, for easier styling.** + +### Site-wide Themes + +Site-wide themes are still declared via `initialize` by site owners. + +Example of `Initalize` call setting `theme` to `base`: + +```javascript +mermaidAPI.initialize({ + securityLevel: 'loose', + theme: 'base', +}); +``` + +**Notes**: Only site owners can use the `mermaidAPI.initialize` call, to set values. Site-Users will have to use `%%init%%` to modify or create the theme for their diagrams. + +### Themes at the Local or Current Level + +When Generating a diagram using on a webpage that supports mermaid. +It is also possible to override site-wide theme settings locally, for a specific diagram, using directives, as long as it is not prohibited by the `secure` array. + +**Following is an example:** + +```mermaid-example +%%{init: {'theme':'base'}}%% + graph TD + a --> b +``` + +```mermaid +%%{init: {'theme':'base'}}%% + graph TD + a --> b +``` + +### Making a Custom Theme with `themeVariables` + +The easiest way to make a custom theme is to start with the base theme, and just modify theme variables through `themeVariables`, via `%%init%%`. + +| Parameter | Description | Type | Required | Objects contained | +| -------------- | ------------------------------------------------------------------ | ----- | -------- | ---------------------------------- | +| themeVariables | Array containing objects, modifiable with the `%%init%%` directive | Array | Required | primaryColor, lineColor, textColor | + +Here is an example of overriding `primaryColor` and giving everything a different look, using `%%init%%`. + +```mermaid-example +%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% + graph TD + A[Christmas] -->|Get money| B(Go shopping) + B --> C{Let me think} + B --> G[/Another/] + C ==>|One| D[Laptop] + C -->|Two| E[iPhone] + C -->|Three| F[fa:fa-car Car] + subgraph section + C + D + E + F + G + end +``` + +```mermaid +%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% + graph TD + A[Christmas] -->|Get money| B(Go shopping) + B --> C{Let me think} + B --> G[/Another/] + C ==>|One| D[Laptop] + C -->|Two| E[iPhone] + C -->|Three| F[fa:fa-car Car] + subgraph section + C + D + E + F + G + end +``` + +**Notes:** +Leaving it empty will set all variable values to default. + +## 8.6.0 (2020-07-13) + +🔖 [Release Notes](https://github.com/mermaid-js/mermaid/releases/tag/8.6.0) + +[Version 8.6.0](../getting-started/8.6.0_docs.md) introduces New Configuration Protocols and Directives and a Beta for the [New Mermaid Live-Editor](https://mermaid-js.github.io/docs/mermaid-live-editor-beta/#/edit/eyJjb2RlIjoiJSV7aW5pdDoge1widGhlbWVcIjogXCJmb3Jlc3RcIiwgXCJsb2dMZXZlbFwiOiAxIH19JSVcbmdyYXBoIFREXG4gIEFbQ2hyaXN0bWFzXSAtLT58R2V0IG1vbmV5fCBCKEdvIHNob3BwaW5nKVxuICBCIC0tPiBDe0xldCBtZSB0aGlua31cbiAgQyAtLT58T25lfCBEW0xhcHRvcF1cbiAgQyAtLT58VHdvfCBFW2lQaG9uZV1cbiAgQyAtLT58VGhyZWV8IEZbZmE6ZmEtY2FyIENhcl1cblx0XHQiLCJtZXJtYWlkIjp7InRoZW1lIjoiZGFyayJ9fQ) + +**With version 8.6.0 comes the release of directives for mermaid, a new system for modifying configurations, with the aim of establishing centralized, sane defaults and simple implementation.** + +Directives allow for a diagram specific overriding of config, as it has been discussed in Configurations. +This allows site users to input modifications to config alongside diagram definitions, when creating diagrams on a private webpage that supports Mermaid. + +## 8.5.0 (2020-04-11) + +🔖 [Release Notes](https://github.com/mermaid-js/mermaid/releases/tag/untagged-31c93788afe260d914bb) + +This version introduces New diagrams! + +**New diagrams in 8.5** + +With version 8.5 there are some bug fixes and enhancements, plus a new diagram type, entity relationship diagrams. + +![Image showing the new ER diagram type](./img/er.png) + +## 8.2.0 (2019-07-17) + +🏷️ [Tag](https://github.com/mermaid-js/mermaid/tree/8.2.0) + +Version 8.2.0, introduces a security improvement. + +A `securityLevel` configuration has to first be cleared, `securityLevel` sets the level of trust for the parsed diagrams and limits click functionality. +This was introduced in version 8.2 as a security improvement, aimed at preventing malicious use. + +### securityLevel + +| Parameter | Description | Type | Required | Values | +| ------------- | --------------------------------- | ------ | -------- | ------------------------- | +| securitylevel | Level of trust for parsed diagram | String | Required | Strict, Loose, antiscript | + +**Notes:** + +- **strict**: (**default**) tags in text are encoded, click functionality is disabled +- **loose**: tags in text are allowed, click functionality is enabled +- **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled + +⚠️ **Note**: This changes the default behaviour of mermaid so that after upgrade to 8.2, if the `securityLevel` is not configured, tags in flowcharts are encoded as tags and clicking is prohibited. + +If you are taking responsibility for the diagram source security you can set the `securityLevel` to a value of your choosing. +By doing this clicks and tags are again allowed. + +### To change `securityLevel` with `mermaidAPI.initialize`: + +```javascript +mermaidAPI.initialize({ + securityLevel: 'loose', +}); +``` + +**Closed issues:** + +- please add tag for 8.0.0 release [#863](https://github.com/knsv/mermaid/issues/863) +- classDiagram breaks on any edit [#858](https://github.com/knsv/mermaid/issues/858) + +## [8.1.0](https://github.com/knsv/mermaid/tree/8.1.0) (2019-06-25) + +[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.5...8.1.0) + +**Implemented enhancements:** + +- Theme for dark background [#301](https://github.com/knsv/mermaid/issues/301) +- \[Feature request] gantt diagram axis format [#269](https://github.com/knsv/mermaid/issues/269) +- Implement render function for server side rendering using phantomjs [#169](https://github.com/knsv/mermaid/issues/169) + +**Fixed bugs:** + +- mermaid -v filename.mmd gives You must specify at least one source file. [#328](https://github.com/knsv/mermaid/issues/328) +- Not Able to See Labels even htmlLabels:false added [#268](https://github.com/knsv/mermaid/issues/268) + +**Closed issues:** + +- Gantt and sequence diagram do not render [#853](https://github.com/knsv/mermaid/issues/853) +- margins around flowchart are not balanced [#852](https://github.com/knsv/mermaid/issues/852) +- Smaller bundles [#843](https://github.com/knsv/mermaid/issues/843) +- unicode in labels [#776](https://github.com/knsv/mermaid/issues/776) +- Hard-changing drawing of arrows per edge type [#775](https://github.com/knsv/mermaid/issues/775) +- SequenceDiagram wrong [#773](https://github.com/knsv/mermaid/issues/773) +- Render mermaid on github pages with simple code [#772](https://github.com/knsv/mermaid/issues/772) +- FlowChart - large space between text and the image [#754](https://github.com/knsv/mermaid/issues/754) +- Class Diagram Issues when using Mermaid in Stackedit [#748](https://github.com/knsv/mermaid/issues/748) +- Multi-platform CI [#744](https://github.com/knsv/mermaid/issues/744) +- gantt: sections can't have a colon [#742](https://github.com/knsv/mermaid/issues/742) +- Yarn build does not add mermaid.min.css to dist [#732](https://github.com/knsv/mermaid/issues/732) +- Is there a grammar / keyword / more than just the basic examples? [#718](https://github.com/knsv/mermaid/issues/718) +- Click event and react component [#717](https://github.com/knsv/mermaid/issues/717) +- Long text going outside the box [#706](https://github.com/knsv/mermaid/issues/706) +- How to migrate from yUML to mermaid? [#704](https://github.com/knsv/mermaid/issues/704) +- Issue on Dynamic Creation in PHP [#690](https://github.com/knsv/mermaid/issues/690) +- `click "\#target"` and `click "http://url"` should create regular links [#689](https://github.com/knsv/mermaid/issues/689) +- Support Chinese punctuation [#687](https://github.com/knsv/mermaid/issues/687) +- \[Question] Proper way to install on Mac? [#681](https://github.com/knsv/mermaid/issues/681) +- Has Mermaid a graphical interface to make diagrams? [#668](https://github.com/knsv/mermaid/issues/668) +- mermaid installation on debian [#649](https://github.com/knsv/mermaid/issues/649) +- "Cannot activate" in sequenceDiagram [#647](https://github.com/knsv/mermaid/issues/647) +- Link ("click" statement) in flowchart does not work in exported SVG [#646](https://github.com/knsv/mermaid/issues/646) +- How to pass styling [#639](https://github.com/knsv/mermaid/issues/639) +- The live editor cant show seq diagram with notes for 8.0.0-alpha.3 [#638](https://github.com/knsv/mermaid/issues/638) +- import mermaid.css with ES6 + NPM [#634](https://github.com/knsv/mermaid/issues/634) +- Actor line cuts through other elements [#633](https://github.com/knsv/mermaid/issues/633) +- Graph TD line out of the picture (left side) [#630](https://github.com/knsv/mermaid/issues/630) +- Flowchart labels appear "cutoff" [#628](https://github.com/knsv/mermaid/issues/628) +- Uncaught TypeError: \_.constant is not a function (mermaid.js) [#626](https://github.com/knsv/mermaid/issues/626) +- Missing tags and releases for newer versions [#623](https://github.com/knsv/mermaid/issues/623) +- Mermaid and Leo / Leo Vue [#622](https://github.com/knsv/mermaid/issues/622) +- mermaidAPI gantt Vue.js [#621](https://github.com/knsv/mermaid/issues/621) +- Gantt sections are not separated by colors - Fix: set numberSectionStyles to 4 instead of 3 [#620](https://github.com/knsv/mermaid/issues/620) +- how to get mermaidAPI? [#617](https://github.com/knsv/mermaid/issues/617) +- Error in startOnLoad documentation? [#616](https://github.com/knsv/mermaid/issues/616) +- Example export to SVG generates error [#614](https://github.com/knsv/mermaid/issues/614) +- The new online editor does not support previously generated links [#613](https://github.com/knsv/mermaid/issues/613) +- Grammar / Syntax documentation for flowcharts [#607](https://github.com/knsv/mermaid/issues/607) +- Mermaid does not work with d3.js [#606](https://github.com/knsv/mermaid/issues/606) +- Why does this code's flowchart lines get cut-off on screen? [#604](https://github.com/knsv/mermaid/issues/604) +- click keyword does not fire my callback (on the demo Website too) [#603](https://github.com/knsv/mermaid/issues/603) +- Online Editor fails to show exported SVG [#601](https://github.com/knsv/mermaid/issues/601) +- Just saying thanks! [#597](https://github.com/knsv/mermaid/issues/597) +- stylesheet crashed with other library like abcjs [#596](https://github.com/knsv/mermaid/issues/596) +- Missing connection [#594](https://github.com/knsv/mermaid/issues/594) +- How to use mermaid on node.js restful api? [#593](https://github.com/knsv/mermaid/issues/593) +- Remove status code [#589](https://github.com/knsv/mermaid/issues/589) +- Golang based editor [#588](https://github.com/knsv/mermaid/issues/588) +- sequenceDiagram -> notetext css font is hardcoded [#587](https://github.com/knsv/mermaid/issues/587) +- Multiple graph in the live editor [#586](https://github.com/knsv/mermaid/issues/586) +- All \<svg> elements in page are colored black [#584](https://github.com/knsv/mermaid/issues/584) +- Styling: classes aren't applied to elements. [#582](https://github.com/knsv/mermaid/issues/582) +- Rounded connections [#580](https://github.com/knsv/mermaid/issues/580) +- Arrows are not being shown correctly in the dark theme [#578](https://github.com/knsv/mermaid/issues/578) +- The documentation for CLI seems outdated. [#572](https://github.com/knsv/mermaid/issues/572) +- No effect of click event:can not open link [#571](https://github.com/knsv/mermaid/issues/571) +- Text colors are not correct in VSCODE [#570](https://github.com/knsv/mermaid/issues/570) +- Nodes aren't aligned properly (just need an explanation) [#568](https://github.com/knsv/mermaid/issues/568) +- setting margin around figure in R [#567](https://github.com/knsv/mermaid/issues/567) +- Arrows should Come out in upward and Downward direction from decision Node [#566](https://github.com/knsv/mermaid/issues/566) +- TypeError: Cannot read property 'select' of undefined [#563](https://github.com/knsv/mermaid/issues/563) +- A little bug [#557](https://github.com/knsv/mermaid/issues/557) +- Japanese text appears garbled [#554](https://github.com/knsv/mermaid/issues/554) +- classdiagram not works in mermaid live_editor [#553](https://github.com/knsv/mermaid/issues/553) +- font awesome in link text? [#546](https://github.com/knsv/mermaid/issues/546) +- q: heard of the cosmogol standard? [#545](https://github.com/knsv/mermaid/issues/545) +- Arrow heads missing (cli, 7.0.3) [#544](https://github.com/knsv/mermaid/issues/544) +- No Edge Boxes if useHtmlLabels=false [#541](https://github.com/knsv/mermaid/issues/541) +- how to change mermaid text color or line text block color? [#534](https://github.com/knsv/mermaid/issues/534) +- FlowChart visualization broken when downloading from live editor [#533](https://github.com/knsv/mermaid/issues/533) +- Can't get flowchart to render paths at the top of the diagram; I even tried the online editor and that shows the same issue. Thoughts? [#532](https://github.com/knsv/mermaid/issues/532) +- live editor make browser(safari on macOS\&iOS) not longer respond [#531](https://github.com/knsv/mermaid/issues/531) +- css classes need a prefix/namespace [#527](https://github.com/knsv/mermaid/issues/527) +- input activate/deactivate cause safari unresponding [#521](https://github.com/knsv/mermaid/issues/521) +- Cannot Render the Mermaid Graph to PDF ? [#520](https://github.com/knsv/mermaid/issues/520) +- clicking links works from inset in subgraph but not from nodes [#516](https://github.com/knsv/mermaid/issues/516) +- Strange syntax error - when importing mermaid.js [#515](https://github.com/knsv/mermaid/issues/515) +- gantt x-axis display [#510](https://github.com/knsv/mermaid/issues/510) +- phantomjs renamed to phantomjs-prebuilt [#508](https://github.com/knsv/mermaid/issues/508) +- issue when using sphinxcontrib-mermaid extension for sphinx [#507](https://github.com/knsv/mermaid/issues/507) +- layout of docs page looks broken [#504](https://github.com/knsv/mermaid/issues/504) +- Problem showing graph with php on localhost [#502](https://github.com/knsv/mermaid/issues/502) +- logLevel's option doesn't work at 7.0.0 [#501](https://github.com/knsv/mermaid/issues/501) +- How do I get the log for a render or parse attempt? [#500](https://github.com/knsv/mermaid/issues/500) +- Mermaid neutral style style to built in latest release [#499](https://github.com/knsv/mermaid/issues/499) +- Any plans for adding a typescript definition file? [#495](https://github.com/knsv/mermaid/issues/495) +- Gantt diagrams too narrow [#493](https://github.com/knsv/mermaid/issues/493) +- Flowchart edge labels placement [#490](https://github.com/knsv/mermaid/issues/490) +- Very different styles when rendering as png vs. svg [#489](https://github.com/knsv/mermaid/issues/489) +- New editor that supports mermaid: Caret [#488](https://github.com/knsv/mermaid/issues/488) +- Gant PNG margin [#486](https://github.com/knsv/mermaid/issues/486) +- ReferenceError: window is not defined [#485](https://github.com/knsv/mermaid/issues/485) +- Menu and layout bugs in docs [#484](https://github.com/knsv/mermaid/issues/484) +- Mermaid resets some of the page CSS styles [#482](https://github.com/knsv/mermaid/issues/482) +- Arrows rendering incorrectly in online editor [#480](https://github.com/knsv/mermaid/issues/480) +- CSS stroke-dasharray ignored by browsers but not other viewers [#474](https://github.com/knsv/mermaid/issues/474) +- mermaid - Browser Support issue [#472](https://github.com/knsv/mermaid/issues/472) +- Totally love mermaid I might pop! [#471](https://github.com/knsv/mermaid/issues/471) +- Sequence Diagram: Missing x on async arrows (png) [#469](https://github.com/knsv/mermaid/issues/469) +- live editor: the svg file rendered from graph is not supported by browsers [#468](https://github.com/knsv/mermaid/issues/468) +- Not found css [#462](https://github.com/knsv/mermaid/issues/462) +- Phantomjs Dependency [#461](https://github.com/knsv/mermaid/issues/461) +- Mermaid cli not working for subgraphs [#459](https://github.com/knsv/mermaid/issues/459) +- Support for notes across multiple participants? [#458](https://github.com/knsv/mermaid/issues/458) +- Related to Issue #329: Phantomjs issues. [#455](https://github.com/knsv/mermaid/issues/455) +- Add a click style [#426](https://github.com/knsv/mermaid/issues/426) +- Add Parallel block (par) to sequence diagrams [#425](https://github.com/knsv/mermaid/issues/425) +- updating shapes after the flow chart rendering complete [#424](https://github.com/knsv/mermaid/issues/424) +- can't catch parse error Maximum call stack size exceeded on safari [#421](https://github.com/knsv/mermaid/issues/421) +- Arrows endings are missing [#419](https://github.com/knsv/mermaid/issues/419) +- shouldn't mermaid become more like Markdown ? [#417](https://github.com/knsv/mermaid/issues/417) +- Live editor show rendered diagram if syntax invalid [#415](https://github.com/knsv/mermaid/issues/415) +- Linkstyle stroke does not work [#410](https://github.com/knsv/mermaid/issues/410) +- flowchart id's with dots in them .. break links [#408](https://github.com/knsv/mermaid/issues/408) +- Flowchart: Link text beginning with lowercase 'o' causes flowchart to break [#407](https://github.com/knsv/mermaid/issues/407) +- Some Chinese character will case Safari no responding. [#405](https://github.com/knsv/mermaid/issues/405) +- Cannot center-justify text in nodes? [#397](https://github.com/knsv/mermaid/issues/397) +- Edge labels should have white background in live editor [#396](https://github.com/knsv/mermaid/issues/396) +- Live editor does not support activate/deactivate [#394](https://github.com/knsv/mermaid/issues/394) +- Styling subgraph? [#391](https://github.com/knsv/mermaid/issues/391) +- Update live editor to version 6.0.0 [#387](https://github.com/knsv/mermaid/issues/387) +- sequence diagram config issue [#385](https://github.com/knsv/mermaid/issues/385) +- How to add newline in the text [#384](https://github.com/knsv/mermaid/issues/384) +- PhantomJS crashes on a large graph [#380](https://github.com/knsv/mermaid/issues/380) +- Finnish support for class diagrams using plantuml syntax [#377](https://github.com/knsv/mermaid/issues/377) +- mermaidAPI.render generated different svg code from mermaid.int() [#374](https://github.com/knsv/mermaid/issues/374) +- Put your own action on the chart [#372](https://github.com/knsv/mermaid/issues/372) +- when declaring participants the elements are generated twice [#370](https://github.com/knsv/mermaid/issues/370) +- Example Flowchart is cut in display (Chrome). [#368](https://github.com/knsv/mermaid/issues/368) +- Add shebang support to diagrams [#365](https://github.com/knsv/mermaid/issues/365) +- Silencing CLI output [#352](https://github.com/knsv/mermaid/issues/352) +- SequenceDiagram: 3+ Alternative Paths [#348](https://github.com/knsv/mermaid/issues/348) +- Smaller height of actor boxes [#342](https://github.com/knsv/mermaid/issues/342) +- Question: lib/phantomscript.js - foreignObjects in SVG - related to #58 [#340](https://github.com/knsv/mermaid/issues/340) +- npm test fails on osx being blocked at Can not load "PhantomJS", it is not registered! [#337](https://github.com/knsv/mermaid/issues/337) +- Tabs & subgraphs cause rendering error [#336](https://github.com/knsv/mermaid/issues/336) +- Display question: right angles [#335](https://github.com/knsv/mermaid/issues/335) +- No Arrows rendered v0.5.8 [#330](https://github.com/knsv/mermaid/issues/330) +- You had errors in your syntax. Use --help for further information. [#327](https://github.com/knsv/mermaid/issues/327) +- Allow alternate arrow syntax that doesn't close html comments [#322](https://github.com/knsv/mermaid/issues/322) +- Comment in subgraph [#319](https://github.com/knsv/mermaid/issues/319) +- Update graph [#311](https://github.com/knsv/mermaid/issues/311) +- css conflicts with boostrap's css [#308](https://github.com/knsv/mermaid/issues/308) +- Can not get click event to fire. [#306](https://github.com/knsv/mermaid/issues/306) +- Fix phantomjs2 compatibility [#304](https://github.com/knsv/mermaid/issues/304) +- Flowcharts do not work in native IE11 [#303](https://github.com/knsv/mermaid/issues/303) +- Integration with remark.js - tutorial added [#302](https://github.com/knsv/mermaid/issues/302) +- Sequence diagram Loops: changing boxMargin spoils the "loop" notation [#299](https://github.com/knsv/mermaid/issues/299) +- src/mermaid.js generates bad code [#297](https://github.com/knsv/mermaid/issues/297) +- Fresh fork: jasmine tests fail [#294](https://github.com/knsv/mermaid/issues/294) +- CSS clash [#292](https://github.com/knsv/mermaid/issues/292) +- Mermaid does not work in Chrome 48 [#281](https://github.com/knsv/mermaid/issues/281) +- circle and ellipse cannot change color by classDef [#271](https://github.com/knsv/mermaid/issues/271) +- npm run watch doesn't work due missing dependencies [#266](https://github.com/knsv/mermaid/issues/266) +- label out of node [#262](https://github.com/knsv/mermaid/issues/262) +- IE11 Support issue [#261](https://github.com/knsv/mermaid/issues/261) +- mermaid without browser [#260](https://github.com/knsv/mermaid/issues/260) +- Insufficient capacity of gantt diagrams [#226](https://github.com/knsv/mermaid/issues/226) +- some WARN about installation [#222](https://github.com/knsv/mermaid/issues/222) +- Live editor offline access [#217](https://github.com/knsv/mermaid/issues/217) +- suggest: code highlight mode config for editors [#212](https://github.com/knsv/mermaid/issues/212) +- Uncaught RangeError: Maximum call stack size exceeded [#189](https://github.com/knsv/mermaid/issues/189) +- Styling label texts [#50](https://github.com/knsv/mermaid/issues/50) + +**Merged pull requests:** + +- Remove console.log in classDB. [#861](https://github.com/knsv/mermaid/pull/861) ([Arthaey](https://github.com/Arthaey)) +- Bump sshpk from 1.13.1 to 1.16.1 [#851](https://github.com/knsv/mermaid/pull/851) ([dependabot\[bot\]](https://github.com/apps/dependabot)) +- Significantly smaller bundles [#850](https://github.com/knsv/mermaid/pull/850) ([fabiospampinato](https://github.com/fabiospampinato)) +- Support styling of subgraphs [#845](https://github.com/knsv/mermaid/pull/845) ([Qix-](https://github.com/Qix-)) +- fix dark theme loop labels not visible [#837](https://github.com/knsv/mermaid/pull/837) ([jnnnnn](https://github.com/jnnnnn)) +- fix draw function can only call once [#832](https://github.com/knsv/mermaid/pull/832) ([vaniship](https://github.com/vaniship)) +- Fix dotted lines not appearing in flowcharts when HTML labels disabled [#828](https://github.com/knsv/mermaid/pull/828) ([stanhu](https://github.com/stanhu)) +- Fix issue with XML line breaks inside vertex labels [#824](https://github.com/knsv/mermaid/pull/824) ([jsyang](https://github.com/jsyang)) +- fixed diagrams [#810](https://github.com/knsv/mermaid/pull/810) ([0xflotus](https://github.com/0xflotus)) +- Clickable gantt tasks [#804](https://github.com/knsv/mermaid/pull/804) ([abzicht](https://github.com/abzicht)) +- linkStyle now supports list of indexes with a few tests [#798](https://github.com/knsv/mermaid/pull/798) ([ivan-danilov](https://github.com/ivan-danilov)) +- fix class diagram mermaid [#795](https://github.com/knsv/mermaid/pull/795) ([DanShai](https://github.com/DanShai)) +- Added exclude weekdays to definition [#792](https://github.com/knsv/mermaid/pull/792) ([jopapo](https://github.com/jopapo)) +- SVG link rendering [#791](https://github.com/knsv/mermaid/pull/791) ([flying-sheep](https://github.com/flying-sheep)) +- Gantt milestones [#788](https://github.com/knsv/mermaid/pull/788) ([gijswijs](https://github.com/gijswijs)) +- Remove duplicate code [#768](https://github.com/knsv/mermaid/pull/768) ([znxkznxk1030](https://github.com/znxkznxk1030)) +- Render nodes as real links [#765](https://github.com/knsv/mermaid/pull/765) ([flying-sheep](https://github.com/flying-sheep)) +- Fix issue with marker-end. [#757](https://github.com/knsv/mermaid/pull/757) ([gjlubbertsen](https://github.com/gjlubbertsen)) +- Make Class Diagrams usable in Stackedit and Live Editor [#749](https://github.com/knsv/mermaid/pull/749) ([monsterkrampe](https://github.com/monsterkrampe)) +- Adding trapezoid and inverse trapezoid vertex options. [#741](https://github.com/knsv/mermaid/pull/741) ([adamwulf](https://github.com/adamwulf)) +- Add option for right angles [#721](https://github.com/knsv/mermaid/pull/721) ([paulbland](https://github.com/paulbland)) +- Add nested activation classes [#720](https://github.com/knsv/mermaid/pull/720) ([paulbland](https://github.com/paulbland)) +- wip: class diagram cardinality display [#705](https://github.com/knsv/mermaid/pull/705) ([Vrixyz](https://github.com/Vrixyz)) +- add comments about CSS in config [#688](https://github.com/knsv/mermaid/pull/688) ([imma90](https://github.com/imma90)) +- SequenceDiagram: Add support for multiple alt else statements [#641](https://github.com/knsv/mermaid/pull/641) ([sechel](https://github.com/sechel)) +- fix #426 - add class .clickable on nodes with click function or link [#598](https://github.com/knsv/mermaid/pull/598) ([thomasleveil](https://github.com/thomasleveil)) +- Spec fix 1 [#595](https://github.com/knsv/mermaid/pull/595) ([frankschmitt](https://github.com/frankschmitt)) + +## [7.0.5](https://github.com/knsv/mermaid/tree/7.0.5) (2017-09-01) + +[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.3...7.0.5) + +**Closed issues:** + +- live editor latin error after update [#560](https://github.com/knsv/mermaid/issues/560) +- Simple full example in online documentation is broken [#558](https://github.com/knsv/mermaid/issues/558) +- Graph No Arrow Head v7.0.3 [#543](https://github.com/knsv/mermaid/issues/543) +- Conflict while using mermaid along with core-js [#512](https://github.com/knsv/mermaid/issues/512) +- Export to pdf on website [#496](https://github.com/knsv/mermaid/issues/496) +- New downstream project: Mermaid Preview for VSCode [#442](https://github.com/knsv/mermaid/issues/442) +- Can't Zoom the flowchart ? [#399](https://github.com/knsv/mermaid/issues/399) +- line labels are not rendered correctly in live editor [#366](https://github.com/knsv/mermaid/issues/366) +- mermaid-loader [#361](https://github.com/knsv/mermaid/issues/361) +- Are there any documentation or examples for classDiagram and gitGraph? [#359](https://github.com/knsv/mermaid/issues/359) +- \# character broken in 0.5.8 [#347](https://github.com/knsv/mermaid/issues/347) +- Documentation issue: CSS example is not visible [#345](https://github.com/knsv/mermaid/issues/345) +- Include documentation for command line usage [#326](https://github.com/knsv/mermaid/issues/326) +- Fresh fork: can't build dist [#296](https://github.com/knsv/mermaid/issues/296) +- Invalid value for \<svg> attribute viewBox="0 0 -Infinity -Infinity" [#291](https://github.com/knsv/mermaid/issues/291) +- Webpack require fails [#277](https://github.com/knsv/mermaid/issues/277) +- New documentation - need improved logo [#216](https://github.com/knsv/mermaid/issues/216) + +## [7.0.3](https://github.com/knsv/mermaid/tree/7.0.3) (2017-06-04) + +[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.2...7.0.3) + +**Closed issues:** + +- the documentation website is down [#539](https://github.com/knsv/mermaid/issues/539) +- Good example of interactivity with mermaidAPI [#514](https://github.com/knsv/mermaid/issues/514) + +## [7.0.2](https://github.com/knsv/mermaid/tree/7.0.2) (2017-06-01) + +[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.0...7.0.2) + +**Closed issues:** + +- CDN is not working [#511](https://github.com/knsv/mermaid/issues/511) +- A sampe sequenceDiagram crashes mermaid-cli [#492](https://github.com/knsv/mermaid/issues/492) +- Mermaid doesn't delete nodes when called multiple times [#491](https://github.com/knsv/mermaid/issues/491) +- API crashes on 2nd render() call [#478](https://github.com/knsv/mermaid/issues/478) +- sequenceDiagram: dotted line for alt and empty bracket should be hidden [#456](https://github.com/knsv/mermaid/issues/456) +- SVG output (almost) not correct [#434](https://github.com/knsv/mermaid/issues/434) +- How to set axisFormatter of gantt in mermaid CLI? [#428](https://github.com/knsv/mermaid/issues/428) +- customizing link style with any color sets `fill` property to `black` instead of `none` [#416](https://github.com/knsv/mermaid/issues/416) +- New line at the end of SVG file [#400](https://github.com/knsv/mermaid/issues/400) +- CLI doesn't work [#389](https://github.com/knsv/mermaid/issues/389) +- Can't render subgraphs with htmlLabels: false [#367](https://github.com/knsv/mermaid/issues/367) +- Color arrowhead [#362](https://github.com/knsv/mermaid/issues/362) +- CLI: Invisible text, lines in SVG output [#341](https://github.com/knsv/mermaid/issues/341) + +**Merged pull requests:** + +- Support Multi-line Actor Descriptions [#764](https://github.com/knsv/mermaid/pull/764) ([watsoncj](https://github.com/watsoncj)) +- Update Travis config [#538](https://github.com/knsv/mermaid/pull/538) ([tylerlong](https://github.com/tylerlong)) +- Fix spelling of 'you' in sequenceDiagram docs [#537](https://github.com/knsv/mermaid/pull/537) ([ctruelson](https://github.com/ctruelson)) +- Improve CLI output [#536](https://github.com/knsv/mermaid/pull/536) ([gibson042](https://github.com/gibson042)) +- Modernize mermaid [#524](https://github.com/knsv/mermaid/pull/524) ([tylerlong](https://github.com/tylerlong)) +- Modernize mermaid [#519](https://github.com/knsv/mermaid/pull/519) ([tylerlong](https://github.com/tylerlong)) +- Update CLI instructions [#509](https://github.com/knsv/mermaid/pull/509) ([filipedeschamps](https://github.com/filipedeschamps)) +- Add style for classDiagram to dark/default theme [#503](https://github.com/knsv/mermaid/pull/503) ([yudenzel](https://github.com/yudenzel)) +- Fix documentation for git graph. [#498](https://github.com/knsv/mermaid/pull/498) ([gomlgs](https://github.com/gomlgs)) +- Fix links in documentations [#497](https://github.com/knsv/mermaid/pull/497) ([saveman71](https://github.com/saveman71)) +- Update README.md with git graph sample [#481](https://github.com/knsv/mermaid/pull/481) ([raghur](https://github.com/raghur)) +- Fix misspelling of “another” [#479](https://github.com/knsv/mermaid/pull/479) ([stevenschobert](https://github.com/stevenschobert)) +- Fixed #456 sequenceDiagram: dotted line for alt and empty bracket sho… [#477](https://github.com/knsv/mermaid/pull/477) ([brookhong](https://github.com/brookhong)) +- Add viewbox attr to class diagram [#473](https://github.com/knsv/mermaid/pull/473) ([gnkm](https://github.com/gnkm)) +- add par statement to sequenceDiagram [#470](https://github.com/knsv/mermaid/pull/470) ([u-minor](https://github.com/u-minor)) + +## [7.0.0](https://github.com/knsv/mermaid/tree/7.0.0) (2017-01-29) + +[Full Changelog](https://github.com/knsv/mermaid/compare/6.0.0...7.0.0) + +**Implemented enhancements:** + +- npm install -g mermaid does not install phantomjs [#329](https://github.com/knsv/mermaid/issues/329) +- activation boxes [#313](https://github.com/knsv/mermaid/issues/313) + +**Closed issues:** + +- demos on io site not working [#466](https://github.com/knsv/mermaid/issues/466) +- Can not be generated PNG pictures through CLI with Chinese [#451](https://github.com/knsv/mermaid/issues/451) +- Round nodes cannot be styled with CSS classes [#443](https://github.com/knsv/mermaid/issues/443) +- webpack gulp UglifyJsPlugin error. [#440](https://github.com/knsv/mermaid/issues/440) +- String concatenation isn't working [#432](https://github.com/knsv/mermaid/issues/432) +- text flow/wrap in actor box of sequence diagram [#422](https://github.com/knsv/mermaid/issues/422) +- Online live editor still use old version [#402](https://github.com/knsv/mermaid/issues/402) +- uncaught TypeError: t.getTransformToElement is not a function [#401](https://github.com/knsv/mermaid/issues/401) +- Only works when using browserify'd code [#373](https://github.com/knsv/mermaid/issues/373) +- document the use of shebang line in mmd files [#364](https://github.com/knsv/mermaid/issues/364) +- Diagrams are small and unreadable in IE 11 - since 0.5.1 [#356](https://github.com/knsv/mermaid/issues/356) +- \[Feature Request] ER-Diagram Support [#354](https://github.com/knsv/mermaid/issues/354) +- The need for mermaid.css should be mentioned explicitly in the intro docs... [#273](https://github.com/knsv/mermaid/issues/273) + +**Merged pull requests:** + +- Update index.html [#465](https://github.com/knsv/mermaid/pull/465) ([bmsleight](https://github.com/bmsleight)) +- Fix for #416, customizing link style with any color sets `fill` property to `black` instead of `none` [#452](https://github.com/knsv/mermaid/pull/452) ([joshuacolvin](https://github.com/joshuacolvin)) +- Allow .node>circle to receive css styles [#449](https://github.com/knsv/mermaid/pull/449) ([bfriedz](https://github.com/bfriedz)) +- Fix spelling [#447](https://github.com/knsv/mermaid/pull/447) ([jawn](https://github.com/jawn)) +- added tests and fix cli css style selector lowercase problem [#445](https://github.com/knsv/mermaid/pull/445) ([whyzdev](https://github.com/whyzdev)) +- Update d3.js [#441](https://github.com/knsv/mermaid/pull/441) ([hetz](https://github.com/hetz)) +- added tests to reproduce #434 in flowchart [#439](https://github.com/knsv/mermaid/pull/439) ([whyzdev](https://github.com/whyzdev)) +- Code Climate config [#437](https://github.com/knsv/mermaid/pull/437) ([larkinscott](https://github.com/larkinscott)) +- fix gantt and sequence digram cli cfg [#435](https://github.com/knsv/mermaid/pull/435) ([whyzdev](https://github.com/whyzdev)) +- fix gantt chart cli configuration broken [#433](https://github.com/knsv/mermaid/pull/433) ([whyzdev](https://github.com/whyzdev)) +- fix gantt chart cli configuration parsing including functions [#430](https://github.com/knsv/mermaid/pull/430) ([whyzdev](https://github.com/whyzdev)) +- Uses an empty text node instead of a string for svg group labels [#429](https://github.com/knsv/mermaid/pull/429) ([daveaglick](https://github.com/daveaglick)) +- use tspan via d3.textwrap to place actor text in sequence diagram [#427](https://github.com/knsv/mermaid/pull/427) ([whyzdev](https://github.com/whyzdev)) +- \#422 use foreignObject/div to place actor label in sequence diagram [#423](https://github.com/knsv/mermaid/pull/423) ([whyzdev](https://github.com/whyzdev)) +- Clarify the need for a CSS stylesheet [#413](https://github.com/knsv/mermaid/pull/413) ([sifb](https://github.com/sifb)) +- Added hads downstream project [#412](https://github.com/knsv/mermaid/pull/412) ([sinedied](https://github.com/sinedied)) +- update usage and fix #273 [#406](https://github.com/knsv/mermaid/pull/406) ([jinntrance](https://github.com/jinntrance)) +- Add https://github.com/raghur/mermaid-filter to downstream projects docs page [#404](https://github.com/knsv/mermaid/pull/404) ([raghur](https://github.com/raghur)) +- New neutral theme [#395](https://github.com/knsv/mermaid/pull/395) ([sinedied](https://github.com/sinedied)) +- fix cli issues [#390](https://github.com/knsv/mermaid/pull/390) ([ben-page](https://github.com/ben-page)) +- Add missing space for 'Labels out of bounds' section [#386](https://github.com/knsv/mermaid/pull/386) ([The-Alchemist](https://github.com/The-Alchemist)) +- Fix typo: `pats` -> `paths` [#382](https://github.com/knsv/mermaid/pull/382) ([swhgoon](https://github.com/swhgoon)) +- Added class diagram example to README.md [#379](https://github.com/knsv/mermaid/pull/379) ([HustLion](https://github.com/HustLion)) +- override normal flowchart arrowhead to allow css styling [#376](https://github.com/knsv/mermaid/pull/376) ([dodoinblue](https://github.com/dodoinblue)) +- added sphinx extension [#371](https://github.com/knsv/mermaid/pull/371) ([mgaitan](https://github.com/mgaitan)) +- Fix typo in the sequence diagram documentation [#369](https://github.com/knsv/mermaid/pull/369) ([ggpasqualino](https://github.com/ggpasqualino)) + +## [6.0.0](https://github.com/knsv/mermaid/tree/6.0.0) (2016-05-29) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.8...6.0.0) + +**Closed issues:** + +- Docs css: code hard to read [#324](https://github.com/knsv/mermaid/issues/324) +- About Markpad integration [#323](https://github.com/knsv/mermaid/issues/323) +- How to link backwards in flowchart? [#321](https://github.com/knsv/mermaid/issues/321) +- Help with editor [#310](https://github.com/knsv/mermaid/issues/310) +- \+1 [#293](https://github.com/knsv/mermaid/issues/293) +- Basic chart does not render on Chome, but does in Firefox [#290](https://github.com/knsv/mermaid/issues/290) +- Live editor is broken [#285](https://github.com/knsv/mermaid/issues/285) +- "No such file or directory" trying to run mermaid 0.5.7 on OS X [#284](https://github.com/knsv/mermaid/issues/284) +- participant name as "Long Long Name" [#283](https://github.com/knsv/mermaid/issues/283) +- Windows - cli - could not find phantomjs at the specified path [#236](https://github.com/knsv/mermaid/issues/236) + +**Merged pull requests:** + +- The option of gantt for the spaces for the section names. [#353](https://github.com/knsv/mermaid/pull/353) ([zeroyonichihachi](https://github.com/zeroyonichihachi)) +- Gitgraph: Make reset work with parent ref carets [#350](https://github.com/knsv/mermaid/pull/350) ([raghur](https://github.com/raghur)) +- Remove the text-shadows that make the text look blurry [#349](https://github.com/knsv/mermaid/pull/349) ([AsaAyers](https://github.com/AsaAyers)) +- add line interpolation to linkStyle in flowchart [#346](https://github.com/knsv/mermaid/pull/346) ([AlanHohn](https://github.com/AlanHohn)) +- Support git graph diagrams in mermaid [#344](https://github.com/knsv/mermaid/pull/344) ([raghur](https://github.com/raghur)) +- Build and test execution changes [#338](https://github.com/knsv/mermaid/pull/338) ([ssbarnea](https://github.com/ssbarnea)) +- Reformatting of css files [#331](https://github.com/knsv/mermaid/pull/331) ([Jmuccigr](https://github.com/Jmuccigr)) +- (WIP) Sequence Diagram Title Support [#320](https://github.com/knsv/mermaid/pull/320) ([bronsoja](https://github.com/bronsoja)) +- activations doc + few fixes [#318](https://github.com/knsv/mermaid/pull/318) ([ciekawy](https://github.com/ciekawy)) +- Dark theme for better contrast on darker backgrounds [#317](https://github.com/knsv/mermaid/pull/317) ([crodriguez1a](https://github.com/crodriguez1a)) +- Activations [#316](https://github.com/knsv/mermaid/pull/316) ([ciekawy](https://github.com/ciekawy)) +- Support leading comments for sequenceDiagrams [#312](https://github.com/knsv/mermaid/pull/312) ([ashsearle](https://github.com/ashsearle)) +- Show a little lenience for white-space around names [#309](https://github.com/knsv/mermaid/pull/309) ([ashsearle](https://github.com/ashsearle)) +- Update list of downstream projects [#307](https://github.com/knsv/mermaid/pull/307) ([maxArturo](https://github.com/maxArturo)) +- Issue 299: Sequence diagram Loops: changing boxMargin spoils the "loop" notation [#300](https://github.com/knsv/mermaid/pull/300) ([LarryKlugerDS](https://github.com/LarryKlugerDS)) +- Issue 297 - src/mermaid.js generates bad code [#298](https://github.com/knsv/mermaid/pull/298) ([LarryKlugerDS](https://github.com/LarryKlugerDS)) +- Updated instructions for running tests [#295](https://github.com/knsv/mermaid/pull/295) ([LarryKlugerDS](https://github.com/LarryKlugerDS)) +- Add Markdown Plus to Downstream projects [#288](https://github.com/knsv/mermaid/pull/288) ([tylerlong](https://github.com/tylerlong)) +- Quote phantomPath so that it doesn't fail on window [#286](https://github.com/knsv/mermaid/pull/286) ([raghur](https://github.com/raghur)) + +## [0.5.8](https://github.com/knsv/mermaid/tree/0.5.8) (2016-01-27) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.7...0.5.8) + +## [0.5.7](https://github.com/knsv/mermaid/tree/0.5.7) (2016-01-25) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.6...0.5.7) + +**Closed issues:** + +- Mermaid + LightPaper = ❤️ [#280](https://github.com/knsv/mermaid/issues/280) +- Bower Integration [#278](https://github.com/knsv/mermaid/issues/278) +- Mermaid breaks when variables end in 'v' [#276](https://github.com/knsv/mermaid/issues/276) +- sequence diagrams don't support participant aliasing [#263](https://github.com/knsv/mermaid/issues/263) +- One diagram that fails to render stops further execution on the page [#259](https://github.com/knsv/mermaid/issues/259) +- Where to find line layout algorithm? [#258](https://github.com/knsv/mermaid/issues/258) +- Compatibility with node.js [#257](https://github.com/knsv/mermaid/issues/257) +- Label resizing with dynamically loaded fonts [#255](https://github.com/knsv/mermaid/issues/255) +- SVG arrowheads are broken in the CLI [#249](https://github.com/knsv/mermaid/issues/249) +- Cannot read property 'replace' of undefined [#239](https://github.com/knsv/mermaid/issues/239) + +**Merged pull requests:** + +- gh-50 Allow styling of edge labels in css [#267](https://github.com/knsv/mermaid/pull/267) ([Anoia](https://github.com/Anoia)) +- Allow sequenceDiagram participant aliasing [#265](https://github.com/knsv/mermaid/pull/265) ([gibson042](https://github.com/gibson042)) + +## [0.5.6](https://github.com/knsv/mermaid/tree/0.5.6) (2015-11-22) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.5...0.5.6) + +**Implemented enhancements:** + +- Add download SVG link to the live editor [#144](https://github.com/knsv/mermaid/issues/144) + +**Fixed bugs:** + +- Live Editor: Permalink address not being parsed [#202](https://github.com/knsv/mermaid/issues/202) + +**Closed issues:** + +- title doesn't work in sequenceDiagram [#248](https://github.com/knsv/mermaid/issues/248) +- hypen-minus should be valid in sequence diagram alt/else/etc. descriptions [#247](https://github.com/knsv/mermaid/issues/247) +- Broken in firefox? [#245](https://github.com/knsv/mermaid/issues/245) +- When there is a Chinese symbol in the flowchart, it will crash。 [#238](https://github.com/knsv/mermaid/issues/238) +- Non-alpha characters included in ALPHA token (flow graph jison) [#232](https://github.com/knsv/mermaid/issues/232) +- subgraph not rendering with change to sample [#231](https://github.com/knsv/mermaid/issues/231) +- sequence diagram requires a new line at the end? [#229](https://github.com/knsv/mermaid/issues/229) + +**Merged pull requests:** + +- Make sequenceDiagram terminal newline optional [#253](https://github.com/knsv/mermaid/pull/253) ([gibson042](https://github.com/gibson042)) +- Support sequenceDiagram "over" notes [#252](https://github.com/knsv/mermaid/pull/252) ([gibson042](https://github.com/gibson042)) +- Properly handle "rest of line" statements [#251](https://github.com/knsv/mermaid/pull/251) ([gibson042](https://github.com/gibson042)) +- CLI: Propagate exit code from lib (i.e., phantomjs) [#250](https://github.com/knsv/mermaid/pull/250) ([gibson042](https://github.com/gibson042)) +- flowRender.js - Fix FontAwesome icon insert [#244](https://github.com/knsv/mermaid/pull/244) ([ma-zal](https://github.com/ma-zal)) +- updated sequence diagram link in live editor [#242](https://github.com/knsv/mermaid/pull/242) ([r-a-v-a-s](https://github.com/r-a-v-a-s)) +- updated links in README.md [#240](https://github.com/knsv/mermaid/pull/240) ([r-a-v-a-s](https://github.com/r-a-v-a-s)) +- Ellipse syntax [#237](https://github.com/knsv/mermaid/pull/237) ([spect88](https://github.com/spect88)) +- Allow keywords as suffixes of node ids [#235](https://github.com/knsv/mermaid/pull/235) ([spect88](https://github.com/spect88)) +- Highlighted the editor in the nav [#234](https://github.com/knsv/mermaid/pull/234) ([knsv](https://github.com/knsv)) +- Live editor tweaks [#233](https://github.com/knsv/mermaid/pull/233) ([spect88](https://github.com/spect88)) +- Add a Gitter chat badge to README.md [#230](https://github.com/knsv/mermaid/pull/230) ([gitter-badger](https://github.com/gitter-badger)) + +## [0.5.5](https://github.com/knsv/mermaid/tree/0.5.5) (2015-10-21) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.4...0.5.5) + +**Closed issues:** + +- sequence diagram, arrowhead instead of crosshead [#227](https://github.com/knsv/mermaid/issues/227) + +**Merged pull requests:** + +- Fix a typo: crosshead --> arrowhead [#228](https://github.com/knsv/mermaid/pull/228) ([tylerlong](https://github.com/tylerlong)) + +## [0.5.4](https://github.com/knsv/mermaid/tree/0.5.4) (2015-10-19) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.3...0.5.4) + +**Implemented enhancements:** + +- Set log level from mermaid configuration [#220](https://github.com/knsv/mermaid/issues/220) +- Links in sequence diagrams [#159](https://github.com/knsv/mermaid/issues/159) +- Add syntax for double headed arrows [#123](https://github.com/knsv/mermaid/issues/123) + +**Fixed bugs:** + +- comment characters `%%` cause parse error [#141](https://github.com/knsv/mermaid/issues/141) + +**Closed issues:** + +- Marker-end arrow cannot be shown for URL with query parameter [#225](https://github.com/knsv/mermaid/issues/225) +- Please update bower's D3 version [#221](https://github.com/knsv/mermaid/issues/221) +- Width fixed to 400px [#204](https://github.com/knsv/mermaid/issues/204) +- render to png from the cli does not display the marker-end arrow heads [#181](https://github.com/knsv/mermaid/issues/181) + +**Merged pull requests:** + +- Allow `end` as a substring of vertex id [#224](https://github.com/knsv/mermaid/pull/224) ([spect88](https://github.com/spect88)) +- Remove duplicate npm dependencies: d3 and he [#223](https://github.com/knsv/mermaid/pull/223) ([spect88](https://github.com/spect88)) + +## [0.5.3](https://github.com/knsv/mermaid/tree/0.5.3) (2015-10-04) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.2...0.5.3) + +## [0.5.2](https://github.com/knsv/mermaid/tree/0.5.2) (2015-10-04) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.1...0.5.2) + +**Implemented enhancements:** + +- Support for hyperlink and tooltip [#34](https://github.com/knsv/mermaid/issues/34) + +**Closed issues:** + +- Installing “atom-mermaid@0.1.3” failed [#218](https://github.com/knsv/mermaid/issues/218) +- node feature request [#211](https://github.com/knsv/mermaid/issues/211) +- Please add prefix for styles [#208](https://github.com/knsv/mermaid/issues/208) +- Bad handling of block arguments [#207](https://github.com/knsv/mermaid/issues/207) +- please consider port to mac osx [#203](https://github.com/knsv/mermaid/issues/203) +- allow phantomjs >=1.9.x [#201](https://github.com/knsv/mermaid/issues/201) +- syntax for venn diagrams? [#200](https://github.com/knsv/mermaid/issues/200) +- Broken CLI Graphs? (v0.5.1) [#196](https://github.com/knsv/mermaid/issues/196) +- Static site does not render under HTTPS [#194](https://github.com/knsv/mermaid/issues/194) +- Error on simple graph [#192](https://github.com/knsv/mermaid/issues/192) +- Escape "~" [#191](https://github.com/knsv/mermaid/issues/191) +- Trying to add link using 'click' to flowchart [#188](https://github.com/knsv/mermaid/issues/188) +- cli: no lines and arrowheads rendered / only dotted lines [#187](https://github.com/knsv/mermaid/issues/187) +- text of mermaid div displayed on page [#186](https://github.com/knsv/mermaid/issues/186) +- using mermaid with laravel [#185](https://github.com/knsv/mermaid/issues/185) +- Atom editor package [#183](https://github.com/knsv/mermaid/issues/183) +- Auto linewrap for notes in sequence diagrams [#178](https://github.com/knsv/mermaid/issues/178) +- Execute code after initialize [#176](https://github.com/knsv/mermaid/issues/176) +- Autoscaling for all diagram types [#175](https://github.com/knsv/mermaid/issues/175) +- Problem wit click event callback [#174](https://github.com/knsv/mermaid/issues/174) +- How to escape characters? [#170](https://github.com/knsv/mermaid/issues/170) +- it can not work [#167](https://github.com/knsv/mermaid/issues/167) +- Broken subgraph using the CLI [#153](https://github.com/knsv/mermaid/issues/153) +- IE Support issue [#142](https://github.com/knsv/mermaid/issues/142) +- Flowchart truncated [#140](https://github.com/knsv/mermaid/issues/140) +- Double Quote as text is not working [#219](https://github.com/knsv/mermaid/issues/219) +- classDef / class not working with htmlLabels? [#210](https://github.com/knsv/mermaid/issues/210) +- Links in graph missing [#209](https://github.com/knsv/mermaid/issues/209) +- Last word in comment boxes getting cut off by word wrap library : ( [#195](https://github.com/knsv/mermaid/issues/195) +- Escaping characters in sequence diagram [#193](https://github.com/knsv/mermaid/issues/193) +- SVG foreignObject rendering [#180](https://github.com/knsv/mermaid/issues/180) +- IE9 issue [#179](https://github.com/knsv/mermaid/issues/179) +- inoperable in an AMD/requirejs environment: IPython Notebook [#127](https://github.com/knsv/mermaid/issues/127) +- \[Parser] Hyphen in participant name bring TypeError [#74](https://github.com/knsv/mermaid/issues/74) + +**Merged pull requests:** + +- Update flowchart.md [#214](https://github.com/knsv/mermaid/pull/214) ([orschiro](https://github.com/orschiro)) +- Default style when using the CLI [#205](https://github.com/knsv/mermaid/pull/205) ([gillesdemey](https://github.com/gillesdemey)) +- Gantt chart - add minutes and seconds durations [#198](https://github.com/knsv/mermaid/pull/198) ([dbrans](https://github.com/dbrans)) +- Using QUnit for AMD testing [#190](https://github.com/knsv/mermaid/pull/190) ([bollwyvl](https://github.com/bollwyvl)) +- Update phantomscript.js [#182](https://github.com/knsv/mermaid/pull/182) ([phairow](https://github.com/phairow)) + +## [0.5.1](https://github.com/knsv/mermaid/tree/0.5.1) (2015-06-21) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.0...0.5.1) + +**Implemented enhancements:** + +- To SVG Export [#146](https://github.com/knsv/mermaid/issues/146) +- Possibility to set the width of the generated flowchart [#129](https://github.com/knsv/mermaid/issues/129) +- Special characters break parsing [#54](https://github.com/knsv/mermaid/issues/54) +- Responsive graph layout for mobile viewers [#51](https://github.com/knsv/mermaid/issues/51) +- Styling connector lines [#31](https://github.com/knsv/mermaid/issues/31) + +**Fixed bugs:** + +- flowchart - styling of edges via css overrides specific styles set in the graph definition [#128](https://github.com/knsv/mermaid/issues/128) + +**Closed issues:** + +- Live editor is broken [#173](https://github.com/knsv/mermaid/issues/173) +- 0.5.0 no longer respects custom date definitions in Gantt diagrams [#171](https://github.com/knsv/mermaid/issues/171) +- Drop label character restrictions [#162](https://github.com/knsv/mermaid/issues/162) +- can't nest subgraphs in flowchart [#161](https://github.com/knsv/mermaid/issues/161) +- Unable to generate gantt diagram with mermaid CLI [#158](https://github.com/knsv/mermaid/issues/158) +- Inline css by "mermaid" [#157](https://github.com/knsv/mermaid/issues/157) +- Finite State Machine Diagram [#152](https://github.com/knsv/mermaid/issues/152) +- How to center align gantt diagram [#150](https://github.com/knsv/mermaid/issues/150) +- Security concern regarding class definition [#148](https://github.com/knsv/mermaid/issues/148) +- File Extension [#147](https://github.com/knsv/mermaid/issues/147) +- `setTimeout` with clusters problematic with programmatic edits and no callback [#133](https://github.com/knsv/mermaid/issues/133) +- module.exports.cloneCssStyles() in combination with Angularjs breaks display in Chrome and IE [#126](https://github.com/knsv/mermaid/issues/126) +- Gantt - suitable xAxis for longer project [#125](https://github.com/knsv/mermaid/issues/125) +- How to get started with this project ? [#64](https://github.com/knsv/mermaid/issues/64) + +**Merged pull requests:** + +- Remove moot `version` property from bower.json [#172](https://github.com/knsv/mermaid/pull/172) ([kkirsche](https://github.com/kkirsche)) + +## [0.5.0](https://github.com/knsv/mermaid/tree/0.5.0) (2015-06-07) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.4.0...0.5.0) + +**Implemented enhancements:** + +- Add a css file, mermaid.css, with default styling [#122](https://github.com/knsv/mermaid/issues/122) +- software architecture diagram [#36](https://github.com/knsv/mermaid/issues/36) +- Support for bar charts and pie diagrams [#22](https://github.com/knsv/mermaid/issues/22) + +**Closed issues:** + +- uglifyjs wanrings which means we can improve the code [#156](https://github.com/knsv/mermaid/issues/156) +- New(er) features unavailable in downloadable js files? [#151](https://github.com/knsv/mermaid/issues/151) +- Add gh-gapes link to description [#143](https://github.com/knsv/mermaid/issues/143) +- Some examples not displayed on Firefox 36.0.1 [#138](https://github.com/knsv/mermaid/issues/138) +- tags ending in a "v" don't render [#132](https://github.com/knsv/mermaid/issues/132) +- Links in flowchart [#131](https://github.com/knsv/mermaid/issues/131) +- Using the library for iOS development [#130](https://github.com/knsv/mermaid/issues/130) +- Add capability for gantt diagrams [#118](https://github.com/knsv/mermaid/issues/118) +- lower case v causes error in the parser [#108](https://github.com/knsv/mermaid/issues/108) +- Label's css conflict with boostrap's .label [#67](https://github.com/knsv/mermaid/issues/67) +- TypeError: Cannot read property 'layout' of undefined [#37](https://github.com/knsv/mermaid/issues/37) + +**Merged pull requests:** + +- Dev 0.5.0 [#168](https://github.com/knsv/mermaid/pull/168) ([knsv](https://github.com/knsv)) +- Fix spacing [#164](https://github.com/knsv/mermaid/pull/164) ([rhcarvalho](https://github.com/rhcarvalho)) +- Fixing typo: "Think" -> "Thick" [#160](https://github.com/knsv/mermaid/pull/160) ([it0a](https://github.com/it0a)) +- IE, local html, cssRules access is denied [#155](https://github.com/knsv/mermaid/pull/155) ([tylerlong](https://github.com/tylerlong)) +- Add automatically generated change log file. [#139](https://github.com/knsv/mermaid/pull/139) ([skywinder](https://github.com/skywinder)) +- Adding init argument to the global API [#137](https://github.com/knsv/mermaid/pull/137) ([bollwyvl](https://github.com/bollwyvl)) +- Add description of manual calling of init [#136](https://github.com/knsv/mermaid/pull/136) ([bollwyvl](https://github.com/bollwyvl)) +- Allow other forms of node selection for init() [#135](https://github.com/knsv/mermaid/pull/135) ([bollwyvl](https://github.com/bollwyvl)) +- Use a library-level variable for assigning ids [#134](https://github.com/knsv/mermaid/pull/134) ([bollwyvl](https://github.com/bollwyvl)) + +## [0.4.0](https://github.com/knsv/mermaid/tree/0.4.0) (2015-03-01) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.5...0.4.0) + +**Implemented enhancements:** + +- Assymetric shapes not documented [#82](https://github.com/knsv/mermaid/issues/82) +- Improve arrows [#3](https://github.com/knsv/mermaid/issues/3) + +**Fixed bugs:** + +- NoModificationAllowedError [#23](https://github.com/knsv/mermaid/issues/23) + +**Closed issues:** + +- subgraph background is black in rendered flowchart PNG via CLI [#121](https://github.com/knsv/mermaid/issues/121) +- Integrate editor at https://github.com/naseer/mermaid-webapp [#110](https://github.com/knsv/mermaid/issues/110) +- Internet Explorer Support [#99](https://github.com/knsv/mermaid/issues/99) + +## [0.3.5](https://github.com/knsv/mermaid/tree/0.3.5) (2015-02-15) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.4...0.3.5) + +## [0.3.4](https://github.com/knsv/mermaid/tree/0.3.4) (2015-02-15) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.3...0.3.4) + +**Implemented enhancements:** + +- Apply styling from css when using the CLI utility [#85](https://github.com/knsv/mermaid/issues/85) +- Generated SVG works poorly outside web browsers [#58](https://github.com/knsv/mermaid/issues/58) +- Generating SVG text blob for use in Node [#2](https://github.com/knsv/mermaid/issues/2) + +**Closed issues:** + +- Subgraph syntax bug? [#120](https://github.com/knsv/mermaid/issues/120) +- Live editor [#115](https://github.com/knsv/mermaid/issues/115) +- Error in "Basic Syntax" wiki page [#113](https://github.com/knsv/mermaid/issues/113) +- semicolons, anyone? [#111](https://github.com/knsv/mermaid/issues/111) +- undefined `sequenceConfig` fails [#109](https://github.com/knsv/mermaid/issues/109) +- Sequence Diagrams: Show Actors below as well [#106](https://github.com/knsv/mermaid/issues/106) +- Allow overriding sequence diagram configuration (SVG properties) [#103](https://github.com/knsv/mermaid/issues/103) +- Error when rendering A-- This is the text -- B [#102](https://github.com/knsv/mermaid/issues/102) +- Clipping in documentation [#97](https://github.com/knsv/mermaid/issues/97) +- isolate class styling to the svg container [#92](https://github.com/knsv/mermaid/issues/92) +- Make the new graph declaration more visual [#40](https://github.com/knsv/mermaid/issues/40) + +**Merged pull requests:** + +- Add live editor [#119](https://github.com/knsv/mermaid/pull/119) ([naseer](https://github.com/naseer)) +- Adds CSS option to the CLI [#116](https://github.com/knsv/mermaid/pull/116) ([fardog](https://github.com/fardog)) +- Update flowchart.md in response Issue #113 [#114](https://github.com/knsv/mermaid/pull/114) ([vijay40](https://github.com/vijay40)) +- Ignore all files except the license and dist/ folder when installing with Bower. [#112](https://github.com/knsv/mermaid/pull/112) ([jasonbellamy](https://github.com/jasonbellamy)) + +## [0.3.3](https://github.com/knsv/mermaid/tree/0.3.3) (2015-01-25) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.2...0.3.3) + +**Implemented enhancements:** + +- Support for dotted links [#26](https://github.com/knsv/mermaid/issues/26) + +**Closed issues:** + +- Missing arrows in sequence diagram [#98](https://github.com/knsv/mermaid/issues/98) +- Error with >9 linkStyles [#95](https://github.com/knsv/mermaid/issues/95) + +**Merged pull requests:** + +- Require d3 directly to better support Node usage [#107](https://github.com/knsv/mermaid/pull/107) ([markdalgleish](https://github.com/markdalgleish)) +- update doc with -c option [#105](https://github.com/knsv/mermaid/pull/105) ([jjmr](https://github.com/jjmr)) +- Add new parameter to the console client to override the svg configuration in sequence diagrams [#104](https://github.com/knsv/mermaid/pull/104) ([jjmr](https://github.com/jjmr)) +- Text based labels, new shape [#101](https://github.com/knsv/mermaid/pull/101) ([bjowes](https://github.com/bjowes)) +- fix html tags in example usage [#100](https://github.com/knsv/mermaid/pull/100) ([deiwin](https://github.com/deiwin)) + +## [0.3.2](https://github.com/knsv/mermaid/tree/0.3.2) (2015-01-11) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.1...0.3.2) + +**Implemented enhancements:** + +- Make link text look like it is on the line [#53](https://github.com/knsv/mermaid/issues/53) + +**Closed issues:** + +- disable auto render [#91](https://github.com/knsv/mermaid/issues/91) +- Tidy breaks mermaid (linebreaks in \<div>) [#87](https://github.com/knsv/mermaid/issues/87) +- Bug: \<br> being rendered as text in node [#73](https://github.com/knsv/mermaid/issues/73) +- Graph edges appear to render outside of the canvas [#70](https://github.com/knsv/mermaid/issues/70) + +**Merged pull requests:** + +- Merge pull request #1 from knsv/master [#96](https://github.com/knsv/mermaid/pull/96) ([gkchic](https://github.com/gkchic)) +- Removed duplicated section in flowchart docs [#94](https://github.com/knsv/mermaid/pull/94) ([kaime](https://github.com/kaime)) +- Grammar changes to sequence page [#93](https://github.com/knsv/mermaid/pull/93) ([gkchic](https://github.com/gkchic)) +- Github buttons [#89](https://github.com/knsv/mermaid/pull/89) ([gkchic](https://github.com/gkchic)) +- Template change [#88](https://github.com/knsv/mermaid/pull/88) ([gkchic](https://github.com/gkchic)) + +## [0.3.1](https://github.com/knsv/mermaid/tree/0.3.1) (2015-01-05) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.0...0.3.1) + +**Implemented enhancements:** + +- Support for sequence diagrams [#16](https://github.com/knsv/mermaid/issues/16) +- Client utility for mermaid [#6](https://github.com/knsv/mermaid/issues/6) + +**Closed issues:** + +- Non ASCII chars in labels [#84](https://github.com/knsv/mermaid/issues/84) +- 'undefined' titles of Quicklinks on the usage page [#80](https://github.com/knsv/mermaid/issues/80) +- \[cli] Enhancement proposal: not fail --version / --help if phantomjs isn't installed [#71](https://github.com/knsv/mermaid/issues/71) + +**Merged pull requests:** + +- Flowchart doc: Text in the circle now in a circle [#81](https://github.com/knsv/mermaid/pull/81) ([Grahack](https://github.com/Grahack)) +- Fix for issue #73 [#79](https://github.com/knsv/mermaid/pull/79) ([it0a](https://github.com/it0a)) +- Ink template [#78](https://github.com/knsv/mermaid/pull/78) ([gkchic](https://github.com/gkchic)) +- Show help and version even if phantom isn't present. Fixes #71 [#75](https://github.com/knsv/mermaid/pull/75) ([fardog](https://github.com/fardog)) +- Add apostrophe & 'and' [#72](https://github.com/knsv/mermaid/pull/72) ([sudodoki](https://github.com/sudodoki)) + +## [0.3.0](https://github.com/knsv/mermaid/tree/0.3.0) (2014-12-22) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.16...0.3.0) + +**Implemented enhancements:** + +- How do I do comments? [#47](https://github.com/knsv/mermaid/issues/47) +- Improve readability with new line as terminator and whitespace [#38](https://github.com/knsv/mermaid/issues/38) + +**Fixed bugs:** + +- This characters failed the lexical parsing [#46](https://github.com/knsv/mermaid/issues/46) + +**Closed issues:** + +- Trailing whitespace at the end of lines is not ignored [#55](https://github.com/knsv/mermaid/issues/55) +- Use classes instead of inline style for easy styling [#24](https://github.com/knsv/mermaid/issues/24) + +**Merged pull requests:** + +- Adds Command Line Interface for generating PNGs from mermaid description files [#69](https://github.com/knsv/mermaid/pull/69) ([fardog](https://github.com/fardog)) +- Allow special symbols for direction along with acronyms [#66](https://github.com/knsv/mermaid/pull/66) ([vijay40](https://github.com/vijay40)) + +## [0.2.16](https://github.com/knsv/mermaid/tree/0.2.16) (2014-12-15) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.15...0.2.16) + +**Fixed bugs:** + +- Lines routed outside visible area [#19](https://github.com/knsv/mermaid/issues/19) + +**Closed issues:** + +- Mermaid not rendering properly on Wordpress pages [#59](https://github.com/knsv/mermaid/issues/59) +- Improve example page with live demo [#52](https://github.com/knsv/mermaid/issues/52) +- Does not render upon AngularJS Updates [#45](https://github.com/knsv/mermaid/issues/45) +- Download link in README.MD doesn't work. [#42](https://github.com/knsv/mermaid/issues/42) +- linkStyle usage is not obvious [#41](https://github.com/knsv/mermaid/issues/41) +- Move \*.spec.js in src/ to test/ [#35](https://github.com/knsv/mermaid/issues/35) + +**Merged pull requests:** + +- New grammar will allow statements ending without semicolon as disccused in Issue #38 [#63](https://github.com/knsv/mermaid/pull/63) ([vijay40](https://github.com/vijay40)) +- Class based styling [#62](https://github.com/knsv/mermaid/pull/62) ([bjowes](https://github.com/bjowes)) +- Fix typos [#60](https://github.com/knsv/mermaid/pull/60) ([sublimino](https://github.com/sublimino)) +- Included .DS_Store in gitignore [#57](https://github.com/knsv/mermaid/pull/57) ([alvynmcq](https://github.com/alvynmcq)) +- Improves readability discussed in issue #38 [#56](https://github.com/knsv/mermaid/pull/56) ([vijay40](https://github.com/vijay40)) +- Added a linting task for gulp [#43](https://github.com/knsv/mermaid/pull/43) ([serv](https://github.com/serv)) + +## [0.2.15](https://github.com/knsv/mermaid/tree/0.2.15) (2014-12-05) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.14...0.2.15) + +**Fixed bugs:** + +- Error with some characters [#25](https://github.com/knsv/mermaid/issues/25) +- Cap-cased words break parser [#8](https://github.com/knsv/mermaid/issues/8) + +**Closed issues:** + +- Question marks don't render properly with /dist/mermaid.full.min.js [#30](https://github.com/knsv/mermaid/issues/30) +- Provide parse function in browser widthout `require`? [#21](https://github.com/knsv/mermaid/issues/21) +- Better label text support [#18](https://github.com/knsv/mermaid/issues/18) + +**Merged pull requests:** + +- Include bower_components/ to .gitignore [#33](https://github.com/knsv/mermaid/pull/33) ([serv](https://github.com/serv)) +- Fixed reference to Git repo. [#32](https://github.com/knsv/mermaid/pull/32) ([guyellis](https://github.com/guyellis)) + +## [0.2.14](https://github.com/knsv/mermaid/tree/0.2.14) (2014-12-03) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.13...0.2.14) + +## [0.2.13](https://github.com/knsv/mermaid/tree/0.2.13) (2014-12-03) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.10...0.2.13) + +**Implemented enhancements:** + +- Publish to NPM [#7](https://github.com/knsv/mermaid/issues/7) + +**Closed issues:** + +- modified init to be applied more than once [#29](https://github.com/knsv/mermaid/issues/29) +- Wanted to know build process for the project. [#28](https://github.com/knsv/mermaid/issues/28) +- can not support Chinese description [#20](https://github.com/knsv/mermaid/issues/20) +- Support unicode chars in labels [#9](https://github.com/knsv/mermaid/issues/9) + +## [0.2.10](https://github.com/knsv/mermaid/tree/0.2.10) (2014-12-01) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.9...0.2.10) + +## [0.2.9](https://github.com/knsv/mermaid/tree/0.2.9) (2014-12-01) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.8...0.2.9) + +**Closed issues:** + +- Add link to jsbin playground to README [#11](https://github.com/knsv/mermaid/issues/11) +- What are the requirements ? [#10](https://github.com/knsv/mermaid/issues/10) + +**Merged pull requests:** + +- Allow unicode chars in labels [#13](https://github.com/knsv/mermaid/pull/13) ([codebeige](https://github.com/codebeige)) + +## [0.2.8](https://github.com/knsv/mermaid/tree/0.2.8) (2014-12-01) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.7...0.2.8) + +## [0.2.7](https://github.com/knsv/mermaid/tree/0.2.7) (2014-12-01) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.6...0.2.7) + +**Closed issues:** + +- Provide parser as separate module [#4](https://github.com/knsv/mermaid/issues/4) + +## [0.2.6](https://github.com/knsv/mermaid/tree/0.2.6) (2014-11-27) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.5...0.2.6) + +## [0.2.5](https://github.com/knsv/mermaid/tree/0.2.5) (2014-11-27) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.4...0.2.5) + +**Merged pull requests:** + +- Added new shapes! [#1](https://github.com/knsv/mermaid/pull/1) ([bjowes](https://github.com/bjowes)) + +## [0.2.4](https://github.com/knsv/mermaid/tree/0.2.4) (2014-11-25) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.3...0.2.4) + +## [0.2.3](https://github.com/knsv/mermaid/tree/0.2.3) (2014-11-24) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.2...0.2.3) + +## [0.2.2](https://github.com/knsv/mermaid/tree/0.2.2) (2014-11-22) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.1...0.2.2) + +## [0.2.1](https://github.com/knsv/mermaid/tree/0.2.1) (2014-11-22) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.0...0.2.1) + +## [0.2.0](https://github.com/knsv/mermaid/tree/0.2.0) (2014-11-22) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.1.1...0.2.0) + +## [0.1.1](https://github.com/knsv/mermaid/tree/0.1.1) (2014-11-17) + +[Full Changelog](https://github.com/knsv/mermaid/compare/0.1.0...0.1.1) + +## [0.1.0](https://github.com/knsv/mermaid/tree/0.1.0) (2014-11-16) diff --git a/docs/community/development.md b/docs/community/development.md new file mode 100644 index 000000000..667365a05 --- /dev/null +++ b/docs/community/development.md @@ -0,0 +1,309 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/community/development.md](../../packages/mermaid/src/docs/community/development.md). + +# Contributing to Mermaid + +## Contents + +- [Technical Requirements and Setup](#technical-requirements-and-setup) +- [Contributing Code](#contributing-code) +- [Contributing Documentation](#contributing-documentation) +- [Questions or Suggestions?](#questions-or-suggestions) +- [Last Words](#last-words) + +--- + +So you want to help? That's great! + +![Image of happy people jumping with excitement](https://media.giphy.com/media/BlVnrxJgTGsUw/giphy.gif) + +Here are a few things to get you started on the right path. + +## Technical Requirements and Setup + +### Technical Requirements + +These are the tools we use for working with the code and documentation. + +- [volta](https://volta.sh/) to manage node versions. +- [Node.js](https://nodejs.org/en/). `volta install node` +- [pnpm](https://pnpm.io/) package manager. `volta install pnpm` +- [npx](https://docs.npmjs.com/cli/v8/commands/npx) the packaged executor in npm. This is needed [to install pnpm.](#2-install-pnpm) + +Follow [the setup steps below](#setup) to install them and verify they are working + +### Setup + +Follow these steps to set up the environment you need to work on code and/or documentation. + +#### 1. Fork and clone the repository + +In GitHub, you first _fork_ a repository when you are going to make changes and submit pull requests. + +Then you _clone_ a copy to your local development machine (e.g. where you code) to make a copy with all the files to work with. + +[Here is a GitHub document that gives an overview of the process.](https://docs.github.com/en/get-started/quickstart/fork-a-repo) + +#### 2. Install pnpm + +Once you have cloned the repository onto your development machine, change into the `mermaid` project folder so that you can install `pnpm`. You will need `npx` to install pnpm because volta doesn't support it yet. + +Ex: + +```bash +# Change into the mermaid directory (the top level director of the mermaid project repository) +cd mermaid +# npx is required for first install because volta does not support pnpm yet +npx pnpm install +``` + +#### 3. Verify Everything Is Working + +Once you have installed pnpm, you can run the `test` script to verify that pnpm is working _and_ that the repository has been cloned correctly: + +```bash +pnpm test +``` + +The `test` script and others are in the top-level `package.json` file. + +All tests should run sucessfully without any errors or failures. (You might see _lint_ or _formatting_ warnings; those are ok during this step.) + +## Contributing Code + +The basic steps for contributing code are: + +```mermaid-example +graph LR + git[1. Checkout a git branch] --> codeTest[2. write tests and code] --> doc[3. update documentation] --> submit[4.submit a PR] +``` + +```mermaid +graph LR + git[1. Checkout a git branch] --> codeTest[2. write tests and code] --> doc[3. update documentation] --> submit[4.submit a PR] +``` + +1. **Create** and checkout a git branch and work on your code in the branch +2. Write and update **tests** (unit and perhaps even integration (e2e) tests) (If you do TDD/BDD, the order might be different.) +3. **Let users know** that things have changed or been added in the documents! This is often overlooked, but _critical_ +4. **Submit** your code as a _pull request._ + +### 1. Checkout a git branch + +Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspired approach to branching. + +Development is done in the `develop` branch. + +Once development is done we branch a `release` branch from `develop` for testing. + +Once the release happens we merge the `release` branch with `master` and delete the `release` branch. The live product and on-line documentation are what is in the `master` branch. + +**All new work should be based on the `develop` branch.** + +**When you are ready to do work, always, ALWAYS:** + +1. Make sure you have the most up to date version of the `develop` branch. (fetch or pull to update it) +2. Check out the `develop` branch +3. Create a new branch for your work. Please name the branch following our naming convention below. + +We use the follow naming convention for branches: + +```text + [feature | bug | chore | docs]/[issue number]_[short description using dashes ('-') or underscores ('_') instead of spaces] +``` + +- The first part is the **type** of change: a feature, bug, chore, or documentation change ('docs') +- followed by a _slash_ (which helps to group like types together in many git tools) +- followed by the **issue number** +- followed by an _underscore_ ('\_') +- followed by a short text description (but use dashes ('-') or underscores ('\_') instead of spaces) + +If your work is specific to a single diagram type, it is a good idea to put the diagram type at the start of the dscription. This will help use keep release notes organized: it will help us keep changes for a diagram type together. + +**Ex: A new feature described in issue 2945 that adds a new arrow type called 'florbs' to state diagrams** + +`feature/2945_state-diagram-new-arrow-florbs` + +**Ex: A bug described in issue 1123 that causes random ugly red text in multiple diagram types** +`bug/1123_fix_random_ugly_red_text` + +### 2. Write Tests + +Tests ensure that each function, module, or part of code does what it says it will do. This is critically +important when other changes are made to ensure that existing code is not broken (no regression). + +Just as important, the tests act as _specifications:_ they specify what the code does (or should do). +Whenever someone is new to a section of code, they should be able to read the tests to get a thorough understanding of what it does and why. + +If you are fixing a bug, you should add tests to ensure that your code has actually fixed the bug, to specify/describe what the code is doing, and to ensure the bug doesn't happen again. +(If there had been a test for the situation, the bug never would have happened in the first place.) +You may need to change existing tests if they were inaccurate. + +If you are adding a feature, you will definitely need to add tests. Depending on the size of your feature, you may need to add integration tests. + +#### Unit Tests for Parsing + +If you are adding or changing the text that describes a diagram (the _grammar_), you will need to add (or change) tests for the _parser._ + +#### Integration/End-to-End (e2e) tests + +These test the rendering and visual appearance of the diagrams. +This ensures that the rendering of that feature in the e2e will be reviewed in the release process going forward. Less chance that it breaks! + +To start working with the e2e tests: + +1. Run `pnpm run dev` to start the dev server (or use the `pnpm dev` script) +2. Start **Cypress** by running `pnpm exec cypress open` in the **mermaid** folder (or use the `pnpm cypress:open` script). + +The rendering tests are very straightforward to create. There is a function `imgSnapshotTest`, which takes a diagram in text form and the mermaid options, and it renders that diagram in Cypress. + +When running in CI it will take a snapshot of the rendered diagram and compare it with the snapshot from last build and flag it for review if it differs. + +This is what a rendering test looks like: + +```js +it('should render forks and joins', () => { + imgSnapshotTest( + ` + stateDiagram + state fork_state <<fork>> + [*] --> fork_state + fork_state --> State2 + fork_state --> State3 + + state join_state <<join>> + State2 --> join_state + State3 --> join_state + join_state --> State4 + State4 --> [*] + `, + { logLevel: 0 } + ); + cy.get('svg'); +}); +``` + +**_\[TODO - running the tests against what is expected in development. ]_** + +**_\[TODO - how to generate new screenshots]_** +.... + +### 3. Update Documentation + +If the users have no way to know that things have changed, then you haven't really _fixed_ anything for the users; you've just added to making Mermaid feel broken. +Likewise, if users don't know that there is a new feature that you've implemented, it will forever remain unknown and unused. + +The documentation has to be updated to users know that things have changed and added! + +We know it can sometimes be hard to code _and_ write user documentation. + +**\*\[TODO - how to submit documentation changes.** A few words plus a link to [Contributing Documentation](#contributing-documentation)\* + +Create another issue specifically for the documentation.\ +You will need to help with the PR, but definitely ask for help if you feel stuck. +When it feels hard to write stuff out, explaining it to someone and having that person ask you clarifying questions can often be 80% of the work!] + +When in doubt, write up and submit what you can. It can be clarified and refined later. (With documentation, something is better than nothing!) + +### 4. Submit your pull request + +**\[TODO - PR titles should start with (fix | feat | ....)]** + +We make all changes via Pull Requests (PRs). As we have many Pull Requests from developers new to Mermaid, \ +we have put in place a process wherein _knsv, Knut Sveidqvist_ is the primary reviewer of changes and merging pull requests. The process is as follows: + +- Large changes are reviewed by knsv or other developer asked to review by knsv +- Smaller, low-risk changes like dependencies, documentation, etc. can be reviewed and merged by active collaborators + +**Reminder: Pull Requests should be submitted to the develop branch.** + +## Contributing Documentation + +**_\[TODO: This section is still a WIP. It still needs revision.]_** + +If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? + +The docs are located in the `src/docs` folder and are written in Markdown. Just pick the right section and start typing. +If you want to propose changes to the structure of the documentation, such as adding a new section or a new file you do that via the **[sidebar](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. + +> **All the documents displayed in the GitHub.io page are listed in [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. + +The contents of <https://mermaid-js.github.io/mermaid/> are based on the docs from the `master` branch. +Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. + +### How to Contribute to Documentation + +We are a little less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator. + +The documentation is located in the `src/docs` directory and organized according to relevant subfolder. + +The contents of <https://mermaid-js.github.io/mermaid/> are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. + +**The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** + +The `docs` folder will be automatically generated when committing to `src/docs` and should not be edited manually. + +We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation using GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) + +- Documentation (we encourage updates to the `src/docs` folder; you can submit them via direct commits) + +The source files for documentation are in `/packages/mermaid/docs` and are written in markdown. + +**_DO NOT CHANGE FILES IN `/docs`_** + +### The official documentation site + +**[The mermaid documentation site](https://mermaid-js.github.io/mermaid/) is powered by [Docsify](https://docsify.js.org), a simple documentation site generator.** + +**_\[TODO - how to preview the documents on a local machine? how to run VitePress?]_** + +If you want to preview the whole documentation site on your machine, you need to install `docsify-cli`: + +Markdown is used to format the text, for more information about Markdown [see the GitHub Markdown help page](https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax). + +To edit Docs on your computer: + +1. Find the Markdown file (.md) to edit in the [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs) directory in the `develop` branch. +2. Create a fork of the develop branch. +3. Make changes or add new documentation. +4. Commit changes to your fork and push it to GitHub. +5. Create a Pull Request of your fork. + +To edit Docs on GitHub: + +1. Login to [GitHub.com](https://www.github.com). +2. Navigate to [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). +3. To edit a file, click the pencil icon at the top-right of the file contents panel. +4. Describe what you changed in the **Propose file change** section, located at the bottom of the page. +5. Submit your changes by clicking the button **Propose file change** at the bottom (by automatic creation of a fork and a new branch). +6. Create a Pull Request of your newly forked branch by clicking the green **Create Pull Request** button. + +## Questions or Suggestions? + +#### First search to see if someone has already asked (and hopefully been answered) or suggested the same thing. + +- search in the Discussions +- search in the open Issues + +If you find an open issue or discussion thread that is similar to your question but isn't answered, +you can let us know that you are also interested in it. **_\[TODO: describe upvoting]_** +This helps the team know the relative interest in something and helps them set priorities and assignments. + +Feel free to add to the discussion on the issue or topic. + +If you can't find anything that already addresses your question or suggestion, _open a new issue:_ + +Log in to [GitHub.com](https://www.github.com), open or append to an issue [using the GitHub issue tracker of the mermaid-js repository](https://github.com/mermaid-js/mermaid/issues?q=is%3Aissue+is%3Aopen+label%3A%22Area%3A+Documentation%22). + +### How to Contribute a Suggestion + +## Last Words + +Don't get daunted if it is hard in the beginning. We have a great community with only encouraging words. So, if you get stuck, ask for help and hints in the Slack forum. If you want to show off something good, show it off there. + +[Join our Slack community if you want closer contact!](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) + +![Image of superhero wishing you good luck](https://media.giphy.com/media/l49JHz7kJvl6MCj3G/giphy.gif) diff --git a/docs/community/n00b-overview.md b/docs/community/n00b-overview.md new file mode 100644 index 000000000..e0056d912 --- /dev/null +++ b/docs/community/n00b-overview.md @@ -0,0 +1,74 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/community/n00b-overview.md](../../packages/mermaid/src/docs/community/n00b-overview.md). + +# Overview for Beginners + +**Explaining with a Diagram** + +A picture is worth a thousand words, a good diagram is undoubtedly worth more. They make understanding easier. + +## Creating and Maintaining Diagrams + +Anyone who has used Visio, or (God Forbid) Excel to make a Gantt Chart, knows how hard it is to create, edit and maintain good visualizations. + +Diagrams/Charts are significant but also become obsolete/inaccurate very fast. This catch-22 hobbles the productivity of teams. + +# Doc Rot in Diagrams + +Doc-Rot kills diagrams as quickly as it does text, but it takes hours in a desktop application to produce a diagram. + +Mermaid seeks to change using markdown-inspired syntax. The process is a quicker, less complicated, and more convenient way of going from concept to visualization. + +It is a relatively straightforward solution to a significant hurdle with the software teams. + +# Definition of Terms/ Dictionary + +**Mermaid text definitions can be saved for later reuse and editing.** + +> These are the Mermaid diagram definitions inside `<div>` tags, with the `class=mermaid`. + +```html +<pre class="mermaid"> + graph TD + A[Client] --> B[Load Balancer] + B --> C[Server01] + B --> D[Server02] +</pre> +``` + +**render** + +> This is the core function of the Mermaid API. It reads all the `Mermaid Definitions` inside `div` tags and returns an SVG file, based on the definition. + +**Nodes** + +> These are the boxes that contain text or otherwise discrete pieces of each diagram, separated generally by arrows, except for Gantt Charts and User Journey Diagrams. They will be referred often in the instructions. Read for Diagram Specific [Syntax](../intro/n00b-syntaxReference.md) + +## Advantages of using Mermaid + +- Ease to generate, modify and render diagrams when you make them. +- The number of integrations and plugins it has. +- You can add it to your or companies website. +- Diagrams can be created through comments like this in a script: + +## The catch-22 of Diagrams and Charts: + +**Diagramming and charting is a large waste of developer's time, but not having diagrams ruins productivity.** + +Mermaid solves this by reducing the time and effort required to create diagrams and charts. + +Because, the text base for the diagrams allows it to be updated easily. Also, it can be made part of production scripts (and other pieces of code). So less time is spent on documenting, as a separate task. + +## Catching up with Development + +Being based on markdown, Mermaid can be used, not only by accomplished front-end developers, but by most computer savvy people to render diagrams, at much faster speeds. +In fact one can pick up the syntax for it quite easily from the examples given and there are many tutorials available in the internet. + +## Mermaid is for everyone. + +Video [Tutorials](https://mermaid-js.github.io/mermaid/#/../config/Tutorials) are also available for the mermaid [live editor](https://mermaid.live/). + +Alternatively you can use Mermaid [Plug-Ins](https://mermaid-js.github.io/mermaid/#/./integrations), with tools you already use, like Google Docs. diff --git a/docs/community/newDiagram.md b/docs/community/newDiagram.md new file mode 100644 index 000000000..da86f9838 --- /dev/null +++ b/docs/community/newDiagram.md @@ -0,0 +1,264 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/community/newDiagram.md](../../packages/mermaid/src/docs/community/newDiagram.md). + +# Adding a New Diagram/Chart 📊 + +### Step 1: Grammar & Parsing + +#### Grammar + +This would be to define a jison grammar for the new diagram type. That should start with a way to identify that the text in the mermaid tag is a diagram of that type. Create a new folder under diagrams for your new diagram type and a parser folder in it. This leads us to step 2. + +For instance: + +- the flowchart starts with the keyword graph. +- the sequence diagram starts with the keyword sequenceDiagram + +#### Store data found during parsing + +There are some jison specific sub steps here where the parser stores the data encountered when parsing the diagram, this data is later used by the renderer. You can during the parsing call a object provided to the parser by the user of the parser. This object can be called during parsing for storing data. + +```jison +statement + : 'participant' actor { $$='actor'; } + | signal { $$='signal'; } + | note_statement { $$='note'; } + | 'title' message { yy.setTitle($2); } + ; +``` + +In the extract of the grammar above, it is defined that a call to the setTitle method in the data object will be done when parsing and the title keyword is encountered. + +> **Note** +> Make sure that the `parseError` function for the parser is defined and calling `mermaid.parseError`. This way a common way of detecting parse errors is provided for the end-user. + +For more info look in the example diagram type: + +The `yy` object has the following function: + +```javascript +exports.parseError = function (err, hash) { + mermaid.parseError(err, hash); +}; +``` + +when parsing the `yy` object is initialized as per below: + +```javascript +const parser = exampleParser.parser; +parser.yy = db; +``` + +### Step 2: Rendering + +Write a renderer that given the data found during parsing renders the diagram. To look at an example look at sequenceRenderer.js rather then the flowchart renderer as this is a more generic example. + +Place the renderer in the diagram folder. + +### Step 3: Detection of the new diagram type + +The second thing to do is to add the capability to detect the new new diagram to type to the detectType in utils.js. The detection should return a key for the new diagram type. + +### Step 4: The final piece - triggering the rendering + +At this point when mermaid is trying to render the diagram, it will detect it as being of the new type but there will be no match when trying to render the diagram. To fix this add a new case in the switch statement in main.js:init this should match the diagram type returned from step #2. The code in this new case statement should call the renderer for the diagram type with the data found by the parser as an argument. + +## Usage of the parser as a separate module + +### Setup + +```javascript +const graph = require('./graphDb'); +const flow = require('./parser/flow'); +flow.parser.yy = graph; +``` + +### Parsing + +```javascript +flow.parser.parse(text); +``` + +### Data extraction + +```javascript +graph.getDirection(); +graph.getVertices(); +graph.getEdges(); +``` + +The parser is also exposed in the mermaid api by calling: + +```javascript +const parser = mermaid.getParser(); +``` + +Note that the parse needs a graph object to store the data as per: + +```javascript +flow.parser.yy = graph; +``` + +Look at `graphDb.js` for more details on that object. + +## Layout + +If you are using a dagre based layout, please use flowchart-v2 as a template and by doing that you will be using dagre-wrapper instead of dagreD3 which we are migrating away from. + +### Common parts of a diagram + +There are a few features that are common between the different types of diagrams. We try to standardize the diagrams that work as similar as possible for the end user. The commonalities are: + +- Directives, a way of modifying the diagram configuration from within the diagram code. +- Accessibility, a way for an author to provide additional information like titles and descriptions to people accessing a text with diagrams using a screen reader. +- Themes, there is a common way to modify the styling of diagrams in Mermaid. +- Comments should follow mermaid standards + +Here some pointers on how to handle these different areas. + +#### [Directives](../config/directives.md) + +Here is example handling from flowcharts: +Jison: + +```jison +/* lexical grammar */ +%lex +%x open_directive +%x type_directive +%x arg_directive +%x close_directive + +\%\%\{ { this.begin('open_directive'); return 'open_directive'; } +<open_directive>((?:(?!\}\%\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; } +<type_directive>":" { this.popState(); this.begin('arg_directive'); return ':'; } +<type_directive,arg_directive>\}\%\% { this.popState(); this.popState(); return 'close_directive'; } +<arg_directive>((?:(?!\}\%\%).|\n)*) return 'arg_directive'; + +/* language grammar */ + +/* ... */ + +directive + : openDirective typeDirective closeDirective separator + | openDirective typeDirective ':' argDirective closeDirective separator + ; + +openDirective + : open_directive { yy.parseDirective('%%{', 'open_directive'); } + ; + +typeDirective + : type_directive { yy.parseDirective($1, 'type_directive'); } + ; + +argDirective + : arg_directive { $1 = $1.trim().replace(/'/g, '"'); yy.parseDirective($1, 'arg_directive'); } + ; + +closeDirective + : close_directive { yy.parseDirective('}%%', 'close_directive', 'flowchart'); } + ; +``` + +It is probably a good idea to keep the handling similar to this in your new diagram. The parseDirective function is provided by the mermaidAPI. + +## Accessibility + +The syntax for adding title and description looks like this: + + accTitle: The title + accDescr: The description + + accDescr { + Syntax for a description text + written on multiple lines. + } + +In a similar way to the directives the jison syntax are quite similar between the diagrams. + +```jison + +* lexical grammar */ +%lex +%x acc_title +%x acc_descr +%x acc_descr_multiline + +%% +accTitle\s*":"\s* { this.begin("acc_title");return 'acc_title'; } +<acc_title>(?!\n|;|#)*[^\n]* { this.popState(); return "acc_title_value"; } +accDescr\s*":"\s* { this.begin("acc_descr");return 'acc_descr'; } +<acc_descr>(?!\n|;|#)*[^\n]* { this.popState(); return "acc_descr_value"; } +accDescr\s*"{"\s* { this.begin("acc_descr_multiline");} +<acc_descr_multiline>[\}] { this.popState(); } +<acc_descr_multiline>[^\}]* return "acc_descr_multiline_value"; + +statement + : acc_title acc_title_value { $$=$2.trim();yy.setTitle($$); } + | acc_descr acc_descr_value { $$=$2.trim();yy.setAccDescription($$); } + | acc_descr_multiline_value { $$=$1.trim();yy.setAccDescription($$); } + +``` + +The functions for setting title and description are provided by a common module. This is the import from flowDb.js: + + import { + setAccTitle, + getAccTitle, + getAccDescription, + setAccDescription, + clear as commonClear, + } from '../../commonDb'; + +For rendering the accessibility tags you have again an existing function you can use. + +**In the renderer:** + +```js +import addSVGAccessibilityFields from '../../accessibility'; + +/* ... */ + +// Adds title and description to the flow chart +addSVGAccessibilityFields(parser.yy, svg, id); +``` + +## Theming + +Mermaid supports themes and has an integrated theming engine. You can read more about how the themes can be used [in the docs](../config/theming.md). + +When adding themes to a diagram it comes down to a few important locations in the code. + +The entry point for the styling engine is in **src/styles.js**. The getStyles function will be called by Mermaid when the styles are being applied to the diagram. + +This function will in turn call a function _your diagram should provide_ returning the css for the new diagram. The diagram specific, also which is commonly also called getStyles and located in the folder for your diagram under src/diagrams and should be named styles.js. The getStyles function will be called with the theme options as an argument like in the following example: + +```js +const getStyles = (options) => + ` + .line { + stroke-width: 1; + stroke: ${options.lineColor}; + stroke-dasharray: 2; + } + // ... + `; +``` + +Note that you need to provide your function to the main getStyles by adding it into the themes object in **src/styles.js** like in the xyzDiagram in the provided example: + +```js +const themes = { + flowchart, + 'flowchart-v2': flowchart, + sequence, + xyzDiagram, + //... +}; +``` + +The actual options and values for the colors are defined in **src/theme/theme-\[xyz].js**. If you provide the options your diagram needs in the existing theme files then the theming will work smoothly without hiccups. diff --git a/docs/community/security.md b/docs/community/security.md new file mode 100644 index 000000000..07adbfbf8 --- /dev/null +++ b/docs/community/security.md @@ -0,0 +1,29 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/community/security.md](../../packages/mermaid/src/docs/community/security.md). + +# Security + +The Mermaid team takes the security of Mermaid and the applications that use Mermaid seriously. This page describes how to report any vulnerabilities you may find, and lists best practices to minimize the risk of introducing a vulnerability. + +## Reporting vulnerabilities + +To report a vulnerability, please e-mail <security@mermaid.live> with a description of the issue, the steps you took to create the issue, affected versions, and if known, mitigations for the issue. + +We aim to reply within three working days, probably much sooner. + +You should expect a close collaboration as we work to resolve the issue you have reported. Please reach out to <security@mermaid.live> again if you do not receive prompt attention and regular updates. + +You may also reach out to the team via our public Slack chat channels; however, please make sure to e-mail <security@mermaid.live> when reporting an issue, and avoid revealing information about vulnerabilities in public as that could that could put users at risk. + +## Best practices + +Keep current with the latest Mermaid releases. We regularly update Mermaid, and these updates may fix security defects discovered in previous versions. Check the Mermaid release notes for security-related updates. + +Keep your application’s dependencies up to date. Make sure you upgrade your package dependencies to keep the dependencies up to date. Avoid pinning to specific versions for your dependencies and, if you do, make sure you check periodically to see if your dependencies have had security updates, and update the pin accordingly. + +## Configuring DomPurify + +By default Mermaid uses a baseline [DOMPurify](https://github.com/cure53/DOMPurify) config. It is possible to override the options passed to DOMPurify by adding a `dompurifyConfig` key to the Mermaid options. This could potentially break the output of Mermaid so use this with caution. diff --git a/docs/config/8.6.0_docs.md b/docs/config/8.6.0_docs.md new file mode 100644 index 000000000..abd158712 --- /dev/null +++ b/docs/config/8.6.0_docs.md @@ -0,0 +1,222 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/8.6.0_docs.md](../../packages/mermaid/src/docs/config/8.6.0_docs.md). + +# Version 8.6.0 Changes + +## [New Mermaid Live-Editor Beta](https://mermaid-js.github.io/docs/mermaid-live-editor-beta/#/edit/eyJjb2RlIjoiJSV7aW5pdDoge1widGhlbWVcIjogXCJmb3Jlc3RcIiwgXCJsb2dMZXZlbFwiOiAxIH19JSVcbmdyYXBoIFREXG4gIEFbQ2hyaXN0bWFzXSAtLT58R2V0IG1vbmV5fCBCKEdvIHNob3BwaW5nKVxuICBCIC0tPiBDe0xldCBtZSB0aGlua31cbiAgQyAtLT58T25lfCBEW0xhcHRvcF1cbiAgQyAtLT58VHdvfCBFW2lQaG9uZV1cbiAgQyAtLT58VGhyZWV8IEZbZmE6ZmEtY2FyIENhcl1cblx0XHQiLCJtZXJtYWlkIjp7InRoZW1lIjoiZGFyayJ9fQ) + +## [CDN](https://unpkg.com/mermaid/) + +With version 8.6.0 comes the release of directives for mermaid, a new system for modifying configurations, with the aim of establishing centralized, sane defaults and simple implementation. + +`directives` allow for a single-use overwriting of `config`, as it has been discussed in [Configurations](../config/configuration.md). +This allows site Diagram Authors to instantiate temporary modifications to `config` through the use of [Directives](directives.md), which are parsed before rendering diagram definitions. This allows the Diagram Authors to alter the appearance of the diagrams. + +**A likely application for this is in the creation of diagrams/charts inside company/organizational webpages, that rely on mermaid for diagram and chart rendering.** + +the `init` directive is the main method of configuration for Site and Current Levels. + +The three levels of are Configuration, Global, Site and Current. + +| Level of Configuration | Description | +| ---------------------- | ----------------------------------- | +| Global Configuration | Default Mermaid Configurations | +| Site Configuration | Configurations made by site owner | +| Current Configuration | Configurations made by Implementors | + +# Limits to Modifying Configurations + +**secure Array** + +| Parameter | Description | Type | Required | Values | +| --------- | ------------------------------------------------ | ----- | -------- | -------------- | +| secure | Array of parameters excluded from init directive | Array | Required | Any parameters | + +The modifiable parts of the Configuration are limited by the secure array, which is an array of immutable parameters, this array can be expanded by site owners. + +**Notes**: secure arrays work like nesting dolls, with the Global Configurations’ secure array holding the default and immutable list of immutable parameters, or the smallest doll, to which site owners may add to, but implementors may not modify it. + +# Secure Arrays + +Site owners can add to the **secure** array using this command: +mermaidAPI.initialize( { startOnLoad: true, secure: \['parameter1', 'parameter2'] } ); + +Default values for the `secure array` consists of: \['secure', 'securityLevel', 'startOnLoad', 'maxTextSize']. These default values are immutable. + +Implementors can only modify configurations using directives, and cannot change the `secure` array. + +# Modifying Configurations and directives: + +The Two types of directives: are `init` (or `initialize`) and `wrap`. + +> **Note** +> All directives are enclosed in `%%{ }%%` + +Older versions of mermaid will not parse directives because `%%` will comment out the directive. This makes the update backwards-compatible. + +# Init + +`init`, or `initialize`: this directive gives the user the ability to overwrite and change the values for any configuration parameters not set in the secure array. + +| Parameter | Description | Type | Required | Values | +| --------- | ----------------------- | --------- | -------- | ----------------------------------------------- | +| init | modifies configurations | Directive | Optional | Any parameters not included in the secure array | + +> **Note** +> init would be an argument-directive: `%%{init: { **insert argument here**}}%%` +> +> The json object that is passed as {**argument** } must be valid, quoted json or it will be ignored. +> **for example**: +> +> `%%{init: {"theme": "default", "logLevel": 1 }}%%` +> +> Configurations that are passed through init cannot change the parameters in a secure array at a higher level. In the event of a collision, mermaid will give priority to secure arrays and parse the request without changing the values of those parameters in conflict. +> +> When deployed within code, init is called before the graph/diagram description. + +**for example**: + +```mermaid-example +%%{init: {"theme": "default", "logLevel": 1 }}%% + graph LR + a-->b + b-->c + c-->d + d-->e + e-->f + f-->g + g--> +``` + +```mermaid +%%{init: {"theme": "default", "logLevel": 1 }}%% + graph LR + a-->b + b-->c + c-->d + d-->e + e-->f + f-->g + g--> +``` + +# Wrap + +| Parameter | Description | Type | Required | Values | +| --------- | ----------------------------- | --------- | -------- | ---------- | +| wrap | a callable text-wrap function | Directive | Optional | %%{wrap}%% | + +> **Note** +> Wrap is a function that is currently only deployable for sequence diagrams. +> +> `Wrap respects a manually added <br>, so if the user wants to break up their text, they have full control over line breaks by adding <br> tags.` +> +> It is a non-argument directive and can be executed thusly: +> +> `%%{wrap}%%` . + +**An example of text wrapping in a sequence diagram**: + +!\[Image showing wrapped text]\(img/wrapped text.png) + +# Resetting Configurations: + +There are two more functions in the mermaidAPI that can be called by site owners: **reset** and **globalReset**. + +**reset**: resets the configuration to whatever the last configuration was. This can be done to undo more recent changes set from the last mermaidAPI.initialize({...}) configuration. + +**globalReset** will reset both the current configuration AND the site configuration back to the global defaults. + +**Notes**: Both `reset` and `globalReset` are only available to site owners, and as such implementors have to edit their configs using `init`. + +# Additional Utils to mermaid + +• **memoize**: simple caching for computationally expensive functions, reducing rendering time by about 90%. + +• **assignWithDepth** - an improvement on previous functions with config.js and `Object.assign`. The purpose of this function is to provide a sane mechanism for merging objects, similar to `object.assign`, but with depth. + +Example of **assignWithDepth**: + +![Image showing assignWithDepth](img/assignWithDepth.png) + +Example of **object.Assign**: + +!\[Image showing object.assign without depth]\(img/object.assign without depth.png) + +• **calculateTextDimensions**, **calculateTextWidth**, and **calculateTextHeight** - for measuring text dimensions, width and height. + +**Notes**: For more information on usage, parameters, and return info for these new functions take a look at the jsdocs for them in the utils package. + +# New API Requests Introduced in Version 8.6.0 + +## setSiteConfig + +| Function | Description | Type | Values | Parameters | Returns | +| --------------- | ------------------------------------- | ----------- | --------------------------------------- | ---------- | ---------- | +| `setSiteConfig` | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array | conf | siteConfig | + +> **Note** +> Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls to reset() will reset +> the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) will reset siteConfig and currentConfig +> to the defaultConfig +> Note: currentConfig is set in this function。 +> Default value: will mirror Global Config + +## getSiteConfig + +| Function | Description | Type | Values | +| --------------- | --------------------------------------------------- | ----------- | ---------------------------------- | +| `getSiteConfig` | Returns the current `siteConfig` base configuration | Get Request | Returns Any Values in `siteConfig` | + +> **Note** +> Returns any values in siteConfig. + +## setConfig + +| Function | Description | Type | Values | Parameters | Returns | +| ----------- | ------------------------------------------ | ----------- | --------------------------------- | ---------- | ---------------------------------------------- | +| `setConfig` | Sets the `currentConfig` to desired values | Put Request | Any Values, those in secure array | conf | `currentConfig` merged with the sanitized conf | + +> **Note** +> Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure keys. Any +> values found in conf with key found in siteConfig.secure will be replaced with the corresponding +> siteConfig value. + +## getConfig + +| Function | Description | Type | Return Values | +| ----------- | --------------------------- | ----------- | ------------------------------- | +| `getConfig` | Obtains the `currentConfig` | Get Request | Any Values from `currentConfig` | + +> **Note** +> Returns any values in currentConfig. + +## sanitize + +| Function | Description | Type | Values | +| ---------- | ---------------------------------------- | -------------- | ------ | +| `sanitize` | Sets the `siteConfig` to desired values. | Put Request(?) | None | + +> **Note** +> modifies options in-place +> Ensures options parameter does not attempt to override siteConfig secure keys. + +## reset + +| Function | Description | Type | Required | Values | Parameter | +| -------- | ------------------------------ | ----------- | -------- | ------ | --------- | +| `reset` | Resets `currentConfig` to conf | Put Request | Required | None | conf | + +## conf + +| Parameter | Description | Type | Required | Values | +| --------- | ------------------------------------------------------------ | ---------- | -------- | -------------------------------------------- | +| `conf` | base set of values, which `currentConfig` could be reset to. | Dictionary | Required | Any Values, with respect to the secure Array | + +> **Note** +> default: current siteConfig (optional, default `getSiteConfig()`) + +## For more information, read [Setup](./setup/README.md). diff --git a/docs/config/Tutorials.md b/docs/config/Tutorials.md new file mode 100644 index 000000000..41e0508cb --- /dev/null +++ b/docs/config/Tutorials.md @@ -0,0 +1,78 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/Tutorials.md](../../packages/mermaid/src/docs/config/Tutorials.md). + +# Tutorials + +This is list of publicly available Tutorials for using Mermaid.JS . This is intended as a basic introduction for the use of the Live Editor for generating diagrams, and deploying Mermaid.JS through HTML. + +**Note that these tutorials might display an older interface, but the usage of the live-editor will largely be the same.** + +For most purposes, you can use the [Live Editor](https://mermaid.live), to quickly and easily render a diagram. + +## Live-Editor Tutorials + +The definitions that can be generated the Live-Editor are also backwards-compatible as of version 8.7.0. + +[Chris Chinchilla: Hands on - Text-based diagrams with Mermaid](https://www.youtube.com/watch?v=4_LdV1cs2sA) + +[GitLab Unfiltered: How to Create Mermaid Diagrams](https://www.youtube.com/watch?v=SQ9QmuTHuSI&t=438s) + +[GitLab Unfiltered: Emilie adds a mermaid diagram to the handbook](https://www.youtube.com/watch?v=5RQqht3NNSE) + +[World of Zero: I Learn How To Build Flowcharts and Signal Diagram's in Mermaid.JS](https://www.youtube.com/watch?v=7_2IroEs6Is&t=207s) + +[Eddie Jaoude: Can you code your diagrams?](https://www.youtube.com/watch?v=9HZzKkAqrX8) + +## Mermaid with HTML + +Examples are provided in [Getting Started](../intro/n00b-gettingStarted.md) + +**CodePen Examples:** + +https://codepen.io/CarlBoneri/pen/BQwZzq + +https://codepen.io/tdkn/pen/vZxQzd + +https://codepen.io/janzeteachesit/pen/OWWZKN + +## Mermaid with Text Area + +https://codepen.io/Ryuno-Ki/pen/LNxwgR + +## Mermaid in open source docs + +[K8s.io Diagram Guide](https://kubernetes.io/docs/contribute/style/diagram-guide/) + +[K8s.dev blog: Improve your documentation with Mermaid.js diagrams](https://www.kubernetes.dev/blog/2021/12/01/improve-your-documentation-with-mermaid.js-diagrams/) + +## Jupyter Integration with mermaid-js + +Here's an example of Python integration with mermaid-js which uses the mermaid.ink service, that displays the graph in a Jupyter notebook. + +```python +import base64 +from IPython.display import Image, display +import matplotlib.pyplot as plt + +def mm(graph): + graphbytes = graph.encode("ascii") + base64_bytes = base64.b64encode(graphbytes) + base64_string = base64_bytes.decode("ascii") + display(Image(url="https://mermaid.ink/img/" + base64_string)) + +mm(""" +graph LR; + A--> B & C & D; + B--> A & E; + C--> A & E; + D--> A & E; + E--> B & C & D; +""") +``` + +**Output** + +![Example graph of the Python integration](img/python-mermaid-integration.png) diff --git a/docs/config/accessibility.md b/docs/config/accessibility.md new file mode 100644 index 000000000..8fa4aa3ac --- /dev/null +++ b/docs/config/accessibility.md @@ -0,0 +1,360 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/accessibility.md](../../packages/mermaid/src/docs/config/accessibility.md). + +# Accessibility Options + +## Accessibility + +Now with Mermaid library in much wider use, we have started to work towards more accessible features, based on the feedback from the community. + +To begin with, we have added a new feature to Mermaid library, which is to support accessibility options, **Accessibility Title** and **Accessibility Description**. + +This support for accessibility options is available for all the diagrams/chart types. Also, we have tired to keep the same format for the accessibility options, so that it is easy to understand and maintain. + +## Defining Accessibility Options + +### Single line accessibility values + +The diagram authors can now add the accessibility options in the diagram definition, using the `accTitle` and `accDescr` keywords, where each keyword is followed by `:` and the string value for title and description like: + +- `accTitle: "Your Accessibility Title"` or +- `accDescr: "Your Accessibility Description"` + +**When these two options are defined, they will add a corresponding `<title>` and `<desc>` tag in the SVG.** + +Let us take a look at the following example with a flowchart diagram: + +```mermaid-example + graph LR + accTitle: Big decisions + accDescr: Flow chart of the decision making process + A[Hard] -->|Text| B(Round) + B --> C{Decision} + C -->|One| D[Result 1] + +``` + +```mermaid + graph LR + accTitle: Big decisions + accDescr: Flow chart of the decision making process + A[Hard] -->|Text| B(Round) + B --> C{Decision} + C -->|One| D[Result 1] + +``` + +See in the code snippet above, the `accTitle` and `accDescr` are defined in the diagram definition. They result in the following tags in SVG code: + +![Accessibility options rendered inside SVG](img/accessibility-div-example.png) + +### Multi-line Accessibility title/description + +You can also define the accessibility options in a multi-line format, where the keyword is followed by opening curly bracket `{` and then multiple lines, followed by a closing `}`. + +`accTitle: My single line title value` (**_single line format_**) + +vs + +`accDescr: { My multi-line description of the diagram }` (**_multi-line format_**) + +Let us look at it in the following example, with same flowchart: + +```mermaid-example + graph LR + accTitle: Big decisions + + accDescr { + My multi-line description + of the diagram + } + + A[Hard] -->|Text| B(Round) + B --> C{Decision} + C -->|One| D[Result 1] + +``` + +```mermaid + graph LR + accTitle: Big decisions + + accDescr { + My multi-line description + of the diagram + } + + A[Hard] -->|Text| B(Round) + B --> C{Decision} + C -->|One| D[Result 1] + +``` + +See in the code snippet above, the `accTitle` and `accDescr` are defined in the diagram definition. They result in the following tags in SVG code: + +![Accessibility options rendered inside SVG](img/accessibility-div-example-2.png) + +### Sample Code Snippet for other diagram types + +#### Sequence Diagram + +```mermaid-example + sequenceDiagram + accTitle: My Sequence Diagram + accDescr: My Sequence Diagram Description + + Alice->>John: Hello John, how are you? + John-->>Alice: Great! + Alice-)John: See you later! +``` + +```mermaid + sequenceDiagram + accTitle: My Sequence Diagram + accDescr: My Sequence Diagram Description + + Alice->>John: Hello John, how are you? + John-->>Alice: Great! + Alice-)John: See you later! +``` + +#### Class Diagram + +```mermaid-example + classDiagram + accTitle: My Class Diagram + accDescr: My Class Diagram Description + + Vehicle <|-- Car +``` + +```mermaid + classDiagram + accTitle: My Class Diagram + accDescr: My Class Diagram Description + + Vehicle <|-- Car +``` + +#### State Diagram + +```mermaid-example + stateDiagram + accTitle: My State Diagram + accDescr: My State Diagram Description + + s1 --> s2 + +``` + +```mermaid + stateDiagram + accTitle: My State Diagram + accDescr: My State Diagram Description + + s1 --> s2 + +``` + +#### Entity Relationship Diagram + +```mermaid-example + erDiagram + accTitle: My Entity Relationship Diagram + accDescr: My Entity Relationship Diagram Description + + CUSTOMER ||--o{ ORDER : places + ORDER ||--|{ LINE-ITEM : contains + CUSTOMER }|..|{ DELIVERY-ADDRESS : uses + +``` + +```mermaid + erDiagram + accTitle: My Entity Relationship Diagram + accDescr: My Entity Relationship Diagram Description + + CUSTOMER ||--o{ ORDER : places + ORDER ||--|{ LINE-ITEM : contains + CUSTOMER }|..|{ DELIVERY-ADDRESS : uses + +``` + +#### User Journey Diagram + +```mermaid-example + journey + accTitle: My User Journey Diagram + accDescr: My User Journey Diagram Description + + title My working day + section Go to work + Make tea: 5: Me + Go upstairs: 3: Me + Do work: 1: Me, Cat + section Go home + Go downstairs: 5: Me + Sit down: 5: Me + +``` + +```mermaid + journey + accTitle: My User Journey Diagram + accDescr: My User Journey Diagram Description + + title My working day + section Go to work + Make tea: 5: Me + Go upstairs: 3: Me + Do work: 1: Me, Cat + section Go home + Go downstairs: 5: Me + Sit down: 5: Me + +``` + +#### Gantt Chart + +```mermaid-example + gantt + accTitle: My Gantt Chart Accessibility Title + accDescr: My Gantt Chart Accessibility Description + + title A Gantt Diagram + dateFormat YYYY-MM-DD + section Section + A task :a1, 2014-01-01, 30d + Another task :after a1 , 20d + section Another + Task in sec :2014-01-12 , 12d + another task : 24d + +``` + +```mermaid + gantt + accTitle: My Gantt Chart Accessibility Title + accDescr: My Gantt Chart Accessibility Description + + title A Gantt Diagram + dateFormat YYYY-MM-DD + section Section + A task :a1, 2014-01-01, 30d + Another task :after a1 , 20d + section Another + Task in sec :2014-01-12 , 12d + another task : 24d + +``` + +#### Pie Chart + +```mermaid-example + pie + accTitle: My Pie Chart Accessibility Title + accDescr: My Pie Chart Accessibility Description + + title Key elements in Product X + "Calcium" : 42.96 + "Potassium" : 50.05 + "Magnesium" : 10.01 + "Iron" : 5 + +``` + +```mermaid + pie + accTitle: My Pie Chart Accessibility Title + accDescr: My Pie Chart Accessibility Description + + title Key elements in Product X + "Calcium" : 42.96 + "Potassium" : 50.05 + "Magnesium" : 10.01 + "Iron" : 5 + +``` + +#### Requirement Diagram + +```mermaid-example + requirementDiagram + accTitle: My Requirement Diagram + accDescr: My Requirement Diagram Description + + requirement test_req { + id: 1 + text: the test text. + risk: high + verifymethod: test + } + + element test_entity { + type: simulation + } + + test_entity - satisfies -> test_req + +``` + +```mermaid + requirementDiagram + accTitle: My Requirement Diagram + accDescr: My Requirement Diagram Description + + requirement test_req { + id: 1 + text: the test text. + risk: high + verifymethod: test + } + + element test_entity { + type: simulation + } + + test_entity - satisfies -> test_req + +``` + +#### Gitgraph + +```mermaid-example + gitGraph + accTitle: My Gitgraph Accessibility Title + accDescr: My Gitgraph Accessibility Description + + commit + commit + branch develop + checkout develop + commit + commit + checkout main + merge develop + commit + commit + +``` + +```mermaid + gitGraph + accTitle: My Gitgraph Accessibility Title + accDescr: My Gitgraph Accessibility Description + + commit + commit + branch develop + checkout develop + commit + commit + checkout main + merge develop + commit + commit + +``` diff --git a/docs/config/configuration.md b/docs/config/configuration.md new file mode 100644 index 000000000..c7b780143 --- /dev/null +++ b/docs/config/configuration.md @@ -0,0 +1,41 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/configuration.md](../../packages/mermaid/src/docs/config/configuration.md). + +# Configuration + +When mermaid starts, configuration is extracted to determine a configuration to be used for a diagram. There are 3 sources for configuration: + +- The default configuration +- Overrides at the site level are set by the initialize call, and will be applied to all diagrams in the site/app. The term for this is the **siteConfig**. +- Directives - diagram authors can update select configuration parameters directly in the diagram code via directives. These are applied to the render config. + +**The render config** is configuration that is used when rendering by applying these configurations. + +## Theme configuration + +## Starting mermaid + +```mermaid-example +sequenceDiagram + Site->>mermaid: initialize + Site->>mermaid: content loaded + mermaid->>mermaidAPI: init +``` + +```mermaid +sequenceDiagram + Site->>mermaid: initialize + Site->>mermaid: content loaded + mermaid->>mermaidAPI: init +``` + +## Initialize + +The initialize call is applied **only once**. It is called by the site integrator in order to override the default configuration at a site level. + +## configApi.reset + +This method resets the configuration for a diagram to the overall site configuration, which is the configuration provided by the site integrator. Before each rendering of a diagram, reset is called at the very beginning. diff --git a/docs/config/directives.md b/docs/config/directives.md new file mode 100644 index 000000000..550707080 --- /dev/null +++ b/docs/config/directives.md @@ -0,0 +1,329 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/directives.md](../../packages/mermaid/src/docs/config/directives.md). + +# Directives + +## Directives + +Directives gives a diagram author the capability to alter the appearance of a diagram before rendering by changing the applied configuration. + +The significance of having directives is that you have them available while writing the diagram, and can modify the default global and diagram specific configurations. So, directives are applied on top of the default configurations. The beauty of directives is that you can use them to alter configuration settings for a specific diagram, i.e. at an individual level. + +While directives allow you to change most of the default configuration settings, there are some that are not available, that too for security reasons. Also, you do have the _option to define the set of configurations_ that you would allow to be available to the diagram author for overriding with help of directives. + +## Types of Directives options + +Mermaid basically supports two types of configuration options to be overridden by directives. + +1. _General/Top Level configurations_ : These are the configurations that are available and applied to all the diagram. **Some of the most important top-level** configurations are: + +- theme +- fontFamily +- logLevel +- securityLevel +- startOnLoad +- secure + +2. _Diagram specific configurations_ : These are the configurations that are available and applied to a specific diagram. For each diagram there are specific configuration that will alter how that particular diagram looks and behaves. + For example, `mirrorActors` is a configuration that is specific to the `SequenceDiagram` and alter whether the actors are mirrored or not. So this config is available only for the `SequenceDiagram` type. + +**NOTE:** These options listed here are not all the configuration options. To get hold of all the configuration options, please refer to the [defaultConfig.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/defaultConfig.ts) in the source code. + + Soon we plan to publish a complete list of top-level configurations & all the diagram specific configurations, with their possible values in the docs + +## Declaring directives + +Now that we have defined the types of configurations that are available, we can learn how to declare directives. +A directive always starts and end `%%` sign with directive text in between, like `%% {directive_text} %%`. + +Here the structure of a directive text is like a nested key-value pair map or a JSON object with root being _init_. Where all the general configurations are defined in the top level, and all the diagram specific configurations are defined one level deeper with diagram type as key/root for that section. + +Following code snippet shows the structure of a directive: + + %%{ + init: { + "theme": "dark", + "fontFamily": "monospace", + "logLevel": "info", + "flowchart": { + "htmlLabels": true, + "curve": "linear" + }, + "sequence": { + "mirrorActors": true + } + } + }%% + +You can also define the directives in a single line, like this: + + %%{init: { **insert argument here**}}%% + +For example, the following code snippet: + + %%{init: { "sequence": { "mirrorActors":false }}}%% + +**Notes:** +The json object that is passed as {**argument** } must be valid key value pairs and encased in quotation marks or it will be ignored. +Valid Key Value pairs can be found in config. + +Example with a simple graph: + +```mermaid-example +%%{init: { 'logLevel': 'debug', 'theme': 'dark' } }%% +graph LR +A-->B +``` + +```mermaid +%%{init: { 'logLevel': 'debug', 'theme': 'dark' } }%% +graph LR +A-->B +``` + +Here the directive declaration will set the `logLevel` to `debug` and the `theme` to `dark` for a rendered mermaid diagram, changing the appearance of the diagram itself. + +Note: You can use 'init' or 'initialize' as both acceptable as init directives. Also note that `%%init%%` and `%%initialize%%` directives will be grouped together after they are parsed. This means: + +```mermaid-example +%%{init: { 'logLevel': 'debug', 'theme': 'forest' } }%% +%%{initialize: { 'logLevel': 'fatal', "theme":'dark', 'startOnLoad': true } }%% +... +``` + +```mermaid +%%{init: { 'logLevel': 'debug', 'theme': 'forest' } }%% +%%{initialize: { 'logLevel': 'fatal', "theme":'dark', 'startOnLoad': true } }%% +... +``` + +parsing the above generates a single `%%init%%` JSON object below, combining the two directives and carrying over the last value given for `loglevel`: + +```json +{ + "logLevel": "fatal", + "theme": "dark", + "startOnLoad": true +} +``` + +This will then be sent to `mermaid.initialize(...)` for rendering. + +## Directive Examples + +More directive examples for diagram specific configuration overrides +Now that the concept of directives has been explained, Let us see some more examples for directives usage: + +### Changing Theme via directive + +The following code snippet changes theme to forest: + +`%%{init: { "theme": "forest" } }%%` + +Possible themes value are: `default`,`base`, `dark`, `forest` and `neutral`. +Default Value is `default`. + +Example: + +```mermaid-example +%%{init: { "theme": "forest" } }%% +graph TD +A(Forest) --> B[/Another/] +A --> C[End] + subgraph section + B + C + end + +``` + +```mermaid +%%{init: { "theme": "forest" } }%% +graph TD +A(Forest) --> B[/Another/] +A --> C[End] + subgraph section + B + C + end + +``` + +### Changing fontFamily via directive + +The following code snippet changes fontFamily to rebuchet MS, Verdana, Arial, Sans-Serif: + +`%%{init: { "fontFamily": "Trebuchet MS, Verdana, Arial, Sans-Serif" } }%%` + +Example: + +```mermaid-example +%%{init: { "fontFamily": "Trebuchet MS, Verdana, Arial, Sans-Serif" } }%% +graph TD +A(Forest) --> B[/Another/] +A --> C[End] + subgraph section + B + C + end + +``` + +```mermaid +%%{init: { "fontFamily": "Trebuchet MS, Verdana, Arial, Sans-Serif" } }%% +graph TD +A(Forest) --> B[/Another/] +A --> C[End] + subgraph section + B + C + end + +``` + +### Changing logLevel via directive + +The following code snippet changes logLevel to 2: + +`%%{init: { "logLevel": 2 } }%%` + +Possible logLevel values are: + +- `1` for _debug_, +- `2` for _info_ +- `3` for _warn_ +- `4` for _error_ +- `5` for _only fatal errors_ + +Default Value is `5`. + +Example: + +```mermaid-example +%%{init: { "logLevel": 2 } }%% +graph TD +A(Forest) --> B[/Another/] +A --> C[End] + subgraph section + B + C + end +``` + +```mermaid +%%{init: { "logLevel": 2 } }%% +graph TD +A(Forest) --> B[/Another/] +A --> C[End] + subgraph section + B + C + end +``` + +### Changing flowchart config via directive + +Some common flowchart configurations are: + +- _htmlLabels_: true/false +- _curve_: linear/curve +- _diagramPadding_: number +- _useMaxWidth_: number + +For complete list of flowchart configurations, see [defaultConfig.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/defaultConfig.ts) in the source code. +_Soon we plan to publish a complete list all diagram specific configurations updated in the docs_ + +The following code snippet changes flowchart config: + +`%%{init: { "flowchart": { "htmlLabels": true, "curve": "linear" } } }%%` + +Here were are overriding only the flowchart config, and not the general config, where HtmlLabels is set to true and curve is set to linear. + +```mermaid-example +%%{init: { "flowchart": { "htmlLabels": true, "curve": "linear" } } }%% +graph TD +A(Forest) --> B[/Another/] +A --> C[End] + subgraph section + B + C + end +``` + +```mermaid +%%{init: { "flowchart": { "htmlLabels": true, "curve": "linear" } } }%% +graph TD +A(Forest) --> B[/Another/] +A --> C[End] + subgraph section + B + C + end +``` + +### Changing Sequence diagram config via directive + +Some common sequence configurations are: + +- _width_: number +- _height_: number +- _messageAlign_: left, center, right +- _mirrorActors_: boolean +- _useMaxWidth_: boolean +- _rightAngles_: boolean +- _showSequenceNumbers_: boolean +- _wrap_: boolean + +For complete list of sequence diagram configurations, see _defaultConfig.ts_ in the source code. +_Soon we plan to publish a complete list all diagram specific configurations updated in the docs_ + +So, `wrap` by default has a value of `false` for sequence diagrams. + +Let us see an example: + +```mermaid-example +sequenceDiagram + +Alice->Bob: Hello Bob, how are you? +Bob->Alice: Fine, How did you mother like the book I suggested? And did you catch with the new book about alien invasion? +Alice->Bob: Good. +Bob->Alice: Cool +``` + +```mermaid +sequenceDiagram + +Alice->Bob: Hello Bob, how are you? +Bob->Alice: Fine, How did you mother like the book I suggested? And did you catch with the new book about alien invasion? +Alice->Bob: Good. +Bob->Alice: Cool +``` + +Now let us enable wrap for sequence diagrams. + +The following code snippet changes sequence diagram config for `wrap` to `true`: + +`%%{init: { "sequence": { "wrap": true} } }%%` + +Using in the diagram above, the wrap will be enabled. + +```mermaid-example +%%{init: { "sequence": { "wrap": true, "width":300 } } }%% +sequenceDiagram +Alice->Bob: Hello Bob, how are you? +Bob->Alice: Fine, How did you mother like the book I suggested? And did you catch with the new book about alien invasion? +Alice->Bob: Good. +Bob->Alice: Cool +``` + +```mermaid +%%{init: { "sequence": { "wrap": true, "width":300 } } }%% +sequenceDiagram +Alice->Bob: Hello Bob, how are you? +Bob->Alice: Fine, How did you mother like the book I suggested? And did you catch with the new book about alien invasion? +Alice->Bob: Good. +Bob->Alice: Cool +``` diff --git a/docs/config/mermaidCLI.md b/docs/config/mermaidCLI.md new file mode 100644 index 000000000..530ac93ab --- /dev/null +++ b/docs/config/mermaidCLI.md @@ -0,0 +1,9 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/mermaidCLI.md](../../packages/mermaid/src/docs/config/mermaidCLI.md). + +# mermaid CLI + +mermaid CLI has been moved to [mermaid-cli](https://github.com/mermaid-js/mermaid-cli). Please read its documentation instead. diff --git a/docs/config/n00b-advanced.md b/docs/config/n00b-advanced.md new file mode 100644 index 000000000..5dd907429 --- /dev/null +++ b/docs/config/n00b-advanced.md @@ -0,0 +1,26 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/n00b-advanced.md](../../packages/mermaid/src/docs/config/n00b-advanced.md). + +# Advanced n00b mermaid (Coming soon..) + +## splitting mermaid code from html + +A more condensed html code can be achieved by embedding the mermaid code in its own .js file, which is referenced like so: + + stuff stuff + </div> + </body> + </html> + +The actual mermaid file could for example look like this: + + mermaid content... + +--- + +## mermaid configuration options + +... diff --git a/docs/config/setup/README.md b/docs/config/setup/README.md new file mode 100644 index 000000000..1cf82797d --- /dev/null +++ b/docs/config/setup/README.md @@ -0,0 +1,13 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/setup/README.md](../../../packages/mermaid/src/docs/config/setup/README.md). + +# mermaid + +## Modules + +- [config](modules/config.md) +- [defaultConfig](modules/defaultConfig.md) +- [mermaidAPI](modules/mermaidAPI.md) diff --git a/docs/config/setup/modules/config.md b/docs/config/setup/modules/config.md new file mode 100644 index 000000000..993a7627b --- /dev/null +++ b/docs/config/setup/modules/config.md @@ -0,0 +1,276 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/setup/modules/config.md](../../../../packages/mermaid/src/docs/config/setup/modules/config.md). + +# Module: config + +## Variables + +### defaultConfig + +• `Const` **defaultConfig**: `MermaidConfig` + +#### Defined in + +[config.ts:7](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L7) + +## Functions + +### addDirective + +▸ **addDirective**(`directive`): `void` + +Pushes in a directive to the configuration + +#### Parameters + +| Name | Type | Description | +| :---------- | :---- | :----------------------- | +| `directive` | `any` | The directive to push in | + +#### Returns + +`void` + +#### Defined in + +[config.ts:193](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L193) + +--- + +### getConfig + +▸ **getConfig**(): `MermaidConfig` + +## getConfig + +| Function | Description | Type | Return Values | +| --------- | ------------------------- | ----------- | ------------------------------ | +| getConfig | Obtains the currentConfig | Get Request | Any Values from current Config | + +**Notes**: Returns **any** the currentConfig + +#### Returns + +`MermaidConfig` + +The currentConfig + +#### Defined in + +[config.ts:138](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L138) + +--- + +### getSiteConfig + +▸ **getSiteConfig**(): `MermaidConfig` + +## getSiteConfig + +| Function | Description | Type | Values | +| ------------- | ------------------------------------------------- | ----------- | -------------------------------- | +| setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig | + +**Notes**: Returns **any** values in siteConfig. + +#### Returns + +`MermaidConfig` + +The siteConfig + +#### Defined in + +[config.ts:97](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L97) + +--- + +### reset + +▸ **reset**(`config?`): `void` + +## reset + +| Function | Description | Type | Required | Values | +| -------- | ---------------------------- | ----------- | -------- | ------ | +| reset | Resets currentConfig to conf | Put Request | Required | None | + +## conf + +| Parameter | Description | Type | Required | Values | +| --------- | -------------------------------------------------------------- | ---------- | -------- | -------------------------------------------- | +| conf | base set of values, which currentConfig could be **reset** to. | Dictionary | Required | Any Values, with respect to the secure Array | + +**Notes**: (default: current siteConfig ) (optional, default `getSiteConfig()`) + +#### Parameters + +| Name | Type | Default value | Description | +| :------- | :-------------- | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `config` | `MermaidConfig` | `siteConfig` | base set of values, which currentConfig could be **reset** to. Defaults to the current siteConfig (e.g returned by [getSiteConfig](config.md#getsiteconfig)). | + +#### Returns + +`void` + +#### Defined in + +[config.ts:225](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L225) + +--- + +### sanitize + +▸ **sanitize**(`options`): `void` + +## sanitize + +| Function | Description | Type | Values | +| -------- | -------------------------------------- | ----------- | ------ | +| sanitize | Sets the siteConfig to desired values. | Put Request | None | + +Ensures options parameter does not attempt to override siteConfig secure keys **Notes**: modifies +options in-place + +#### Parameters + +| Name | Type | Description | +| :-------- | :---- | :-------------------------------- | +| `options` | `any` | The potential setConfig parameter | + +#### Returns + +`void` + +#### Defined in + +[config.ts:153](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L153) + +--- + +### saveConfigFromInitialize + +▸ **saveConfigFromInitialize**(`conf`): `void` + +#### Parameters + +| Name | Type | +| :----- | :-------------- | +| `conf` | `MermaidConfig` | + +#### Returns + +`void` + +#### Defined in + +[config.ts:76](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L76) + +--- + +### setConfig + +▸ **setConfig**(`conf`): `MermaidConfig` + +## setConfig + +| Function | Description | Type | Values | +| ------------- | ------------------------------------- | ----------- | --------------------------------------- | +| setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array | + +**Notes**: Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure +keys. Any values found in conf with key found in siteConfig.secure will be replaced with the +corresponding siteConfig value. + +#### Parameters + +| Name | Type | Description | +| :----- | :-------------- | :-------------------------- | +| `conf` | `MermaidConfig` | The potential currentConfig | + +#### Returns + +`MermaidConfig` + +The currentConfig merged with the sanitized conf + +#### Defined in + +[config.ts:114](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L114) + +--- + +### setSiteConfig + +▸ **setSiteConfig**(`conf`): `MermaidConfig` + +## setSiteConfig + +| Function | Description | Type | Values | +| ------------- | ------------------------------------- | ----------- | --------------------------------------- | +| setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array | + +**Notes:** Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls +to reset() will reset the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) +will reset siteConfig and currentConfig to the defaultConfig Note: currentConfig is set in this +function _Default value: At default, will mirror Global Config_ + +#### Parameters + +| Name | Type | Description | +| :----- | :-------------- | :------------------------------------------ | +| `conf` | `MermaidConfig` | The base currentConfig to use as siteConfig | + +#### Returns + +`MermaidConfig` + +The new siteConfig + +#### Defined in + +[config.ts:62](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L62) + +--- + +### updateCurrentConfig + +▸ **updateCurrentConfig**(`siteCfg`, `_directives`): `MermaidConfig` + +#### Parameters + +| Name | Type | +| :------------ | :-------------- | +| `siteCfg` | `MermaidConfig` | +| `_directives` | `any`\[] | + +#### Returns + +`MermaidConfig` + +#### Defined in + +[config.ts:14](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L14) + +--- + +### updateSiteConfig + +▸ **updateSiteConfig**(`conf`): `MermaidConfig` + +#### Parameters + +| Name | Type | +| :----- | :-------------- | +| `conf` | `MermaidConfig` | + +#### Returns + +`MermaidConfig` + +#### Defined in + +[config.ts:80](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L80) diff --git a/docs/config/setup/modules/defaultConfig.md b/docs/config/setup/modules/defaultConfig.md new file mode 100644 index 000000000..c7ad1402f --- /dev/null +++ b/docs/config/setup/modules/defaultConfig.md @@ -0,0 +1,56 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/setup/modules/defaultConfig.md](../../../../packages/mermaid/src/docs/config/setup/modules/defaultConfig.md). + +# Module: defaultConfig + +## Variables + +### configKeys + +• `Const` **configKeys**: `string`\[] + +#### Defined in + +[defaultConfig.ts:1881](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L1881) + +--- + +### default + +• `Const` **default**: `Partial`<`MermaidConfig`> + +**Configuration methods in Mermaid version 8.6.0 have been updated, to learn more\[[click +here](8.6.0_docs.md)].** + +## **What follows are config instructions for older versions** + +These are the default options which can be overridden with the initialization call like so: + +**Example 1:** + +```js +mermaid.initialize({ flowchart: { htmlLabels: false } }); +``` + +**Example 2:** + +```html +<script> + const config = { + startOnLoad: true, + flowchart: { useMaxWidth: true, htmlLabels: true, curve: 'cardinal' }, + securityLevel: 'loose', + }; + mermaid.initialize(config); +</script> +``` + +A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults). +A description of each option follows below. + +#### Defined in + +[defaultConfig.ts:33](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L33) diff --git a/docs/config/theming.md b/docs/config/theming.md new file mode 100644 index 000000000..cfd86caa0 --- /dev/null +++ b/docs/config/theming.md @@ -0,0 +1,743 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/theming.md](../../packages/mermaid/src/docs/config/theming.md). + +# Theme Configuration + +With Version 8.7.0 Mermaid comes out with a system for dynamic and integrated configuration of themes. The intent is to increase the customizability and ease of styling for mermaid diagrams. + +The theme can be altered by changing the root level variable `theme` variable in the configuration. To change it for the whole site you must use the `initialize` call. To do it for just for a single diagram you can use the `%%init%%` directive + +Themes follow and build upon the Levels of Configuration, and employ `directives` to modify and create custom configurations, as they were introduced in Version [8.6.0](./8.6.0_docs.md). + +## Deployable Themes + +The following are a list of **Deployable themes**, sample `%%init%%` directives and `initialize` calls. + +1. **base**- Designed to be modified, as the name implies it is supposed to be used as the base for making custom themes. + +2. **forest**- A theme full of light greens that is easy on the eyes. + +3. **dark**- A theme that would go well with other dark-colored elements. + +4. **default**- The default theme for all diagrams. + +5. **neutral**- The theme to be used for black and white printing. + +## Site-wide Themes + +Site-wide themes are declared via `initialize` by site owners. + +Example of `Initialize` call setting `theme` to `base`: + +```javascript +mermaidAPI.initialize({ + securityLevel: 'loose', + theme: 'base', +}); +``` + +**Notes**: Only site owners can use the `mermaidAPI.initialize` call, to set values. Site-Users will have to use `%%init%%` to modify or create the theme for their diagrams. + +## Themes at the Local or Current Level + +When Generating a diagram using on a webpage that supports mermaid. It is also possible to override site-wide theme settings locally, for a specific diagram, using directives, as long as it is not prohibited by the `secure` array. + +```mermaid-example +%%{init: {'theme':'base'}}%% + graph TD + a --> b +``` + +```mermaid +%%{init: {'theme':'base'}}%% + graph TD + a --> b +``` + +Here is an example of how `%%init%%` can set the theme to 'base', this assumes that `themeVariables` are set to default: + +```mermaid-example +%%{init: {'theme':'base'}}%% + graph TD + A[Christmas] -->|Get money| B(Go shopping) + B --> C{Let me think} + B --> G[/Another/] + C ==>|One| D[Laptop] + C -->|Two| E[iPhone] + C -->|Three| F[fa:fa-car Car] + subgraph section + C + D + E + F + G + end +``` + +```mermaid +%%{init: {'theme':'base'}}%% + graph TD + A[Christmas] -->|Get money| B(Go shopping) + B --> C{Let me think} + B --> G[/Another/] + C ==>|One| D[Laptop] + C -->|Two| E[iPhone] + C -->|Three| F[fa:fa-car Car] + subgraph section + C + D + E + F + G + end +``` + +# List of Themes + +# Customizing Themes with `themeVariables` + +The easiest way to make a custom theme is to start with the base theme, and just modify theme variables through `themeVariables`, via `%%init%%`. + +| Parameter | Description | Type | Required | Objects contained | +| -------------- | ------------------------------------------------------------------ | ----- | -------- | ---------------------------------- | +| themeVariables | Array containing objects, modifiable with the `%%init%%` directive | Array | Required | primaryColor, lineColor, textColor | + +**Here is an example of overriding `primaryColor` through `themeVariables` and giving everything a different look, using `%%init%%`.** + +```mermaid-example +%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% + graph TD + A[Christmas] -->|Get money| B(Go shopping) + B --> C{Let me think} + B --> G[/Another/] + C ==>|One| D[Laptop] + C -->|Two| E[iPhone] + C -->|Three| F[fa:fa-car Car] + subgraph section + C + D + E + F + G + end +``` + +```mermaid +%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% + graph TD + A[Christmas] -->|Get money| B(Go shopping) + B --> C{Let me think} + B --> G[/Another/] + C ==>|One| D[Laptop] + C -->|Two| E[iPhone] + C -->|Three| F[fa:fa-car Car] + subgraph section + C + D + E + F + G + end +``` + +**Notes:** +Leaving it empty will set all variable values to default. + +## Color and Color Calculation: + +Color definitions have certain interactions in mermaid, this is in order to ensure visibility for diagrams. Mermaid will adjust some variables automatically, when colors are changed in order to compensate and maintain readability. + +**The Default Value Column** to the right of the Variable column will denote the Variable paired/associated with the Variable on the left and the nature of this pairing or association. If it for instance says primaryColor it means that it gets primaryColor as default value. If it says "based on primaryColor" it means that it is calculated/ derived from primaryColor. This calculation can be primary color inversion, a change of hue, darkening or lightening by 10%, etc. + +You can create your own themes, by changing any of the given variables below. If you are using a dark background, set dark mode to true to adjust the colors. It is possible to override the calculations using the variable names below, with `%%init%%` if you wish to style it differently. + +## Theme Variables Reference Table + +> **Note** +> Variables that are unique to some diagrams can be affected by changes in Theme Variables + +| Variable | Default/Base/Factor value | Calc | Description | +| -------------------- | ------------------------------ | ---- | -------------------------------------------------------------------------------------------------------------------------------- | +| darkMode | false | | Boolean Value that dictates how to calculate colors. "true" will activate darkmode. | +| background | #f4f4f4 | | Used to calculate color for items that should either be background colored or contrasting to the background. | +| fontFamily | "trebuchet ms", verdana, arial | | | +| fontSize | 16px | | Font Size, in pixels | +| primaryColor | #fff4dd | | Color to be used as background in nodes, other colors will be derived from this | +| primaryBorderColor | based on primaryColor | \* | Color to be used as border in nodes using primaryColor | +| primaryTextColor | based on darkMode #ddd/#333 | \* | Color to be used as text color in nodes using primaryColor | +| secondaryColor | based on primaryColor | \* | | +| secondaryBorderColor | based on secondaryColor | \* | Color to be used as border in nodes using secondaryColor | +| secondaryTextColor | based on secondaryColor | \* | Color to be used as text color in nodes using secondaryColor | +| tertiaryColor | based on primaryColor | \* | | +| tertiaryBorderColor | based on tertiaryColor | \* | Color to be used as border in nodes using tertiaryColor | +| tertiaryTextColor | based on tertiaryColor | \* | Color to be used as text color in nodes using tertiaryColor | +| noteBkgColor | #fff5ad | | Color used as background in notes | +| noteTextColor | #333 | | Text color in note rectangles. | +| noteBorderColor | based on noteBkgColor | \* | Border color in note rectangles. | +| lineColor | based on background | \* | | +| textColor | based on primaryTextColor | \* | Text in diagram over the background for instance text on labels and on signals in sequence diagram or the title in gantt diagram | +| mainBkg | based on primaryColor | \* | Background in flowchart objects like rects/circles, class diagram classes, sequence diagram etc | +| errorBkgColor | tertiaryColor | \* | Color for syntax error message | +| errorTextColor | tertiaryTextColor | \* | Color for syntax error message | + +# What follows are Variables, specific to different diagrams and charts. + +## Some Theme Variables serve as, or affect the Default Values for Specific Diagram Variables, unless changed using `%%init%%` . + +## Flowchart + +| Variable | Default/ Associated Value | Calc | Description | +| ------------------- | ------------------------- | ---- | ---------------------------- | +| nodeBorder | primaryBorderColor | \* | Node Border Color | +| clusterBkg | tertiaryColor | \* | Background in subgraphs | +| clusterBorder | tertiaryBorderColor | \* | Cluster Border Color | +| defaultLinkColor | lineColor | \* | Link Color | +| titleColor | tertiaryTextColor | \* | Title Color | +| edgeLabelBackground | based on secondaryColor | \* | | +| nodeTextColor | primaryTextColor | \* | Color for text inside Nodes. | + +# sequence diagram + +| name | Default value | Calc | Description | +| --------------------- | ----------------------- | ---- | --------------------------- | +| actorBorder | primaryBorderColor | \* | Actor Border Color | +| actorBkg | mainBkg | \* | Actor Background Color | +| actorTextColor | primaryTextColor | \* | Actor Text Color | +| actorLineColor | grey | \* | Actor Line Color | +| signalColor | textColor | \* | Signal Color | +| signalTextColor | textColor | \* | Signal Text Color | +| labelBoxBkgColor | actorBkg | \* | Label Box Background Color | +| labelBoxBorderColor | actorBorder | \* | Label Box Border Color | +| labelTextColor | actorTextColor | \* | Label Text Color | +| loopTextColor | actorTextColor | \* | Loop ext Color | +| activationBorderColor | based on secondaryColor | \* | Activation Border Color | +| activationBkgColor | secondaryColor | \* | Activation Background Color | +| sequenceNumberColor | based on lineColor | \* | Sequence Number Color | + +# state colors + +| name | Default value | Calc | Description | +| ------------- | ---------------- | ---- | -------------------------------------------- | +| labelColor | primaryTextColor | \* | | +| altBackground | tertiaryColor | \* | Used for background in deep composite states | + +# class colors + +| name | Default value | Calc | Description | +| --------- | ------------- | ---- | ------------------------------- | +| classText | textColor | \* | Color of Text in class diagrams | + +# User journey colors + +| name | Default value | Calc | Description | +| --------- | ----------------------- | ---- | --------------------------------------- | +| fillType0 | primaryColor | \* | Fill for 1st section in journey diagram | +| fillType1 | secondaryColor | \* | Fill for 2nd section in journey diagram | +| fillType2 | based on primaryColor | \* | Fill for 3rd section in journey diagram | +| fillType3 | based on secondaryColor | \* | Fill for 4th section in journey diagram | +| fillType4 | based on primaryColor | \* | Fill for 5th section in journey diagram | +| fillType5 | based on secondaryColor | \* | Fill for 6th section in journey diagram | +| fillType6 | based on primaryColor | \* | Fill for 7th section in journey diagram | +| fillType7 | based on secondaryColor | \* | Fill for 8th section in journey diagram | + +\*\*Notes: Values are meant to create an alternating look. + +# Here is an example of overriding `primaryColor` and giving everything a different look, using `%%init%%`. + +```mermaid-example +%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% + graph TD + A[Christmas] -->|Get money| B(Go shopping) + B --> C{Let me think} + B --> G[/Another/] + C ==>|One| D[Laptop] + C -->|Two| E[iPhone] + C -->|Three| F[fa:fa-car Car] + subgraph section + C + D + E + F + G + end +``` + +```mermaid +%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% + graph TD + A[Christmas] -->|Get money| B(Go shopping) + B --> C{Let me think} + B --> G[/Another/] + C ==>|One| D[Laptop] + C -->|Two| E[iPhone] + C -->|Three| F[fa:fa-car Car] + subgraph section + C + D + E + F + G + end +``` + +\*\*This got a bit too dark and bit too colorful. With some easy steps this can be fixed: + +- Make the primary color a little lighter +- set the tertiary color to a reddish shade as well +- make the edge label background differ from the subgraph by setting the edgeLabelBackground + +```mermaid-example +%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ffcccc', 'edgeLabelBackground':'#ffffee', 'tertiaryColor': '#fff0f0'}}}%% + graph TD + A[Christmas] -->|Get money| B(Go shopping) + B --> C{Let me think} + B --> G[/Another/] + C ==>|One| D[Laptop] + C -->|Two| E[iPhone] + C -->|Three| F[fa:fa-car Car] + subgraph section + C + D + E + F + G + end +``` + +```mermaid +%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ffcccc', 'edgeLabelBackground':'#ffffee', 'tertiaryColor': '#fff0f0'}}}%% + graph TD + A[Christmas] -->|Get money| B(Go shopping) + B --> C{Let me think} + B --> G[/Another/] + C ==>|One| D[Laptop] + C -->|Two| E[iPhone] + C -->|Three| F[fa:fa-car Car] + subgraph section + C + D + E + F + G + end +``` + +The Theming Engine does not admit color codes and will only accept proper color values. Color Names is not supported so for instance, the color value 'red' will not work, but '#ff0000' will work. + +# Common theming activities + +## How to change the color of the arrows + +# Examples: + +When adjusting a theme it might be helpful to look at how your preferred theme goes with the diagrams, to evaluate whether everything is visible and looks good. +In the following examples, the directive `init` is used, with the `theme` being declared as `base`. For more information on using directives, read the documentation for [Version 8.6.0](/8.6.0_docs.md) + +### Flowchart + +```mermaid-example +%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% + graph TD + A[Christmas] -->|Get money| B(Go shopping) + B --> C{Let me think} + B --> G[/Another/] + C ==>|One| D[Laptop] + C -->|Two| E[iPhone] + C -->|Three| F[fa:fa-car Car] + subgraph section + C + D + E + F + G + end +``` + +```mermaid +%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% + graph TD + A[Christmas] -->|Get money| B(Go shopping) + B --> C{Let me think} + B --> G[/Another/] + C ==>|One| D[Laptop] + C -->|Two| E[iPhone] + C -->|Three| F[fa:fa-car Car] + subgraph section + C + D + E + F + G + end +``` + +### Flowchart (beta) + +```mermaid-example +%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% + flowchart TD + A[Christmas] -->|Get money| B(Go shopping) + B --> C{Let me think} + B --> G[Another] + C ==>|One| D[Laptop] + C x--x|Two| E[iPhone] + C o--o|Three| F[fa:fa-car Car] + subgraph section + C + D + E + F + G + end +``` + +```mermaid +%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% + flowchart TD + A[Christmas] -->|Get money| B(Go shopping) + B --> C{Let me think} + B --> G[Another] + C ==>|One| D[Laptop] + C x--x|Two| E[iPhone] + C o--o|Three| F[fa:fa-car Car] + subgraph section + C + D + E + F + G + end +``` + +### Sequence diagram + +```mermaid-example +%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% + sequenceDiagram + autonumber + par Action 1 + Alice->>John: Hello John, how are you? + and Action 2 + Alice->>Bob: Hello Bob, how are you? + end + Alice->>+John: Hello John, how are you? + Alice->>+John: John, can you hear me? + John-->>-Alice: Hi Alice, I can hear you! + Note right of John: John is perceptive + John-->>-Alice: I feel great! + loop Every minute + John-->Alice: Great! + end +``` + +```mermaid +%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% + sequenceDiagram + autonumber + par Action 1 + Alice->>John: Hello John, how are you? + and Action 2 + Alice->>Bob: Hello Bob, how are you? + end + Alice->>+John: Hello John, how are you? + Alice->>+John: John, can you hear me? + John-->>-Alice: Hi Alice, I can hear you! + Note right of John: John is perceptive + John-->>-Alice: I feel great! + loop Every minute + John-->Alice: Great! + end +``` + +### Class diagram + +```mermaid-example +%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% + +classDiagram + Animal "1" <|-- Duck + Animal <|-- Fish + Animal <--o Zebra + Animal : +int age + Animal : +String gender + Animal: +isMammal() + Animal: +mate() + class Duck{ + +String beakColor + +swim() + +quack() + } + class Fish{ + -int sizeInFeet + -canEat() + } + class Zebra{ + +bool is_wild + +run() + } +``` + +```mermaid +%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% + +classDiagram + Animal "1" <|-- Duck + Animal <|-- Fish + Animal <--o Zebra + Animal : +int age + Animal : +String gender + Animal: +isMammal() + Animal: +mate() + class Duck{ + +String beakColor + +swim() + +quack() + } + class Fish{ + -int sizeInFeet + -canEat() + } + class Zebra{ + +bool is_wild + +run() + } +``` + +### Gantt + +```mermaid-example +gantt + dateFormat YYYY-MM-DD + title Adding GANTT diagram functionality to mermaid + excludes :excludes the named dates/days from being included in a charted task.. + section A section + Completed task :done, des1, 2014-01-06,2014-01-08 + Active task :active, des2, 2014-01-09, 3d + Future task : des3, after des2, 5d + Future task2 : des4, after des3, 5d + + section Critical tasks + Completed task in the critical line :crit, done, 2014-01-06,24h + Implement parser and jison :crit, done, after des1, 2d + Create tests for parser :crit, active, 3d + Future task in critical line :crit, 5d + Create tests for renderer :2d + Add to mermaid :1d + + section Documentation + Describe gantt syntax :active, a1, after des1, 3d + Add gantt diagram to demo page :after a1 , 20h + Add another diagram to demo page :doc1, after a1 , 48h + + section Last section + Describe gantt syntax :after doc1, 3d + Add gantt diagram to demo page :20h + Add another diagram to demo page :48h +``` + +```mermaid +gantt + dateFormat YYYY-MM-DD + title Adding GANTT diagram functionality to mermaid + excludes :excludes the named dates/days from being included in a charted task.. + section A section + Completed task :done, des1, 2014-01-06,2014-01-08 + Active task :active, des2, 2014-01-09, 3d + Future task : des3, after des2, 5d + Future task2 : des4, after des3, 5d + + section Critical tasks + Completed task in the critical line :crit, done, 2014-01-06,24h + Implement parser and jison :crit, done, after des1, 2d + Create tests for parser :crit, active, 3d + Future task in critical line :crit, 5d + Create tests for renderer :2d + Add to mermaid :1d + + section Documentation + Describe gantt syntax :active, a1, after des1, 3d + Add gantt diagram to demo page :after a1 , 20h + Add another diagram to demo page :doc1, after a1 , 48h + + section Last section + Describe gantt syntax :after doc1, 3d + Add gantt diagram to demo page :20h + Add another diagram to demo page :48h +``` + +### State diagram + +```mermaid-example +%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% + stateDiagram + [*] --> Active + + state Active { + [*] --> NumLockOff + NumLockOff --> NumLockOn : EvNumLockPressed + NumLockOn --> NumLockOff : EvNumLockPressed + -- + [*] --> CapsLockOff + CapsLockOff --> CapsLockOn : EvCapsLockPressed + CapsLockOn --> CapsLockOff : EvCapsLockPressed + -- + [*] --> ScrollLockOff + ScrollLockOff --> ScrollLockOn : EvCapsLockPressed + ScrollLockOn --> ScrollLockOff : EvCapsLockPressed + } + state SomethingElse { + A --> B + B --> A + } + + Active --> SomethingElse + note right of SomethingElse : This is the note to the right. + + SomethingElse --> [*] + +``` + +```mermaid +%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% + stateDiagram + [*] --> Active + + state Active { + [*] --> NumLockOff + NumLockOff --> NumLockOn : EvNumLockPressed + NumLockOn --> NumLockOff : EvNumLockPressed + -- + [*] --> CapsLockOff + CapsLockOff --> CapsLockOn : EvCapsLockPressed + CapsLockOn --> CapsLockOff : EvCapsLockPressed + -- + [*] --> ScrollLockOff + ScrollLockOff --> ScrollLockOn : EvCapsLockPressed + ScrollLockOn --> ScrollLockOff : EvCapsLockPressed + } + state SomethingElse { + A --> B + B --> A + } + + Active --> SomethingElse + note right of SomethingElse : This is the note to the right. + + SomethingElse --> [*] + +``` + +### State diagram (beta) + +```mermaid-example +%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% +stateDiagram-v2 + [*] --> Active + + state Active { + [*] --> NumLockOff + NumLockOff --> NumLockOn : EvNumLockPressed + NumLockOn --> NumLockOff : EvNumLockPressed + -- + [*] --> CapsLockOff + CapsLockOff --> CapsLockOn : EvCapsLockPressed + CapsLockOn --> CapsLockOff : EvCapsLockPressed + -- + [*] --> ScrollLockOff + ScrollLockOff --> ScrollLockOn : EvCapsLockPressed + ScrollLockOn --> ScrollLockOff : EvCapsLockPressed + } + state SomethingElse { + A --> B + B --> A + } + + Active --> SomethingElse2 + note right of SomethingElse2 : This is the note to the right. + + SomethingElse2 --> [*] +``` + +```mermaid +%%{init: {'securityLevel': 'loose', 'theme':'base'}}%% +stateDiagram-v2 + [*] --> Active + + state Active { + [*] --> NumLockOff + NumLockOff --> NumLockOn : EvNumLockPressed + NumLockOn --> NumLockOff : EvNumLockPressed + -- + [*] --> CapsLockOff + CapsLockOff --> CapsLockOn : EvCapsLockPressed + CapsLockOn --> CapsLockOff : EvCapsLockPressed + -- + [*] --> ScrollLockOff + ScrollLockOff --> ScrollLockOn : EvCapsLockPressed + ScrollLockOn --> ScrollLockOff : EvCapsLockPressed + } + state SomethingElse { + A --> B + B --> A + } + + Active --> SomethingElse2 + note right of SomethingElse2 : This is the note to the right. + + SomethingElse2 --> [*] +``` + +### Entity Relations diagram + +```mermaid-example + erDiagram + CUSTOMER }|..|{ DELIVERY-ADDRESS : has + CUSTOMER ||--o{ ORDER : places + CUSTOMER ||--o{ INVOICE : "liable for" + DELIVERY-ADDRESS ||--o{ ORDER : receives + INVOICE ||--|{ ORDER : covers + ORDER ||--|{ ORDER-ITEM : includes + PRODUCT-CATEGORY ||--|{ PRODUCT : contains + PRODUCT ||--o{ ORDER-ITEM : "ordered in" +``` + +```mermaid + erDiagram + CUSTOMER }|..|{ DELIVERY-ADDRESS : has + CUSTOMER ||--o{ ORDER : places + CUSTOMER ||--o{ INVOICE : "liable for" + DELIVERY-ADDRESS ||--o{ ORDER : receives + INVOICE ||--|{ ORDER : covers + ORDER ||--|{ ORDER-ITEM : includes + PRODUCT-CATEGORY ||--|{ PRODUCT : contains + PRODUCT ||--o{ ORDER-ITEM : "ordered in" +``` + +### User journey diagram + +```mermaid-example +journey + title My working day + section Go to work + Make tea: 5: Me + Go upstairs: 3: Me + Do work: 1: Me, Cat + section Go home + Go downstairs: 5: Me + Sit down: 5: Me +``` + +```mermaid +journey + title My working day + section Go to work + Make tea: 5: Me + Go upstairs: 3: Me + Do work: 1: Me, Cat + section Go home + Go downstairs: 5: Me + Sit down: 5: Me +``` diff --git a/docs/config/usage.md b/docs/config/usage.md new file mode 100644 index 000000000..a0fb371cd --- /dev/null +++ b/docs/config/usage.md @@ -0,0 +1,391 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/usage.md](../../packages/mermaid/src/docs/config/usage.md). + +# Usage + +Mermaid is a JavaScript tool that makes use of a Markdown based syntax to render customizable diagrams, charts and visualizations. + +Diagrams can be re-rendered/modified by modifying their descriptions. + +### CDN + +<https://unpkg.com/mermaid/> + +Please note that you can switch versions through the dropdown box at the top right. + +## Using mermaid + +For the majority of users, Using the [Live Editor](https://mermaid.live/) would be sufficient, however you may also opt to deploy mermaid as a dependency or using the [Mermaid API](./setup/README.md). + +We have compiled some Video [Tutorials](./Tutorials.md) on how to use the mermaid Live Editor. + +**Installing and Hosting Mermaid on a Webpage** + +**Using the npm package** + + 1. You will need to install node v16, which would have npm. + + 2. download yarn using npm. + + 3. enter the following command: + yarn add mermaid + + 4. At this point, you can add mermaid as a dev dependency using this command: + yarn add --dev mermaid + + 5. Alternatively, you can also deploy mermaid using the script tag in an HTML file with mermaid diagram descriptions. + as is shown in the example below + +**Hosting mermaid on a web page.** + +> Note:This topic explored in greater depth in the [User Guide for Beginners](../intro/n00b-gettingStarted.md) + +The easiest way to integrate mermaid on a web page requires two elements: + +- A graph definition, inside `<pre>` tags labeled `class=mermaid`. Example: + +```html +<pre class="mermaid"> + graph LR + A --- B + B-->C[fa:fa-ban forbidden] + B-->D(fa:fa-spinner); +</pre> +``` + +- Inclusion of the mermaid address in the html page body using a `script` tag as an ESM import, and the `mermaidAPI` call. + +Example: + +```html +<script type="module"> + import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; + mermaid.initialize({ startOnLoad: true }); +</script> +``` + +**Following these directions, mermaid starts at page load and (when the page has loaded) it will locate the graph definitions inside the `pre` tags with `class="mermaid"` and return diagrams in SVG form, following given definitions.** + +## Simple full example: + +```html +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + </head> + <body> + <pre class="mermaid"> + graph LR + A --- B + B-->C[fa:fa-ban forbidden] + B-->D(fa:fa-spinner); + </pre> + <script type="module"> + import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; + mermaid.initialize({ startOnLoad: true }); + </script> + </body> +</html> +``` + +## Notes: + +An id attribute is also added to mermaid tags without one. + +Mermaid can load multiple diagrams, in the same page. + +> Try it out, save this code as HTML and load it using any browser.(Except Internet Explorer, please don't use Internet Explorer.) + +## Enabling Click Event and Tags in Nodes + +A `securityLevel` configuration has to first be cleared, `securityLevel` sets the level of trust for the parsed diagrams and limits click functionality. This was introduce in version 8.2 as a security improvement, aimed at preventing malicious use. + +**It is the site owner's responsibility to discriminate between trustworthy and untrustworthy user-bases and we encourage the use of discretion.** + +## securityLevel + +| Parameter | Description | Type | Required | Values | +| ------------- | --------------------------------- | ------ | -------- | ------------------------------------------ | +| securityLevel | Level of trust for parsed diagram | String | Required | 'sandbox', 'strict', 'loose', 'antiscript' | + +Values: + +- **strict**: (**default**) tags in text are encoded, click functionality is disabled +- **loose**: tags in text are allowed, click functionality is enabled +- **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled +- **sandbox**: With this security level all rendering takes place in a sandboxed iframe. This prevent any JavaScript running in the context. This may hinder interactive functionality of the diagram like scripts, popups in sequence diagram or links to other tabs/targets etc. + +> **Note** +> This changes the default behaviour of mermaid so that after upgrade to 8.2, unless the `securityLevel` is not changed, tags in flowcharts are encoded as tags and clicking is disabled. +> **sandbox** security level is still in the beta version. + +**If you are taking responsibility for the diagram source security you can set the `securityLevel` to a value of your choosing . This allows clicks and tags are allowed.** + +**To change `securityLevel`, you have to call `mermaidAPI.initialize`:** + +```javascript +mermaidAPI.initialize({ + securityLevel: 'loose', +}); +``` + +### Labels out of bounds + +If you use dynamically loaded fonts that are loaded through CSS, such as Google fonts, mermaid should wait for the +whole page to load (dom + assets, particularly the fonts file). + +```javascript +$(document).load(function () { + mermaid.initialize(); +}); +``` + +or + +```javascript +$(document).ready(function () { + mermaid.initialize(); +}); +``` + +Not doing so will most likely result in mermaid rendering graphs that have labels out of bounds. The default integration in mermaid uses the window.load event to start rendering. + +If your page has other fonts in its body those might be used instead of the mermaid font. Specifying the font in your styling is a workaround for this. + +```css +div.mermaid { + font-family: 'trebuchet ms', verdana, arial; +} +``` + +### Calling `mermaid.init` + +By default, `mermaid.init` will be called when the document is ready, finding all elements with +`class="mermaid"`. If you are adding content after mermaid is loaded, or otherwise need +finer-grained control of this behavior, you can call `init` yourself with: + +- a configuration object +- some nodes, as + - a node + - an array-like of nodes + - or W3C selector that will find your nodes + +Example: + +```javascript +mermaid.init({ noteMargin: 10 }, '.someOtherClass'); +``` + +Or with no config object, and a jQuery selection: + +```javascript +mermaid.init(undefined, $('#someId .yetAnotherClass')); +``` + +> **Warning** +> This type of integration is deprecated. Instead the preferred way of handling more complex integration is to use the mermaidAPI instead. + +## Usage with webpack + +mermaid fully supports webpack. Here is a [working demo](https://github.com/mermaidjs/mermaid-webpack-demo). + +## API usage + +The main idea of the API is to be able to call a render function with the graph definition as a string. The render function +will render the graph and call a callback with the resulting SVG code. With this approach it is up to the site creator to +fetch the graph definition from the site (perhaps from a textarea), render it and place the graph somewhere in the site. + +The example below show an outline of how this could be used. The example just logs the resulting SVG to the JavaScript console. + +```html +<script type="module"> + import mermaid from './mermaid.mjs'; + mermaid.mermaidAPI.initialize({ startOnLoad: false }); + $(async function () { + // Example of using the API var + element = document.querySelector('#graphDiv'); + const insertSvg = function (svgCode, bindFunctions) { + element.innerHTML = svgCode; + }; + const graphDefinition = 'graph TB\na-->b'; + const graph = await mermaid.mermaidAPI.render('graphDiv', graphDefinition, insertSvg); + }); +</script> +``` + +### Binding events + +Sometimes the generated graph also has defined interactions like tooltip and click events. When using the API one must +add those events after the graph has been inserted into the DOM. + +The example code below is an extract of what mermaid does when using the API. The example shows how it is possible to +bind events to an SVG when using the API for rendering. + +```javascript +const insertSvg = function (svgCode, bindFunctions) { + element.innerHTML = svgCode; + if (typeof callback !== 'undefined') { + callback(id); + } + bindFunctions(element); +}; + +const id = 'theGraph'; + +mermaidAPI.render(id, txt, insertSvg, element); +``` + +1. The graph is generated using the render call. +2. After generation the render function calls the provided callback function, in this case it's called insertSvg. +3. The callback function is called with two parameters, the SVG code of the generated graph and a function. This function binds events to the SVG **after** it is inserted into the DOM. +4. Insert the SVG code into the DOM for presentation. +5. Call the binding function that binds the events. + +## Example of a marked renderer + +This is the renderer used for transforming the documentation from Markdown to html with mermaid diagrams in the html. + +```javascript +const renderer = new marked.Renderer(); +renderer.code = function (code, language) { + if (code.match(/^sequenceDiagram/) || code.match(/^graph/)) { + return '<pre class="mermaid">' + code + '</pre>'; + } else { + return '<pre><code>' + code + '</code></pre>'; + } +}; +``` + +Another example in CoffeeScript that also includes the mermaid script tag in the generated markup. + +```coffee +marked = require 'marked' + +module.exports = (options) -> + hasMermaid = false + renderer = new marked.Renderer() + renderer.defaultCode = renderer.code + renderer.code = (code, language) -> + if language is 'mermaid' + html = '' + if not hasMermaid + hasMermaid = true + html += '<script src="'+options.mermaidPath+'"></script>' + html + '<pre class="mermaid">'+code+'</pre>' + else + @defaultCode(code, language) + + renderer +``` + +## Advanced usage + +**Syntax validation without rendering (Work in Progress)** + +The **mermaid.parse(txt)** function validates graph definitions without rendering a graph. **[This function is still a work in progress](https://github.com/mermaid-js/mermaid/issues/1066), find alternatives below.** + +The function **mermaid.parse(txt)**, takes a text string as an argument and returns true if the definition follows mermaid's syntax and +false if it does not. The parseError function will be called when the parse function returns false. + +When the parser encounters invalid syntax the **mermaid.parseError** function is called. It is possible to override this +function in order to handle the error in an application-specific way. + +The code-example below in meta code illustrates how this could work: + +```javascript +mermaid.parseError = function (err, hash) { + displayErrorInGui(err); +}; + +const textFieldUpdated = function () { + const textStr = getTextFromFormField('code'); + + if (mermaid.parse(textStr)) { + reRender(textStr); + } +}; + +bindEventHandler('change', 'code', textFieldUpdated); +``` + +**Alternative to mermaid.parse():** +One effective and more future-proof method of validating your graph definitions, is to paste and render them via the [Mermaid Live Editor](https://mermaid.live/). This will ensure that your code is compliant with the syntax of Mermaid's most recent version. + +## Configuration + +Mermaid takes a number of options which lets you tweak the rendering of the diagrams. Currently there are three ways of +setting the options in mermaid. + +1. Instantiation of the configuration using the initialize call +2. _Using the global mermaid object_ - **Deprecated** +3. _using the global mermaid_config object_ - **Deprecated** +4. Instantiation of the configuration using the **mermaid.init** call- **Deprecated** + +The list above has two ways too many of doing this. Three are deprecated and will eventually be removed. The list of +configuration objects are described [in the mermaidAPI documentation](./setup/README.md). + +## Using the `mermaidAPI.initialize`/`mermaid.initialize` call + +The future proof way of setting the configuration is by using the initialization call to mermaid or mermaidAPI depending +on what kind of integration you use. + +```html +<script src="../dist/mermaid.js"></script> +<script> + let config = { startOnLoad: true, flowchart: { useMaxWidth: false, htmlLabels: true } }; + mermaid.initialize(config); +</script> +``` + +> **Note** +> This is the preferred way of configuring mermaid. + +### The following methods are deprecated and are kept only for backwards compatibility. + +## Using the mermaid object + +Is it possible to set some configuration via the mermaid object. The two parameters that are supported using this +approach are: + +- mermaid.startOnLoad +- mermaid.htmlLabels + +```javascript +mermaid.startOnLoad = true; +``` + +> **Warning** +> This way of setting the configuration is deprecated. Instead the preferred way is to use the initialize method. This functionality is only kept for backwards compatibility. + +## Using the mermaid_config + +It is possible to set some configuration via the mermaid object. The two parameters that are supported using this +approach are: + +- mermaid_config.startOnLoad +- mermaid_config.htmlLabels + +```javascript +mermaid_config.startOnLoad = true; +``` + +> **Warning** +> This way of setting the configuration is deprecated. Instead the preferred way is to use the initialize method. This functionality is only kept for backwards compatibility. + +## Using the mermaid.init call + +To set some configuration via the mermaid object. The two parameters that are supported using this approach are: + +- mermaid_config.startOnLoad +- mermaid_config.htmlLabels + +```javascript +mermaid_config.startOnLoad = true; +``` + +> **Warning** +> This way of setting the configuration is deprecated. Instead the preferred way is to use the initialize method. This functionality is only kept for backwards compatibility. diff --git a/docs/intro/index.md b/docs/intro/index.md new file mode 100644 index 000000000..a3ed371ac --- /dev/null +++ b/docs/intro/index.md @@ -0,0 +1,405 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/intro/index.md](../../packages/mermaid/src/docs/intro/index.md). + +# About Mermaid + +**Mermaid lets you create diagrams and visualizations using text and code.** + +It is a JavaScript based diagramming and charting tool that renders Markdown-inspired text definitions to create and modify diagrams dynamically. + +> If you are familiar with Markdown you should have no problem learning [Mermaid's Syntax](n00b-syntaxReference.md). + +<img src="/header.png" alt="" /> + +[![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [![Twitter Follow](https://img.shields.io/twitter/follow/mermaidjs_?style=social)](https://twitter.com/mermaidjs_) + +<!-- Mermaid book banner --> + +[![Explore Mermaid.js in depth, with real-world examples, tips & tricks from the creator... The first official book on Mermaid is available for purchase. Check it out!](img/book-banner-post-release.jpg)](https://mermaid-js.github.io/mermaid/landing/) + +<!-- <Main description> --> + +Mermaid is a JavaScript based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams. The main purpose of Mermaid is to help documentation catch up with development. + +> Doc-Rot is a Catch-22 that Mermaid helps to solve. + +Diagramming and documentation costs precious developer time and gets outdated quickly. +But not having diagrams or docs ruins productivity and hurts organizational learning.<br/> +Mermaid addresses this problem by enabling users to create easily modifiable diagrams, it can also be made part of production scripts (and other pieces of code).<br/> <br/> +Mermaid allows even non-programmers to easily create detailed and diagrams through the [Mermaid Live Editor](https://mermaid.live/).<br/> +[Tutorials](../config/Tutorials.md) has video tutorials. +Use Mermaid with your favorite applications, check out the list of [Integrations and Usages of Mermaid](../misc/integrations.md). + +For a more detailed introduction to Mermaid and some of its more basic uses, look to the [Beginner's Guide](../community/n00b-overview.md) and [Usage](../config/usage.md). + +🌐 [CDN](https://unpkg.com/mermaid/) | 📖 [Documentation](https://mermaidjs.github.io) | 🙌 [Contribution](../community/development.md) | 🔌 [Plug-Ins](../misc/integrations.md) + +> 🖖 Keep a steady pulse: mermaid needs more Collaborators, [Read More](https://github.com/knsv/mermaid/issues/866). + +:trophy: **Mermaid was nominated and won the [JS Open Source Awards (2019)](https://osawards.com/javascript/#nominees) in the category "The most exciting use of technology"!!!** + +**Thanks to all involved, people committing pull requests, people answering questions and special thanks to Tyler Long who is helping me maintain the project 🙏** + +In our release process we rely heavily on visual regression tests using [applitools](https://applitools.com/). Applitools is a great service which has been easy to use and integrate with our tests. + +<a href="https://applitools.com/"> +<svg width="170" height="32" viewBox="0 0 170 32" fill="none" xmlns="http://www.w3.org/2000/svg"><mask id="a" maskUnits="userSpaceOnUse" x="27" y="0" width="143" height="32"><path fill-rule="evenodd" clip-rule="evenodd" d="M27.732.227h141.391v31.19H27.733V.227z" fill="#fff"></path></mask><g mask="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M153.851 22.562l1.971-3.298c1.291 1.219 3.837 2.402 5.988 2.402 1.971 0 2.903-.753 2.903-1.829 0-2.832-10.253-.502-10.253-7.313 0-2.904 2.51-5.45 7.099-5.45 2.904 0 5.234 1.004 6.955 2.367l-1.829 3.226c-1.039-1.075-3.011-2.008-5.126-2.008-1.65 0-2.725.717-2.725 1.685 0 2.546 10.289.395 10.289 7.386 0 3.19-2.724 5.52-7.528 5.52-3.012 0-5.916-1.003-7.744-2.688zm-5.7 2.259h4.553V.908h-4.553v23.913zm-6.273-8.676c0-2.689-1.578-5.02-4.446-5.02-2.832 0-4.409 2.331-4.409 5.02 0 2.724 1.577 5.055 4.409 5.055 2.868 0 4.446-2.33 4.446-5.055zm-13.588 0c0-4.912 3.442-9.07 9.142-9.07 5.736 0 9.178 4.158 9.178 9.07 0 4.911-3.442 9.106-9.178 9.106-5.7 0-9.142-4.195-9.142-9.106zm-5.628 0c0-2.689-1.577-5.02-4.445-5.02-2.832 0-4.41 2.331-4.41 5.02 0 2.724 1.578 5.055 4.41 5.055 2.868 0 4.445-2.33 4.445-5.055zm-13.587 0c0-4.912 3.441-9.07 9.142-9.07 5.736 0 9.178 4.158 9.178 9.07 0 4.911-3.442 9.106-9.178 9.106-5.701 0-9.142-4.195-9.142-9.106zm-8.425 4.338v-8.999h-2.868v-3.98h2.868V2.773h4.553v4.733h3.514v3.979h-3.514v7.78c0 1.111.574 1.936 1.578 1.936.681 0 1.326-.251 1.577-.538l.968 3.478c-.681.609-1.9 1.11-3.8 1.11-3.191 0-4.876-1.648-4.876-4.767zm-8.962 4.338h4.553V7.505h-4.553V24.82zm-.43-21.905a2.685 2.685 0 012.688-2.69c1.506 0 2.725 1.184 2.725 2.69a2.724 2.724 0 01-2.725 2.724c-1.47 0-2.688-1.219-2.688-2.724zM84.482 24.82h4.553V.908h-4.553v23.913zm-6.165-8.676c0-2.976-1.793-5.02-4.41-5.02-1.47 0-3.119.825-3.908 1.973v6.094c.753 1.111 2.438 2.008 3.908 2.008 2.617 0 4.41-2.044 4.41-5.055zm-8.318 6.453v8.82h-4.553V7.504H70v2.187c1.327-1.685 3.227-2.618 5.342-2.618 4.446 0 7.672 3.299 7.672 9.07 0 5.773-3.226 9.107-7.672 9.107-2.043 0-3.907-.86-5.342-2.653zm-10.718-6.453c0-2.976-1.793-5.02-4.41-5.02-1.47 0-3.119.825-3.908 1.973v6.094c.753 1.111 2.438 2.008 3.908 2.008 2.617 0 4.41-2.044 4.41-5.055zm-8.318 6.453v8.82H46.41V7.504h4.553v2.187c1.327-1.685 3.227-2.618 5.342-2.618 4.446 0 7.672 3.299 7.672 9.07 0 5.773-3.226 9.107-7.672 9.107-2.043 0-3.908-.86-5.342-2.653zm-11.758-1.936V18.51c-.753-1.004-2.187-1.542-3.657-1.542-1.793 0-3.263.968-3.263 2.617 0 1.65 1.47 2.582 3.263 2.582 1.47 0 2.904-.502 3.657-1.506zm0 4.159v-1.829c-1.183 1.434-3.227 2.259-5.485 2.259-2.761 0-5.988-1.864-5.988-5.736 0-4.087 3.227-5.593 5.988-5.593 2.33 0 4.337.753 5.485 2.115V13.85c0-1.756-1.506-2.904-3.8-2.904-1.829 0-3.55.717-4.984 2.044L28.63 9.8c2.115-1.901 4.84-2.726 7.564-2.726 3.98 0 7.6 1.578 7.6 6.561v11.186h-4.588z" fill="#00A298"></path></g><path fill-rule="evenodd" clip-rule="evenodd" d="M14.934 16.177c0 1.287-.136 2.541-.391 3.752-1.666-1.039-3.87-2.288-6.777-3.752 2.907-1.465 5.11-2.714 6.777-3.753.255 1.211.39 2.466.39 3.753m4.6-7.666V4.486a78.064 78.064 0 01-4.336 3.567c-1.551-2.367-3.533-4.038-6.14-5.207C11.1 4.658 12.504 6.7 13.564 9.262 5.35 15.155 0 16.177 0 16.177s5.35 1.021 13.564 6.915c-1.06 2.563-2.463 4.603-4.507 6.415 2.607-1.169 4.589-2.84 6.14-5.207a77.978 77.978 0 014.336 3.568v-4.025s-.492-.82-2.846-2.492c.6-1.611.93-3.354.93-5.174a14.8 14.8 0 00-.93-5.174c2.354-1.673 2.846-2.492 2.846-2.492" fill="#00A298"></path></svg> +</a> + +## Diagram Types + +### [Flowchart](../syntax/flowchart.md?id=flowcharts-basic-syntax) + +```mermaid-example +graph TD; + A-->B; + A-->C; + B-->D; + C-->D; +``` + +```mermaid +graph TD; + A-->B; + A-->C; + B-->D; + C-->D; +``` + +### [Sequence diagram](../syntax/sequenceDiagram.md) + +```mermaid-example +sequenceDiagram + participant Alice + participant Bob + Alice->>John: Hello John, how are you? + loop Healthcheck + John->>John: Fight against hypochondria + end + Note right of John: Rational thoughts <br/>prevail! + John-->>Alice: Great! + John->>Bob: How about you? + Bob-->>John: Jolly good! +``` + +```mermaid +sequenceDiagram + participant Alice + participant Bob + Alice->>John: Hello John, how are you? + loop Healthcheck + John->>John: Fight against hypochondria + end + Note right of John: Rational thoughts <br/>prevail! + John-->>Alice: Great! + John->>Bob: How about you? + Bob-->>John: Jolly good! +``` + +### [Gantt diagram](../syntax/gantt.md) + +```mermaid-example +gantt +dateFormat YYYY-MM-DD +title Adding GANTT diagram to mermaid +excludes weekdays 2014-01-10 + +section A section +Completed task :done, des1, 2014-01-06,2014-01-08 +Active task :active, des2, 2014-01-09, 3d +Future task : des3, after des2, 5d +Future task2 : des4, after des3, 5d +``` + +```mermaid +gantt +dateFormat YYYY-MM-DD +title Adding GANTT diagram to mermaid +excludes weekdays 2014-01-10 + +section A section +Completed task :done, des1, 2014-01-06,2014-01-08 +Active task :active, des2, 2014-01-09, 3d +Future task : des3, after des2, 5d +Future task2 : des4, after des3, 5d +``` + +### [Class diagram](../syntax/classDiagram.md) + +```mermaid-example +classDiagram +Class01 <|-- AveryLongClass : Cool +Class03 *-- Class04 +Class05 o-- Class06 +Class07 .. Class08 +Class09 --> C2 : Where am i? +Class09 --* C3 +Class09 --|> Class07 +Class07 : equals() +Class07 : Object[] elementData +Class01 : size() +Class01 : int chimp +Class01 : int gorilla +Class08 <--> C2: Cool label +``` + +```mermaid +classDiagram +Class01 <|-- AveryLongClass : Cool +Class03 *-- Class04 +Class05 o-- Class06 +Class07 .. Class08 +Class09 --> C2 : Where am i? +Class09 --* C3 +Class09 --|> Class07 +Class07 : equals() +Class07 : Object[] elementData +Class01 : size() +Class01 : int chimp +Class01 : int gorilla +Class08 <--> C2: Cool label +``` + +### [Git graph](../syntax/gitgraph.md) + +```mermaid-example + gitGraph + commit + commit + branch develop + commit + commit + commit + checkout main + commit + commit +``` + +```mermaid + gitGraph + commit + commit + branch develop + commit + commit + commit + checkout main + commit + commit +``` + +### [Entity Relationship Diagram - :exclamation: experimental](../syntax/entityRelationshipDiagram.md) + +```mermaid-example +erDiagram + CUSTOMER ||--o{ ORDER : places + ORDER ||--|{ LINE-ITEM : contains + CUSTOMER }|..|{ DELIVERY-ADDRESS : uses + +``` + +```mermaid +erDiagram + CUSTOMER ||--o{ ORDER : places + ORDER ||--|{ LINE-ITEM : contains + CUSTOMER }|..|{ DELIVERY-ADDRESS : uses + +``` + +### [User Journey Diagram](../syntax/userJourney.md) + +```mermaid-example +journey + title My working day + section Go to work + Make tea: 5: Me + Go upstairs: 3: Me + Do work: 1: Me, Cat + section Go home + Go downstairs: 5: Me + Sit down: 5: Me +``` + +```mermaid +journey + title My working day + section Go to work + Make tea: 5: Me + Go upstairs: 3: Me + Do work: 1: Me, Cat + section Go home + Go downstairs: 5: Me + Sit down: 5: Me +``` + +## Installation + +**In depth guides and examples can be found at [Getting Started](./n00b-gettingStarted.md) and [Usage](../config/usage.md).** + +**It would also be helpful to learn more about mermaid's [Syntax](./n00b-syntaxReference.md).** + +### CDN + + https://unpkg.com/mermaid@<version>/dist/ + +To select a version: + +Replace `<version>` with the desired version number. + +Latest Version: <https://unpkg.com/browse/mermaid@8.8.0/> + +## Deploying Mermaid + +To Deploy Mermaid: + +1. You will need to install node v16, which would have npm +2. Install mermaid + - NPM: `npm i mermaid` + - Yarn: `yarn add mermaid` + - Pnpm: `pnpm add mermaid` + +### [Mermaid API](../config/setup/README.md): + +**To deploy mermaid without a bundler, one can insert a `script` tag with an absolute address and a `mermaid.initialize` call into the HTML like so:** + +```html +<script type="module"> + import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; + mermaid.initialize({ startOnLoad: true }); +</script> +``` + +**Doing so will command the mermaid parser to look for the `<div>` or `<pre>` tags with `class="mermaid"`. From these tags mermaid will try to read the diagram/chart definitions and render them into SVG charts.** + +**Examples can be found at** [Other examples](../syntax/examples.md) + +## Sibling projects + +- [Mermaid Live Editor](https://github.com/mermaid-js/mermaid-live-editor) +- [Mermaid CLI](https://github.com/mermaid-js/mermaid-cli) +- [Mermaid Webpack Demo](https://github.com/mermaidjs/mermaid-webpack-demo) +- [Mermaid Parcel Demo](https://github.com/mermaidjs/mermaid-parcel-demo) + +## Request for Assistance + +Things are piling up and I have a hard time keeping up. It would be great if we could form a core team of developers to cooperate +with the future development of mermaid. + +As part of this team you would get write access to the repository and would +represent the project when answering questions and issues. + +Together we could continue the work with things like: + +- Adding more types of diagrams like mindmaps, ert diagrams, etc. +- Improving existing diagrams + +Don't hesitate to contact me if you want to get involved! + +## For contributors + +### Requirements + +- [volta](https://volta.sh/) to manage node versions. +- [Node.js](https://nodejs.org/en/). `volta install node` +- [pnpm](https://pnpm.io/) package manager. `volta install pnpm` + +## Development Installation + +```bash +git clone git@github.com:mermaid-js/mermaid.git +cd mermaid +# npx is required for first install as volta support for pnpm is not added yet. +npx pnpm install +pnpm test +``` + +### Lint + +```sh +pnpm lint +``` + +We use [eslint](https://eslint.org/). +We recommend you to install [editor plugins](https://eslint.org/docs/user-guide/integrations) to get real time lint result. + +### Test + +```sh +pnpm test +``` + +Manual test in browser: open `dist/index.html` + +### Release + +For those who have the permission to do so: + +Update version number in `package.json`. + +```sh +npm publish +``` + +The above command generates files into the `dist` folder and publishes them to \<npmjs.org>. + +## Related projects + +- [Command Line Interface](https://github.com/mermaid-js/mermaid-cli) +- [Live Editor](https://github.com/mermaid-js/mermaid-live-editor) +- [HTTP Server](https://github.com/TomWright/mermaid-server) + +## Contributors [![Good first issue](https://img.shields.io/github/labels/mermaid-js/mermaid/Good%20first%20issue%21)](https://github.com/mermaid-js/mermaid/issues?q=is%3Aissue+is%3Aopen+label%3A%22Good+first+issue%21%22) [![Contributors](https://img.shields.io/github/contributors/mermaid-js/mermaid)](https://github.com/mermaid-js/mermaid/graphs/contributors) [![Commits](https://img.shields.io/github/commit-activity/m/mermaid-js/mermaid)](https://github.com/mermaid-js/mermaid/graphs/contributors) + +Mermaid is a growing community and is always accepting new contributors. There's a lot of different ways to help out and we're always looking for extra hands! Look at [this issue](https://github.com/mermaid-js/mermaid/issues/866) if you want to know where to start helping out. + +Detailed information about how to contribute can be found in the [contribution guide](https://github.com/mermaid-js/mermaid/blob/develop/CONTRIBUTING.md) + +## Security and safe diagrams + +For public sites, it can be precarious to retrieve text from users on the internet, storing that content for presentation in a browser at a later stage. The reason is that the user content can contain embedded malicious scripts that will run when the data is presented. For Mermaid this is a risk, specially as mermaid diagrams contain many characters that are used in html which makes the standard sanitation unusable as it also breaks the diagrams. We still make an effort to sanitize the incoming code and keep refining the process but it is hard to guarantee that there are no loop holes. + +As an extra level of security for sites with external users we are happy to introduce a new security level in which the diagram is rendered in a sandboxed iframe preventing JavaScript in the code from being executed. This is a great step forward for better security. + +_Unfortunately you can not have a cake and eat it at the same time which in this case means that some of the interactive functionality gets blocked along with the possible malicious code._ + +## Reporting vulnerabilities + +To report a vulnerability, please e-mail security@mermaid.live with a description of the issue, the steps you took to create the issue, affected versions, and if known, mitigations for the issue. + +## Appreciation + +A quick note from Knut Sveidqvist: + +> _Many thanks to the [d3](https://d3js.org/) and [dagre-d3](https://github.com/cpettitt/dagre-d3) projects for providing the graphical layout and drawing libraries!_ +> +> _Thanks also to the [js-sequence-diagram](https://bramp.github.io/js-sequence-diagrams) project for usage of the grammar for the sequence diagrams. Thanks to Jessica Peter for inspiration and starting point for gantt rendering._ +> +> _Thank you to [Tyler Long](https://github.com/tylerlong) who has been a collaborator since April 2017._ +> +> _Thank you to the ever-growing list of [contributors](https://github.com/knsv/mermaid/graphs/contributors) that brought the project this far!_ + +--- + +_Mermaid was created by Knut Sveidqvist for easier documentation._ + +<style scoped> + #contributors + p, + #about-mermaid + p + p + blockquote + img + p + { + display: flex + } + + #contributors + p a, + #about-mermaid + p + p + blockquote + img + p a + { + margin: 0 0.5rem + } + + .dark #VPContent > div > div > div.content > div > main > div > div > img + { + filter: invert(1) hue-rotate(217deg) contrast(0.72); + } +</style> diff --git a/docs/intro/n00b-gettingStarted.md b/docs/intro/n00b-gettingStarted.md new file mode 100644 index 000000000..498aa1595 --- /dev/null +++ b/docs/intro/n00b-gettingStarted.md @@ -0,0 +1,224 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/intro/n00b-gettingStarted.md](../../packages/mermaid/src/docs/intro/n00b-gettingStarted.md). + +# A Mermaid User-Guide for Beginners + +Mermaid is composed of three parts: Deployment, Syntax and Configuration. + +This section talks about the different ways to deploy Mermaid. Learning the [Syntax](n00b-syntaxReference.md) would be of great help to the beginner. + +> Generally the live editor is enough for most general uses of mermaid, and is a good place to start learning. + +**Absolute beginners are advised to view the Video [Tutorials](../config/Tutorials.md) on the Live Editor, to gain a better understanding of mermaid.** + +## Four ways of using mermaid: + +1. Using the Mermaid Live Editor at [mermaid.live](https://mermaid.live). +2. Using [mermaid plugins](../misc/integrations.md) with programs you are familiar with. +3. Calling the Mermaid JavaScript API. +4. Deploying Mermaid as a dependency. + +**Note: It is our recommendation that you review all approaches, and choose the one that is best for your project.** + +> More in depth information can be found at [Usage](../config/usage.md). + +## 1. Using the Live Editor + +Available at [mermaid.live](https://mermaid.live) + +```mermaid-example +graph TD + A[Enter Chart Definition] --> B(Preview) + B --> C{decide} + C --> D[Keep] + C --> E[Edit Definition] + E --> B + D --> F[Save Image and Code] + F --> B +``` + +```mermaid +graph TD + A[Enter Chart Definition] --> B(Preview) + B --> C{decide} + C --> D[Keep] + C --> E[Edit Definition] + E --> B + D --> F[Save Image and Code] + F --> B +``` + +In the `Code` section one can write or edit raw mermaid code, and instantly `Preview` the rendered result on the panel beside it. + +The `Configuration` Section is for changing the appearance and behavior of mermaid diagrams. An easy introduction to mermaid configuration is found in the [Advanced usage](../config/n00b-advanced.md) section. A complete configuration reference cataloging the default values can be found on the [mermaidAPI](../config/setup/README.md) page. + +![Code,Config and Preview](./img/Code-Preview-Config.png) + +### Editing History + +Your code will be autosaved every minute into the Timeline tab of History which shows the most recent 30 items. + +You can manually save code by clicking the Save icon in the History section. It can also be accessed in the Saved tab. This is stored in the browser storage only. + +### Saving a Diagram: + +You may choose any of the methods below, to save it + +**We recommend that you save your diagram code on top of any method you choose, in order to make edits and modifications further down the line.** + +![Flowchart](./img/Live-Editor-Choices.png) + +### Editing your diagrams + +Editing is as easy as pasting your **Diagram code**, into the `code` section of the `Live Editor`. + +### Loading from Gists + +The Gist you create should have a code.mmd file and optionally a config.json. [Example](https://gist.github.com/sidharthv96/6268a23e673a533dcb198f241fd7012a) + +To load a gist into the Editor, you can use https://mermaid.live/edit?gist=https://gist.github.com/sidharthv96/6268a23e673a533dcb198f241fd7012a + +and to View, https://mermaid.live/view?gist=https://gist.github.com/sidharthv96/6268a23e673a533dcb198f241fd7012a + +## 2. Using Mermaid Plugins: + +You can generate mermaid diagrams from within popular applications using plug-ins. It can be done in the same way, you would use the Live Editor. Here's a list of [Mermaid Plugins](../misc/integrations.md). + +**This is covered in greater detail in the [Usage section](../config/usage.md)** + +## 3. Calling the JavaScript API + +This method can be used with any common web server like Apache, IIS, nginx, node express. + +You will also need a text editing tool like Notepad++ to generate a .html file. It is then deployed by a web browser (such as Firefox, Chrome, Safari, but not Internet Explorer). + +The API works by pulling rendering instructions from the source `mermaid.js` in order to render diagrams on the page. + +### Requirements for the Mermaid API. + +When writing the .html file, we give two instructions inside the html code to the web browser: + +a. The mermaid code for the diagram we want to create. + +b. The importing of mermaid library through the `mermaid.esm.js` or `mermaid.esm.min.mjs` and the `mermaid.initialize()` call, which dictates the appearance of diagrams and also starts the rendering process . + +**a. The embedded mermaid diagram definition inside a `<pre class="mermaid">`:** + +```html +<body> + Here is a mermaid diagram: + <pre class="mermaid"> + graph TD + A[Client] --> B[Load Balancer] + B --> C[Server01] + B --> D[Server02] + </pre> +</body> +``` + +**Notes**: Every Mermaid chart/graph/diagram definition, should have separate `<pre>` tags. + +**b. The import of mermaid and the `mermaid.initialize()` call.** + +`mermaid.initialize()` call takes all the definitions contained in all the `<pre class="mermaid">` tags that it finds in the html body and renders them into diagrams. Example: + +```html +<body> + <script type="module"> + import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; + mermaid.initialize({ startOnLoad: true }); + </script> +</body> +``` + +**Notes**: +Rendering in Mermaid is initialized by `mermaid.initialize()` call. You can place `mermaid.initialize()` inside `mermaid.min.js` for brevity. However, doing the opposite lets you control when it starts looking for `<div>`tags inside the web page with `mermaid.initialize()`. This is useful when you think that not all `<div>` tags may have loaded on the execution of `mermaid.min.js` file. + +`startOnLoad` is one of the parameters that can be defined by `mermaid.initialize()` + +| Parameter | Description | Type | Values | +| ----------- | --------------------------------- | ------- | ----------- | +| startOnLoad | Toggle for Rendering upon loading | Boolean | true, false | + +### Working Examples + +**Here is a full working example of the mermaidAPI being called through the CDN:** + +```html +<html> + <body> + Here is one mermaid diagram: + <pre class="mermaid"> + graph TD + A[Client] --> B[Load Balancer] + B --> C[Server1] + B --> D[Server2] + </pre> + + And here is another: + <pre class="mermaid"> + graph TD + A[Client] -->|tcp_123| B + B(Load Balancer) + B -->|tcp_456| C[Server1] + B -->|tcp_456| D[Server2] + </pre> + + <script type="module"> + import mermaid from 'https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs'; + mermaid.initialize({ startOnLoad: true }); + </script> + </body> +</html> +``` + +**Another Option:** +In this example mermaid.js is referenced in `src` as a separate JavaScript file, in an example Path. + +```html +<html lang="en"> + <head> + <meta charset="utf-8" /> + </head> + <body> + <pre class="mermaid"> + graph LR + A --- B + B-->C[fa:fa-ban forbidden] + B-->D(fa:fa-spinner); + </pre> + <pre class="mermaid"> + graph TD + A[Client] --> B[Load Balancer] + B --> C[Server1] + B --> D[Server2] + </pre> + <script type="module"> + import mermaid from 'The/Path/In/Your/Package/mermaid.esm.mjs'; + mermaid.initialize({ startOnLoad: true }); + </script> + </body> +</html> +``` + +--- + +## 4. Adding Mermaid as a dependency. + +1. install node v16, which would have npm + +2. download yarn using npm by entering the command below: + npm install -g yarn + +3. After yarn installs, enter the following command: + yarn add mermaid + +4. To add Mermaid as a Dev Dependency + yarn add --dev mermaid + +**Comments from Knut Sveidqvist, creator of mermaid:** + +- In early versions of mermaid, the `<script>` tag was invoked in the `<head>` part of the web page. Nowadays we can place it in the `<body>` as seen above. Older parts of the documentation frequently reflects the previous way which still works. diff --git a/docs/intro/n00b-syntaxReference.md b/docs/intro/n00b-syntaxReference.md new file mode 100644 index 000000000..c51b1680e --- /dev/null +++ b/docs/intro/n00b-syntaxReference.md @@ -0,0 +1,85 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/intro/n00b-syntaxReference.md](../../packages/mermaid/src/docs/intro/n00b-syntaxReference.md). + +# Diagram Syntax + +Mermaid's syntax is used to create diagrams. You'll find that it is not too tricky and can be learned in a day. The next sections dive deep into the syntax of each diagram type. + +Syntax, together with Deployment and Configuration constitute the whole of Mermaid. + +Diagram Examples can be found in the [Mermaid Live Editor](https://mermaid.live), it is also a great practice area. + +## Syntax Structure + +One would notice that all **Diagrams definitions begin** with a declaration of the **diagram type**, followed by the definitions of the diagram and its contents. This declaration notifies the parser which kind of diagram the code is supposed to generate. + +**Example** : The code below is for an Entity Relationship Diagram, specified by the `erDiagram` declaration. What follows is the definition of the different `Entities` represented in it. + +```mermaid-example +erDiagram + CUSTOMER }|..|{ DELIVERY-ADDRESS : has + CUSTOMER ||--o{ ORDER : places + CUSTOMER ||--o{ INVOICE : "liable for" + DELIVERY-ADDRESS ||--o{ ORDER : receives + INVOICE ||--|{ ORDER : covers + ORDER ||--|{ ORDER-ITEM : includes + PRODUCT-CATEGORY ||--|{ PRODUCT : contains + PRODUCT ||--o{ ORDER-ITEM : "ordered in" +``` + +```mermaid +erDiagram + CUSTOMER }|..|{ DELIVERY-ADDRESS : has + CUSTOMER ||--o{ ORDER : places + CUSTOMER ||--o{ INVOICE : "liable for" + DELIVERY-ADDRESS ||--o{ ORDER : receives + INVOICE ||--|{ ORDER : covers + ORDER ||--|{ ORDER-ITEM : includes + PRODUCT-CATEGORY ||--|{ PRODUCT : contains + PRODUCT ||--o{ ORDER-ITEM : "ordered in" +``` + +The [Getting Started](./n00b-gettingStarted.md) section can also provide some practical examples of mermaid syntax. + +## Diagram Breaking + +One should **beware the use of some words or symbols** that can break diagrams. These words or symbols are few and often only affect specific types of diagrams. The table below will continuously be updated. + +| Diagram Breakers | Reason | Solution | +| ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------- | ------------------------------------------------- | +| **Comments** | | | +| [` %%{``}%% `](https://github.com/mermaid-js/mermaid/issues/1968) | Similar to [Directives](../config/directives.md) confuses the renderer. | In comments using `%%`, avoid using "{}". | +| **Flow-Charts** | | | +| 'end' | The word "End" can cause Flowcharts and Sequence diagrams to break | Wrap them in quotation marks to prevent breakage. | +| [Nodes inside Nodes](../syntax/flowchart.md?id=special-characters-that-break-syntax) | Mermaid gets confused with nested shapes | wrap them in quotation marks to prevent breaking | + +### Mermaid Live Editor + +Now, that you've seen what you should not add to your diagrams, you can play around with them in the [Mermaid Live Editor](https://mermaid.live). + +# Configuration + +Configuration is the third part of Mermaid, after deployment and syntax. It deals with the different ways that Mermaid can be customized across different deployments. + +If you are interested in altering and customizing your Mermaid Diagrams, you will find the methods and values available for [Configuration](../config/setup/README.md) here. It includes themes. +This section will introduce the different methods of configuring the behaviors and appearances of Mermaid Diagrams. +The following are the most commonly used methods, and they are all tied to Mermaid [Deployment](./n00b-gettingStarted.md) methods. + +### Configuration Section in the [Live Editor](https://mermaid.live). + +Here you can edit certain values to change the behavior and appearance of the diagram. + +### [The initialize() call](https://mermaid-js.github.io/mermaid/#/n00b-gettingStarted?id=_3-calling-the-javascript-api), + +Used when Mermaid is called via an API, or through a `<script>` tag. + +### [Directives](../config/directives.md), + +Allows for the limited reconfiguration of a diagram just before it is rendered. It can alter the font style, color and other aesthetic aspects of the diagram. You can pass a directive alongside your definition inside `%%{ }%%`. It can be done either above or below your diagram definition. + +### [Theme Manipulation](../config/theming.md): + +An application of using Directives to change [Themes](../config/theming.md). `Theme` is a value within Mermaid's configuration that dictates the color scheme for diagrams. diff --git a/docs/misc/faq.md b/docs/misc/faq.md new file mode 100644 index 000000000..c7155a5b0 --- /dev/null +++ b/docs/misc/faq.md @@ -0,0 +1,17 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/misc/faq.md](../../packages/mermaid/src/docs/misc/faq.md). + +# Frequently Asked Questions + +1. [How to add title to flowchart?](https://github.com/knsv/mermaid/issues/556#issuecomment-363182217) +2. [How to specify custom CSS file?](https://github.com/mermaidjs/mermaid.cli/pull/24#issuecomment-373402785) +3. [How to fix tooltip misplacement issue?](https://github.com/knsv/mermaid/issues/542#issuecomment-3343564621) +4. [How to specify gantt diagram xAxis format?](https://github.com/knsv/mermaid/issues/269#issuecomment-373229136) +5. [How to bind an event?](https://github.com/knsv/mermaid/issues/372) +6. [How to add newline in the text?](https://github.com/knsv/mermaid/issues/384#issuecomment-281339381) +7. [How to have special characters in link text?](https://github.com/knsv/mermaid/issues/407#issuecomment-329944735) +8. [How to change Flowchart curve style?](https://github.com/knsv/mermaid/issues/580#issuecomment-373929046) +9. [How to create a Flowchart end-Node that says "End"](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897) diff --git a/docs/misc/integrations.md b/docs/misc/integrations.md new file mode 100644 index 000000000..f9fe5761f --- /dev/null +++ b/docs/misc/integrations.md @@ -0,0 +1,186 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/misc/integrations.md](../../packages/mermaid/src/docs/misc/integrations.md). + +# Integrations + +The following list is a compilation of different integrations and plugins that allow the rendering of mermaid definitions within other applications. + +They also serve as proof of concept, for the variety of things that can be built with mermaid. + +## Productivity + +- [GitHub](https://github.com) (**Native support**) + - [Using code blocks](https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/) (**Native support**) + - [GitHub action: Compile mermaid to image](https://github.com/neenjaw/compile-mermaid-markdown-action) + - [svg-generator](https://github.com/SimonKenyonShepard/mermaidjs-github-svg-generator) +- [GitLab](https://docs.gitlab.com/ee/user/markdown.html#diagrams-and-flowcharts) (**Native support**) +- [Gitea](https://gitea.io) (**Native support**) +- [Azure Devops](https://docs.microsoft.com/en-us/azure/devops/project/wiki/wiki-markdown-guidance?view=azure-devops#add-mermaid-diagrams-to-a-wiki-page) (**Native support**) +- [Tuleap](https://docs.tuleap.org/user-guide/writing-in-tuleap.html#graphs) (**Native support**) +- [Joplin](https://joplinapp.org) (**Native support**) +- [Notion](https://notion.so) (**Native support**) +- [Observable](https://observablehq.com/@observablehq/mermaid) (**Native support**) +- [Obsidian](https://help.obsidian.md/How+to/Format+your+notes#Diagram) (**Native support**) +- [GitBook](https://gitbook.com) + - [Mermaid Plugin](https://github.com/JozoVilcek/gitbook-plugin-mermaid) + - [Markdown with Mermaid CLI](https://github.com/miao1007/gitbook-plugin-mermaid-cli) + - [Mermaid plugin for GitBook](https://github.com/wwformat/gitbook-plugin-mermaid-pdf) +- [LiveBook](https://livebook.dev) (**Native support**) +- [Atlassian Products](https://www.atlassian.com) + - [Mermaid Plugin for Confluence](https://marketplace.atlassian.com/apps/1214124/mermaid-plugin-for-confluence?hosting=server&tab=overview) + - [CloudScript.io Addon](https://marketplace.atlassian.com/apps/1219878/cloudscript-io-mermaid-addon?hosting=cloud&tab=overview) + - [Auto convert diagrams in Jira](https://github.com/coddingtonbear/jirafs-mermaid) +- [Redmine](https://redmine.org) + - [Mermaid Macro](https://www.redmine.org/plugins/redmine_mermaid_macro) + - [redmine-mermaid](https://github.com/styz/redmine_mermaid) + - [markdown-for-mermaid-plugin](https://github.com/jamieh-mongolian/markdown-for-mermaid-plugin) +- [JetBrains IDE eg Pycharm](https://www.jetbrains.com/go/guide/tips/mermaid-js-support-in-markdown/) +- [mermerd](https://github.com/KarnerTh/mermerd) + +## CRM/ERP/Similar + +- [coreBOS](https://blog.corebos.org/blog/december2019) + +## Blogs + +- [Wordpress](https://wordpress.org) + - [WordPress Markdown Editor](https://wordpress.org/plugins/wp-githuber-md) + - [WP-ReliableMD](https://wordpress.org/plugins/wp-reliablemd/) +- [Hexo](https://hexo.io) + - [hexo-filter-mermaid-diagrams](https://github.com/webappdevelp/hexo-filter-mermaid-diagrams) + - [hexo-tag-mermaid](https://github.com/JameChou/hexo-tag-mermaid) + - [hexo-mermaid-diagrams](https://github.com/mslxl/hexo-mermaid-diagrams) + +## CMS + +- [VitePress](https://vitepress.vuejs.org/) + - [Plugin for Mermaid.js](https://emersonbottero.github.io/vitepress-plugin-mermaid/) +- [VuePress](https://vuepress.vuejs.org/) + - [Plugin for Mermaid.js](https://github.com/eFrane/vuepress-plugin-mermaidjs) +- [Grav CMS](https://getgrav.org/) + - [Mermaid Diagrams](https://github.com/DanielFlaum/grav-plugin-mermaid-diagrams) + - [Gitlab Markdown Adapter](https://github.com/Goutte/grav-plugin-gitlab-markdown-adapter) + +## Communication + +- [Discourse](https://discourse.org) + - [Mermaid Plugin](https://github.com/pnewell/discourse-mermaid), [And](https://github.com/unfoldingWord-dev/discourse-mermaid) +- [Mattermost](https://mattermost.com/) + - [Mermaid Plugin](https://github.com/SpikeTings/Mermaid) +- [phpBB](https://phpbb.com) + - [phpbb-ext-mermaid](https://github.com/AlfredoRamos/phpbb-ext-mermaid) +- [NodeBB](https://nodebb.org) + - [Mermaid Plugin](https://www.npmjs.com/package/nodebb-plugin-mermaid) + +## Wikis + +- [MediaWiki](https://www.mediawiki.org) + - [Mermaid Extension](https://www.mediawiki.org/wiki/Extension:Mermaid) + - [Flex Diagrams Extension](https://www.mediawiki.org/wiki/Extension:Flex_Diagrams) +- [Semantic Media Wiki](https://semantic-mediawiki.org) + - [Mermaid Plugin](https://github.com/SemanticMediaWiki/Mermaid) +- [FosWiki](https://foswiki.org) + - [Mermaid Plugin](https://foswiki.org/Extensions/MermaidPlugin) +- [DokuWiki](https://dokuwiki.org) + - [Flowcharts](https://www.dokuwiki.org/plugin:flowcharts?s[]=mermaid) + - [ComboStrap](https://combostrap.com/mermaid) +- [TiddlyWiki](https://tiddlywiki.com/) + - [mermaid-tw5: full js library](https://github.com/efurlanm/mermaid-tw5) + - [tw5-mermaid: wrapper for Mermaid Live](https://github.com/jasonmhoule/tw5-mermaid) + +## Editor Plugins + +- [Vs Code](https://code.visualstudio.com/) + - [Markdown Preview Mermaid Support](https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid) + - [Mermaid Preview](https://marketplace.visualstudio.com/items?itemName=vstirbu.vscode-mermaid-preview) + - [Mermaid Markdown Syntax Highlighting](https://marketplace.visualstudio.com/items?itemName=bpruitt-goddard.mermaid-markdown-syntax-highlighting) + - [Mermaid Editor](https://marketplace.visualstudio.com/items?itemName=tomoyukim.vscode-mermaid-editor) + - [Mermaid Export](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.mermaid-export) + - [Markdown PDF](https://marketplace.visualstudio.com/items?itemName=yzane.markdown-pdf) + - [Preview](https://marketplace.visualstudio.com/items?itemName=searKing.preview-vscode) + - [Preview Sequence Diagrams](https://marketplace.visualstudio.com/items?itemName=arichika.previewseqdiag-vscode) +- [Markdown-It](https://github.com/markdown-it/markdown-it) + - [Textual UML Parser](https://github.com/manastalukdar/markdown-it-textual-uml) + - [Mermaid Plugin](https://github.com/tylingsoft/markdown-it-mermaid) + - [md-it-mermaid](https://github.com/iamcco/md-it-mermaid) + - [markdown-it-mermaid-fence-new](https://github.com/Revomatico/markdown-it-mermaid-fence-new) + - [markdown-it-mermaid-less](https://github.com/searKing/markdown-it-mermaid-less) +- [Atom](https://atom.io) + - [Markdown Preview Enhanced](https://atom.io/packages/markdown-preview-enhanced) + - [Atom Mermaid](https://atom.io/packages/atom-mermaid) + - [Language Mermaid Syntax Highlighter](https://atom.io/packages/language-mermaid) +- [Sublime Text 3](https://sublimetext.com) + - [Mermaid Package](https://packagecontrol.io/packages/Mermaid) +- [Astah](https://astah.net) + - [Export to Mermaid](https://github.com/Avens666/Astah_Jude_UML_export_to_Markdown-mermaid-Plantuml-) +- [Light Table](http://lighttable.com/) + - [Mermaid Plugin](https://github.com/cldwalker/Mermaid) +- [Draw.io](https://draw.io) - [Plugin](https://github.com/nopeslide/drawio_mermaid_plugin) +- [Inkdrop](https://www.inkdrop.app) - [Plugin](https://github.com/inkdropapp/inkdrop-mermaid) +- [Vim](https://www.vim.org) + - [Vim Diagram Syntax](https://github.com/zhaozg/vim-diagram) +- [GNU Emacs](https://www.gnu.org/software/emacs/) + - [Major mode for .mmd files](https://github.com/abrochard/mermaid-mode) + - [Org-Mode integration](https://github.com/arnm/ob-mermaid) +- [Brackets](https://brackets.io/) + - [Mermaid Preview](https://github.com/AlanHohn/mermaid-preview) +- [Iodide](https://github.com/iodide-project/iodide) + - [iodide-mermaid-plugin](https://github.com/iodide-project/iodide-mermaid-plugin) +- [Google docs](https://docs.google.com/) + - [Mermaid plugin for google docs](https://workspace.google.com/marketplace/app/mermaid/636321283856) +- [Podlite](https://github.com/zag/podlite-desktop) + - [Named block =Diagram](https://github.com/zag/podlite/tree/main/packages/podlite-diagrams) +- [GNU Nano](https://www.nano-editor.org/) + - [Nano Mermaid](https://github.com/Yash-Singh1/nano-mermaid) + +## Document Generation + +- [Sphinx](https://www.sphinx-doc.org/en/master/) + - [sphinxcontrib-mermaid](https://github.com/mgaitan/sphinxcontrib-mermaid) +- [remark.js](https://remark.js.org/) + - [remark-mermaid](https://github.com/temando/remark-mermaid) +- [jSDoc](https://jsdoc.app/) + - [jsdoc-mermaid](https://github.com/Jellyvision/jsdoc-mermaid) +- [MkDocs](https://mkdocs.org) + - [mkdocs-mermaid2-plugin](https://github.com/fralau/mkdocs-mermaid2-plugin) + - [mkdocs-material](https://github.com/squidfunk/mkdocs-material), check the [docs](https://squidfunk.github.io/mkdocs-material/reference/diagrams/) +- [Type Doc](https://typedoc.org/) + - [typedoc-plugin-mermaid](https://www.npmjs.com/package/typedoc-plugin-mermaid) +- [Docsy Hugo Theme](https://www.docsy.dev/docs/adding-content/lookandfeel/#diagrams-with-mermaid) (Native support in theme) +- [Codedoc](https://codedoc.cc/) + - [codedoc-mermaid-plugin](https://www.npmjs.com/package/codedoc-mermaid-plugin) +- [mdbook](https://rust-lang.github.io/mdBook/index.html) + - [mdbook-mermaid](https://github.com/badboy/mdbook-mermaid) + +## Browser Extensions + +| Name | Chrome Web Store | Firefox Add-ons | Opera | Edge | Source/Repository | +| ------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| GitHub + Mermaid | - | [🦊🔗](https://addons.mozilla.org/firefox/addon/github-mermaid/) | - | - | [🐙🔗](https://github.com/BackMarket/github-mermaid-extension) | +| Asciidoctor Live Preview | [🎡🔗](https://chrome.google.com/webstore/detail/asciidoctorjs-live-previe/iaalpfgpbocpdfblpnhhgllgbdbchmia) | - | - | [🌀🔗](https://microsoftedge.microsoft.com/addons/detail/asciidoctorjs-live-previ/pefkelkanablhjdekgdahplkccnbdggd?hl=en-US) | - | +| Diagram Tab | - | - | - | - | [🐙🔗](https://github.com/khafast/diagramtab) | +| Markdown Diagrams | [🎡🔗](https://chrome.google.com/webstore/detail/markdown-diagrams/pmoglnmodacnbbofbgcagndelmgaclel/) | [🦊🔗](https://addons.mozilla.org/en-US/firefox/addon/markdown-diagrams/) | [🔴🔗](https://addons.opera.com/en/extensions/details/markdown-diagrams/) | [🌀🔗](https://microsoftedge.microsoft.com/addons/detail/markdown-diagrams/hceenoomhhdkjjijnmlclkpenkapfihe) | [🐙🔗](https://github.com/marcozaccari/markdown-diagrams-browser-extension/tree/master/doc/examples) | +| Markdown Viewer | - | [🦊🔗](https://addons.mozilla.org/en-US/firefox/addon/markdown-viewer-chrome/) | - | - | [🐙🔗](https://github.com/simov/markdown-viewer) | +| Extensions for Mermaid | - | [🦊🔗](https://addons.mozilla.org/en-US/firefox/addon/markdown-viewer-chrome/) | [🔴🔗](https://addons.opera.com/en/extensions/details/extensions-for-mermaid/) | - | [🐙🔗](https://github.com/Stefan-S/mermaid-extension) | +| Chrome Diagrammer | [🎡🔗](https://chrome.google.com/webstore/detail/chrome-diagrammer/bkpbgjmkomfoakfklcjeoegkklgjnnpk) | - | - | - | - | +| Mermaid Diagrams | [🎡🔗](https://chrome.google.com/webstore/detail/mermaid-diagrams/phfcghedmopjadpojhmmaffjmfiakfil) | - | - | - | - | +| Monkeys | [🎡🔗](https://chrome.google.com/webstore/detail/monkeys-mermaid-for-githu/cplfdpoajbclbgphaphphcldamfkjlgi) | - | - | - | - | +| Mermaid Previewer | [🎡🔗](https://chrome.google.com/webstore/detail/mermaid-previewer/oidjnlhbegipkcklbdfnbkikplpghfdl) | - | - | - | - | + +## Other + +- [Jekyll](https://jekyllrb.com/) + - [jekyll-mermaid](https://rubygems.org/gems/jekyll-mermaid) + - [jekyll-mermaid-diagrams](https://github.com/fuzhibo/jekyll-mermaid-diagrams) +- [Reveal.js](https://github.com/hakimel/reveal.js) + - [reveal.js-mermaid-plugin](https://github.com/ludwick/reveal.js-mermaid-plugin) +- [Bisheng](https://www.npmjs.com/package/bisheng) + - [bisheng-plugin-mermaid](https://github.com/yct21/bisheng-plugin-mermaid) +- [Reveal CK](https://github.com/jedcn/reveal-ck) + - [reveal-ck-mermaid-plugin](https://github.com/tmtm/reveal-ck-mermaid-plugin) +- [mermaid-server: Generate diagrams using a HTTP request](https://github.com/TomWright/mermaid-server) +- [ExDoc](https://github.com/elixir-lang/ex_doc) + - [Rendering Mermaid graphs](https://github.com/elixir-lang/ex_doc#rendering-mermaid-graphs) diff --git a/docs/syntax/c4c.md b/docs/syntax/c4c.md new file mode 100644 index 000000000..ef1295450 --- /dev/null +++ b/docs/syntax/c4c.md @@ -0,0 +1,664 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/c4c.md](../../packages/mermaid/src/docs/syntax/c4c.md). + +# C4 Diagrams + +> C4 Diagram: This is an experimental diagram for now. The syntax and properties can change in future releases. Proper documentation will be provided when the syntax is stable. + +Mermaid's c4 diagram syntax is compatible with plantUML. See example below: + +```mermaid-example + C4Context + title System Context diagram for Internet Banking System + Enterprise_Boundary(b0, "BankBoundary0") { + Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.") + Person(customerB, "Banking Customer B") + Person_Ext(customerC, "Banking Customer C", "desc") + + Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.") + + System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.") + + Enterprise_Boundary(b1, "BankBoundary") { + + SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") + + System_Boundary(b2, "BankBoundary2") { + System(SystemA, "Banking System A") + System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts. next line.") + } + + System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.") + SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.") + + Boundary(b3, "BankBoundary3", "boundary") { + SystemQueue(SystemF, "Banking System F Queue", "A system of the bank.") + SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.") + } + } + } + + BiRel(customerA, SystemAA, "Uses") + BiRel(SystemAA, SystemE, "Uses") + Rel(SystemAA, SystemC, "Sends e-mails", "SMTP") + Rel(SystemC, customerA, "Sends e-mails to") + + UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red") + UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5") + UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10") + UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50") + UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20") + + UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1") + + +``` + +```mermaid + C4Context + title System Context diagram for Internet Banking System + Enterprise_Boundary(b0, "BankBoundary0") { + Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.") + Person(customerB, "Banking Customer B") + Person_Ext(customerC, "Banking Customer C", "desc") + + Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.") + + System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.") + + Enterprise_Boundary(b1, "BankBoundary") { + + SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") + + System_Boundary(b2, "BankBoundary2") { + System(SystemA, "Banking System A") + System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts. next line.") + } + + System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.") + SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.") + + Boundary(b3, "BankBoundary3", "boundary") { + SystemQueue(SystemF, "Banking System F Queue", "A system of the bank.") + SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.") + } + } + } + + BiRel(customerA, SystemAA, "Uses") + BiRel(SystemAA, SystemE, "Uses") + Rel(SystemAA, SystemC, "Sends e-mails", "SMTP") + Rel(SystemC, customerA, "Sends e-mails to") + + UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red") + UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5") + UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10") + UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50") + UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20") + + UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1") + + +``` + +For an example, see the source code demos/index.html + +5 types of C4 charts are supported. + +- System Context (C4Context) +- Container diagram (C4Container) +- Component diagram (C4Component) +- Dynamic diagram (C4Dynamic) +- Deployment diagram (C4Deployment) + +Please refer to the linked document [C4-PlantUML syntax](https://github.com/plantuml-stdlib/C4-PlantUML/blob/master/README.md) for how to write the c4 diagram. + +C4 diagram is fixed style, such as css color, so different css is not provided under different skins. +updateElementStyle and UpdateElementStyle are written in the diagram last part. updateElementStyle is inconsistent with the original definition and updates the style of the relationship, including the offset of the text label relative to the original position. + +The layout does not use a fully automated layout algorithm. The position of shapes is adjusted by changing the order in which statements are written. So there is no plan to support the following Layout statements. +The number of shapes per row and the number of boundaries can be adjusted using UpdateLayoutConfig. + +- Layout +- - Lay_U, Lay_Up +- - Lay_D, Lay_Down +- - Lay_L, Lay_Left +- - Lay_R, Lay_Right + +The following unfinished features are not supported in the short term. + +- \[ ] sprite + +- \[ ] tags + +- \[ ] link + +- \[ ] Legend + +- \[x] System Context + +- - \[x] Person(alias, label, ?descr, ?sprite, ?tags, $link) + +- - \[x] Person_Ext + +- - \[x] System(alias, label, ?descr, ?sprite, ?tags, $link) + +- - \[x] SystemDb + +- - \[x] SystemQueue + +- - \[x] System_Ext + +- - \[x] SystemDb_Ext + +- - \[x] SystemQueue_Ext + +- - \[x] Boundary(alias, label, ?type, ?tags, $link) + +- - \[x] Enterprise_Boundary(alias, label, ?tags, $link) + +- - \[x] System_Boundary + +- \[x] Container diagram + +- - \[x] Container(alias, label, ?techn, ?descr, ?sprite, ?tags, $link) + +- - \[x] ContainerDb + +- - \[x] ContainerQueue + +- - \[x] Container_Ext + +- - \[x] ContainerDb_Ext + +- - \[x] ContainerQueue_Ext + +- - \[x] Container_Boundary(alias, label, ?tags, $link) + +- \[x] Component diagram + +- - \[x] Component(alias, label, ?techn, ?descr, ?sprite, ?tags, $link) + +- - \[x] ComponentDb + +- - \[x] ComponentQueue + +- - \[x] Component_Ext + +- - \[x] ComponentDb_Ext + +- - \[x] ComponentQueue_Ext + +- \[x] Dynamic diagram + +- - \[x] RelIndex(index, from, to, label, ?tags, $link) + +- \[x] Deployment diagram + +- - \[x] Deployment_Node(alias, label, ?type, ?descr, ?sprite, ?tags, $link) + +- - \[x] Node(alias, label, ?type, ?descr, ?sprite, ?tags, $link): short name of Deployment_Node() + +- - \[x] Node_L(alias, label, ?type, ?descr, ?sprite, ?tags, $link): left aligned Node() + +- - \[x] Node_R(alias, label, ?type, ?descr, ?sprite, ?tags, $link): right aligned Node() + +- \[x] Relationship Types + +- - \[x] Rel(from, to, label, ?techn, ?descr, ?sprite, ?tags, $link) + +- - \[x] BiRel (bidirectional relationship) + +- - \[x] Rel_U, Rel_Up + +- - \[x] Rel_D, Rel_Down + +- - \[x] Rel_L, Rel_Left + +- - \[x] Rel_R, Rel_Right + +- - \[x] Rel_Back + +- - \[x] RelIndex \* Compatible with C4-Plantuml syntax, but ignores the index parameter. The sequence number is determined by the order in which the rel statements are written. + +- \[ ] Custom tags/stereotypes support and skin param updates + +- - \[ ] AddElementTag(tagStereo, ?bgColor, ?fontColor, ?borderColor, ?shadowing, ?shape, ?sprite, ?techn, ?legendText, ?legendSprite): Introduces a new element tag. The styles of the tagged elements are updated and the tag is displayed in the calculated legend. + +- - \[ ] AddRelTag(tagStereo, ?textColor, ?lineColor, ?lineStyle, ?sprite, ?techn, ?legendText, ?legendSprite): Introduces a new Relationship tag. The styles of the tagged relationships are updated and the tag is displayed in the calculated legend. + +- - \[x] UpdateElementStyle(elementName, ?bgColor, ?fontColor, ?borderColor, ?shadowing, ?shape, ?sprite, ?techn, ?legendText, ?legendSprite): This call updates the default style of the elements (component, ...) and creates no additional legend entry. + +- - \[x] UpdateRelStyle(from, to, ?textColor, ?lineColor, ?offsetX, ?offsetY): This call updates the default relationship colors and creates no additional legend entry. Two new parameters, offsetX and offsetY, are added to set the offset of the original position of the text. + +- - \[ ] RoundedBoxShape(): This call returns the name of the rounded box shape and can be used as ?shape argument. + +- - \[ ] EightSidedShape(): This call returns the name of the eight sided shape and can be used as ?shape argument. + +- - \[ ] DashedLine(): This call returns the name of the dashed line and can be used as ?lineStyle argument. + +- - \[ ] DottedLine(): This call returns the name of the dotted line and can be used as ?lineStyle argument. + +- - \[ ] BoldLine(): This call returns the name of the bold line and can be used as ?lineStyle argument. + +- - \[x] UpdateLayoutConfig(?c4ShapeInRow, ?c4BoundaryInRow): New. This call updates the default c4ShapeInRow(4) and c4BoundaryInRow(2). + +There are two ways to assign parameters with question marks. One uses the non-named parameter assignment method in the order of the parameters, and the other uses the named parameter assignment method, where the name must start with a $ symbol. + +Example: UpdateRelStyle(from, to, ?textColor, ?lineColor, ?offsetX, ?offsetY) + +``` +UpdateRelStyle(customerA, bankA, "red", "blue", "-40", "60") +UpdateRelStyle(customerA, bankA, $offsetX="-40", $offsetY="60", $lineColor="blue", $textColor="red") +UpdateRelStyle(customerA, bankA, $offsetY="60") + +``` + +## C4 System Context Diagram (C4Context) + +```mermaid-example + C4Context + title System Context diagram for Internet Banking System + Enterprise_Boundary(b0, "BankBoundary0") { + Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.") + Person(customerB, "Banking Customer B") + Person_Ext(customerC, "Banking Customer C", "desc") + + Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.") + + System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.") + + Enterprise_Boundary(b1, "BankBoundary") { + + SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") + + System_Boundary(b2, "BankBoundary2") { + System(SystemA, "Banking System A") + System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts. next line.") + } + + System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.") + SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.") + + Boundary(b3, "BankBoundary3", "boundary") { + SystemQueue(SystemF, "Banking System F Queue", "A system of the bank.") + SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.") + } + } + } + + BiRel(customerA, SystemAA, "Uses") + BiRel(SystemAA, SystemE, "Uses") + Rel(SystemAA, SystemC, "Sends e-mails", "SMTP") + Rel(SystemC, customerA, "Sends e-mails to") + + UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red") + UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5") + UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10") + UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50") + UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20") + + UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1") + +``` + +```mermaid + C4Context + title System Context diagram for Internet Banking System + Enterprise_Boundary(b0, "BankBoundary0") { + Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.") + Person(customerB, "Banking Customer B") + Person_Ext(customerC, "Banking Customer C", "desc") + + Person(customerD, "Banking Customer D", "A customer of the bank, <br/> with personal bank accounts.") + + System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.") + + Enterprise_Boundary(b1, "BankBoundary") { + + SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") + + System_Boundary(b2, "BankBoundary2") { + System(SystemA, "Banking System A") + System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts. next line.") + } + + System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.") + SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.") + + Boundary(b3, "BankBoundary3", "boundary") { + SystemQueue(SystemF, "Banking System F Queue", "A system of the bank.") + SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.") + } + } + } + + BiRel(customerA, SystemAA, "Uses") + BiRel(SystemAA, SystemE, "Uses") + Rel(SystemAA, SystemC, "Sends e-mails", "SMTP") + Rel(SystemC, customerA, "Sends e-mails to") + + UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red") + UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5") + UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10") + UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50") + UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20") + + UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1") + +``` + +## C4 Container diagram (C4Container) + +```mermaid-example + C4Container + title Container diagram for Internet Banking System + + System_Ext(email_system, "E-Mail System", "The internal Microsoft Exchange system", $tags="v1.0") + Person(customer, Customer, "A customer of the bank, with personal bank accounts", $tags="v1.0") + + Container_Boundary(c1, "Internet Banking") { + Container(spa, "Single-Page App", "JavaScript, Angular", "Provides all the Internet banking functionality to cutomers via their web browser") + Container_Ext(mobile_app, "Mobile App", "C#, Xamarin", "Provides a limited subset of the Internet banking functionality to customers via their mobile device") + Container(web_app, "Web Application", "Java, Spring MVC", "Delivers the static content and the Internet banking SPA") + ContainerDb(database, "Database", "SQL Database", "Stores user registration information, hashed auth credentials, access logs, etc.") + ContainerDb_Ext(backend_api, "API Application", "Java, Docker Container", "Provides Internet banking functionality via API") + + } + + System_Ext(banking_system, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") + + Rel(customer, web_app, "Uses", "HTTPS") + UpdateRelStyle(customer, web_app, $offsetY="60", $offsetX="90") + Rel(customer, spa, "Uses", "HTTPS") + UpdateRelStyle(customer, spa, $offsetY="-40") + Rel(customer, mobile_app, "Uses") + UpdateRelStyle(customer, mobile_app, $offsetY="-30") + + Rel(web_app, spa, "Delivers") + UpdateRelStyle(web_app, spa, $offsetX="130") + Rel(spa, backend_api, "Uses", "async, JSON/HTTPS") + Rel(mobile_app, backend_api, "Uses", "async, JSON/HTTPS") + Rel_Back(database, backend_api, "Reads from and writes to", "sync, JDBC") + + Rel(email_system, customer, "Sends e-mails to") + UpdateRelStyle(email_system, customer, $offsetX="-45") + Rel(backend_api, email_system, "Sends e-mails using", "sync, SMTP") + UpdateRelStyle(backend_api, email_system, $offsetY="-60") + Rel(backend_api, banking_system, "Uses", "sync/async, XML/HTTPS") + UpdateRelStyle(backend_api, banking_system, $offsetY="-50", $offsetX="-140") + +``` + +```mermaid + C4Container + title Container diagram for Internet Banking System + + System_Ext(email_system, "E-Mail System", "The internal Microsoft Exchange system", $tags="v1.0") + Person(customer, Customer, "A customer of the bank, with personal bank accounts", $tags="v1.0") + + Container_Boundary(c1, "Internet Banking") { + Container(spa, "Single-Page App", "JavaScript, Angular", "Provides all the Internet banking functionality to cutomers via their web browser") + Container_Ext(mobile_app, "Mobile App", "C#, Xamarin", "Provides a limited subset of the Internet banking functionality to customers via their mobile device") + Container(web_app, "Web Application", "Java, Spring MVC", "Delivers the static content and the Internet banking SPA") + ContainerDb(database, "Database", "SQL Database", "Stores user registration information, hashed auth credentials, access logs, etc.") + ContainerDb_Ext(backend_api, "API Application", "Java, Docker Container", "Provides Internet banking functionality via API") + + } + + System_Ext(banking_system, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") + + Rel(customer, web_app, "Uses", "HTTPS") + UpdateRelStyle(customer, web_app, $offsetY="60", $offsetX="90") + Rel(customer, spa, "Uses", "HTTPS") + UpdateRelStyle(customer, spa, $offsetY="-40") + Rel(customer, mobile_app, "Uses") + UpdateRelStyle(customer, mobile_app, $offsetY="-30") + + Rel(web_app, spa, "Delivers") + UpdateRelStyle(web_app, spa, $offsetX="130") + Rel(spa, backend_api, "Uses", "async, JSON/HTTPS") + Rel(mobile_app, backend_api, "Uses", "async, JSON/HTTPS") + Rel_Back(database, backend_api, "Reads from and writes to", "sync, JDBC") + + Rel(email_system, customer, "Sends e-mails to") + UpdateRelStyle(email_system, customer, $offsetX="-45") + Rel(backend_api, email_system, "Sends e-mails using", "sync, SMTP") + UpdateRelStyle(backend_api, email_system, $offsetY="-60") + Rel(backend_api, banking_system, "Uses", "sync/async, XML/HTTPS") + UpdateRelStyle(backend_api, banking_system, $offsetY="-50", $offsetX="-140") + +``` + +## C4 Component diagram (C4Component) + +```mermaid-example + C4Component + title Component diagram for Internet Banking System - API Application + + Container(spa, "Single Page Application", "javascript and angular", "Provides all the internet banking functionality to customers via their web browser.") + Container(ma, "Mobile App", "Xamarin", "Provides a limited subset ot the internet banking functionality to customers via their mobile mobile device.") + ContainerDb(db, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") + System_Ext(mbs, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") + + Container_Boundary(api, "API Application") { + Component(sign, "Sign In Controller", "MVC Rest Controller", "Allows users to sign in to the internet banking system") + Component(accounts, "Accounts Summary Controller", "MVC Rest Controller", "Provides customers with a summary of their bank accounts") + Component(security, "Security Component", "Spring Bean", "Provides functionality related to singing in, changing passwords, etc.") + Component(mbsfacade, "Mainframe Banking System Facade", "Spring Bean", "A facade onto the mainframe banking system.") + + Rel(sign, security, "Uses") + Rel(accounts, mbsfacade, "Uses") + Rel(security, db, "Read & write to", "JDBC") + Rel(mbsfacade, mbs, "Uses", "XML/HTTPS") + } + + Rel_Back(spa, sign, "Uses", "JSON/HTTPS") + Rel(spa, accounts, "Uses", "JSON/HTTPS") + + Rel(ma, sign, "Uses", "JSON/HTTPS") + Rel(ma, accounts, "Uses", "JSON/HTTPS") + + UpdateRelStyle(spa, sign, $offsetY="-40") + UpdateRelStyle(spa, accounts, $offsetX="40", $offsetY="40") + + UpdateRelStyle(ma, sign, $offsetX="-90", $offsetY="40") + UpdateRelStyle(ma, accounts, $offsetY="-40") + + UpdateRelStyle(sign, security, $offsetX="-160", $offsetY="10") + UpdateRelStyle(accounts, mbsfacade, $offsetX="140", $offsetY="10") + UpdateRelStyle(security, db, $offsetY="-40") + UpdateRelStyle(mbsfacade, mbs, $offsetY="-40") + +``` + +```mermaid + C4Component + title Component diagram for Internet Banking System - API Application + + Container(spa, "Single Page Application", "javascript and angular", "Provides all the internet banking functionality to customers via their web browser.") + Container(ma, "Mobile App", "Xamarin", "Provides a limited subset ot the internet banking functionality to customers via their mobile mobile device.") + ContainerDb(db, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") + System_Ext(mbs, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") + + Container_Boundary(api, "API Application") { + Component(sign, "Sign In Controller", "MVC Rest Controller", "Allows users to sign in to the internet banking system") + Component(accounts, "Accounts Summary Controller", "MVC Rest Controller", "Provides customers with a summary of their bank accounts") + Component(security, "Security Component", "Spring Bean", "Provides functionality related to singing in, changing passwords, etc.") + Component(mbsfacade, "Mainframe Banking System Facade", "Spring Bean", "A facade onto the mainframe banking system.") + + Rel(sign, security, "Uses") + Rel(accounts, mbsfacade, "Uses") + Rel(security, db, "Read & write to", "JDBC") + Rel(mbsfacade, mbs, "Uses", "XML/HTTPS") + } + + Rel_Back(spa, sign, "Uses", "JSON/HTTPS") + Rel(spa, accounts, "Uses", "JSON/HTTPS") + + Rel(ma, sign, "Uses", "JSON/HTTPS") + Rel(ma, accounts, "Uses", "JSON/HTTPS") + + UpdateRelStyle(spa, sign, $offsetY="-40") + UpdateRelStyle(spa, accounts, $offsetX="40", $offsetY="40") + + UpdateRelStyle(ma, sign, $offsetX="-90", $offsetY="40") + UpdateRelStyle(ma, accounts, $offsetY="-40") + + UpdateRelStyle(sign, security, $offsetX="-160", $offsetY="10") + UpdateRelStyle(accounts, mbsfacade, $offsetX="140", $offsetY="10") + UpdateRelStyle(security, db, $offsetY="-40") + UpdateRelStyle(mbsfacade, mbs, $offsetY="-40") + +``` + +## C4 Dynamic diagram (C4Dynamic) + +```mermaid-example + C4Dynamic + title Dynamic diagram for Internet Banking System - API Application + + ContainerDb(c4, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") + Container(c1, "Single-Page Application", "JavaScript and Angular", "Provides all of the Internet banking functionality to customers via their web browser.") + Container_Boundary(b, "API Application") { + Component(c3, "Security Component", "Spring Bean", "Provides functionality Related to signing in, changing passwords, etc.") + Component(c2, "Sign In Controller", "Spring MVC Rest Controller", "Allows users to sign in to the Internet Banking System.") + } + Rel(c1, c2, "Submits credentials to", "JSON/HTTPS") + Rel(c2, c3, "Calls isAuthenticated() on") + Rel(c3, c4, "select * from users where username = ?", "JDBC") + + UpdateRelStyle(c1, c2, $textColor="red", $offsetY="-40") + UpdateRelStyle(c2, c3, $textColor="red", $offsetX="-40", $offsetY="60") + UpdateRelStyle(c3, c4, $textColor="red", $offsetY="-40", $offsetX="10") + +``` + +```mermaid + C4Dynamic + title Dynamic diagram for Internet Banking System - API Application + + ContainerDb(c4, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") + Container(c1, "Single-Page Application", "JavaScript and Angular", "Provides all of the Internet banking functionality to customers via their web browser.") + Container_Boundary(b, "API Application") { + Component(c3, "Security Component", "Spring Bean", "Provides functionality Related to signing in, changing passwords, etc.") + Component(c2, "Sign In Controller", "Spring MVC Rest Controller", "Allows users to sign in to the Internet Banking System.") + } + Rel(c1, c2, "Submits credentials to", "JSON/HTTPS") + Rel(c2, c3, "Calls isAuthenticated() on") + Rel(c3, c4, "select * from users where username = ?", "JDBC") + + UpdateRelStyle(c1, c2, $textColor="red", $offsetY="-40") + UpdateRelStyle(c2, c3, $textColor="red", $offsetX="-40", $offsetY="60") + UpdateRelStyle(c3, c4, $textColor="red", $offsetY="-40", $offsetX="10") + +``` + +## C4 Deployment diagram (C4Deployment) + +```mermaid-example + C4Deployment + title Deployment Diagram for Internet Banking System - Live + + Deployment_Node(mob, "Customer's mobile device", "Apple IOS or Android"){ + Container(mobile, "Mobile App", "Xamarin", "Provides a limited subset of the Internet Banking functionality to customers via their mobile device.") + } + + Deployment_Node(comp, "Customer's computer", "Mircosoft Windows or Apple macOS"){ + Deployment_Node(browser, "Web Browser", "Google Chrome, Mozilla Firefox,<br/> Apple Safari or Microsoft Edge"){ + Container(spa, "Single Page Application", "JavaScript and Angular", "Provides all of the Internet Banking functionality to customers via their web browser.") + } + } + + Deployment_Node(plc, "Big Bank plc", "Big Bank plc data center"){ + Deployment_Node(dn, "bigbank-api*** x8", "Ubuntu 16.04 LTS"){ + Deployment_Node(apache, "Apache Tomcat", "Apache Tomcat 8.x"){ + Container(api, "API Application", "Java and Spring MVC", "Provides Internet Banking functionality via a JSON/HTTPS API.") + } + } + Deployment_Node(bb2, "bigbank-web*** x4", "Ubuntu 16.04 LTS"){ + Deployment_Node(apache2, "Apache Tomcat", "Apache Tomcat 8.x"){ + Container(web, "Web Application", "Java and Spring MVC", "Delivers the static content and the Internet Banking single page application.") + } + } + Deployment_Node(bigbankdb01, "bigbank-db01", "Ubuntu 16.04 LTS"){ + Deployment_Node(oracle, "Oracle - Primary", "Oracle 12c"){ + ContainerDb(db, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") + } + } + Deployment_Node(bigbankdb02, "bigbank-db02", "Ubuntu 16.04 LTS") { + Deployment_Node(oracle2, "Oracle - Secondary", "Oracle 12c") { + ContainerDb(db2, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") + } + } + } + + Rel(mobile, api, "Makes API calls to", "json/HTTPS") + Rel(spa, api, "Makes API calls to", "json/HTTPS") + Rel_U(web, spa, "Delivers to the customer's web browser") + Rel(api, db, "Reads from and writes to", "JDBC") + Rel(api, db2, "Reads from and writes to", "JDBC") + Rel_R(db, db2, "Replicates data to") + + UpdateRelStyle(spa, api, $offsetY="-40") + UpdateRelStyle(web, spa, $offsetY="-40") + UpdateRelStyle(api, db, $offsetY="-20", $offsetX="5") + UpdateRelStyle(api, db2, $offsetX="-40", $offsetY="-20") + UpdateRelStyle(db, db2, $offsetY="-10") + +``` + +```mermaid + C4Deployment + title Deployment Diagram for Internet Banking System - Live + + Deployment_Node(mob, "Customer's mobile device", "Apple IOS or Android"){ + Container(mobile, "Mobile App", "Xamarin", "Provides a limited subset of the Internet Banking functionality to customers via their mobile device.") + } + + Deployment_Node(comp, "Customer's computer", "Mircosoft Windows or Apple macOS"){ + Deployment_Node(browser, "Web Browser", "Google Chrome, Mozilla Firefox,<br/> Apple Safari or Microsoft Edge"){ + Container(spa, "Single Page Application", "JavaScript and Angular", "Provides all of the Internet Banking functionality to customers via their web browser.") + } + } + + Deployment_Node(plc, "Big Bank plc", "Big Bank plc data center"){ + Deployment_Node(dn, "bigbank-api*** x8", "Ubuntu 16.04 LTS"){ + Deployment_Node(apache, "Apache Tomcat", "Apache Tomcat 8.x"){ + Container(api, "API Application", "Java and Spring MVC", "Provides Internet Banking functionality via a JSON/HTTPS API.") + } + } + Deployment_Node(bb2, "bigbank-web*** x4", "Ubuntu 16.04 LTS"){ + Deployment_Node(apache2, "Apache Tomcat", "Apache Tomcat 8.x"){ + Container(web, "Web Application", "Java and Spring MVC", "Delivers the static content and the Internet Banking single page application.") + } + } + Deployment_Node(bigbankdb01, "bigbank-db01", "Ubuntu 16.04 LTS"){ + Deployment_Node(oracle, "Oracle - Primary", "Oracle 12c"){ + ContainerDb(db, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") + } + } + Deployment_Node(bigbankdb02, "bigbank-db02", "Ubuntu 16.04 LTS") { + Deployment_Node(oracle2, "Oracle - Secondary", "Oracle 12c") { + ContainerDb(db2, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.") + } + } + } + + Rel(mobile, api, "Makes API calls to", "json/HTTPS") + Rel(spa, api, "Makes API calls to", "json/HTTPS") + Rel_U(web, spa, "Delivers to the customer's web browser") + Rel(api, db, "Reads from and writes to", "JDBC") + Rel(api, db2, "Reads from and writes to", "JDBC") + Rel_R(db, db2, "Replicates data to") + + UpdateRelStyle(spa, api, $offsetY="-40") + UpdateRelStyle(web, spa, $offsetY="-40") + UpdateRelStyle(api, db, $offsetY="-20", $offsetX="5") + UpdateRelStyle(api, db2, $offsetX="-40", $offsetY="-20") + UpdateRelStyle(db, db2, $offsetY="-10") + +``` diff --git a/docs/syntax/classDiagram.md b/docs/syntax/classDiagram.md new file mode 100644 index 000000000..d57125c84 --- /dev/null +++ b/docs/syntax/classDiagram.md @@ -0,0 +1,848 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/classDiagram.md](../../packages/mermaid/src/docs/syntax/classDiagram.md). + +# Class diagrams + +> "In software engineering, a class diagram in the Unified Modeling Language (UML) is a type of static structure diagram that describes the structure of a system by showing the system's classes, their attributes, operations (or methods), and the relationships among objects." +> Wikipedia + +The class diagram is the main building block of object-oriented modeling. It is used for general conceptual modeling of the structure of the application, and for detailed modeling to translate the models into programming code. Class diagrams can also be used for data modeling. The classes in a class diagram represent both the main elements, interactions in the application, and the classes to be programmed. + +Mermaid can render class diagrams. + +```mermaid-example +classDiagram + note "From Duck till Zebra" + Animal <|-- Duck + note for Duck "can fly\ncan swim\ncan dive\ncan help in debugging" + Animal <|-- Fish + Animal <|-- Zebra + Animal : +int age + Animal : +String gender + Animal: +isMammal() + Animal: +mate() + class Duck{ + +String beakColor + +swim() + +quack() + } + class Fish{ + -int sizeInFeet + -canEat() + } + class Zebra{ + +bool is_wild + +run() + } +``` + +```mermaid +classDiagram + note "From Duck till Zebra" + Animal <|-- Duck + note for Duck "can fly\ncan swim\ncan dive\ncan help in debugging" + Animal <|-- Fish + Animal <|-- Zebra + Animal : +int age + Animal : +String gender + Animal: +isMammal() + Animal: +mate() + class Duck{ + +String beakColor + +swim() + +quack() + } + class Fish{ + -int sizeInFeet + -canEat() + } + class Zebra{ + +bool is_wild + +run() + } +``` + +## Syntax + +### Class + +UML provides mechanisms to represent class members, such as attributes and methods, and additional information about them. +A single instance of a class in the diagram contains three compartments: + +- The top compartment contains the name of the class. It is printed in bold and centered, and the first letter is capitalized. It may also contain optional annotation text describing the nature of the class. +- The middle compartment contains the attributes of the class. They are left-aligned and the first letter is lowercase. +- The bottom compartment contains the operations the class can execute. They are also left-aligned and the first letter is lowercase. + +```mermaid-example +classDiagram + class BankAccount + BankAccount : +String owner + BankAccount : +Bigdecimal balance + BankAccount : +deposit(amount) + BankAccount : +withdrawal(amount) + +``` + +```mermaid +classDiagram + class BankAccount + BankAccount : +String owner + BankAccount : +Bigdecimal balance + BankAccount : +deposit(amount) + BankAccount : +withdrawal(amount) + +``` + +## Define a class + +There are two ways to define a class: + +- Explicitly using keyword **class** like `class Animal` which would define the Animal class. +- Via a **relationship** which defines two classes at a time along with their relationship. For instance, `Vehicle <|-- Car`. + +```mermaid-example +classDiagram + class Animal + Vehicle <|-- Car +``` + +```mermaid +classDiagram + class Animal + Vehicle <|-- Car +``` + +Naming convention: a class name should be composed only of alphanumeric characters (including unicode), and underscores. + +## Defining Members of a class + +UML provides mechanisms to represent class members such as attributes and methods, as well as additional information about them. + +Mermaid distinguishes between attributes and functions/methods based on if the **parenthesis** `()` are present or not. The ones with `()` are treated as functions/methods, and all others as attributes. + +There are two ways to define the members of a class, and regardless of whichever syntax is used to define the members, the output will still be same. The two different ways are : + +- Associate a member of a class using **:** (colon) followed by member name, useful to define one member at a time. For example: + +```mermaid-example +classDiagram +class BankAccount +BankAccount : +String owner +BankAccount : +BigDecimal balance +BankAccount : +deposit(amount) +BankAccount : +withdrawal(amount) +``` + +```mermaid +classDiagram +class BankAccount +BankAccount : +String owner +BankAccount : +BigDecimal balance +BankAccount : +deposit(amount) +BankAccount : +withdrawal(amount) +``` + +- Associate members of a class using **{}** brackets, where members are grouped within curly brackets. Suitable for defining multiple members at once. For example: + +```mermaid-example +classDiagram +class BankAccount{ + +String owner + +BigDecimal balance + +deposit(amount) + +withdrawal(amount) +} +``` + +```mermaid +classDiagram +class BankAccount{ + +String owner + +BigDecimal balance + +deposit(amount) + +withdrawal(amount) +} +``` + +#### Return Type + +Optionally you can end a method/function definition with the data type that will be returned (note: there must be a space between the final `)` and the return type). An example: + +```mermaid-example +classDiagram +class BankAccount{ + +String owner + +BigDecimal balance + +deposit(amount) bool + +withdrawal(amount) int +} +``` + +```mermaid +classDiagram +class BankAccount{ + +String owner + +BigDecimal balance + +deposit(amount) bool + +withdrawal(amount) int +} +``` + +#### Generic Types + +Members can be defined using generic types, such as `List<int>`, for fields, parameters, and return types by enclosing the type within `~` (**tilde**). Note: **nested** type declarations such as `List<List<int>>` are not currently supported. + +Generics can be represented as part of a class definition and also in the parameters or the return value of a method/function: + +```mermaid-example +classDiagram +class Square~Shape~{ + int id + List~int~ position + setPoints(List~int~ points) + getPoints() List~int~ +} + +Square : -List~string~ messages +Square : +setMessages(List~string~ messages) +Square : +getMessages() List~string~ +``` + +```mermaid +classDiagram +class Square~Shape~{ + int id + List~int~ position + setPoints(List~int~ points) + getPoints() List~int~ +} + +Square : -List~string~ messages +Square : +setMessages(List~string~ messages) +Square : +getMessages() List~string~ +``` + +#### Return Type + +Optionally you can end the method/function definition with the data type that will be returned. + +#### Visibility + +To describe the visibility (or encapsulation) of an attribute or method/function that is a part of a class (i.e. a class member), optional notation may be placed before that members' name: + +- `+` Public +- `-` Private +- `#` Protected +- `~` Package/Internal + +> _note_ you can also include additional _classifiers_ to a method definition by adding the following notation to the _end_ of the method, i.e.: after the `()`: +> +> - `*` Abstract e.g.: `someAbstractMethod()*` +> - `$` Static e.g.: `someStaticMethod()$` + +> _note_ you can also include additional _classifiers_ to a field definition by adding the following notation to the end of its name: +> +> - `$` Static e.g.: `String someField$` + +## Defining Relationship + +A relationship is a general term covering the specific types of logical connections found on class and object diagrams. + + [classA][Arrow][ClassB] + +There are eight different types of relations defined for classes under UML which are currently supported: + +| Type | Description | +| ------- | ------------- | +| `<\|--` | Inheritance | +| `\*--` | Composition | +| `o--` | Aggregation | +| `-->` | Association | +| `--` | Link (Solid) | +| `..>` | Dependency | +| `..\|>` | Realization | +| `..` | Link (Dashed) | + +```mermaid-example +classDiagram +classA <|-- classB +classC *-- classD +classE o-- classF +classG <-- classH +classI -- classJ +classK <.. classL +classM <|.. classN +classO .. classP + +``` + +```mermaid +classDiagram +classA <|-- classB +classC *-- classD +classE o-- classF +classG <-- classH +classI -- classJ +classK <.. classL +classM <|.. classN +classO .. classP + +``` + +We can use the labels to describe the nature of the relation between two classes. Also, arrowheads can be used in the opposite direction as well: + +```mermaid-example +classDiagram +classA --|> classB : Inheritance +classC --* classD : Composition +classE --o classF : Aggregation +classG --> classH : Association +classI -- classJ : Link(Solid) +classK ..> classL : Dependency +classM ..|> classN : Realization +classO .. classP : Link(Dashed) + +``` + +```mermaid +classDiagram +classA --|> classB : Inheritance +classC --* classD : Composition +classE --o classF : Aggregation +classG --> classH : Association +classI -- classJ : Link(Solid) +classK ..> classL : Dependency +classM ..|> classN : Realization +classO .. classP : Link(Dashed) + +``` + +### Labels on Relations + +It is possible to add label text to a relation: + + [classA][Arrow][ClassB]:LabelText + +```mermaid-example +classDiagram +classA <|-- classB : implements +classC *-- classD : composition +classE o-- classF : aggregation +``` + +```mermaid +classDiagram +classA <|-- classB : implements +classC *-- classD : composition +classE o-- classF : aggregation +``` + +### Two-way relations + +Relations can logically represent an N:M association: + +```mermaid-example +classDiagram + Animal <|--|> Zebra +``` + +```mermaid +classDiagram + Animal <|--|> Zebra +``` + +Here is the syntax: + + [Relation Type][Link][Relation Type] + +Where `Relation Type` can be one of: + +| Type | Description | +| ----- | ----------- | +| `<\|` | Inheritance | +| `\*` | Composition | +| `o` | Aggregation | +| `>` | Association | +| `<` | Association | +| `\|>` | Realization | + +And `Link` can be one of: + +| Type | Description | +| ---- | ----------- | +| -- | Solid | +| .. | Dashed | + +## Cardinality / Multiplicity on relations + +Multiplicity or cardinality in class diagrams indicates the number of instances of one class that can be linked to an instance of the other class. For example, each company will have one or more employees (not zero), and each employee currently works for zero or one companies. + +Multiplicity notations are placed near the end of an association. + +The different cardinality options are : + +- `1` Only 1 +- `0..1` Zero or One +- `1..*` One or more +- `*` Many +- `n` n {where n>1} +- `0..n` zero to n {where n>1} +- `1..n` one to n {where n>1} + +Cardinality can be easily defined by placing the text option within quotes `"` before or after a given arrow. For example: + + [classA] "cardinality1" [Arrow] "cardinality2" [ClassB]:LabelText + +```mermaid-example +classDiagram + Customer "1" --> "*" Ticket + Student "1" --> "1..*" Course + Galaxy --> "many" Star : Contains +``` + +```mermaid +classDiagram + Customer "1" --> "*" Ticket + Student "1" --> "1..*" Course + Galaxy --> "many" Star : Contains +``` + +## Annotations on classes + +It is possible to annotate classes with markers to provide additional metadata about the class. This can give a clearer indication about its nature. Some common annotations include: + +- `<<Interface>>` To represent an Interface class +- `<<Abstract>>` To represent an abstract class +- `<<Service>>` To represent a service class +- `<<Enumeration>>` To represent an enum + +Annotations are defined within the opening `<<` and closing `>>`. There are two ways to add an annotation to a class, and either way the output will be same: + +- In a **_separate line_** after a class is defined: + +```mermaid-example +classDiagram +class Shape +<<interface>> Shape +Shape : noOfVertices +Shape : draw() +``` + +```mermaid +classDiagram +class Shape +<<interface>> Shape +Shape : noOfVertices +Shape : draw() +``` + +- In a **_nested structure_** along with the class definition: + +```mermaid-example +classDiagram +class Shape{ + <<interface>> + noOfVertices + draw() +} +class Color{ + <<enumeration>> + RED + BLUE + GREEN + WHITE + BLACK +} + +``` + +```mermaid +classDiagram +class Shape{ + <<interface>> + noOfVertices + draw() +} +class Color{ + <<enumeration>> + RED + BLUE + GREEN + WHITE + BLACK +} + +``` + +## Comments + +Comments can be entered within a class diagram, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text until the next newline will be treated as a comment, including any class diagram syntax. + +```mermaid-example +classDiagram +%% This whole line is a comment classDiagram class Shape <<interface>> +class Shape{ + <<interface>> + noOfVertices + draw() +} +``` + +```mermaid +classDiagram +%% This whole line is a comment classDiagram class Shape <<interface>> +class Shape{ + <<interface>> + noOfVertices + draw() +} +``` + +## Setting the direction of the diagram + +With class diagrams you can use the direction statement to set the direction in which the diagram will render: + +```mermaid-example +classDiagram + direction RL + class Student { + -idCard : IdCard + } + class IdCard{ + -id : int + -name : string + } + class Bike{ + -id : int + -name : string + } + Student "1" --o "1" IdCard : carries + Student "1" --o "1" Bike : rides +``` + +```mermaid +classDiagram + direction RL + class Student { + -idCard : IdCard + } + class IdCard{ + -id : int + -name : string + } + class Bike{ + -id : int + -name : string + } + Student "1" --o "1" IdCard : carries + Student "1" --o "1" Bike : rides +``` + +## Interaction + +It is possible to bind a click event to a node. The click can lead to either a javascript callback or to a link which will be opened in a new browser tab. **Note**: This functionality is disabled when using `securityLevel='strict'` and enabled when using `securityLevel='loose'`. + +You would define these actions on a separate line after all classes have been declared. + + action className "reference" "tooltip" + click className call callback() "tooltip" + click className href "url" "tooltip" + +- _action_ is either `link` or `callback`, depending on which type of interaction you want to have called +- _className_ is the id of the node that the action will be associated with +- _reference_ is either the url link, or the function name for callback. +- (_optional_) tooltip is a string to be displayed when hovering over element (note: The styles of the tooltip are set by the class .mermaidTooltip.) +- note: callback function will be called with the nodeId as parameter. + +## Notes + +It is possible to add notes on digram using `note "line1\nline2"` or note for class using `note for class "line1\nline2"` + +### Examples + +_URL Link:_ + +```mermaid-example +classDiagram +class Shape +link Shape "https://www.github.com" "This is a tooltip for a link" +class Shape2 +click Shape2 href "https://www.github.com" "This is a tooltip for a link" +``` + +```mermaid +classDiagram +class Shape +link Shape "https://www.github.com" "This is a tooltip for a link" +class Shape2 +click Shape2 href "https://www.github.com" "This is a tooltip for a link" +``` + +_Callback:_ + +```mermaid-example +classDiagram +class Shape +callback Shape "callbackFunction" "This is a tooltip for a callback" +class Shape2 +click Shape2 call callbackFunction() "This is a tooltip for a callback" +``` + +```mermaid +classDiagram +class Shape +callback Shape "callbackFunction" "This is a tooltip for a callback" +class Shape2 +click Shape2 call callbackFunction() "This is a tooltip for a callback" +``` + +```html +<script> + const callbackFunction = function () { + alert('A callback was triggered'); + }; +</script> +``` + +```mermaid-example +classDiagram + class Class01 + class Class02 + callback Class01 "callbackFunction" "Callback tooltip" + link Class02 "https://www.github.com" "This is a link" + class Class03 + class Class04 + click Class03 call callbackFunction() "Callback tooltip" + click Class04 href "https://www.github.com" "This is a link" +``` + +```mermaid +classDiagram + class Class01 + class Class02 + callback Class01 "callbackFunction" "Callback tooltip" + link Class02 "https://www.github.com" "This is a link" + class Class03 + class Class04 + click Class03 call callbackFunction() "Callback tooltip" + click Class04 href "https://www.github.com" "This is a link" +``` + +> **Success** The tooltip functionality and the ability to link to urls are available from version 0.5.2. + +Beginner's tip—a full example using interactive links in an HTML page: + +```html +<body> + <pre class="mermaid"> + classDiagram + Animal <|-- Duck + Animal <|-- Fish + Animal <|-- Zebra + Animal : +int age + Animal : +String gender + Animal: +isMammal() + Animal: +mate() + class Duck{ + +String beakColor + +swim() + +quack() + } + class Fish{ + -int sizeInFeet + -canEat() + } + class Zebra{ + +bool is_wild + +run() + } + + callback Duck callback "Tooltip" + link Zebra "https://www.github.com" "This is a link" + </pre> + + <script> + const callback = function () { + alert('A callback was triggered'); + }; + const config = { + startOnLoad: true, + securityLevel: 'loose', + }; + mermaid.initialize(config); + </script> +</body> +``` + +## Styling + +### Styling a node + +It is possible to apply specific styles such as a thicker border or a different background color to individual nodes. This is done by predefining classes in css styles that can be applied from the graph definition: + +```html +<style> + .cssClass > rect { + fill: #ff0000; + stroke: #ffff00; + stroke-width: 4px; + } +</style> +``` + +Then attaching that class to a specific node: + + cssClass "nodeId1" cssClass; + +It is also possible to attach a class to a list of nodes in one statement: + + cssClass "nodeId1,nodeId2" cssClass; + +A shorter form of adding a class is to attach the classname to the node using the `:::` operator: + +```mermaid-example +classDiagram + class Animal:::cssClass +``` + +```mermaid +classDiagram + class Animal:::cssClass +``` + +Or: + +```mermaid-example +classDiagram + class Animal:::cssClass { + -int sizeInFeet + -canEat() + } +``` + +```mermaid +classDiagram + class Animal:::cssClass { + -int sizeInFeet + -canEat() + } +``` + +?> cssClasses cannot be added using this shorthand method at the same time as a relation statement. + +?> Due to limitations with existing markup for class diagrams, it is not currently possible to define css classes within the diagram itself. **_Coming soon!_** + +### Default Styles + +The main styling of the class diagram is done with a preset number of css classes. During rendering these classes are extracted from the file located at src/themes/class.scss. The classes used here are described below: + +| Class | Description | +| ------------------ | ----------------------------------------------------------------- | +| g.classGroup text | Styles for general class text | +| classGroup .title | Styles for general class title | +| g.classGroup rect | Styles for class diagram rectangle | +| g.classGroup line | Styles for class diagram line | +| .classLabel .box | Styles for class label box | +| .classLabel .label | Styles for class label text | +| composition | Styles for composition arrow head and arrow line | +| aggregation | Styles for aggregation arrow head and arrow line(dashed or solid) | +| dependency | Styles for dependency arrow head and arrow line | + +#### Sample stylesheet + +```scss +body { + background: white; +} + +g.classGroup text { + fill: $nodeBorder; + stroke: none; + font-family: 'trebuchet ms', verdana, arial; + font-family: var(--mermaid-font-family); + font-size: 10px; + + .title { + font-weight: bolder; + } +} + +g.classGroup rect { + fill: $nodeBkg; + stroke: $nodeBorder; +} + +g.classGroup line { + stroke: $nodeBorder; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: $nodeBkg; + opacity: 0.5; +} + +.classLabel .label { + fill: $nodeBorder; + font-size: 10px; +} + +.relation { + stroke: $nodeBorder; + stroke-width: 1; + fill: none; +} + +@mixin composition { + fill: $nodeBorder; + stroke: $nodeBorder; + stroke-width: 1; +} + +#compositionStart { + @include composition; +} + +#compositionEnd { + @include composition; +} + +@mixin aggregation { + fill: $nodeBkg; + stroke: $nodeBorder; + stroke-width: 1; +} + +#aggregationStart { + @include aggregation; +} + +#aggregationEnd { + @include aggregation; +} + +#dependencyStart { + @include composition; +} + +#dependencyEnd { + @include composition; +} + +#extensionStart { + @include composition; +} + +#extensionEnd { + @include composition; +} +``` + +## Configuration + +`Coming soon!` diff --git a/docs/syntax/entityRelationshipDiagram.md b/docs/syntax/entityRelationshipDiagram.md new file mode 100644 index 000000000..fef7b6fee --- /dev/null +++ b/docs/syntax/entityRelationshipDiagram.md @@ -0,0 +1,299 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md](../../packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md). + +# Entity Relationship Diagrams + +> An entity–relationship model (or ER model) describes interrelated things of interest in a specific domain of knowledge. A basic ER model is composed of entity types (which classify the things of interest) and specifies relationships that can exist between entities (instances of those entity types). Wikipedia. + +Note that practitioners of ER modelling almost always refer to _entity types_ simply as _entities_. For example the `CUSTOMER` entity _type_ would be referred to simply as the `CUSTOMER` entity. This is so common it would be inadvisable to do anything else, but technically an entity is an abstract _instance_ of an entity type, and this is what an ER diagram shows - abstract instances, and the relationships between them. This is why entities are always named using singular nouns. + +Mermaid can render ER diagrams + +```mermaid-example +erDiagram + CUSTOMER ||--o{ ORDER : places + ORDER ||--|{ LINE-ITEM : contains + CUSTOMER }|..|{ DELIVERY-ADDRESS : uses +``` + +```mermaid +erDiagram + CUSTOMER ||--o{ ORDER : places + ORDER ||--|{ LINE-ITEM : contains + CUSTOMER }|..|{ DELIVERY-ADDRESS : uses +``` + +Entity names are often capitalised, although there is no accepted standard on this, and it is not required in Mermaid. + +Relationships between entities are represented by lines with end markers representing cardinality. Mermaid uses the most popular crow's foot notation. The crow's foot intuitively conveys the possibility of many instances of the entity that it connects to. + +ER diagrams can be used for various purposes, ranging from abstract logical models devoid of any implementation details, through to physical models of relational database tables. It can be useful to include attribute definitions on ER diagrams to aid comprehension of the purpose and meaning of entities. These do not necessarily need to be exhaustive; often a small subset of attributes is enough. Mermaid allows them to be defined in terms of their _type_ and _name_. + +```mermaid-example +erDiagram + CUSTOMER ||--o{ ORDER : places + CUSTOMER { + string name + string custNumber + string sector + } + ORDER ||--|{ LINE-ITEM : contains + ORDER { + int orderNumber + string deliveryAddress + } + LINE-ITEM { + string productCode + int quantity + float pricePerUnit + } +``` + +```mermaid +erDiagram + CUSTOMER ||--o{ ORDER : places + CUSTOMER { + string name + string custNumber + string sector + } + ORDER ||--|{ LINE-ITEM : contains + ORDER { + int orderNumber + string deliveryAddress + } + LINE-ITEM { + string productCode + int quantity + float pricePerUnit + } +``` + +When including attributes on ER diagrams, you must decide whether to include foreign keys as attributes. This probably depends on how closely you are trying to represent relational table structures. If your diagram is a _logical_ model which is not meant to imply a relational implementation, then it is better to leave these out because the associative relationships already convey the way that entities are associated. For example, a JSON data structure can implement a one-to-many relationship without the need for foreign key properties, using arrays. Similarly an object-oriented programming language may use pointers or references to collections. Even for models that are intended for relational implementation, you might decide that inclusion of foreign key attributes duplicates information already portrayed by the relationships, and does not add meaning to entities. Ultimately, it's your choice. + +## Syntax + +### Entities and Relationships + +Mermaid syntax for ER diagrams is compatible with PlantUML, with an extension to label the relationship. Each statement consists of the following parts: + + <first-entity> [<relationship> <second-entity> : <relationship-label>] + +Where: + +- `first-entity` is the name of an entity. Names must begin with an alphabetic character and may also contain digits, hyphens, and underscores. +- `relationship` describes the way that both entities inter-relate. See below. +- `second-entity` is the name of the other entity. +- `relationship-label` describes the relationship from the perspective of the first entity. + +For example: + + PROPERTY ||--|{ ROOM : contains + +This statement can be read as _a property contains one or more rooms, and a room is part of one and only one property_. You can see that the label here is from the first entity's perspective: a property contains a room, but a room does not contain a property. When considered from the perspective of the second entity, the equivalent label is usually very easy to infer. (Some ER diagrams label relationships from both perspectives, but this is not supported here, and is usually superfluous). + +Only the `first-entity` part of a statement is mandatory. This makes it possible to show an entity with no relationships, which can be useful during iterative construction of diagrams. If any other parts of a statement are specified, then all parts are mandatory. + +### Relationship Syntax + +The `relationship` part of each statement can be broken down into three sub-components: + +- the cardinality of the first entity with respect to the second, +- whether the relationship confers identity on a 'child' entity +- the cardinality of the second entity with respect to the first + +Cardinality is a property that describes how many elements of another entity can be related to the entity in question. In the above example a `PROPERTY` can have one or more `ROOM` instances associated to it, whereas a `ROOM` can only be associated with one `PROPERTY`. In each cardinality marker there are two characters. The outermost character represents a maximum value, and the innermost character represents a minimum value. The table below summarises possible cardinalities. + +| Value (left) | Value (right) | Meaning | +| :----------: | :-----------: | ----------------------------- | +| `\|o` | `o\|` | Zero or one | +| `\|\|` | `\|\|` | Exactly one | +| `}o` | `o{` | Zero or more (no upper limit) | +| `}\|` | `\|{` | One or more (no upper limit) | + +**Aliases** + +| Value (left) | Value (right) | Alias for | +| :----------: | :-----------: | ------------ | +| one or zero | one or zero | Zero or one | +| zero or one | zero or one | Zero or one | +| one or more | one or more | One or more | +| one or many | one or many | One or more | +| many(1) | many(1) | One or more | +| 1+ | 1+ | One or more | +| zero or more | zero or more | Zero or more | +| zero or many | zero or many | Zero or more | +| many(0) | many(1) | Zero or more | +| 0+ | 0+ | Zero or more | +| only one | only one | Exactly one | +| 1 | 1 | Exactly one | + +### Identification + +Relationships may be classified as either _identifying_ or _non-identifying_ and these are rendered with either solid or dashed lines respectively. This is relevant when one of the entities in question can not have independent existence without the other. For example a firm that insures people to drive cars might need to store data on `NAMED-DRIVER`s. In modelling this we might start out by observing that a `CAR` can be driven by many `PERSON` instances, and a `PERSON` can drive many `CAR`s - both entities can exist without the other, so this is a non-identifying relationship that we might specify in Mermaid as: `PERSON }|..|{ CAR : "driver"`. Note the two dots in the middle of the relationship that will result in a dashed line being drawn between the two entities. But when this many-to-many relationship is resolved into two one-to-many relationships, we observe that a `NAMED-DRIVER` cannot exist without both a `PERSON` and a `CAR` - the relationships become identifying and would be specified using hyphens, which translate to a solid line: + +**Aliases** + +| Value | Alias for | +| :-----------: | :---------------: | +| to | _identifying_ | +| optionally to | _non-identifying_ | + +```mermaid-example +erDiagram + CAR ||--o{ NAMED-DRIVER : allows + PERSON ||--o{ NAMED-DRIVER : is +``` + +```mermaid +erDiagram + CAR ||--o{ NAMED-DRIVER : allows + PERSON ||--o{ NAMED-DRIVER : is +``` + +### Attributes + +Attributes can be defined for entities by specifying the entity name followed by a block containing multiple `type name` pairs, where a block is delimited by an opening `{` and a closing `}`. For example: + +```mermaid-example +erDiagram + CAR ||--o{ NAMED-DRIVER : allows + CAR { + string registrationNumber + string make + string model + } + PERSON ||--o{ NAMED-DRIVER : is + PERSON { + string firstName + string lastName + int age + } +``` + +```mermaid +erDiagram + CAR ||--o{ NAMED-DRIVER : allows + CAR { + string registrationNumber + string make + string model + } + PERSON ||--o{ NAMED-DRIVER : is + PERSON { + string firstName + string lastName + int age + } +``` + +The attributes are rendered inside the entity boxes: + +```mermaid-example +erDiagram + CAR ||--o{ NAMED-DRIVER : allows + CAR { + string registrationNumber + string make + string model + } + PERSON ||--o{ NAMED-DRIVER : is + PERSON { + string firstName + string lastName + int age + } +``` + +```mermaid +erDiagram + CAR ||--o{ NAMED-DRIVER : allows + CAR { + string registrationNumber + string make + string model + } + PERSON ||--o{ NAMED-DRIVER : is + PERSON { + string firstName + string lastName + int age + } +``` + +The `type` and `name` values must begin with an alphabetic character and may contain digits, hyphens or underscores. Other than that, there are no restrictions, and there is no implicit set of valid data types. + +#### Attribute Keys and Comments + +Attributes may also have a `key` or comment defined. Keys can be "PK" or "FK", for Primary Key or Foreign Key. And a `comment` is defined by double quotes at the end of an attribute. Comments themselves cannot have double-quote characters in them. + +```mermaid-example +erDiagram + CAR ||--o{ NAMED-DRIVER : allows + CAR { + string allowedDriver FK "The license of the allowed driver" + string registrationNumber + string make + string model + } + PERSON ||--o{ NAMED-DRIVER : is + PERSON { + string driversLicense PK "The license #" + string firstName + string lastName + int age + } + MANUFACTURER only one to zero or more CAR +``` + +```mermaid +erDiagram + CAR ||--o{ NAMED-DRIVER : allows + CAR { + string allowedDriver FK "The license of the allowed driver" + string registrationNumber + string make + string model + } + PERSON ||--o{ NAMED-DRIVER : is + PERSON { + string driversLicense PK "The license #" + string firstName + string lastName + int age + } + MANUFACTURER only one to zero or more CAR +``` + +### Other Things + +- If you want the relationship label to be more than one word, you must use double quotes around the phrase +- If you don't want a label at all on a relationship, you must use an empty double-quoted string + +## Styling + +### Config options + +For simple color customization: + +| Name | Used as | +| :------- | :------------------------------------------------------------------- | +| `fill` | Background color of an entity or attribute | +| `stroke` | Border color of an entity or attribute, line color of a relationship | + +### Classes used + +The following CSS class selectors are available for richer styling: + +| Selector | Description | +| :------------------------- | :---------------------------------------------------- | +| `.er.attributeBoxEven` | The box containing attributes on even-numbered rows | +| `.er.attributeBoxOdd` | The box containing attributes on odd-numbered rows | +| `.er.entityBox` | The box representing an entity | +| `.er.entityLabel` | The label for an entity | +| `.er.relationshipLabel` | The label for a relationship | +| `.er.relationshipLabelBox` | The box surrounding a relationship label | +| `.er.relationshipLine` | The line representing a relationship between entities | diff --git a/docs/syntax/examples.md b/docs/syntax/examples.md new file mode 100644 index 000000000..ae2ba0ed3 --- /dev/null +++ b/docs/syntax/examples.md @@ -0,0 +1,299 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/examples.md](../../packages/mermaid/src/docs/syntax/examples.md). + +# Examples + +This page contains a collection of examples of diagrams and charts that can be created through mermaid and its myriad applications. + +**If you wish to learn how to support mermaid on your webpage, read the [Beginner's Guide](../config/usage.md?id=usage).** + +**If you wish to learn about mermaid's syntax, Read the [Diagram Syntax](../syntax/flowchart.md?id=flowcharts-basic-syntax) section.** + +## Basic Pie Chart + +```mermaid-example +pie title NETFLIX + "Time spent looking for movie" : 90 + "Time spent watching it" : 10 +``` + +```mermaid +pie title NETFLIX + "Time spent looking for movie" : 90 + "Time spent watching it" : 10 +``` + +```mermaid-example +pie title What Voldemort doesn't have? + "FRIENDS" : 2 + "FAMILY" : 3 + "NOSE" : 45 +``` + +```mermaid +pie title What Voldemort doesn't have? + "FRIENDS" : 2 + "FAMILY" : 3 + "NOSE" : 45 +``` + +## Basic sequence diagram + +```mermaid-example +sequenceDiagram + Alice ->> Bob: Hello Bob, how are you? + Bob-->>John: How about you John? + Bob--x Alice: I am good thanks! + Bob-x John: I am good thanks! + Note right of John: Bob thinks a long<br/>long time, so long<br/>that the text does<br/>not fit on a row. + + Bob-->Alice: Checking with John... + Alice->John: Yes... John, how are you? +``` + +```mermaid +sequenceDiagram + Alice ->> Bob: Hello Bob, how are you? + Bob-->>John: How about you John? + Bob--x Alice: I am good thanks! + Bob-x John: I am good thanks! + Note right of John: Bob thinks a long<br/>long time, so long<br/>that the text does<br/>not fit on a row. + + Bob-->Alice: Checking with John... + Alice->John: Yes... John, how are you? +``` + +## Basic flowchart + +```mermaid-example +graph LR + A[Square Rect] -- Link text --> B((Circle)) + A --> C(Round Rect) + B --> D{Rhombus} + C --> D +``` + +```mermaid +graph LR + A[Square Rect] -- Link text --> B((Circle)) + A --> C(Round Rect) + B --> D{Rhombus} + C --> D +``` + +## Larger flowchart with some styling + +```mermaid-example +graph TB + sq[Square shape] --> ci((Circle shape)) + + subgraph A + od>Odd shape]-- Two line<br/>edge comment --> ro + di{Diamond with <br/> line break} -.-> ro(Rounded<br>square<br>shape) + di==>ro2(Rounded square shape) + end + + %% Notice that no text in shape are added here instead that is appended further down + e --> od3>Really long text with linebreak<br>in an Odd shape] + + %% Comments after double percent signs + e((Inner / circle<br>and some odd <br>special characters)) --> f(,.?!+-*ز) + + cyr[Cyrillic]-->cyr2((Circle shape Начало)); + + classDef green fill:#9f6,stroke:#333,stroke-width:2px; + classDef orange fill:#f96,stroke:#333,stroke-width:4px; + class sq,e green + class di orange +``` + +```mermaid +graph TB + sq[Square shape] --> ci((Circle shape)) + + subgraph A + od>Odd shape]-- Two line<br/>edge comment --> ro + di{Diamond with <br/> line break} -.-> ro(Rounded<br>square<br>shape) + di==>ro2(Rounded square shape) + end + + %% Notice that no text in shape are added here instead that is appended further down + e --> od3>Really long text with linebreak<br>in an Odd shape] + + %% Comments after double percent signs + e((Inner / circle<br>and some odd <br>special characters)) --> f(,.?!+-*ز) + + cyr[Cyrillic]-->cyr2((Circle shape Начало)); + + classDef green fill:#9f6,stroke:#333,stroke-width:2px; + classDef orange fill:#f96,stroke:#333,stroke-width:4px; + class sq,e green + class di orange +``` + +## SequenceDiagram: Loops, alt and opt + +```mermaid-example +sequenceDiagram + loop Daily query + Alice->>Bob: Hello Bob, how are you? + alt is sick + Bob->>Alice: Not so good :( + else is well + Bob->>Alice: Feeling fresh like a daisy + end + + opt Extra response + Bob->>Alice: Thanks for asking + end + end +``` + +```mermaid +sequenceDiagram + loop Daily query + Alice->>Bob: Hello Bob, how are you? + alt is sick + Bob->>Alice: Not so good :( + else is well + Bob->>Alice: Feeling fresh like a daisy + end + + opt Extra response + Bob->>Alice: Thanks for asking + end + end +``` + +## SequenceDiagram: Message to self in loop + +```mermaid-example +sequenceDiagram + participant Alice + participant Bob + Alice->>John: Hello John, how are you? + loop Healthcheck + John->>John: Fight against hypochondria + end + Note right of John: Rational thoughts<br/>prevail... + John-->>Alice: Great! + John->>Bob: How about you? + Bob-->>John: Jolly good! +``` + +```mermaid +sequenceDiagram + participant Alice + participant Bob + Alice->>John: Hello John, how are you? + loop Healthcheck + John->>John: Fight against hypochondria + end + Note right of John: Rational thoughts<br/>prevail... + John-->>Alice: Great! + John->>Bob: How about you? + Bob-->>John: Jolly good! +``` + +## Sequence Diagram: Blogging app service communication + +```mermaid-example +sequenceDiagram + participant web as Web Browser + participant blog as Blog Service + participant account as Account Service + participant mail as Mail Service + participant db as Storage + + Note over web,db: The user must be logged in to submit blog posts + web->>+account: Logs in using credentials + account->>db: Query stored accounts + db->>account: Respond with query result + + alt Credentials not found + account->>web: Invalid credentials + else Credentials found + account->>-web: Successfully logged in + + Note over web,db: When the user is authenticated, they can now submit new posts + web->>+blog: Submit new post + blog->>db: Store post data + + par Notifications + blog--)mail: Send mail to blog subscribers + blog--)db: Store in-site notifications + and Response + blog-->>-web: Successfully posted + end + end + +``` + +```mermaid +sequenceDiagram + participant web as Web Browser + participant blog as Blog Service + participant account as Account Service + participant mail as Mail Service + participant db as Storage + + Note over web,db: The user must be logged in to submit blog posts + web->>+account: Logs in using credentials + account->>db: Query stored accounts + db->>account: Respond with query result + + alt Credentials not found + account->>web: Invalid credentials + else Credentials found + account->>-web: Successfully logged in + + Note over web,db: When the user is authenticated, they can now submit new posts + web->>+blog: Submit new post + blog->>db: Store post data + + par Notifications + blog--)mail: Send mail to blog subscribers + blog--)db: Store in-site notifications + and Response + blog-->>-web: Successfully posted + end + end + +``` + +## A commit flow diagram. + +```mermaid-example +gitGraph: + commit "Ashish" + branch newbranch + checkout newbranch + commit id:"1111" + commit tag:"test" + checkout main + commit type: HIGHLIGHT + commit + merge newbranch + commit + branch b2 + commit +``` + +```mermaid +gitGraph: + commit "Ashish" + branch newbranch + checkout newbranch + commit id:"1111" + commit tag:"test" + checkout main + commit type: HIGHLIGHT + commit + merge newbranch + commit + branch b2 + commit +``` diff --git a/docs/syntax/flowchart.md b/docs/syntax/flowchart.md new file mode 100644 index 000000000..234f46236 --- /dev/null +++ b/docs/syntax/flowchart.md @@ -0,0 +1,992 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/flowchart.md](../../packages/mermaid/src/docs/syntax/flowchart.md). + +# Flowcharts - Basic Syntax + +All Flowcharts are composed of **nodes**, the geometric shapes and **edges**, the arrows or lines. The mermaid code defines the way that these **nodes** and **edges** are made and interact. + +It can also accommodate different arrow types, multi directional arrows, and linking to and from subgraphs. + +> **Important note**: Do not type the word "end" as a Flowchart node. Capitalize all or any one the letters to keep the flowchart from breaking, i.e, "End" or "END". Or you can apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). + +### A node (default) + +```mermaid-example +flowchart LR + id +``` + +```mermaid +flowchart LR + id +``` + +> **Note** The id is what is displayed in the box. + +### A node with text + +It is also possible to set text in the box that differs from the id. If this is done several times, it is the last text +found for the node that will be used. Also if you define edges for the node later on, you can omit text definitions. The +one previously defined will be used when rendering the box. + +```mermaid-example +flowchart LR + id1[This is the text in the box] +``` + +```mermaid +flowchart LR + id1[This is the text in the box] +``` + +## Graph + +This statement declares the direction of the Flowchart. + +This declares the flowchart is oriented from top to bottom (`TD` or `TB`). + +```mermaid-example +flowchart TD + Start --> Stop +``` + +```mermaid +flowchart TD + Start --> Stop +``` + +This declares the flowchart is oriented from left to right (`LR`). + +```mermaid-example +flowchart LR + Start --> Stop +``` + +```mermaid +flowchart LR + Start --> Stop +``` + +## Flowchart Orientation + +Possible FlowChart orientations are: + +- TB - top to bottom +- TD - top-down/ same as top to bottom +- BT - bottom to top +- RL - right to left +- LR - left to right + +## Node shapes + +### A node with round edges + +```mermaid-example +flowchart LR + id1(This is the text in the box) +``` + +```mermaid +flowchart LR + id1(This is the text in the box) +``` + +### A stadium-shaped node + +```mermaid-example +flowchart LR + id1([This is the text in the box]) +``` + +```mermaid +flowchart LR + id1([This is the text in the box]) +``` + +### A node in a subroutine shape + +```mermaid-example +flowchart LR + id1[[This is the text in the box]] +``` + +```mermaid +flowchart LR + id1[[This is the text in the box]] +``` + +### A node in a cylindrical shape + +```mermaid-example +flowchart LR + id1[(Database)] +``` + +```mermaid +flowchart LR + id1[(Database)] +``` + +### A node in the form of a circle + +```mermaid-example +flowchart LR + id1((This is the text in the circle)) +``` + +```mermaid +flowchart LR + id1((This is the text in the circle)) +``` + +### A node in an asymmetric shape + +```mermaid-example +flowchart LR + id1>This is the text in the box] +``` + +```mermaid +flowchart LR + id1>This is the text in the box] +``` + +Currently only the shape above is possible and not its mirror. _This might change with future releases._ + +### A node (rhombus) + +```mermaid-example +flowchart LR + id1{This is the text in the box} +``` + +```mermaid +flowchart LR + id1{This is the text in the box} +``` + +### A hexagon node + +Code: + +```mermaid-example +flowchart LR + id1{{This is the text in the box}} +``` + +```mermaid +flowchart LR + id1{{This is the text in the box}} +``` + +Render: + +```mermaid-example +flowchart LR + id1{{This is the text in the box}} +``` + +```mermaid +flowchart LR + id1{{This is the text in the box}} +``` + +### Parallelogram + +```mermaid-example +flowchart TD + id1[/This is the text in the box/] +``` + +```mermaid +flowchart TD + id1[/This is the text in the box/] +``` + +### Parallelogram alt + +```mermaid-example +flowchart TD + id1[\This is the text in the box\] +``` + +```mermaid +flowchart TD + id1[\This is the text in the box\] +``` + +### Trapezoid + +```mermaid-example +flowchart TD + A[/Christmas\] +``` + +```mermaid +flowchart TD + A[/Christmas\] +``` + +### Trapezoid alt + +```mermaid-example +flowchart TD + B[\Go shopping/] +``` + +```mermaid +flowchart TD + B[\Go shopping/] +``` + +### Double circle + +```mermaid-example +flowchart TD + id1(((This is the text in the circle))) +``` + +```mermaid +flowchart TD + id1(((This is the text in the circle))) +``` + +## Links between nodes + +Nodes can be connected with links/edges. It is possible to have different types of links or attach a text string to a link. + +### A link with arrow head + +```mermaid-example +flowchart LR + A-->B +``` + +```mermaid +flowchart LR + A-->B +``` + +### An open link + +```mermaid-example +flowchart LR + A --- B +``` + +```mermaid +flowchart LR + A --- B +``` + +### Text on links + +```mermaid-example +flowchart LR + A-- This is the text! ---B +``` + +```mermaid +flowchart LR + A-- This is the text! ---B +``` + +or + +```mermaid-example +flowchart LR + A---|This is the text|B +``` + +```mermaid +flowchart LR + A---|This is the text|B +``` + +### A link with arrow head and text + +```mermaid-example +flowchart LR + A-->|text|B +``` + +```mermaid +flowchart LR + A-->|text|B +``` + +or + +```mermaid-example +flowchart LR + A-- text -->B +``` + +```mermaid +flowchart LR + A-- text -->B +``` + +### Dotted link + +```mermaid-example +flowchart LR + A-.->B; +``` + +```mermaid +flowchart LR + A-.->B; +``` + +### Dotted link with text + +```mermaid-example +flowchart LR + A-. text .-> B +``` + +```mermaid +flowchart LR + A-. text .-> B +``` + +### Thick link + +```mermaid-example +flowchart LR + A ==> B +``` + +```mermaid +flowchart LR + A ==> B +``` + +### Thick link with text + +```mermaid-example +flowchart LR + A == text ==> B +``` + +```mermaid +flowchart LR + A == text ==> B +``` + +### Chaining of links + +It is possible declare many links in the same line as per below: + +```mermaid-example +flowchart LR + A -- text --> B -- text2 --> C +``` + +```mermaid +flowchart LR + A -- text --> B -- text2 --> C +``` + +It is also possible to declare multiple nodes links in the same line as per below: + +```mermaid-example +flowchart LR + a --> b & c--> d +``` + +```mermaid +flowchart LR + a --> b & c--> d +``` + +You can then describe dependencies in a very expressive way. Like the one-liner below: + +```mermaid-example +flowchart TB + A & B--> C & D +``` + +```mermaid +flowchart TB + A & B--> C & D +``` + +If you describe the same diagram using the the basic syntax, it will take four lines. A +word of warning, one could go overboard with this making the flowchart harder to read in +markdown form. The Swedish word `lagom` comes to mind. It means, not too much and not too little. +This goes for expressive syntaxes as well. + +```mermaid-example +flowchart TB + A --> C + A --> D + B --> C + B --> D +``` + +```mermaid +flowchart TB + A --> C + A --> D + B --> C + B --> D +``` + +### New arrow types + +There are new types of arrows supported as per below: + +```mermaid-example +flowchart LR + A --o B + B --x C +``` + +```mermaid +flowchart LR + A --o B + B --x C +``` + +### Multi directional arrows + +There is the possibility to use multidirectional arrows. + +```mermaid-example +flowchart LR + A o--o B + B <--> C + C x--x D +``` + +```mermaid +flowchart LR + A o--o B + B <--> C + C x--x D +``` + +### Minimum length of a link + +Each node in the flowchart is ultimately assigned to a rank in the rendered +graph, i.e. to a vertical or horizontal level (depending on the flowchart +orientation), based on the nodes to which it is linked. By default, links +can span any number of ranks, but you can ask for any link to be longer +than the others by adding extra dashes in the link definition. + +In the following example, two extra dashes are added in the link from node _B_ +to node _E_, so that it spans two more ranks than regular links: + +```mermaid-example +flowchart TD + A[Start] --> B{Is it?} + B -->|Yes| C[OK] + C --> D[Rethink] + D --> B + B ---->|No| E[End] +``` + +```mermaid +flowchart TD + A[Start] --> B{Is it?} + B -->|Yes| C[OK] + C --> D[Rethink] + D --> B + B ---->|No| E[End] +``` + +> **Note** Links may still be made longer than the requested number of ranks +> by the rendering engine to accommodate other requests. + +When the link label is written in the middle of the link, the extra dashes must +be added on the right side of the link. The following example is equivalent to +the previous one: + +```mermaid-example +flowchart TD + A[Start] --> B{Is it?} + B -- Yes --> C[OK] + C --> D[Rethink] + D --> B + B -- No ----> E[End] +``` + +```mermaid +flowchart TD + A[Start] --> B{Is it?} + B -- Yes --> C[OK] + C --> D[Rethink] + D --> B + B -- No ----> E[End] +``` + +For dotted or thick links, the characters to add are equals signs or dots, +as summed up in the following table: + +| Length | 1 | 2 | 3 | +| ----------------- | :----: | :-----: | :------: | +| Normal | `---` | `----` | `-----` | +| Normal with arrow | `-->` | `--->` | `---->` | +| Thick | `===` | `====` | `=====` | +| Thick with arrow | `==>` | `===>` | `====>` | +| Dotted | `-.-` | `-..-` | `-...-` | +| Dotted with arrow | `-.->` | `-..->` | `-...->` | + +## Special characters that break syntax + +It is possible to put text within quotes in order to render more troublesome characters. As in the example below: + +```mermaid-example +flowchart LR + id1["This is the (text) in the box"] +``` + +```mermaid +flowchart LR + id1["This is the (text) in the box"] +``` + +### Entity codes to escape characters + +It is possible to escape characters using the syntax exemplified here. + +```mermaid-example + flowchart LR + A["A double quote:#quot;"] -->B["A dec char:#9829;"] +``` + +```mermaid + flowchart LR + A["A double quote:#quot;"] -->B["A dec char:#9829;"] +``` + +Numbers given are base 10, so `#` can be encoded as `#35;`. It is also supported to use HTML character names. + +## Subgraphs + + subgraph title + graph definition + end + +An example below: + +```mermaid-example +flowchart TB + c1-->a2 + subgraph one + a1-->a2 + end + subgraph two + b1-->b2 + end + subgraph three + c1-->c2 + end +``` + +```mermaid +flowchart TB + c1-->a2 + subgraph one + a1-->a2 + end + subgraph two + b1-->b2 + end + subgraph three + c1-->c2 + end +``` + +You can also set an explicit id for the subgraph. + +```mermaid-example +flowchart TB + c1-->a2 + subgraph ide1 [one] + a1-->a2 + end +``` + +```mermaid +flowchart TB + c1-->a2 + subgraph ide1 [one] + a1-->a2 + end +``` + +## flowcharts + +With the graphtype flowchart it is also possible to set edges to and from subgraphs as in the flowchart below. + +```mermaid-example +flowchart TB + c1-->a2 + subgraph one + a1-->a2 + end + subgraph two + b1-->b2 + end + subgraph three + c1-->c2 + end + one --> two + three --> two + two --> c2 +``` + +```mermaid +flowchart TB + c1-->a2 + subgraph one + a1-->a2 + end + subgraph two + b1-->b2 + end + subgraph three + c1-->c2 + end + one --> two + three --> two + two --> c2 +``` + +## Direction in subgraphs + +With the graphtype flowcharts you can use the direction statement to set the direction which the subgraph will render like in this example. + +```mermaid-example +flowchart LR + subgraph TOP + direction TB + subgraph B1 + direction RL + i1 -->f1 + end + subgraph B2 + direction BT + i2 -->f2 + end + end + A --> TOP --> B + B1 --> B2 +``` + +```mermaid +flowchart LR + subgraph TOP + direction TB + subgraph B1 + direction RL + i1 -->f1 + end + subgraph B2 + direction BT + i2 -->f2 + end + end + A --> TOP --> B + B1 --> B2 +``` + +## Interaction + +It is possible to bind a click event to a node, the click can lead to either a javascript callback or to a link which will be opened in a new browser tab. **Note**: This functionality is disabled when using `securityLevel='strict'` and enabled when using `securityLevel='loose'`. + + click nodeId callback + click nodeId call callback() + +- nodeId is the id of the node +- callback is the name of a javascript function defined on the page displaying the graph, the function will be called with the nodeId as parameter. + +Examples of tooltip usage below: + +```html +<script> + const callback = function () { + alert('A callback was triggered'); + }; +</script> +``` + +The tooltip text is surrounded in double quotes. The styles of the tooltip are set by the class `.mermaidTooltip`. + +```mermaid-example +flowchart LR + A-->B + B-->C + C-->D + click A callback "Tooltip for a callback" + click B "https://www.github.com" "This is a tooltip for a link" + click A call callback() "Tooltip for a callback" + click B href "https://www.github.com" "This is a tooltip for a link" +``` + +```mermaid +flowchart LR + A-->B + B-->C + C-->D + click A callback "Tooltip for a callback" + click B "https://www.github.com" "This is a tooltip for a link" + click A call callback() "Tooltip for a callback" + click B href "https://www.github.com" "This is a tooltip for a link" +``` + +> **Success** The tooltip functionality and the ability to link to urls are available from version 0.5.2. + +?> Due to limitations with how Docsify handles JavaScript callback functions, an alternate working demo for the above code can be viewed at [this jsfiddle](https://jsfiddle.net/s37cjoau/3/). + +Links are opened in the same browser tab/window by default. It is possible to change this by adding a link target to the click definition (`_self`, `_blank`, `_parent` and `_top` are supported): + +```mermaid-example +flowchart LR + A-->B + B-->C + C-->D + D-->E + click A "https://www.github.com" _blank + click B "https://www.github.com" "Open this in a new tab" _blank + click C href "https://www.github.com" _blank + click D href "https://www.github.com" "Open this in a new tab" _blank +``` + +```mermaid +flowchart LR + A-->B + B-->C + C-->D + D-->E + click A "https://www.github.com" _blank + click B "https://www.github.com" "Open this in a new tab" _blank + click C href "https://www.github.com" _blank + click D href "https://www.github.com" "Open this in a new tab" _blank +``` + +Beginner's tip—a full example using interactive links in a html context: + +```html +<body> + <pre class="mermaid"> + flowchart LR + A-->B + B-->C + C-->D + click A callback "Tooltip" + click B "https://www.github.com" "This is a link" + click C call callback() "Tooltip" + click D href "https://www.github.com" "This is a link" + </pre> + + <script> + const callback = function () { + alert('A callback was triggered'); + }; + const config = { + startOnLoad: true, + flowchart: { useMaxWidth: true, htmlLabels: true, curve: 'cardinal' }, + securityLevel: 'loose', + }; + mermaid.initialize(config); + </script> +</body> +``` + +### Comments + +Comments can be entered within a flow diagram, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any flow syntax + +```mermaid-example +flowchart LR +%% this is a comment A -- text --> B{node} + A -- text --> B -- text2 --> C +``` + +```mermaid +flowchart LR +%% this is a comment A -- text --> B{node} + A -- text --> B -- text2 --> C +``` + +## Styling and classes + +### Styling links + +It is possible to style links. For instance, you might want to style a link that is going backwards in the flow. As links +have no ids in the same way as nodes, some other way of deciding what style the links should be attached to is required. +Instead of ids, the order number of when the link was defined in the graph is used, or use default to apply to all links. +In the example below the style defined in the linkStyle statement will belong to the fourth link in the graph: + + linkStyle 3 stroke:#ff3,stroke-width:4px,color:red; + +### Styling line curves + +It is possible to style the type of curve used for lines between items, if the default method does not meet your needs. +Available curve styles include `basis`, `bump`, `linear`, `monotoneX`, `monotoneY`, `natural`, `step`, `stepAfter`, +and `stepBefore`. + +In this example, a left-to-right graph uses the `stepBefore` curve style: + + %%{ init: { 'flowchart': { 'curve': 'stepBefore' } } }%% + graph LR + +For a full list of available curves, including an explanation of custom curves, refer to +the [Shapes](https://github.com/d3/d3-shape/blob/main/README.md#curves) documentation in the +[d3-shape](https://github.com/d3/d3-shape/) project. + +### Styling a node + +It is possible to apply specific styles such as a thicker border or a different background color to a node. + +```mermaid-example +flowchart LR + id1(Start)-->id2(Stop) + style id1 fill:#f9f,stroke:#333,stroke-width:4px + style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5 +``` + +```mermaid +flowchart LR + id1(Start)-->id2(Stop) + style id1 fill:#f9f,stroke:#333,stroke-width:4px + style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5 +``` + +#### Classes + +More convenient than defining the style every time is to define a class of styles and attach this class to the nodes that +should have a different look. + +a class definition looks like the example below: + + classDef className fill:#f9f,stroke:#333,stroke-width:4px; + +Attachment of a class to a node is done as per below: + + class nodeId1 className; + +It is also possible to attach a class to a list of nodes in one statement: + + class nodeId1,nodeId2 className; + +A shorter form of adding a class is to attach the classname to the node using the `:::`operator as per below: + +```mermaid-example +flowchart LR + A:::someclass --> B + classDef someclass fill:#f96 +``` + +```mermaid +flowchart LR + A:::someclass --> B + classDef someclass fill:#f96 +``` + +### Css classes + +It is also possible to predefine classes in css styles that can be applied from the graph definition as in the example +below: + +**Example style** + +```html +<style> + .cssClass > rect { + fill: #ff0000; + stroke: #ffff00; + stroke-width: 4px; + } +</style> +``` + +**Example definition** + +```mermaid-example +flowchart LR + A-->B[AAA<span>BBB</span>] + B-->D + class A cssClass +``` + +```mermaid +flowchart LR + A-->B[AAA<span>BBB</span>] + B-->D + class A cssClass +``` + +### Default class + +If a class is named default it will be assigned to all classes without specific class definitions. + + classDef default fill:#f9f,stroke:#333,stroke-width:4px; + +## Basic support for fontawesome + +It is possible to add icons from fontawesome. + +The icons are accessed via the syntax fa:#icon class name#. + +```mermaid-example +flowchart TD + B["fab:fa-twitter for peace"] + B-->C[fa:fa-ban forbidden] + B-->D(fa:fa-spinner) + B-->E(A fa:fa-camera-retro perhaps?) +``` + +```mermaid +flowchart TD + B["fab:fa-twitter for peace"] + B-->C[fa:fa-ban forbidden] + B-->D(fa:fa-spinner) + B-->E(A fa:fa-camera-retro perhaps?) +``` + +?> Mermaid is now only compatible with Font Awesome versions 4 and 5. Check that you are using the correct version of Font Awesome. + +## Graph declarations with spaces between vertices and link and without semicolon + +- In graph declarations, the statements also can now end without a semicolon. After release 0.2.16, ending a graph statement with semicolon is just optional. So the below graph declaration is also valid along with the old declarations of the graph. + +- A single space is allowed between vertices and the link. However there should not be any space between a vertex and its text and a link and its text. The old syntax of graph declaration will also work and hence this new feature is optional and is introduced to improve readability. + +Below is the new declaration of the graph edges which is also valid along with the old declaration of the graph edges. + +```mermaid-example +flowchart LR + A[Hard edge] -->|Link text| B(Round edge) + B --> C{Decision} + C -->|One| D[Result one] + C -->|Two| E[Result two] +``` + +```mermaid +flowchart LR + A[Hard edge] -->|Link text| B(Round edge) + B --> C{Decision} + C -->|One| D[Result one] + C -->|Two| E[Result two] +``` + +## Configuration... + +Is it possible to adjust the width of the rendered flowchart. + +This is done by defining **mermaid.flowchartConfig** or by the CLI to use a JSON file with the configuration. How to use the CLI is described in the mermaidCLI page. +mermaid.flowchartConfig can be set to a JSON string with config parameters or the corresponding object. + +```javascript +mermaid.flowchartConfig = { + width: 100% +} +``` diff --git a/docs/syntax/gantt.md b/docs/syntax/gantt.md new file mode 100644 index 000000000..b20b6b776 --- /dev/null +++ b/docs/syntax/gantt.md @@ -0,0 +1,423 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/gantt.md](../../packages/mermaid/src/docs/syntax/gantt.md). + +# Gantt diagrams + +> A Gantt chart is a type of bar chart, first developed by Karol Adamiecki in 1896, and independently by Henry Gantt in the 1910s, that illustrates a project schedule and the amount of time it would take for any one project to finish. Gantt charts illustrate number of days between the start and finish dates of the terminal elements and summary elements of a project. + +## A note to users + +Gantt Charts will record each scheduled task as one continuous bar that extends from the left to the right. The x axis represents time and the y records the different tasks and the order in which they are to be completed. + +It is important to remember that when a date, day, or collection of dates specific to a task are "excluded", the Gantt Chart will accommodate those changes by extending an equal number of days, towards the right, not by creating a gap inside the task. +As shown here ![](./img/Gantt-excluded-days-within.png) + +However, if the excluded dates are between two tasks that are set to start consecutively, the excluded dates will be skipped graphically and left blank, and the following task will begin after the end of the excluded dates. +As shown here ![](./img/Gantt-long-weekend-look.png) + +A Gantt chart is useful for tracking the amount of time it would take before a project is finished, but it can also be used to graphically represent "non-working days", with a few tweaks. + +Mermaid can render Gantt diagrams as SVG, PNG or a MarkDown link that can be pasted into docs. + +```mermaid-example +gantt + title A Gantt Diagram + dateFormat YYYY-MM-DD + section Section + A task :a1, 2014-01-01, 30d + Another task :after a1 , 20d + section Another + Task in sec :2014-01-12 , 12d + another task : 24d +``` + +```mermaid +gantt + title A Gantt Diagram + dateFormat YYYY-MM-DD + section Section + A task :a1, 2014-01-01, 30d + Another task :after a1 , 20d + section Another + Task in sec :2014-01-12 , 12d + another task : 24d +``` + +## Syntax + +```mermaid-example +gantt + dateFormat YYYY-MM-DD + title Adding GANTT diagram functionality to mermaid + excludes weekends + %% (`excludes` accepts specific dates in YYYY-MM-DD format, days of the week ("sunday") or "weekends", but not the word "weekdays".) + + section A section + Completed task :done, des1, 2014-01-06,2014-01-08 + Active task :active, des2, 2014-01-09, 3d + Future task : des3, after des2, 5d + Future task2 : des4, after des3, 5d + + section Critical tasks + Completed task in the critical line :crit, done, 2014-01-06,24h + Implement parser and jison :crit, done, after des1, 2d + Create tests for parser :crit, active, 3d + Future task in critical line :crit, 5d + Create tests for renderer :2d + Add to mermaid :1d + Functionality added :milestone, 2014-01-25, 0d + + section Documentation + Describe gantt syntax :active, a1, after des1, 3d + Add gantt diagram to demo page :after a1 , 20h + Add another diagram to demo page :doc1, after a1 , 48h + + section Last section + Describe gantt syntax :after doc1, 3d + Add gantt diagram to demo page :20h + Add another diagram to demo page :48h +``` + +```mermaid +gantt + dateFormat YYYY-MM-DD + title Adding GANTT diagram functionality to mermaid + excludes weekends + %% (`excludes` accepts specific dates in YYYY-MM-DD format, days of the week ("sunday") or "weekends", but not the word "weekdays".) + + section A section + Completed task :done, des1, 2014-01-06,2014-01-08 + Active task :active, des2, 2014-01-09, 3d + Future task : des3, after des2, 5d + Future task2 : des4, after des3, 5d + + section Critical tasks + Completed task in the critical line :crit, done, 2014-01-06,24h + Implement parser and jison :crit, done, after des1, 2d + Create tests for parser :crit, active, 3d + Future task in critical line :crit, 5d + Create tests for renderer :2d + Add to mermaid :1d + Functionality added :milestone, 2014-01-25, 0d + + section Documentation + Describe gantt syntax :active, a1, after des1, 3d + Add gantt diagram to demo page :after a1 , 20h + Add another diagram to demo page :doc1, after a1 , 48h + + section Last section + Describe gantt syntax :after doc1, 3d + Add gantt diagram to demo page :20h + Add another diagram to demo page :48h +``` + +It is possible to set multiple dependencies separated by space: + +```mermaid-example + gantt + apple :a, 2017-07-20, 1w + banana :crit, b, 2017-07-23, 1d + cherry :active, c, after b a, 1d +``` + +```mermaid + gantt + apple :a, 2017-07-20, 1w + banana :crit, b, 2017-07-23, 1d + cherry :active, c, after b a, 1d +``` + +### Title + +The `title` is an _optional_ string to be displayed at the top of the Gantt chart to describe the chart as a whole. + +### Section statements + +You can divide the chart into various sections, for example to separate different parts of a project like development and documentation. + +To do so, start a line with the `section` keyword and give it a name. (Note that unlike with the [title for the entire chart](#title), this name is _required_. + +### Milestones + +You can add milestones to the diagrams. Milestones differ from tasks as they represent a single instant in time and are identified by the keyword `milestone`. Below is an example on how to use milestones. As you may notice, the exact location of the milestone is determined by the initial date for the milestone and the "duration" of the task this way: _initial date_+_duration_/2. + +```mermaid-example +gantt +dateFormat HH:mm +axisFormat %H:%M +Initial milestone : milestone, m1, 17:49,2min +taska2 : 10min +taska3 : 5min +Final milestone : milestone, m2, 18:14, 2min +``` + +```mermaid +gantt +dateFormat HH:mm +axisFormat %H:%M +Initial milestone : milestone, m1, 17:49,2min +taska2 : 10min +taska3 : 5min +Final milestone : milestone, m2, 18:14, 2min +``` + +## Setting dates + +`dateFormat` defines the format of the date **input** of your gantt elements. How these dates are represented in the rendered chart **output** are defined by `axisFormat`. + +### Input date format + +The default input date format is `YYYY-MM-DD`. You can define your custom `dateFormat`. + + dateFormat YYYY-MM-DD + +The following formatting options are supported: + + Input Example Description: + YYYY 2014 4 digit year + YY 14 2 digit year + Q 1..4 Quarter of year. Sets month to first month in quarter. + M MM 1..12 Month number + MMM MMMM January..Dec Month name in locale set by moment.locale() + D DD 1..31 Day of month + Do 1st..31st Day of month with ordinal + DDD DDDD 1..365 Day of year + X 1410715640.579 Unix timestamp + x 1410715640579 Unix ms timestamp + H HH 0..23 24 hour time + h hh 1..12 12 hour time used with a A. + a A am pm Post or ante meridiem + m mm 0..59 Minutes + s ss 0..59 Seconds + S 0..9 Tenths of a second + SS 0..99 Hundreds of a second + SSS 0..999 Thousandths of a second + Z ZZ +12:00 Offset from UTC as +-HH:mm, +-HHmm, or Z + +More info in: https://momentjs.com/docs/#/parsing/string-format/ + +### Output date format on the axis + +The default output date format is `YYYY-MM-DD`. You can define your custom `axisFormat`, like `2020-Q1` for the first quarter of the year 2020. + + axisFormat %Y-%m-%d + +The following formatting strings are supported: + + %a - abbreviated weekday name. + %A - full weekday name. + %b - abbreviated month name. + %B - full month name. + %c - date and time, as "%a %b %e %H:%M:%S %Y". + %d - zero-padded day of the month as a decimal number [01,31]. + %e - space-padded day of the month as a decimal number [ 1,31]; equivalent to %_d. + %H - hour (24-hour clock) as a decimal number [00,23]. + %I - hour (12-hour clock) as a decimal number [01,12]. + %j - day of the year as a decimal number [001,366]. + %m - month as a decimal number [01,12]. + %M - minute as a decimal number [00,59]. + %L - milliseconds as a decimal number [000, 999]. + %p - either AM or PM. + %S - second as a decimal number [00,61]. + %U - week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. + %w - weekday as a decimal number [0(Sunday),6]. + %W - week number of the year (Monday as the first day of the week) as a decimal number [00,53]. + %x - date, as "%m/%d/%Y". + %X - time, as "%H:%M:%S". + %y - year without century as a decimal number [00,99]. + %Y - year with century as a decimal number. + %Z - time zone offset, such as "-0700". + %% - a literal "%" character. + +More info in: <https://github.com/d3/d3-time-format/tree/v4.0.0#locale_format> + +### Axis ticks + +The default output ticks are auto. You can custom your `tickInterval`, like `1day` or `1week`. + + tickInterval 1day + +The pattern is: + + /^([1-9][0-9]*)(minute|hour|day|week|month)$/ + +More info in: <https://github.com/d3/d3-time#interval_every> + +## Comments + +Comments can be entered within a gantt chart, which will be ignored by the parser. Comments need to be on their own line and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any diagram syntax + +```mermaid-example +gantt + title A Gantt Diagram + %% this is a comment + dateFormat YYYY-MM-DD + section Section + A task :a1, 2014-01-01, 30d + Another task :after a1 , 20d + section Another + Task in sec :2014-01-12 , 12d + another task : 24d + +``` + +```mermaid +gantt + title A Gantt Diagram + %% this is a comment + dateFormat YYYY-MM-DD + section Section + A task :a1, 2014-01-01, 30d + Another task :after a1 , 20d + section Another + Task in sec :2014-01-12 , 12d + another task : 24d + +``` + +## Styling + +Styling of the Gantt diagram is done by defining a number of CSS classes. During rendering, these classes are extracted from the file located at src/diagrams/gantt/styles.js + +### Classes used + +| Class | Description | +| --------------------- | ---------------------------------------------------------------------- | +| grid.tick | Styling for the Grid Lines | +| grid.path | Styling for the Grid's borders | +| .taskText | Task Text Styling | +| .taskTextOutsideRight | Styling for Task Text that exceeds the activity bar towards the right. | +| .taskTextOutsideLeft | Styling for Task Text that exceeds the activity bar, towards the left. | +| todayMarker | Toggle and Styling for the "Today Marker" | + +### Sample stylesheet + +```css +.grid .tick { + stroke: lightgrey; + opacity: 0.3; + shape-rendering: crispEdges; +} +.grid path { + stroke-width: 0; +} + +#tag { + color: white; + background: #fa283d; + width: 150px; + position: absolute; + display: none; + padding: 3px 6px; + margin-left: -80px; + font-size: 11px; +} + +#tag:before { + border: solid transparent; + content: ' '; + height: 0; + left: 50%; + margin-left: -5px; + position: absolute; + width: 0; + border-width: 10px; + border-bottom-color: #fa283d; + top: -20px; +} +.taskText { + fill: white; + text-anchor: middle; +} +.taskTextOutsideRight { + fill: black; + text-anchor: start; +} +.taskTextOutsideLeft { + fill: black; + text-anchor: end; +} +``` + +## Today marker + +You can style or hide the marker for the current date. To style it, add a value for the `todayMarker` key. + + todayMarker stroke-width:5px,stroke:#0f0,opacity:0.5 + +To hide the marker, set `todayMarker` to `off`. + + todayMarker off + +## Configuration + +It is possible to adjust the margins for rendering the gantt diagram. + +This is done by defining the `ganttConfig` part of the configuration object. +How to use the CLI is described in the [mermaidCLI](../config/mermaidCLI.md) page. + +mermaid.ganttConfig can be set to a JSON string with config parameters or the corresponding object. + +```javascript +mermaid.ganttConfig = { + titleTopMargin: 25, + barHeight: 20, + barGap: 4, + topPadding: 75, + sidePadding: 75, +}; +``` + +### Possible configuration params: + +| Param | Description | Default value | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------- | +| mirrorActor | Turns on/off the rendering of actors below the diagram as well as above it | false | +| bottomMarginAdj | Adjusts how far down the graph ended. Wide borders styles with css could generate unwanted clipping which is why this config param exists. | 1 | + +## Interaction + +It is possible to bind a click event to a task. The click can lead to either a javascript callback or to a link which will be opened in the current browser tab. **Note**: This functionality is disabled when using `securityLevel='strict'` and enabled when using `securityLevel='loose'`. + + click taskId call callback(arguments) + click taskId href URL + +- taskId is the id of the task +- callback is the name of a javascript function defined on the page displaying the graph, the function will be called with the taskId as the parameter if no other arguments are specified. + +Beginner's tip—a full example using interactive links in an html context: + +```html +<body> + <pre class="mermaid"> + gantt + dateFormat YYYY-MM-DD + + section Clickable + Visit mermaidjs :active, cl1, 2014-01-07, 3d + Print arguments :cl2, after cl1, 3d + Print task :cl3, after cl2, 3d + + click cl1 href "https://mermaidjs.github.io/" + click cl2 call printArguments("test1", "test2", test3) + click cl3 call printTask() + </pre> + + <script> + const printArguments = function (arg1, arg2, arg3) { + alert('printArguments called with arguments: ' + arg1 + ', ' + arg2 + ', ' + arg3); + }; + const printTask = function (taskId) { + alert('taskId: ' + taskId); + }; + const config = { + startOnLoad: true, + securityLevel: 'loose', + }; + mermaid.initialize(config); + </script> +</body> +``` diff --git a/docs/syntax/gitgraph.md b/docs/syntax/gitgraph.md new file mode 100644 index 000000000..cd1a3f12a --- /dev/null +++ b/docs/syntax/gitgraph.md @@ -0,0 +1,1729 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/gitgraph.md](../../packages/mermaid/src/docs/syntax/gitgraph.md). + +# Gitgraph Diagrams + +> A Git Graph is a pictorial representation of git commits and git actions(commands) on various branches. + +These kind of diagram are particularly helpful to developers and devops teams to share their Git branching strategies. For example, it makes it easier to visualize how git flow works. + +Mermaid can render Git diagrams + +```mermaid-example + gitGraph + commit + commit + branch develop + checkout develop + commit + commit + checkout main + merge develop + commit + commit +``` + +```mermaid + gitGraph + commit + commit + branch develop + checkout develop + commit + commit + checkout main + merge develop + commit + commit +``` + +In Mermaid, we support the basic git operations like: + +- _commit_ : Representing a new commit on the current branch. +- _branch_ : To create & switch to a new branch, setting it as the current branch. +- _checkout_ : To checking out an existing branch and setting it as the current branch. +- _merge_ : To merge an existing branch onto the current branch. + +With the help of these key git commands, you will be able to draw a gitgraph in Mermaid very easily and quickly. +Entity names are often capitalized, although there is no accepted standard on this, and it is not required in Mermaid. + +## Syntax + +Mermaid syntax for a gitgraph is very straight-forward and simple. It follows a declarative-approach, where each commit is drawn on the timeline in the diagram, in order of its occurrences/presence in code. Basically, it follows the insertion order for each command. + +First thing you do is to declare your diagram type using the **gitgraph** keyword. This `gitgraph` keyword, tells Mermaid that you wish to draw a gitgraph, and parse the diagram code accordingly. + +Each gitgraph, is initialized with **_main_** branch. So unless you create a different branch, by-default the commits will go to the main branch. This is driven with how git works, where in the beginning you always start with the main branch (formerly called as **_master_** branch). And by-default, `main` branch is set as your **_current branch_**. + +You make use of **_commit_** keyword to register a commit on the current branch. Let see how this works: + +A simple gitgraph showing three commits on the default (**_main_**) branch: + +```mermaid-example + gitGraph + commit + commit + commit +``` + +```mermaid + gitGraph + commit + commit + commit +``` + +If you look closely at the previous example, you can see the default branch `main` along with three commits. Also, notice that by default each commit has been given a unique & random ID. What if you wanted to give your own custom ID to a commit? Yes, it is possible to do that with Mermaid. + +### Adding custom commit id + +For a given commit you may specify a custom ID at the time of declaring it using the `id` attribute, followed by `:` and your custom value within a `""` quote. For example: `commit id: "your_custom_id"` + +Let us see how this works with the help of the following diagram: + +```mermaid-example + gitGraph + commit id: "Alpha" + commit id: "Beta" + commit id: "Gamma" +``` + +```mermaid + gitGraph + commit id: "Alpha" + commit id: "Beta" + commit id: "Gamma" +``` + +In this example, we have given our custom IDs to the commits. + +### Modifying commit type + +In Mermaid, a commit can be of three type, which render a bit different in the diagram. These types are: + +- `NORMAL` : Default commit type. Represented by a solid circle in the diagram +- `REVERSE` : To emphasize a commit as a reverse commit. Represented by a crossed solid circle in the diagram. +- `HIGHLIGHT` : To highlight a particular commit in the diagram. Represented by a filled rectangle in the diagram. + +For a given commit you may specify its type at the time of declaring it using the `type` attribute, followed by `:` and the required type option discussed above. For example: `commit type: HIGHLIGHT` + +NOTE: If no commit type is specified, `NORMAL` is picked as default. + +Let us see how these different commit type look with the help of the following diagram: + +```mermaid-example + gitGraph + commit id: "Normal" + commit + commit id: "Reverse" type: REVERSE + commit + commit id: "Highlight" type: HIGHLIGHT + commit +``` + +```mermaid + gitGraph + commit id: "Normal" + commit + commit id: "Reverse" type: REVERSE + commit + commit id: "Highlight" type: HIGHLIGHT + commit +``` + +In this example, we have specified different types to each commit. Also, see how we have included both `id` and `type` together at the time of declaring our commits. + +### Adding Tags + +For a given commit you may decorate it as a **tag**, similar to the concept of tags or release version in git world. +You can attach a custom tag at the time of declaring a commit using the `tag` attribute, followed by `:` and your custom value within `""` quote. For example: `commit tag: "your_custom_tag"` + +Let us see how this works with the help of the following diagram: + +```mermaid-example + gitGraph + commit + commit id: "Normal" tag: "v1.0.0" + commit + commit id: "Reverse" type: REVERSE tag: "RC_1" + commit + commit id: "Highlight" type: HIGHLIGHT tag: "8.8.4" + commit +``` + +```mermaid + gitGraph + commit + commit id: "Normal" tag: "v1.0.0" + commit + commit id: "Reverse" type: REVERSE tag: "RC_1" + commit + commit id: "Highlight" type: HIGHLIGHT tag: "8.8.4" + commit +``` + +In this example, we have given custom tags to the commits. Also, see how we have combined all these attributes in a single commit declaration. You can mix-match these attributes as you like. + +### Create a new branch + +In Mermaid, in-order to create a new branch, you make use of the `branch` keyword. You also need to provide a name of the new branch. The name has to be unique and cannot be that of an existing branch. A branch name that could be confused for a keyword must be quoted within `""`. Usage examples: `branch develop`, `branch "cherry-pick"` + +When Mermaid, reads the `branch` keyword, it creates a new branch and sets it as the current branch. Equivalent to you creating a new branch and checking it out in Git world. + +Let see this in an example: + +```mermaid-example + gitGraph + commit + commit + branch develop + commit + commit + commit +``` + +```mermaid + gitGraph + commit + commit + branch develop + commit + commit + commit +``` + +In this example, see how we started with default `main` branch, and pushed two commits on that. +Then we created the `develop` branch, and all commits afterwards are put on the `develop` branch as it became the current branch. + +### Checking out an existing branch + +In Mermaid, in order to switch to an existing branch, you make use of the `checkout` keyword. You also need to provide a name of an existing branch. If no branch is found with the given name, it will result in console error. Usage example: `checkout develop` + +When Mermaid, reads the `checkout` keyword, it finds the given branch and sets it as the current branch. Equivalent to checking out a branch in the Git world. + +Let see modify our previous example: + +```mermaid-example + gitGraph + commit + commit + branch develop + commit + commit + commit + checkout main + commit + commit +``` + +```mermaid + gitGraph + commit + commit + branch develop + commit + commit + commit + checkout main + commit + commit +``` + +In this example, see how we started with default `main` branch, and pushed two commits on that. +Then we created the `develop` branch, and all three commits afterwards are put on the `develop` branch as it became the current branch. +After this we made use of the `checkout` keyword to set the current branch as `main`, and all commit that follow are registered against the current branch, i.e. `main`. + +### Merging two branches + +In Mermaid, in order to merge or join to an existing branch, you make use of the `merge` keyword. You also need to provide the name of an existing branch to merge from. If no branch is found with the given name, it will result in console error. Also, you can only merge two separate branches, and cannot merge a branch with itself. In such case an error is throw. + +Usage example: `merge develop` + +When Mermaid, reads the `merge` keyword, it finds the given branch and its head commit (the last commit on that branch), and joins it with the head commit on the **current branch**. Each merge results in a **_merge commit_**, represented in the diagram with **filled double circle**. + +Let us modify our previous example to merge our two branches: + +```mermaid-example + gitGraph + commit + commit + branch develop + commit + commit + commit + checkout main + commit + commit + merge develop + commit + commit +``` + +```mermaid + gitGraph + commit + commit + branch develop + commit + commit + commit + checkout main + commit + commit + merge develop + commit + commit +``` + +In this example, see how we started with default `main` branch, and pushed two commits on that. +Then we created the `develop` branch, and all three commits afterwards are put on the `develop` branch as it became the current branch. +After this we made use of the `checkout` keyword to set the current branch as `main`, and all commits that follow are registered against the current branch, i.e. `main`. +After this we merge the `develop` branch onto the current branch `main`, resulting in a merge commit. +Since the current branch at this point is still `main`, the last two commits are registered against that. + +You can also decorate your merge with similar attributes as you did for the commit using: + +- `id`--> To override the default ID with custom ID +- `tag`--> To add a custom tag to your merge commit +- `type`--> To override the default shape of merge commit. Here you can use other commit type mentioned earlier. + +And you can choose to use none, some or all of these attributes together. +For example: `merge develop id: "my_custom_id" tag: "my_custom_tag" type: REVERSE` + +Let us see how this works with the help of the following diagram: + +```mermaid-example + gitGraph + commit id: "1" + commit id: "2" + branch nice_feature + checkout nice_feature + commit id: "3" + checkout main + commit id: "4" + checkout nice_feature + branch very_nice_feature + checkout very_nice_feature + commit id: "5" + checkout main + commit id: "6" + checkout nice_feature + commit id: "7" + checkout main + merge nice_feature id: "customID" tag: "customTag" type: REVERSE + checkout very_nice_feature + commit id: "8" + checkout main + commit id: "9" +``` + +```mermaid + gitGraph + commit id: "1" + commit id: "2" + branch nice_feature + checkout nice_feature + commit id: "3" + checkout main + commit id: "4" + checkout nice_feature + branch very_nice_feature + checkout very_nice_feature + commit id: "5" + checkout main + commit id: "6" + checkout nice_feature + commit id: "7" + checkout main + merge nice_feature id: "customID" tag: "customTag" type: REVERSE + checkout very_nice_feature + commit id: "8" + checkout main + commit id: "9" +``` + +### Cherry Pick commit from another branch + +Similar to how 'git' allows you to cherry-pick a commit from **another branch** onto the **current** branch, Mermaid also supports this functionality. You can also cherry-pick a commit from another branch using the `cherry-pick` keyword. + +To use the `cherry-pick` keyword, you must specify the id using the `id` attribute, followed by `:` and your desired commit id within a `""` quote. For example: + +`cherry-pick id: "your_custom_id"` + +Here, a new commit representing the cherry-pick is created on the current branch, and is visually highlighted in the diagram with a **cherry** and a tag depicting the commit id from which it is cherry-picked from. + +A few important rules to note here are: + +1. You need to provide the `id` for an existing commit to be cherry-picked. If given commit id does not exist it will result in an error. For this, make use of the `commit id:$value` format of declaring commits. See the examples from above. +2. The given commit must not exist on the current branch. The cherry-picked commit must always be a different branch than the current branch. +3. Current branch must have at least one commit, before you can cherry-pick, otherwise it will cause an error is throw. + +Let see an example: + +```mermaid-example + gitGraph + commit id: "ZERO" + branch develop + commit id:"A" + checkout main + commit id:"ONE" + checkout develop + commit id:"B" + checkout main + commit id:"TWO" + cherry-pick id:"A" + commit id:"THREE" + checkout develop + commit id:"C" +``` + +```mermaid + gitGraph + commit id: "ZERO" + branch develop + commit id:"A" + checkout main + commit id:"ONE" + checkout develop + commit id:"B" + checkout main + commit id:"TWO" + cherry-pick id:"A" + commit id:"THREE" + checkout develop + commit id:"C" +``` + +## Gitgraph specific configuration options + +In Mermaid, you have the option to configure the gitgraph diagram. You can configure the following options: + +- `showBranches` : Boolean, default is `true`. If set to `false`, the branches are not shown in the diagram. +- `showCommitLabel` : Boolean, default is `true`. If set to `false`, the commit labels are not shown in the diagram. +- `mainBranchName` : String, default is `main`. The name of the default/root branch. +- `mainBranchOrder` : Position of the main branch in the list of branches. default is `0`, meaning, by default `main` branch is the first in the order. + +Let's look at them one by one. + +## Hiding Branch names and lines + +Sometimes you may want to hide the branch names and lines from the diagram. You can do this by using the `showBranches` keyword. By default its value is `true`. You can set it to `false` using directives. + +Usage example: + +```mermaid-example +%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': false}} }%% + gitGraph + commit + branch hotfix + checkout hotfix + commit + branch develop + checkout develop + commit id:"ash" tag:"abc" + branch featureB + checkout featureB + commit type:HIGHLIGHT + checkout main + checkout hotfix + commit type:NORMAL + checkout develop + commit type:REVERSE + checkout featureB + commit + checkout main + merge hotfix + checkout featureB + commit + checkout develop + branch featureA + commit + checkout develop + merge hotfix + checkout featureA + commit + checkout featureB + commit + checkout develop + merge featureA + branch release + checkout release + commit + checkout main + commit + checkout release + merge main + checkout develop + merge release +``` + +```mermaid +%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': false}} }%% + gitGraph + commit + branch hotfix + checkout hotfix + commit + branch develop + checkout develop + commit id:"ash" tag:"abc" + branch featureB + checkout featureB + commit type:HIGHLIGHT + checkout main + checkout hotfix + commit type:NORMAL + checkout develop + commit type:REVERSE + checkout featureB + commit + checkout main + merge hotfix + checkout featureB + commit + checkout develop + branch featureA + commit + checkout develop + merge hotfix + checkout featureA + commit + checkout featureB + commit + checkout develop + merge featureA + branch release + checkout release + commit + checkout main + commit + checkout release + merge main + checkout develop + merge release +``` + +## Commit labels Layout: Rotated or Horizontal + +Mermaid supports two types of commit labels layout. The default layout is **rotated**, which means the labels are placed below the commit circle, rotated at 45 degrees for better readability. This is particularly useful for commits with long labels. + +The other option is **horizontal**, which means the labels are placed below the commit circle centred horizontally, and are not rotated. This is particularly useful for commits with short labels. + +You can change the layout of the commit labels by using the `rotateCommitLabel` keyword in the directive. It defaults to `true`, which means the commit labels are rotated. + +Usage example: Rotated commit labels + +```mermaid-example +%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'rotateCommitLabel': true}} }%% +gitGraph + commit id: "feat(api): ..." + commit id: "a" + commit id: "b" + commit id: "fix(client): .extra long label.." + branch c2 + commit id: "feat(modules): ..." + commit id: "test(client): ..." + checkout main + commit id: "fix(api): ..." + commit id: "ci: ..." + branch b1 + commit + branch b2 + commit +``` + +```mermaid +%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'rotateCommitLabel': true}} }%% +gitGraph + commit id: "feat(api): ..." + commit id: "a" + commit id: "b" + commit id: "fix(client): .extra long label.." + branch c2 + commit id: "feat(modules): ..." + commit id: "test(client): ..." + checkout main + commit id: "fix(api): ..." + commit id: "ci: ..." + branch b1 + commit + branch b2 + commit +``` + +Usage example: Horizontal commit labels + +```mermaid-example +%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'rotateCommitLabel': false}} }%% +gitGraph + commit id: "feat(api): ..." + commit id: "a" + commit id: "b" + commit id: "fix(client): .extra long label.." + branch c2 + commit id: "feat(modules): ..." + commit id: "test(client): ..." + checkout main + commit id: "fix(api): ..." + commit id: "ci: ..." + branch b1 + commit + branch b2 + commit +``` + +```mermaid +%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'rotateCommitLabel': false}} }%% +gitGraph + commit id: "feat(api): ..." + commit id: "a" + commit id: "b" + commit id: "fix(client): .extra long label.." + branch c2 + commit id: "feat(modules): ..." + commit id: "test(client): ..." + checkout main + commit id: "fix(api): ..." + commit id: "ci: ..." + branch b1 + commit + branch b2 + commit +``` + +## Hiding commit labels + +Sometimes you may want to hide the commit labels from the diagram. You can do this by using the `showCommitLabel` keyword. By default its value is `true`. You can set it to `false` using directives. + +Usage example: + +```mermaid-example +%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': false,'showCommitLabel': false}} }%% + gitGraph + commit + branch hotfix + checkout hotfix + commit + branch develop + checkout develop + commit id:"ash" + branch featureB + checkout featureB + commit type:HIGHLIGHT + checkout main + checkout hotfix + commit type:NORMAL + checkout develop + commit type:REVERSE + checkout featureB + commit + checkout main + merge hotfix + checkout featureB + commit + checkout develop + branch featureA + commit + checkout develop + merge hotfix + checkout featureA + commit + checkout featureB + commit + checkout develop + merge featureA + branch release + checkout release + commit + checkout main + commit + checkout release + merge main + checkout develop + merge release +``` + +```mermaid +%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': false,'showCommitLabel': false}} }%% + gitGraph + commit + branch hotfix + checkout hotfix + commit + branch develop + checkout develop + commit id:"ash" + branch featureB + checkout featureB + commit type:HIGHLIGHT + checkout main + checkout hotfix + commit type:NORMAL + checkout develop + commit type:REVERSE + checkout featureB + commit + checkout main + merge hotfix + checkout featureB + commit + checkout develop + branch featureA + commit + checkout develop + merge hotfix + checkout featureA + commit + checkout featureB + commit + checkout develop + merge featureA + branch release + checkout release + commit + checkout main + commit + checkout release + merge main + checkout develop + merge release +``` + +## Customizing main branch name + +Sometimes you may want to customize the name of the main/default branch. You can do this by using the `mainBranchName` keyword. By default its value is `main`. You can set it to any string using directives. + +Usage example: + +```mermaid-example +%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true, 'showCommitLabel':true,'mainBranchName': 'MetroLine1'}} }%% + gitGraph + commit id:"NewYork" + commit id:"Dallas" + branch MetroLine2 + commit id:"LosAngeles" + commit id:"Chicago" + commit id:"Houston" + branch MetroLine3 + commit id:"Phoenix" + commit type: HIGHLIGHT id:"Denver" + commit id:"Boston" + checkout MetroLine1 + commit id:"Atlanta" + merge MetroLine3 + commit id:"Miami" + commit id:"Washington" + merge MetroLine2 tag:"MY JUNCTION" + commit id:"Boston" + commit id:"Detroit" + commit type:REVERSE id:"SanFrancisco" +``` + +```mermaid +%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true, 'showCommitLabel':true,'mainBranchName': 'MetroLine1'}} }%% + gitGraph + commit id:"NewYork" + commit id:"Dallas" + branch MetroLine2 + commit id:"LosAngeles" + commit id:"Chicago" + commit id:"Houston" + branch MetroLine3 + commit id:"Phoenix" + commit type: HIGHLIGHT id:"Denver" + commit id:"Boston" + checkout MetroLine1 + commit id:"Atlanta" + merge MetroLine3 + commit id:"Miami" + commit id:"Washington" + merge MetroLine2 tag:"MY JUNCTION" + commit id:"Boston" + commit id:"Detroit" + commit type:REVERSE id:"SanFrancisco" +``` + +Look at the imaginary railroad map created using Mermaid. Here, we have changed the default main branch name to `MetroLine1`. + +## Customizing branch ordering + +In Mermaid, by default the branches are shown in the order of their definition or appearance in the diagram code. + +Sometimes you may want to customize the order of the branches. You can do this by using the `order` keyword next the branch definition. You can set it to a positive number. + +Mermaid follows the given precedence order of the `order` keyword. + +- Main branch is always shown first as it has default order value of `0`. (unless its order is modified and changed from `0` using the `mainBranchOrder` keyword in the config) +- Next, All branches without an `order` are shown in the order of their appearance in the diagram code. +- Next, All branches with an `order` are shown in the order of their `order` value. + +To fully control the order of all the branches, you must define `order` for all the branches. + +Usage example: + +```mermaid-example +%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true, 'showCommitLabel':true}} }%% + gitGraph + commit + branch test1 order: 3 + branch test2 order: 2 + branch test3 order: 1 + +``` + +```mermaid +%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true, 'showCommitLabel':true}} }%% + gitGraph + commit + branch test1 order: 3 + branch test2 order: 2 + branch test3 order: 1 + +``` + +Look at the diagram, all the branches are following the order defined. + +Usage example: + +```mermaid-example +%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true, 'showCommitLabel':true,'mainBranchOrder': 2}} }%% + gitGraph + commit + branch test1 order: 3 + branch test2 + branch test3 + branch test4 order: 1 + +``` + +```mermaid +%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true, 'showCommitLabel':true,'mainBranchOrder': 2}} }%% + gitGraph + commit + branch test1 order: 3 + branch test2 + branch test3 + branch test4 order: 1 + +``` + +Look at the diagram, here, all the branches without a specified order are drawn in their order of definition. +Then, `test4` branch is drawn because the order of `1`. +Then, `main` branch is drawn because the order of `2`. +And, lastly `test1`is drawn because the order of `3`. + +NOTE: Because we have overridden the `mainBranchOrder` to `2`, the `main` branch is not drawn in the beginning, instead follows the ordering. + +Here, we have changed the default main branch name to `MetroLine1`. + +## Themes + +Mermaid supports a bunch of pre-defined themes which you can use to find the right one for you. PS: you can actually override an existing theme's variable to get your own custom theme going. Learn more about theming your diagram [here](../config/theming.md). + +The following are the different pre-defined theme options: + +- `base` +- `forest` +- `dark` +- `default` +- `neutral` + +**NOTE**: To change theme you can either use the `initialize` call or _directives_. Learn more about [directives](../config/directives.md) +Let's put them to use, and see how our sample diagram looks in different themes: + +### Base Theme + +```mermaid-example +%%{init: { 'logLevel': 'debug', 'theme': 'base' } }%% + gitGraph + commit + branch hotfix + checkout hotfix + commit + branch develop + checkout develop + commit id:"ash" tag:"abc" + branch featureB + checkout featureB + commit type:HIGHLIGHT + checkout main + checkout hotfix + commit type:NORMAL + checkout develop + commit type:REVERSE + checkout featureB + commit + checkout main + merge hotfix + checkout featureB + commit + checkout develop + branch featureA + commit + checkout develop + merge hotfix + checkout featureA + commit + checkout featureB + commit + checkout develop + merge featureA + branch release + checkout release + commit + checkout main + commit + checkout release + merge main + checkout develop + merge release +``` + +```mermaid +%%{init: { 'logLevel': 'debug', 'theme': 'base' } }%% + gitGraph + commit + branch hotfix + checkout hotfix + commit + branch develop + checkout develop + commit id:"ash" tag:"abc" + branch featureB + checkout featureB + commit type:HIGHLIGHT + checkout main + checkout hotfix + commit type:NORMAL + checkout develop + commit type:REVERSE + checkout featureB + commit + checkout main + merge hotfix + checkout featureB + commit + checkout develop + branch featureA + commit + checkout develop + merge hotfix + checkout featureA + commit + checkout featureB + commit + checkout develop + merge featureA + branch release + checkout release + commit + checkout main + commit + checkout release + merge main + checkout develop + merge release +``` + +### Forest Theme + +```mermaid-example +%%{init: { 'logLevel': 'debug', 'theme': 'forest' } }%% + gitGraph + commit + branch hotfix + checkout hotfix + commit + branch develop + checkout develop + commit id:"ash" tag:"abc" + branch featureB + checkout featureB + commit type:HIGHLIGHT + checkout main + checkout hotfix + commit type:NORMAL + checkout develop + commit type:REVERSE + checkout featureB + commit + checkout main + merge hotfix + checkout featureB + commit + checkout develop + branch featureA + commit + checkout develop + merge hotfix + checkout featureA + commit + checkout featureB + commit + checkout develop + merge featureA + branch release + checkout release + commit + checkout main + commit + checkout release + merge main + checkout develop + merge release +``` + +```mermaid +%%{init: { 'logLevel': 'debug', 'theme': 'forest' } }%% + gitGraph + commit + branch hotfix + checkout hotfix + commit + branch develop + checkout develop + commit id:"ash" tag:"abc" + branch featureB + checkout featureB + commit type:HIGHLIGHT + checkout main + checkout hotfix + commit type:NORMAL + checkout develop + commit type:REVERSE + checkout featureB + commit + checkout main + merge hotfix + checkout featureB + commit + checkout develop + branch featureA + commit + checkout develop + merge hotfix + checkout featureA + commit + checkout featureB + commit + checkout develop + merge featureA + branch release + checkout release + commit + checkout main + commit + checkout release + merge main + checkout develop + merge release +``` + +### Default Theme + +```mermaid-example +%%{init: { 'logLevel': 'debug', 'theme': 'default' } }%% + gitGraph + commit type:HIGHLIGHT + branch hotfix + checkout hotfix + commit + branch develop + checkout develop + commit id:"ash" tag:"abc" + branch featureB + checkout featureB + commit type:HIGHLIGHT + checkout main + checkout hotfix + commit type:NORMAL + checkout develop + commit type:REVERSE + checkout featureB + commit + checkout main + merge hotfix + checkout featureB + commit + checkout develop + branch featureA + commit + checkout develop + merge hotfix + checkout featureA + commit + checkout featureB + commit + checkout develop + merge featureA + branch release + checkout release + commit + checkout main + commit + checkout release + merge main + checkout develop + merge release +``` + +```mermaid +%%{init: { 'logLevel': 'debug', 'theme': 'default' } }%% + gitGraph + commit type:HIGHLIGHT + branch hotfix + checkout hotfix + commit + branch develop + checkout develop + commit id:"ash" tag:"abc" + branch featureB + checkout featureB + commit type:HIGHLIGHT + checkout main + checkout hotfix + commit type:NORMAL + checkout develop + commit type:REVERSE + checkout featureB + commit + checkout main + merge hotfix + checkout featureB + commit + checkout develop + branch featureA + commit + checkout develop + merge hotfix + checkout featureA + commit + checkout featureB + commit + checkout develop + merge featureA + branch release + checkout release + commit + checkout main + commit + checkout release + merge main + checkout develop + merge release +``` + +### Dark Theme + +```mermaid-example +%%{init: { 'logLevel': 'debug', 'theme': 'dark' } }%% + gitGraph + commit + branch hotfix + checkout hotfix + commit + branch develop + checkout develop + commit id:"ash" tag:"abc" + branch featureB + checkout featureB + commit type:HIGHLIGHT + checkout main + checkout hotfix + commit type:NORMAL + checkout develop + commit type:REVERSE + checkout featureB + commit + checkout main + merge hotfix + checkout featureB + commit + checkout develop + branch featureA + commit + checkout develop + merge hotfix + checkout featureA + commit + checkout featureB + commit + checkout develop + merge featureA + branch release + checkout release + commit + checkout main + commit + checkout release + merge main + checkout develop + merge release +``` + +```mermaid +%%{init: { 'logLevel': 'debug', 'theme': 'dark' } }%% + gitGraph + commit + branch hotfix + checkout hotfix + commit + branch develop + checkout develop + commit id:"ash" tag:"abc" + branch featureB + checkout featureB + commit type:HIGHLIGHT + checkout main + checkout hotfix + commit type:NORMAL + checkout develop + commit type:REVERSE + checkout featureB + commit + checkout main + merge hotfix + checkout featureB + commit + checkout develop + branch featureA + commit + checkout develop + merge hotfix + checkout featureA + commit + checkout featureB + commit + checkout develop + merge featureA + branch release + checkout release + commit + checkout main + commit + checkout release + merge main + checkout develop + merge release +``` + +### Neutral Theme + +```mermaid-example +%%{init: { 'logLevel': 'debug', 'theme': 'neutral' } }%% + gitGraph + commit + branch hotfix + checkout hotfix + commit + branch develop + checkout develop + commit id:"ash" tag:"abc" + branch featureB + checkout featureB + commit type:HIGHLIGHT + checkout main + checkout hotfix + commit type:NORMAL + checkout develop + commit type:REVERSE + checkout featureB + commit + checkout main + merge hotfix + checkout featureB + commit + checkout develop + branch featureA + commit + checkout develop + merge hotfix + checkout featureA + commit + checkout featureB + commit + checkout develop + merge featureA + branch release + checkout release + commit + checkout main + commit + checkout release + merge main + checkout develop + merge release +``` + +```mermaid +%%{init: { 'logLevel': 'debug', 'theme': 'neutral' } }%% + gitGraph + commit + branch hotfix + checkout hotfix + commit + branch develop + checkout develop + commit id:"ash" tag:"abc" + branch featureB + checkout featureB + commit type:HIGHLIGHT + checkout main + checkout hotfix + commit type:NORMAL + checkout develop + commit type:REVERSE + checkout featureB + commit + checkout main + merge hotfix + checkout featureB + commit + checkout develop + branch featureA + commit + checkout develop + merge hotfix + checkout featureA + commit + checkout featureB + commit + checkout develop + merge featureA + branch release + checkout release + commit + checkout main + commit + checkout release + merge main + checkout develop + merge release +``` + +## Customize using Theme Variables + +Mermaid allows you to customize your diagram using theme variables which govern the look and feel of various elements of the diagram. + +For understanding let us take a sample diagram with theme `default`, the default values of the theme variables is picked automatically from the theme. Later on we will see how to override the default values of the theme variables. + +See how the default theme is used to set the colors for the branches: + +```mermaid-example +%%{init: { 'logLevel': 'debug', 'theme': 'default' } }%% + gitGraph + commit + branch develop + commit tag:"v1.0.0" + commit + checkout main + commit type: HIGHLIGHT + commit + merge develop + commit + branch featureA + commit +``` + +```mermaid +%%{init: { 'logLevel': 'debug', 'theme': 'default' } }%% + gitGraph + commit + branch develop + commit tag:"v1.0.0" + commit + checkout main + commit type: HIGHLIGHT + commit + merge develop + commit + branch featureA + commit +``` + +> #### IMPORTANT: +> +> Mermaid supports the theme variables to override the default values for **up to 8 branches**, i.e., you can set the color/styling of up to 8 branches using theme variables. After this threshold of 8 branches, the theme variables are reused in the cyclic manner, i.e. the 9th branch will use the color/styling of the 1st branch, or the branch at index position '8' will use the color/styling of the branch at index position '0'. +> _More on this in the next section. See examples on **Customizing branch label colors** below_ + +### Customizing branch colors + +You can customize the branch colors using the `git0` to `git7` theme variables. Mermaid allows you to set the colors for up-to 8 branches, where `git0` variable will drive the value of the first branch, `git1` will drive the value of the second branch and so on. + +NOTE: Default values for these theme variables are picked from the selected theme. If you want to override the default values, you can use the `initialize` call to add your custom theme variable values. + +Example: + +Now let's override the default values for the `git0` to `git3` variables: + +```mermaid-example + %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { + 'git0': '#ff0000', + 'git1': '#00ff00', + 'git2': '#0000ff', + 'git3': '#ff00ff', + 'git4': '#00ffff', + 'git5': '#ffff00', + 'git6': '#ff00ff', + 'git7': '#00ffff' + } } }%% + gitGraph + commit + branch develop + commit tag:"v1.0.0" + commit + checkout main + commit type: HIGHLIGHT + commit + merge develop + commit + branch featureA + commit + +``` + +```mermaid + %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { + 'git0': '#ff0000', + 'git1': '#00ff00', + 'git2': '#0000ff', + 'git3': '#ff00ff', + 'git4': '#00ffff', + 'git5': '#ffff00', + 'git6': '#ff00ff', + 'git7': '#00ffff' + } } }%% + gitGraph + commit + branch develop + commit tag:"v1.0.0" + commit + checkout main + commit type: HIGHLIGHT + commit + merge develop + commit + branch featureA + commit + +``` + +See how the branch colors are changed to the values specified in the theme variables. + +### Customizing branch label colors + +You can customize the branch label colors using the `gitBranchLabel0` to `gitBranchLabel7` theme variables. Mermaid allows you to set the colors for up-to 8 branches, where `gitBranchLabel0` variable will drive the value of the first branch label, `gitBranchLabel1` will drive the value of the second branch label and so on. + +Lets see how the default theme is used to set the colors for the branch labels: + +Now let's override the default values for the `gitBranchLabel0` to `gitBranchLabel2` variables: + +```mermaid-example + %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { + 'gitBranchLabel0': '#ffffff', + 'gitBranchLabel1': '#ffffff', + 'gitBranchLabel2': '#ffffff', + 'gitBranchLabel3': '#ffffff', + 'gitBranchLabel4': '#ffffff', + 'gitBranchLabel5': '#ffffff', + 'gitBranchLabel6': '#ffffff', + 'gitBranchLabel7': '#ffffff', + 'gitBranchLabel8': '#ffffff', + 'gitBranchLabel9': '#ffffff' + } } }%% + gitGraph + checkout main + branch branch1 + branch branch2 + branch branch3 + branch branch4 + branch branch5 + branch branch6 + branch branch7 + branch branch8 + branch branch9 + checkout branch1 + commit +``` + +```mermaid + %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { + 'gitBranchLabel0': '#ffffff', + 'gitBranchLabel1': '#ffffff', + 'gitBranchLabel2': '#ffffff', + 'gitBranchLabel3': '#ffffff', + 'gitBranchLabel4': '#ffffff', + 'gitBranchLabel5': '#ffffff', + 'gitBranchLabel6': '#ffffff', + 'gitBranchLabel7': '#ffffff', + 'gitBranchLabel8': '#ffffff', + 'gitBranchLabel9': '#ffffff' + } } }%% + gitGraph + checkout main + branch branch1 + branch branch2 + branch branch3 + branch branch4 + branch branch5 + branch branch6 + branch branch7 + branch branch8 + branch branch9 + checkout branch1 + commit +``` + +Here, you can see that `branch8` and `branch9` colors and the styles are being picked from branch at index position `0` (`main`) and `1`(`branch1`) respectively, i.e., **branch themeVariables are repeated cyclically**. + +### Customizing Commit colors + +You can customize commit using the `commitLabelColor` and `commitLabelBackground` theme variables for changes in the commit label color and background color respectively. + +Example: +Now let's override the default values for the `commitLabelColor` to `commitLabelBackground` variables: + +```mermaid-example + %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { + 'commitLabelColor': '#ff0000', + 'commitLabelBackground': '#00ff00' + } } }%% + gitGraph + commit + branch develop + commit tag:"v1.0.0" + commit + checkout main + commit type: HIGHLIGHT + commit + merge develop + commit + branch featureA + commit + +``` + +```mermaid + %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { + 'commitLabelColor': '#ff0000', + 'commitLabelBackground': '#00ff00' + } } }%% + gitGraph + commit + branch develop + commit tag:"v1.0.0" + commit + checkout main + commit type: HIGHLIGHT + commit + merge develop + commit + branch featureA + commit + +``` + +See how the commit label color and background color are changed to the values specified in the theme variables. + +### Customizing Commit Label Font Size + +You can customize commit using the `commitLabelFontSize` theme variables for changing in the font soze of the commit label . + +Example: +Now let's override the default values for the `commitLabelFontSize` variable: + +```mermaid-example + %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { + 'commitLabelColor': '#ff0000', + 'commitLabelBackground': '#00ff00', + 'commitLabelFontSize': '16px' + } } }%% + gitGraph + commit + branch develop + commit tag:"v1.0.0" + commit + checkout main + commit type: HIGHLIGHT + commit + merge develop + commit + branch featureA + commit + +``` + +```mermaid + %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { + 'commitLabelColor': '#ff0000', + 'commitLabelBackground': '#00ff00', + 'commitLabelFontSize': '16px' + } } }%% + gitGraph + commit + branch develop + commit tag:"v1.0.0" + commit + checkout main + commit type: HIGHLIGHT + commit + merge develop + commit + branch featureA + commit + +``` + +See how the commit label font size changed. + +### Customizing Tag Label Font Size + +You can customize commit using the `tagLabelFontSize` theme variables for changing in the font soze of the tag label . + +Example: +Now let's override the default values for the `tagLabelFontSize` variable: + +```mermaid-example + %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { + 'commitLabelColor': '#ff0000', + 'commitLabelBackground': '#00ff00', + 'tagLabelFontSize': '16px' + } } }%% + gitGraph + commit + branch develop + commit tag:"v1.0.0" + commit + checkout main + commit type: HIGHLIGHT + commit + merge develop + commit + branch featureA + commit + +``` + +```mermaid + %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { + 'commitLabelColor': '#ff0000', + 'commitLabelBackground': '#00ff00', + 'tagLabelFontSize': '16px' + } } }%% + gitGraph + commit + branch develop + commit tag:"v1.0.0" + commit + checkout main + commit type: HIGHLIGHT + commit + merge develop + commit + branch featureA + commit + +``` + +See how the tag label font size changed. + +### Customizing Tag colors + +You can customize tag using the `tagLabelColor`,`tagLabelBackground` and `tagLabelBorder` theme variables for changes in the tag label color,tag label background color and tag label border respectively. +Example: +Now let's override the default values for the `tagLabelColor`, `tagLabelBackground` and to `tagLabelBorder` variables: + +```mermaid-example + %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { + 'tagLabelColor': '#ff0000', + 'tagLabelBackground': '#00ff00', + 'tagLabelBorder': '#0000ff' + } } }%% + gitGraph + commit + branch develop + commit tag:"v1.0.0" + commit + checkout main + commit type: HIGHLIGHT + commit + merge develop + commit + branch featureA + commit + +``` + +```mermaid + %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { + 'tagLabelColor': '#ff0000', + 'tagLabelBackground': '#00ff00', + 'tagLabelBorder': '#0000ff' + } } }%% + gitGraph + commit + branch develop + commit tag:"v1.0.0" + commit + checkout main + commit type: HIGHLIGHT + commit + merge develop + commit + branch featureA + commit + +``` + +See how the tag colors are changed to the values specified in the theme variables. + +### Customizing Highlight commit colors + +You can customize the highlight commit colors in relation to the branch it is on using the `gitInv0` to `gitInv7` theme variables. Mermaid allows you to set the colors for up-to 8 branches specific highlight commit, where `gitInv0` variable will drive the value of the first branch's highlight commits, `gitInv1` will drive the value of the second branch's highlight commit label and so on. + +Example: + +Now let's override the default values for the `git0` to `git3` variables: + +```mermaid-example + %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { + 'gitInv0': '#ff0000' + } } }%% + gitGraph + commit + branch develop + commit tag:"v1.0.0" + commit + checkout main + commit type: HIGHLIGHT + commit + merge develop + commit + branch featureA + commit + +``` + +```mermaid + %%{init: { 'logLevel': 'debug', 'theme': 'default' , 'themeVariables': { + 'gitInv0': '#ff0000' + } } }%% + gitGraph + commit + branch develop + commit tag:"v1.0.0" + commit + checkout main + commit type: HIGHLIGHT + commit + merge develop + commit + branch featureA + commit + +``` + +See how the highlighted commit color on the first branch is changed to the value specified in the theme variable `gitInv0`. diff --git a/docs/syntax/mindmap.md b/docs/syntax/mindmap.md new file mode 100644 index 000000000..26a1065be --- /dev/null +++ b/docs/syntax/mindmap.md @@ -0,0 +1,243 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/mindmap.md](../../packages/mermaid/src/docs/syntax/mindmap.md). + +# Mindmap + +> Mindmap: This is an experimental diagram for now. The syntax and properties can change in future releases. The syntax is stable except for the icon integration which is the experimental part. + +"A mind map is a diagram used to visually organize information into a hierarchy, showing relationships among pieces of the whole. It is often created around a single concept, drawn as an image in the center of a blank page, to which associated representations of ideas such as images, words and parts of words are added. Major ideas are connected directly to the central concept, and other ideas branch out from those major ideas." Wikipedia + +### An example of a mindmap. + +```mermaid-example +mindmap + root((mindmap)) + Origins + Long history + ::icon(fa fa-book) + Popularisation + British popular psychology author Tony Buzan + Research + On effectivness<br/>and eatures + On Automatic creation + Uses + Creative techniques + Strategic planning + Argument mapping + Tools + Pen and paper + Mermaid + +``` + +```mermaid +mindmap + root((mindmap)) + Origins + Long history + ::icon(fa fa-book) + Popularisation + British popular psychology author Tony Buzan + Research + On effectivness<br/>and eatures + On Automatic creation + Uses + Creative techniques + Strategic planning + Argument mapping + Tools + Pen and paper + Mermaid + +``` + +## Syntax + +The syntax for creating Mindmaps is simple and relies on indentation for setting the levels in the hierarchy. + +In the following example you can see how there are 3 different levels. One with starting at the left of the text and another level with two rows starting at the same column, defining the node A. At the end there is one more level where the text is indented further then the previous lines defining the nodes B and C. + + mindmap + Root + A + B + C + +In summary is a simple text outline where there are one node at the root level called `Root` which has one child `A`. `A` in turn has two children `B`and `C`. In the diagram below we can see this rendered as a mindmap. + +```mermaid-example +mindmap +Root + A + B + C +``` + +```mermaid +mindmap +Root + A + B + C +``` + +In this way we can use a text outline to generate a hierarchical mindmap. + +## Different shapes + +Mermaids mindmaps can show node using different shapes. When specifying a shape for a node the syntax for the is similar to flowchart nodes, with an id followed by the shape definition and with the text within the shape delimiters. Where possible we try/will try to keep the same shapes as for flowcharts even though they are not all supported from the start. + +Mindmap can show the following shapes: + +### Square + +```mermaid-example +mindmap + id[I am a square] +``` + +```mermaid +mindmap + id[I am a square] +``` + +### Rounded square + +```mermaid-example +mindmap + id(I am a rounded square) +``` + +```mermaid +mindmap + id(I am a rounded square) +``` + +### Circle + +```mermaid-example +mindmap + id((I am a circle)) +``` + +```mermaid +mindmap + id((I am a circle)) +``` + +### Bang + +```mermaid-example +mindmap + id))I am a bang(( +``` + +```mermaid +mindmap + id))I am a bang(( +``` + +### Cloud + +```mermaid-example +mindmap + id)I am a cloud( +``` + +```mermaid +mindmap + id)I am a cloud( +``` + +### Default + +```mermaid-example +mindmap + I am the default shape +``` + +```mermaid +mindmap + I am the default shape +``` + +More shapes will be added, beginning with the shapes available in flowcharts. + +# Icons and classes + +## icons + +As with flowcharts you can add icons to your nodes but with an updated syntax. The styling for the font based icons are added during the integration so that they are available for the web page. _This is not something a diagram author can do but has to be done with the site administrator or the integrator_. Once the icon fonts are in place you add them to the mind map nodes using the `::icon()` syntax. You place the classes for the icon within the parenthesis like in the following example where icons for material design and fontawesome 4 are displayed. The intention is that this approach should be used for all diagrams supporting icons. **Experimental feature:** This wider scope is also the reason Mindmaps are experimental as this syntax and approach could change. + +```mermaid-example +mindmap + Root + A + ::icon(fa fa-book) + B(B) + ::icon(mdi mdi-skull-outline) +``` + +```mermaid +mindmap + Root + A + ::icon(fa fa-book) + B(B) + ::icon(mdi mdi-skull-outline) +``` + +## Classes + +Again the syntax for adding classes is similar to flowcharts. You can add classes using a triple colon following a number of css classes separated by space. In the following example one of the nodes has two custom classes attached urgent turning the background red and the text white and large increasing the font size: + +```mermaid-example +mindmap + Root + A[A] + :::urgent large + B(B) + C +``` + +```mermaid +mindmap + Root + A[A] + :::urgent large + B(B) + C +``` + +_These classes needs top be supplied by the site administrator._ + +## Unclear indentation + +The actual indentation does not really matter only compared with the previous rows. If we take the previous example and disrupt it a little we can se how the calculations are performed. Let us start with placing C with a smaller indentation than `B`but larger then `A`. + + mindmap + Root + A + B + C + +This outline is unclear as `B` clearly is a child of `A` but when we move on to `C` the clarity is lost. `C` is not a child of `B` with a higher indentation nor does it have the same indentation as `B`. The only thing that is clear is that the first node with smaller indentation, indicating a parent, is A. Then Mermaid relies on this known truth and compensates for the unclear indentation and selects `A` as a parent of `C` leading till the same diagram with `B` and `C` as siblings. + +```mermaid-example +mindmap +Root + A + B + C +``` + +```mermaid +mindmap +Root + A + B + C +``` diff --git a/docs/syntax/pie.md b/docs/syntax/pie.md new file mode 100644 index 000000000..6801b3619 --- /dev/null +++ b/docs/syntax/pie.md @@ -0,0 +1,66 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/pie.md](../../packages/mermaid/src/docs/syntax/pie.md). + +# Pie chart diagrams + +> A pie chart (or a circle chart) is a circular statistical graphic, which is divided into slices to illustrate numerical proportion. In a pie chart, the arc length of each slice (and consequently its central angle and area), is proportional to the quantity it represents. While it is named for its resemblance to a pie which has been sliced, there are variations on the way it can be presented. The earliest known pie chart is generally credited to William Playfair's Statistical Breviary of 1801 +> \-Wikipedia + +Mermaid can render Pie Chart diagrams. + +```mermaid-example +pie title Pets adopted by volunteers + "Dogs" : 386 + "Cats" : 85 + "Rats" : 15 +``` + +```mermaid +pie title Pets adopted by volunteers + "Dogs" : 386 + "Cats" : 85 + "Rats" : 15 +``` + +## Syntax + +Drawing a pie chart is really simple in mermaid. + +- Start with `pie` keyword to begin the diagram + - `showData` to render the actual data values after the legend text. This is **_OPTIONAL_** +- Followed by `title` keyword and its value in string to give a title to the pie-chart. This is **_OPTIONAL_** +- Followed by dataSet. Pie slices will be ordered clockwise in the same order as the labels. + - `label` for a section in the pie diagram within `" "` quotes. + - Followed by `:` colon as separator + - Followed by `positive numeric value` (supported upto two decimal places) + +\[pie] \[showData] (OPTIONAL) +\[title] \[titlevalue] (OPTIONAL) +"\[datakey1]" : \[dataValue1] +"\[datakey2]" : \[dataValue2] +"\[datakey3]" : \[dataValue3] +. +. + +## Example + +```mermaid-example +pie showData + title Key elements in Product X + "Calcium" : 42.96 + "Potassium" : 50.05 + "Magnesium" : 10.01 + "Iron" : 5 +``` + +```mermaid +pie showData + title Key elements in Product X + "Calcium" : 42.96 + "Potassium" : 50.05 + "Magnesium" : 10.01 + "Iron" : 5 +``` diff --git a/docs/syntax/requirementDiagram.md b/docs/syntax/requirementDiagram.md new file mode 100644 index 000000000..f8a0cafa9 --- /dev/null +++ b/docs/syntax/requirementDiagram.md @@ -0,0 +1,243 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/requirementDiagram.md](../../packages/mermaid/src/docs/syntax/requirementDiagram.md). + +# Requirement Diagram + +> A Requirement diagram provides a visualization for requirements and their connections, to each other and other documented elements. The modeling specs follow those defined by SysML v1.6. + +Rendering requirements is straightforward. + +```mermaid-example + requirementDiagram + + requirement test_req { + id: 1 + text: the test text. + risk: high + verifymethod: test + } + + element test_entity { + type: simulation + } + + test_entity - satisfies -> test_req +``` + +```mermaid + requirementDiagram + + requirement test_req { + id: 1 + text: the test text. + risk: high + verifymethod: test + } + + element test_entity { + type: simulation + } + + test_entity - satisfies -> test_req +``` + +## Syntax + +There are three types of components to a requirement diagram: requirement, element, and relationship. + +The grammar for defining each is defined below. Words denoted in angle brackets, such as `<word>`, are enumerated keywords that have options elaborated in a table. `user_defined_...` is use in any place where user input is expected. + +An important note on user text: all input can be surrounded in quotes or not. For example, both `Id: "here is an example"` and `Id: here is an example` are both valid. However, users must be careful with unquoted input. The parser will fail if another keyword is detected. + +### Requirement + +A requirement definition contains a requirement type, name, id, text, risk, and verification method. The syntax follows: + + <type> user_defined_name { + id: user_defined_id + text: user_defined text + risk: <risk> + verifymethod: <method> + } + +Type, risk, and method are enumerations defined in SysML. + +| Keyword | Options | +| ------------------ | ----------------------------------------------------------------------------------------------------------------------- | +| Type | requirement, functionalRequirement, interfaceRequirement, performanceRequirement, physicalRequirement, designConstraint | +| Risk | Low, Medium, High | +| VerificationMethod | Analysis, Inspection, Test, Demonstration | + +### Element + +An element definition contains an element name, type, and document reference. These three are all user defined. The element feature is intended to be lightweight but allow requirements to be connected to portions of other documents. + + element user_defined_name { + type: user_defined_type + docref: user_defined_ref + } + +### Relationship + +Relationships are comprised of a source node, destination node, and relationship type. + +Each follows the definition format of + + {name of source} - <type> -> {name of destination} + +or + + {name of destination} <- <type> - {name of source} + +"name of source" and "name of destination" should be names of requirement or element nodes defined elsewhere. + +A relationship type can be one of contains, copies, derives, satisfies, verifies, refines, or traces. + +Each relationship is labeled in the diagram. + +## Larger Example + +This example uses all features of the diagram. + +```mermaid-example + requirementDiagram + + requirement test_req { + id: 1 + text: the test text. + risk: high + verifymethod: test + } + + functionalRequirement test_req2 { + id: 1.1 + text: the second test text. + risk: low + verifymethod: inspection + } + + performanceRequirement test_req3 { + id: 1.2 + text: the third test text. + risk: medium + verifymethod: demonstration + } + + interfaceRequirement test_req4 { + id: 1.2.1 + text: the fourth test text. + risk: medium + verifymethod: analysis + } + + physicalRequirement test_req5 { + id: 1.2.2 + text: the fifth test text. + risk: medium + verifymethod: analysis + } + + designConstraint test_req6 { + id: 1.2.3 + text: the sixth test text. + risk: medium + verifymethod: analysis + } + + element test_entity { + type: simulation + } + + element test_entity2 { + type: word doc + docRef: reqs/test_entity + } + + element test_entity3 { + type: "test suite" + docRef: github.com/all_the_tests + } + + + test_entity - satisfies -> test_req2 + test_req - traces -> test_req2 + test_req - contains -> test_req3 + test_req3 - contains -> test_req4 + test_req4 - derives -> test_req5 + test_req5 - refines -> test_req6 + test_entity3 - verifies -> test_req5 + test_req <- copies - test_entity2 +``` + +```mermaid + requirementDiagram + + requirement test_req { + id: 1 + text: the test text. + risk: high + verifymethod: test + } + + functionalRequirement test_req2 { + id: 1.1 + text: the second test text. + risk: low + verifymethod: inspection + } + + performanceRequirement test_req3 { + id: 1.2 + text: the third test text. + risk: medium + verifymethod: demonstration + } + + interfaceRequirement test_req4 { + id: 1.2.1 + text: the fourth test text. + risk: medium + verifymethod: analysis + } + + physicalRequirement test_req5 { + id: 1.2.2 + text: the fifth test text. + risk: medium + verifymethod: analysis + } + + designConstraint test_req6 { + id: 1.2.3 + text: the sixth test text. + risk: medium + verifymethod: analysis + } + + element test_entity { + type: simulation + } + + element test_entity2 { + type: word doc + docRef: reqs/test_entity + } + + element test_entity3 { + type: "test suite" + docRef: github.com/all_the_tests + } + + + test_entity - satisfies -> test_req2 + test_req - traces -> test_req2 + test_req - contains -> test_req3 + test_req3 - contains -> test_req4 + test_req4 - derives -> test_req5 + test_req5 - refines -> test_req6 + test_entity3 - verifies -> test_req5 + test_req <- copies - test_entity2 +``` diff --git a/docs/syntax/sequenceDiagram.md b/docs/syntax/sequenceDiagram.md new file mode 100644 index 000000000..4e89eb0c6 --- /dev/null +++ b/docs/syntax/sequenceDiagram.md @@ -0,0 +1,762 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/sequenceDiagram.md](../../packages/mermaid/src/docs/syntax/sequenceDiagram.md). + +# Sequence diagrams + +> A Sequence diagram is an interaction diagram that shows how processes operate with one another and in what order. + +Mermaid can render sequence diagrams. + +```mermaid-example +sequenceDiagram + Alice->>John: Hello John, how are you? + John-->>Alice: Great! + Alice-)John: See you later! +``` + +```mermaid +sequenceDiagram + Alice->>John: Hello John, how are you? + John-->>Alice: Great! + Alice-)John: See you later! +``` + +> **Note** +> A note on nodes, the word "end" could potentially break the diagram, due to the way that the mermaid language is scripted. +> +> If unavoidable, one must use parentheses(), quotation marks "", or brackets {},\[], to enclose the word "end". i.e : (end), \[end], {end}. + +## Syntax + +### Participants + +The participants can be defined implicitly as in the first example on this page. The participants or actors are +rendered in order of appearance in the diagram source text. Sometimes you might want to show the participants in a +different order than how they appear in the first message. It is possible to specify the actor's order of +appearance by doing the following: + +```mermaid-example +sequenceDiagram + participant Alice + participant Bob + Alice->>Bob: Hi Bob + Bob->>Alice: Hi Alice +``` + +```mermaid +sequenceDiagram + participant Alice + participant Bob + Alice->>Bob: Hi Bob + Bob->>Alice: Hi Alice +``` + +### Actors + +If you specifically want to use the actor symbol instead of a rectangle with text you can do so by using actor statements as per below. + +```mermaid-example +sequenceDiagram + actor Alice + actor Bob + Alice->>Bob: Hi Bob + Bob->>Alice: Hi Alice +``` + +```mermaid +sequenceDiagram + actor Alice + actor Bob + Alice->>Bob: Hi Bob + Bob->>Alice: Hi Alice +``` + +### Aliases + +The actor can have a convenient identifier and a descriptive label. + +```mermaid-example +sequenceDiagram + participant A as Alice + participant J as John + A->>J: Hello John, how are you? + J->>A: Great! +``` + +```mermaid +sequenceDiagram + participant A as Alice + participant J as John + A->>J: Hello John, how are you? + J->>A: Great! +``` + +## Messages + +Messages can be of two displayed either solid or with a dotted line. + + [Actor][Arrow][Actor]:Message text + +There are six types of arrows currently supported: + +| Type | Description | +| ---- | ------------------------------------------------ | +| -> | Solid line without arrow | +| --> | Dotted line without arrow | +| ->> | Solid line with arrowhead | +| -->> | Dotted line with arrowhead | +| -x | Solid line with a cross at the end | +| --x | Dotted line with a cross at the end. | +| -) | Solid line with an open arrow at the end (async) | +| --) | Dotted line with a open arrow at the end (async) | + +## Activations + +It is possible to activate and deactivate an actor. (de)activation can be dedicated declarations: + +```mermaid-example +sequenceDiagram + Alice->>John: Hello John, how are you? + activate John + John-->>Alice: Great! + deactivate John +``` + +```mermaid +sequenceDiagram + Alice->>John: Hello John, how are you? + activate John + John-->>Alice: Great! + deactivate John +``` + +There is also a shortcut notation by appending `+`/`-` suffix to the message arrow: + +```mermaid-example +sequenceDiagram + Alice->>+John: Hello John, how are you? + John-->>-Alice: Great! +``` + +```mermaid +sequenceDiagram + Alice->>+John: Hello John, how are you? + John-->>-Alice: Great! +``` + +Activations can be stacked for same actor: + +```mermaid-example +sequenceDiagram + Alice->>+John: Hello John, how are you? + Alice->>+John: John, can you hear me? + John-->>-Alice: Hi Alice, I can hear you! + John-->>-Alice: I feel great! +``` + +```mermaid +sequenceDiagram + Alice->>+John: Hello John, how are you? + Alice->>+John: John, can you hear me? + John-->>-Alice: Hi Alice, I can hear you! + John-->>-Alice: I feel great! +``` + +## Notes + +It is possible to add notes to a sequence diagram. This is done by the notation +Note \[ right of | left of | over ] \[Actor]: Text in note content + +See the example below: + +```mermaid-example +sequenceDiagram + participant John + Note right of John: Text in note +``` + +```mermaid +sequenceDiagram + participant John + Note right of John: Text in note +``` + +It is also possible to create notes spanning two participants: + +```mermaid-example +sequenceDiagram + Alice->John: Hello John, how are you? + Note over Alice,John: A typical interaction +``` + +```mermaid +sequenceDiagram + Alice->John: Hello John, how are you? + Note over Alice,John: A typical interaction +``` + +## Loops + +It is possible to express loops in a sequence diagram. This is done by the notation + + loop Loop text + ... statements ... + end + +See the example below: + +```mermaid-example +sequenceDiagram + Alice->John: Hello John, how are you? + loop Every minute + John-->Alice: Great! + end +``` + +```mermaid +sequenceDiagram + Alice->John: Hello John, how are you? + loop Every minute + John-->Alice: Great! + end +``` + +## Alt + +It is possible to express alternative paths in a sequence diagram. This is done by the notation + + alt Describing text + ... statements ... + else + ... statements ... + end + +or if there is sequence that is optional (if without else). + + opt Describing text + ... statements ... + end + +See the example below: + +```mermaid-example +sequenceDiagram + Alice->>Bob: Hello Bob, how are you? + alt is sick + Bob->>Alice: Not so good :( + else is well + Bob->>Alice: Feeling fresh like a daisy + end + opt Extra response + Bob->>Alice: Thanks for asking + end +``` + +```mermaid +sequenceDiagram + Alice->>Bob: Hello Bob, how are you? + alt is sick + Bob->>Alice: Not so good :( + else is well + Bob->>Alice: Feeling fresh like a daisy + end + opt Extra response + Bob->>Alice: Thanks for asking + end +``` + +## Parallel + +It is possible to show actions that are happening in parallel. + +This is done by the notation + + par [Action 1] + ... statements ... + and [Action 2] + ... statements ... + and [Action N] + ... statements ... + end + +See the example below: + +```mermaid-example +sequenceDiagram + par Alice to Bob + Alice->>Bob: Hello guys! + and Alice to John + Alice->>John: Hello guys! + end + Bob-->>Alice: Hi Alice! + John-->>Alice: Hi Alice! +``` + +```mermaid +sequenceDiagram + par Alice to Bob + Alice->>Bob: Hello guys! + and Alice to John + Alice->>John: Hello guys! + end + Bob-->>Alice: Hi Alice! + John-->>Alice: Hi Alice! +``` + +It is also possible to nest parallel blocks. + +```mermaid-example +sequenceDiagram + par Alice to Bob + Alice->>Bob: Go help John + and Alice to John + Alice->>John: I want this done today + par John to Charlie + John->>Charlie: Can we do this today? + and John to Diana + John->>Diana: Can you help us today? + end + end +``` + +```mermaid +sequenceDiagram + par Alice to Bob + Alice->>Bob: Go help John + and Alice to John + Alice->>John: I want this done today + par John to Charlie + John->>Charlie: Can we do this today? + and John to Diana + John->>Diana: Can you help us today? + end + end +``` + +## Critical Region + +It is possible to show actions that must happen automatically with conditional handling of circumstances. + +This is done by the notation + + critical [Action that must be performed] + ... statements ... + option [Circumstance A] + ... statements ... + option [Circumstance B] + ... statements ... + end + +See the example below: + +```mermaid-example +sequenceDiagram + critical Establish a connection to the DB + Service-->DB: connect + option Network timeout + Service-->Service: Log error + option Credentials rejected + Service-->Service: Log different error + end +``` + +```mermaid +sequenceDiagram + critical Establish a connection to the DB + Service-->DB: connect + option Network timeout + Service-->Service: Log error + option Credentials rejected + Service-->Service: Log different error + end +``` + +It is also possible to have no options at all + +```mermaid-example +sequenceDiagram + critical Establish a connection to the DB + Service-->DB: connect + end +``` + +```mermaid +sequenceDiagram + critical Establish a connection to the DB + Service-->DB: connect + end +``` + +This critical block can also be nested, equivalently to the `par` statement as seen above. + +## Break + +It is possible to indicate a stop of the sequence within the flow (usually used to model exceptions). + +This is done by the notation + + break [something happened] + ... statements ... + end + +See the example below: + +```mermaid-example +sequenceDiagram + Consumer-->API: Book something + API-->BookingService: Start booking process + break when the booking process fails + API-->Consumer: show failure + end + API-->BillingService: Start billing process +``` + +```mermaid +sequenceDiagram + Consumer-->API: Book something + API-->BookingService: Start booking process + break when the booking process fails + API-->Consumer: show failure + end + API-->BillingService: Start billing process +``` + +## Background Highlighting + +It is possible to highlight flows by providing colored background rects. This is done by the notation + +The colors are defined using rgb and rgba syntax. + + rect rgb(0, 255, 0) + ... content ... + end + +<!----> + + rect rgba(0, 0, 255, .1) + ... content ... + end + +See the examples below: + +```mermaid-example +sequenceDiagram + participant Alice + participant John + + rect rgb(191, 223, 255) + note right of Alice: Alice calls John. + Alice->>+John: Hello John, how are you? + rect rgb(200, 150, 255) + Alice->>+John: John, can you hear me? + John-->>-Alice: Hi Alice, I can hear you! + end + John-->>-Alice: I feel great! + end + Alice ->>+ John: Did you want to go to the game tonight? + John -->>- Alice: Yeah! See you there. + +``` + +```mermaid +sequenceDiagram + participant Alice + participant John + + rect rgb(191, 223, 255) + note right of Alice: Alice calls John. + Alice->>+John: Hello John, how are you? + rect rgb(200, 150, 255) + Alice->>+John: John, can you hear me? + John-->>-Alice: Hi Alice, I can hear you! + end + John-->>-Alice: I feel great! + end + Alice ->>+ John: Did you want to go to the game tonight? + John -->>- Alice: Yeah! See you there. + +``` + +## Comments + +Comments can be entered within a sequence diagram, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any diagram syntax + +```mermaid-example +sequenceDiagram + Alice->>John: Hello John, how are you? + %% this is a comment + John-->>Alice: Great! +``` + +```mermaid +sequenceDiagram + Alice->>John: Hello John, how are you? + %% this is a comment + John-->>Alice: Great! +``` + +## Entity codes to escape characters + +It is possible to escape characters using the syntax exemplified here. + +```mermaid-example +sequenceDiagram + A->>B: I #9829; you! + B->>A: I #9829; you #infin; times more! +``` + +```mermaid +sequenceDiagram + A->>B: I #9829; you! + B->>A: I #9829; you #infin; times more! +``` + +Numbers given are base 10, so `#` can be encoded as `#35;`. It is also supported to use HTML character names. + +Because semicolons can be used instead of line breaks to define the markup, you need to use `#59;` to include a semicolon in message text. + +## sequenceNumbers + +It is possible to get a sequence number attached to each arrow in a sequence diagram. This can be configured when adding mermaid to the website as shown below: + +```html +<script> + mermaid.initialize({ sequence: { showSequenceNumbers: true } }); +</script> +``` + +It can also be be turned on via the diagram code as in the diagram: + +```mermaid-example +sequenceDiagram + autonumber + Alice->>John: Hello John, how are you? + loop Healthcheck + John->>John: Fight against hypochondria + end + Note right of John: Rational thoughts! + John-->>Alice: Great! + John->>Bob: How about you? + Bob-->>John: Jolly good! +``` + +```mermaid +sequenceDiagram + autonumber + Alice->>John: Hello John, how are you? + loop Healthcheck + John->>John: Fight against hypochondria + end + Note right of John: Rational thoughts! + John-->>Alice: Great! + John->>Bob: How about you? + Bob-->>John: Jolly good! +``` + +## Actor Menus + +Actors can have popup-menus containing individualized links to external pages. For example, if an actor represented a web service, useful links might include a link to the service health dashboard, repo containing the code for the service, or a wiki page describing the service. + +This can be configured by adding one or more link lines with the format: + + link <actor>: <link-label> @ <link-url> + +```mermaid-example +sequenceDiagram + participant Alice + participant John + link Alice: Dashboard @ https://dashboard.contoso.com/alice + link Alice: Wiki @ https://wiki.contoso.com/alice + link John: Dashboard @ https://dashboard.contoso.com/john + link John: Wiki @ https://wiki.contoso.com/john + Alice->>John: Hello John, how are you? + John-->>Alice: Great! + Alice-)John: See you later! +``` + +```mermaid +sequenceDiagram + participant Alice + participant John + link Alice: Dashboard @ https://dashboard.contoso.com/alice + link Alice: Wiki @ https://wiki.contoso.com/alice + link John: Dashboard @ https://dashboard.contoso.com/john + link John: Wiki @ https://wiki.contoso.com/john + Alice->>John: Hello John, how are you? + John-->>Alice: Great! + Alice-)John: See you later! +``` + +#### Advanced Menu Syntax + +There is an advanced syntax that relies on JSON formatting. If you are comfortable with JSON format, then this exists as well. + +This can be configured by adding the links lines with the format: + + links <actor>: <json-formatted link-name link-url pairs> + +An example is below: + +```mermaid-example +sequenceDiagram + participant Alice + participant John + links Alice: {"Dashboard": "https://dashboard.contoso.com/alice", "Wiki": "https://wiki.contoso.com/alice"} + links John: {"Dashboard": "https://dashboard.contoso.com/john", "Wiki": "https://wiki.contoso.com/john"} + Alice->>John: Hello John, how are you? + John-->>Alice: Great! + Alice-)John: See you later! +``` + +```mermaid +sequenceDiagram + participant Alice + participant John + links Alice: {"Dashboard": "https://dashboard.contoso.com/alice", "Wiki": "https://wiki.contoso.com/alice"} + links John: {"Dashboard": "https://dashboard.contoso.com/john", "Wiki": "https://wiki.contoso.com/john"} + Alice->>John: Hello John, how are you? + John-->>Alice: Great! + Alice-)John: See you later! +``` + +## Styling + +Styling of a sequence diagram is done by defining a number of css classes. During rendering these classes are extracted from the file located at src/themes/sequence.scss + +### Classes used + +| Class | Description | +| ------------ | ----------------------------------------------------------- | +| actor | Style for the actor box at the top of the diagram. | +| text.actor | Styles for text in the actor box at the top of the diagram. | +| actor-line | The vertical line for an actor. | +| messageLine0 | Styles for the solid message line. | +| messageLine1 | Styles for the dotted message line. | +| messageText | Defines styles for the text on the message arrows. | +| labelBox | Defines styles label to left in a loop. | +| labelText | Styles for the text in label for loops. | +| loopText | Styles for the text in the loop box. | +| loopLine | Defines styles for the lines in the loop box. | +| note | Styles for the note box. | +| noteText | Styles for the text on in the note boxes. | + +### Sample stylesheet + +```css +body { + background: white; +} + +.actor { + stroke: #ccccff; + fill: #ececff; +} +text.actor { + fill: black; + stroke: none; + font-family: Helvetica; +} + +.actor-line { + stroke: grey; +} + +.messageLine0 { + stroke-width: 1.5; + stroke-dasharray: '2 2'; + marker-end: 'url(#arrowhead)'; + stroke: black; +} + +.messageLine1 { + stroke-width: 1.5; + stroke-dasharray: '2 2'; + stroke: black; +} + +#arrowhead { + fill: black; +} + +.messageText { + fill: black; + stroke: none; + font-family: 'trebuchet ms', verdana, arial; + font-size: 14px; +} + +.labelBox { + stroke: #ccccff; + fill: #ececff; +} + +.labelText { + fill: black; + stroke: none; + font-family: 'trebuchet ms', verdana, arial; +} + +.loopText { + fill: black; + stroke: none; + font-family: 'trebuchet ms', verdana, arial; +} + +.loopLine { + stroke-width: 2; + stroke-dasharray: '2 2'; + marker-end: 'url(#arrowhead)'; + stroke: #ccccff; +} + +.note { + stroke: #decc93; + fill: #fff5ad; +} + +.noteText { + fill: black; + stroke: none; + font-family: 'trebuchet ms', verdana, arial; + font-size: 14px; +} +``` + +## Configuration + +Is it possible to adjust the margins for rendering the sequence diagram. + +This is done by defining `mermaid.sequenceConfig` or by the CLI to use a json file with the configuration. +How to use the CLI is described in the [mermaidCLI](../config/mermaidCLI.md) page. +`mermaid.sequenceConfig` can be set to a JSON string with config parameters or the corresponding object. + +```javascript +mermaid.sequenceConfig = { + diagramMarginX: 50, + diagramMarginY: 10, + boxTextMargin: 5, + noteMargin: 10, + messageMargin: 35, + mirrorActors: true, +}; +``` + +### Possible configuration parameters: + +| Parameter | Description | Default value | +| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------ | +| mirrorActors | Turns on/off the rendering of actors below the diagram as well as above it | false | +| bottomMarginAdj | Adjusts how far down the graph ended. Wide borders styles with css could generate unwanted clipping which is why this config param exists. | 1 | +| actorFontSize | Sets the font size for the actor's description | 14 | +| actorFontFamily | Sets the font family for the actor's description | "Open Sans", sans-serif | +| actorFontWeight | Sets the font weight for the actor's description | "Open Sans", sans-serif | +| noteFontSize | Sets the font size for actor-attached notes | 14 | +| noteFontFamily | Sets the font family for actor-attached notes | "trebuchet ms", verdana, arial | +| noteFontWeight | Sets the font weight for actor-attached notes | "trebuchet ms", verdana, arial | +| noteAlign | Sets the text alignment for text in actor-attached notes | center | +| messageFontSize | Sets the font size for actor<->actor messages | 16 | +| messageFontFamily | Sets the font family for actor<->actor messages | "trebuchet ms", verdana, arial | +| messageFontWeight | Sets the font weight for actor<->actor messages | "trebuchet ms", verdana, arial | diff --git a/docs/syntax/stateDiagram.md b/docs/syntax/stateDiagram.md new file mode 100644 index 000000000..ec91411f6 --- /dev/null +++ b/docs/syntax/stateDiagram.md @@ -0,0 +1,450 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/stateDiagram.md](../../packages/mermaid/src/docs/syntax/stateDiagram.md). + +# State diagrams + +> "A state diagram is a type of diagram used in computer science and related fields to describe the behavior of systems. State diagrams require that the system described is composed of a finite number of states; sometimes, this is indeed the case, while at other times this is a reasonable abstraction." Wikipedia + +Mermaid can render state diagrams. The syntax tries to be compliant with the syntax used in plantUml as this will make it easier for users to share diagrams between mermaid and plantUml. + +```mermaid-example +stateDiagram-v2 + [*] --> Still + Still --> [*] + + Still --> Moving + Moving --> Still + Moving --> Crash + Crash --> [*] +``` + +```mermaid +stateDiagram-v2 + [*] --> Still + Still --> [*] + + Still --> Moving + Moving --> Still + Moving --> Crash + Crash --> [*] +``` + +Older renderer: + +```mermaid-example +stateDiagram + [*] --> Still + Still --> [*] + + Still --> Moving + Moving --> Still + Moving --> Crash + Crash --> [*] +``` + +```mermaid +stateDiagram + [*] --> Still + Still --> [*] + + Still --> Moving + Moving --> Still + Moving --> Crash + Crash --> [*] +``` + +In state diagrams systems are described in terms of its states and how the systems state can change to another state via a transitions. The example diagram above shows three states **Still**, **Moving** and **Crash**. You start in the state of Still. From Still you can change the state to Moving. In Moving you can change the state either back to Still or to Crash. There is no transition from Still to Crash. + +## States + +A state can be declared in multiple ways. The simplest way is to define a state id as a description. + +```mermaid-example +stateDiagram-v2 + s1 +``` + +```mermaid +stateDiagram-v2 + s1 +``` + +Another way is by using the state keyword with a description as per below: + +```mermaid-example +stateDiagram-v2 + state "This is a state description" as s2 +``` + +```mermaid +stateDiagram-v2 + state "This is a state description" as s2 +``` + +Another way to define a state with a description is to define the state id followed by a colon and the description: + +```mermaid-example +stateDiagram-v2 + s2 : This is a state description +``` + +```mermaid +stateDiagram-v2 + s2 : This is a state description +``` + +## Transitions + +Transitions are path/edges when one state passes into another. This is represented using text arrow, "-->". + +When you define a transition between two states and the states are not already defined the undefined states are defined with the id from the transition. You can later add descriptions to states defined this way. + +```mermaid-example +stateDiagram-v2 + s1 --> s2 +``` + +```mermaid +stateDiagram-v2 + s1 --> s2 +``` + +It is possible to add text to a transition. To describe what it represents. + +```mermaid-example +stateDiagram-v2 + s1 --> s2: A transition +``` + +```mermaid +stateDiagram-v2 + s1 --> s2: A transition +``` + +## Start and End + +There are two special states indicating the start and stop of the diagram. These are written with the \[\*] syntax and the direction of the transition to it defines it either as a start or a stop state. + +```mermaid-example +stateDiagram-v2 + [*] --> s1 + s1 --> [*] +``` + +```mermaid +stateDiagram-v2 + [*] --> s1 + s1 --> [*] +``` + +## Composite states + +In a real world use of state diagrams you often end up with diagrams that are multi-dimensional as one state can +have several internal states. These are called composite states in this terminology. + +In order to define a composite state you need to use the state keyword followed by an id and the body of the composite state between {}. See the example below: + +```mermaid-example +stateDiagram-v2 + [*] --> First + state First { + [*] --> second + second --> [*] + } +``` + +```mermaid +stateDiagram-v2 + [*] --> First + state First { + [*] --> second + second --> [*] + } +``` + +You can do this in several layers: + +```mermaid-example +stateDiagram-v2 + [*] --> First + + state First { + [*] --> Second + + state Second { + [*] --> second + second --> Third + + state Third { + [*] --> third + third --> [*] + } + } + } +``` + +```mermaid +stateDiagram-v2 + [*] --> First + + state First { + [*] --> Second + + state Second { + [*] --> second + second --> Third + + state Third { + [*] --> third + third --> [*] + } + } + } +``` + +You can also define transitions also between composite states: + +```mermaid-example +stateDiagram-v2 + [*] --> First + First --> Second + First --> Third + + state First { + [*] --> fir + fir --> [*] + } + state Second { + [*] --> sec + sec --> [*] + } + state Third { + [*] --> thi + thi --> [*] + } +``` + +```mermaid +stateDiagram-v2 + [*] --> First + First --> Second + First --> Third + + state First { + [*] --> fir + fir --> [*] + } + state Second { + [*] --> sec + sec --> [*] + } + state Third { + [*] --> thi + thi --> [*] + } +``` + +_You can not define transitions between internal states belonging to different composite states_ + +## Choice + +Sometimes you need to model a choice between two or more paths, you can do so using <\<choice>>. + +```mermaid-example +stateDiagram-v2 + state if_state <<choice>> + [*] --> IsPositive + IsPositive --> if_state + if_state --> False: if n < 0 + if_state --> True : if n >= 0 +``` + +```mermaid +stateDiagram-v2 + state if_state <<choice>> + [*] --> IsPositive + IsPositive --> if_state + if_state --> False: if n < 0 + if_state --> True : if n >= 0 +``` + +## Forks + +It is possible to specify a fork in the diagram using <\<fork>> <\<join>>. + +```mermaid-example + stateDiagram-v2 + state fork_state <<fork>> + [*] --> fork_state + fork_state --> State2 + fork_state --> State3 + + state join_state <<join>> + State2 --> join_state + State3 --> join_state + join_state --> State4 + State4 --> [*] +``` + +```mermaid + stateDiagram-v2 + state fork_state <<fork>> + [*] --> fork_state + fork_state --> State2 + fork_state --> State3 + + state join_state <<join>> + State2 --> join_state + State3 --> join_state + join_state --> State4 + State4 --> [*] +``` + +## Notes + +Sometimes nothing says it better then a Post-it note. That is also the case in state diagrams. + +Here you can choose to put the note to the _right of_ or to the _left of_ a node. + +```mermaid-example + stateDiagram-v2 + State1: The state with a note + note right of State1 + Important information! You can write + notes. + end note + State1 --> State2 + note left of State2 : This is the note to the left. +``` + +```mermaid + stateDiagram-v2 + State1: The state with a note + note right of State1 + Important information! You can write + notes. + end note + State1 --> State2 + note left of State2 : This is the note to the left. +``` + +## Concurrency + +As in plantUml you can specify concurrency using the -- symbol. + +```mermaid-example +stateDiagram-v2 + [*] --> Active + + state Active { + [*] --> NumLockOff + NumLockOff --> NumLockOn : EvNumLockPressed + NumLockOn --> NumLockOff : EvNumLockPressed + -- + [*] --> CapsLockOff + CapsLockOff --> CapsLockOn : EvCapsLockPressed + CapsLockOn --> CapsLockOff : EvCapsLockPressed + -- + [*] --> ScrollLockOff + ScrollLockOff --> ScrollLockOn : EvScrollLockPressed + ScrollLockOn --> ScrollLockOff : EvScrollLockPressed + } +``` + +```mermaid +stateDiagram-v2 + [*] --> Active + + state Active { + [*] --> NumLockOff + NumLockOff --> NumLockOn : EvNumLockPressed + NumLockOn --> NumLockOff : EvNumLockPressed + -- + [*] --> CapsLockOff + CapsLockOff --> CapsLockOn : EvCapsLockPressed + CapsLockOn --> CapsLockOff : EvCapsLockPressed + -- + [*] --> ScrollLockOff + ScrollLockOff --> ScrollLockOn : EvScrollLockPressed + ScrollLockOn --> ScrollLockOff : EvScrollLockPressed + } +``` + +## Setting the direction of the diagram + +With state diagrams you can use the direction statement to set the direction which the diagram will render like in this example. + +```mermaid-example +stateDiagram + direction LR + [*] --> A + A --> B + B --> C + state B { + direction LR + a --> b + } + B --> D +``` + +```mermaid +stateDiagram + direction LR + [*] --> A + A --> B + B --> C + state B { + direction LR + a --> b + } + B --> D +``` + +## Comments + +Comments can be entered within a state diagram chart, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any diagram syntax + +```mermaid-example +stateDiagram-v2 + [*] --> Still + Still --> [*] +%% this is a comment + Still --> Moving + Moving --> Still %% another comment + Moving --> Crash + Crash --> [*] +``` + +```mermaid +stateDiagram-v2 + [*] --> Still + Still --> [*] +%% this is a comment + Still --> Moving + Moving --> Still %% another comment + Moving --> Crash + Crash --> [*] +``` + +## Styling + +Styling of the a state diagram is done by defining a number of css classes. During rendering these classes are extracted from the file located at src/themes/state.scss + +## Spaces in state names + +Spaces can be added to a state by defining it at the top and referencing the acronym later. + +```mermaid-example +stateDiagram-v2 + Yswsii: Your state with spaces in it + [*] --> Yswsii +``` + +```mermaid +stateDiagram-v2 + Yswsii: Your state with spaces in it + [*] --> Yswsii +``` diff --git a/docs/syntax/userJourney.md b/docs/syntax/userJourney.md new file mode 100644 index 000000000..73fcb7468 --- /dev/null +++ b/docs/syntax/userJourney.md @@ -0,0 +1,40 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/userJourney.md](../../packages/mermaid/src/docs/syntax/userJourney.md). + +# User Journey Diagram + +> User journeys describe at a high level of detail exactly what steps different users take to complete a specific task within a system, application or website. This technique shows the current (as-is) user workflow, and reveals areas of improvement for the to-be workflow. (Wikipedia) + +Mermaid can render user journey diagrams: + +```mermaid-example +journey + title My working day + section Go to work + Make tea: 5: Me + Go upstairs: 3: Me + Do work: 1: Me, Cat + section Go home + Go downstairs: 5: Me + Sit down: 5: Me +``` + +```mermaid +journey + title My working day + section Go to work + Make tea: 5: Me + Go upstairs: 3: Me + Do work: 1: Me, Cat + section Go home + Go downstairs: 5: Me + Sit down: 5: Me +``` + +Each user journey is split into sections, these describe the part of the task +the user is trying to complete. + +Tasks syntax is `Task name: <score>: <comma separated list of actors>` From a867400d56dcd855a8dd7c89f52c9f75394a71ce Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" <ashley.engelund@gmail.com> Date: Fri, 18 Nov 2022 09:37:57 -0800 Subject: [PATCH 016/255] (minor) fix formatting; add "upvoting" to cSpell.json --- cSpell.json | 1 + packages/mermaid/src/docs/community/development.md | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/cSpell.json b/cSpell.json index 3cf8a1e54..1beb19cc9 100644 --- a/cSpell.json +++ b/cSpell.json @@ -72,6 +72,7 @@ "techn", "ts-nocheck", "tuleap", + "upvoting", "verdana", "viewports", "vinod", diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index 1bcdca66a..2779141de 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -1,6 +1,7 @@ # Contributing to Mermaid ## Contents + - [Technical Requirements and Setup](#technical-requirements-and-setup) - [Contributing Code](#contributing-code) - [Contributing Documentation](#contributing-documentation) @@ -18,6 +19,7 @@ Here are a few things to get you started on the right path. ## Technical Requirements and Setup ### Technical Requirements + These are the tools we use for working with the code and documentation. - [volta](https://volta.sh/) to manage node versions. @@ -62,7 +64,7 @@ pnpm test The `test` script and others are in the top-level `package.json` file. -All tests should run sucessfully without any errors or failures. (You might see _lint_ or _formatting_ warnings; those are ok during this step.) +All tests should run sucessfully without any errors or failures. (You might see _lint_ or _formatting_ warnings; those are ok during this step.) ## Contributing Code @@ -78,7 +80,7 @@ graph LR 3. **Let users know** that things have changed or been added in the documents! This is often overlooked, but _critical_ 4. **Submit** your code as a _pull request._ -### 1. Checkout a git branch +### 1. Checkout a git branch Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspired approach to branching. @@ -187,7 +189,7 @@ The documentation has to be updated to users know that things have changed and a We know it can sometimes be hard to code _and_ write user documentation. -_**[TODO - how to submit documentation changes.** A few words plus a link to [Contributing Documentation](#contributing-documentation)_ +_**[TODO - how to submit documentation changes.** A few words plus a link to [Contributing Documentation](#contributing-documentation)_ Create another issue specifically for the documentation. You will need to help with the PR, but definitely ask for help if you feel stuck. @@ -276,7 +278,7 @@ To edit Docs on GitHub: - search in the open Issues If you find an open issue or discussion thread that is similar to your question but isn't answered, -you can let us know that you are also interested in it. **_[TODO: describe upvoting]_** +you can let us know that you are also interested in it. **_[TODO: describe upvoting]_** This helps the team know the relative interest in something and helps them set priorities and assignments. Feel free to add to the discussion on the issue or topic. From bd8f620480381af600d1cd47d5d8f3a1ea283b66 Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" <ashley.engelund@gmail.com> Date: Fri, 18 Nov 2022 15:24:10 -0800 Subject: [PATCH 017/255] updates based on sidharthv96's review --- docs/community/development.md | 41 ++++++++++--------- .../mermaid/src/docs/community/development.md | 41 +++++++++++-------- 2 files changed, 45 insertions(+), 37 deletions(-) diff --git a/docs/community/development.md b/docs/community/development.md index 667365a05..c9c7583bc 100644 --- a/docs/community/development.md +++ b/docs/community/development.md @@ -70,7 +70,7 @@ pnpm test The `test` script and others are in the top-level `package.json` file. -All tests should run sucessfully without any errors or failures. (You might see _lint_ or _formatting_ warnings; those are ok during this step.) +All tests should run successfully without any errors or failures. (You might see _lint_ or _formatting_ warnings; those are ok during this step.) ## Contributing Code @@ -97,15 +97,15 @@ Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspir Development is done in the `develop` branch. -Once development is done we branch a `release` branch from `develop` for testing. +Once development is done we create a `release/vX.X.X` branch from `develop` for testing. -Once the release happens we merge the `release` branch with `master` and delete the `release` branch. The live product and on-line documentation are what is in the `master` branch. +Once the release happens we add a tag to the `release` branch and merge it with `master`. The live product and on-line documentation are what is in the `master` branch. **All new work should be based on the `develop` branch.** **When you are ready to do work, always, ALWAYS:** -1. Make sure you have the most up to date version of the `develop` branch. (fetch or pull to update it) +1. Make sure you have the most up-to-date version of the `develop` branch. (fetch or pull to update it) 2. Check out the `develop` branch 3. Create a new branch for your work. Please name the branch following our naming convention below. @@ -121,7 +121,7 @@ We use the follow naming convention for branches: - followed by an _underscore_ ('\_') - followed by a short text description (but use dashes ('-') or underscores ('\_') instead of spaces) -If your work is specific to a single diagram type, it is a good idea to put the diagram type at the start of the dscription. This will help use keep release notes organized: it will help us keep changes for a diagram type together. +If your work is specific to a single diagram type, it is a good idea to put the diagram type at the start of the description. This will help use keep release notes organized: it will help us keep changes for a diagram type together. **Ex: A new feature described in issue 2945 that adds a new arrow type called 'florbs' to state diagrams** @@ -200,7 +200,7 @@ The documentation has to be updated to users know that things have changed and a We know it can sometimes be hard to code _and_ write user documentation. -**\*\[TODO - how to submit documentation changes.** A few words plus a link to [Contributing Documentation](#contributing-documentation)\* +**\*\[TODO - how to submit documentation changes.** A few words plus a link to [Contributing Documentation](#contributing-documentation)]\* Create another issue specifically for the documentation.\ You will need to help with the PR, but definitely ask for help if you feel stuck. @@ -226,7 +226,7 @@ we have put in place a process wherein _knsv, Knut Sveidqvist_ is the primary re If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? -The docs are located in the `src/docs` folder and are written in Markdown. Just pick the right section and start typing. +The docs are located in the `packages/mermaid/src/docs` folder and are written in Markdown. Just pick the right section and start typing. If you want to propose changes to the structure of the documentation, such as adding a new section or a new file you do that via the **[sidebar](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. > **All the documents displayed in the GitHub.io page are listed in [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. @@ -238,25 +238,25 @@ Updates committed to the `master` branch are reflected in the [Mermaid Docs](htt We are a little less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator. -The documentation is located in the `src/docs` directory and organized according to relevant subfolder. +The documentation is located in the `packages/mermaid/src/docs` directory and organized according to relevant subfolder. The contents of <https://mermaid-js.github.io/mermaid/> are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. **The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** -The `docs` folder will be automatically generated when committing to `src/docs` and should not be edited manually. +The `docs` folder will be automatically generated when committing to `packages/mermaid/src/docs` and should not be edited manually. -We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation using GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) +We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation to GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) -- Documentation (we encourage updates to the `src/docs` folder; you can submit them via direct commits) - -The source files for documentation are in `/packages/mermaid/docs` and are written in markdown. +- Documentation (we encourage updates to the `packages/mermaid/src/docs` folder; you can submit them via direct commits) **_DO NOT CHANGE FILES IN `/docs`_** +The source files for documentation are in `/packages/mermaid/docs` and are written in markdown. + ### The official documentation site -**[The mermaid documentation site](https://mermaid-js.github.io/mermaid/) is powered by [Docsify](https://docsify.js.org), a simple documentation site generator.** +**[The mermaid documentation site](https://mermaid-js.github.io/mermaid/) is powered by [Vitepress](https://vitepress.vuejs.org/).** **_\[TODO - how to preview the documents on a local machine? how to run VitePress?]_** @@ -266,10 +266,12 @@ Markdown is used to format the text, for more information about Markdown [see th To edit Docs on your computer: -1. Find the Markdown file (.md) to edit in the [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs) directory in the `develop` branch. -2. Create a fork of the develop branch. +_\[TODO: need to keep this in sync with [check out a git branch in Contributing Code above](#1-checkout-a-git-branch) ]_ + +1. Create a fork of the develop branch to work on. +2. Find the Markdown file (.md) to edit in the `packages/mermaid/src/docs` directory. 3. Make changes or add new documentation. -4. Commit changes to your fork and push it to GitHub. +4. Commit changes to your branch and push it to GitHub (which should create a new branch). 5. Create a Pull Request of your fork. To edit Docs on GitHub: @@ -285,8 +287,9 @@ To edit Docs on GitHub: #### First search to see if someone has already asked (and hopefully been answered) or suggested the same thing. -- search in the Discussions -- search in the open Issues +- Search in the Discussions +- Search in the open Issues +- Search in the closed Issues If you find an open issue or discussion thread that is similar to your question but isn't answered, you can let us know that you are also interested in it. **_\[TODO: describe upvoting]_** diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index 2779141de..3ff13b35c 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -64,7 +64,7 @@ pnpm test The `test` script and others are in the top-level `package.json` file. -All tests should run sucessfully without any errors or failures. (You might see _lint_ or _formatting_ warnings; those are ok during this step.) +All tests should run successfully without any errors or failures. (You might see _lint_ or _formatting_ warnings; those are ok during this step.) ## Contributing Code @@ -86,15 +86,15 @@ Mermaid uses a [Git Flow](https://guides.github.com/introduction/flow/)–inspir Development is done in the `develop` branch. -Once development is done we branch a `release` branch from `develop` for testing. +Once development is done we create a `release/vX.X.X` branch from `develop` for testing. -Once the release happens we merge the `release` branch with `master` and delete the `release` branch. The live product and on-line documentation are what is in the `master` branch. +Once the release happens we add a tag to the `release` branch and merge it with `master`. The live product and on-line documentation are what is in the `master` branch. **All new work should be based on the `develop` branch.** **When you are ready to do work, always, ALWAYS:** -1. Make sure you have the most up to date version of the `develop` branch. (fetch or pull to update it) +1. Make sure you have the most up-to-date version of the `develop` branch. (fetch or pull to update it) 2. Check out the `develop` branch 3. Create a new branch for your work. Please name the branch following our naming convention below. @@ -110,7 +110,7 @@ We use the follow naming convention for branches: - followed by an _underscore_ ('\_') - followed by a short text description (but use dashes ('-') or underscores ('\_') instead of spaces) -If your work is specific to a single diagram type, it is a good idea to put the diagram type at the start of the dscription. This will help use keep release notes organized: it will help us keep changes for a diagram type together. +If your work is specific to a single diagram type, it is a good idea to put the diagram type at the start of the description. This will help use keep release notes organized: it will help us keep changes for a diagram type together. **Ex: A new feature described in issue 2945 that adds a new arrow type called 'florbs' to state diagrams** @@ -189,7 +189,7 @@ The documentation has to be updated to users know that things have changed and a We know it can sometimes be hard to code _and_ write user documentation. -_**[TODO - how to submit documentation changes.** A few words plus a link to [Contributing Documentation](#contributing-documentation)_ +_**[TODO - how to submit documentation changes.** A few words plus a link to [Contributing Documentation](#contributing-documentation)]_ Create another issue specifically for the documentation. You will need to help with the PR, but definitely ask for help if you feel stuck. @@ -215,7 +215,7 @@ we have put in place a process wherein _knsv, Knut Sveidqvist_ is the primary re If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? -The docs are located in the `src/docs` folder and are written in Markdown. Just pick the right section and start typing. +The docs are located in the `packages/mermaid/src/docs` folder and are written in Markdown. Just pick the right section and start typing. If you want to propose changes to the structure of the documentation, such as adding a new section or a new file you do that via the **[sidebar](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. > **All the documents displayed in the GitHub.io page are listed in [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. @@ -227,25 +227,27 @@ Updates committed to the `master` branch are reflected in the [Mermaid Docs](htt We are a little less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator. -The documentation is located in the `src/docs` directory and organized according to relevant subfolder. +The documentation is located in the `packages/mermaid/src/docs` directory and organized according to relevant subfolder. The contents of <https://mermaid-js.github.io/mermaid/> are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. **The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** -The `docs` folder will be automatically generated when committing to `src/docs` and should not be edited manually. +The `docs` folder will be automatically generated when committing to `packages/mermaid/src/docs` and should not be edited manually. -We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation using GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) +We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation to GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) -- Documentation (we encourage updates to the `src/docs` folder; you can submit them via direct commits) +- Documentation (we encourage updates to the `packages/mermaid/src/docs` folder; you can submit them via direct commits) -The source files for documentation are in `/packages/mermaid/docs` and are written in markdown. **_DO NOT CHANGE FILES IN `/docs`_** +The source files for documentation are in `/packages/mermaid/docs` and are written in markdown. + + ### The official documentation site -**[The mermaid documentation site](https://mermaid-js.github.io/mermaid/) is powered by [Docsify](https://docsify.js.org), a simple documentation site generator.** +**[The mermaid documentation site](https://mermaid-js.github.io/mermaid/) is powered by [Vitepress](https://vitepress.vuejs.org/).** **_[TODO - how to preview the documents on a local machine? how to run VitePress?]_** @@ -255,10 +257,12 @@ Markdown is used to format the text, for more information about Markdown [see th To edit Docs on your computer: -1. Find the Markdown file (.md) to edit in the [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs) directory in the `develop` branch. -2. Create a fork of the develop branch. +_[TODO: need to keep this in sync with [check out a git branch in Contributing Code above](#1-checkout-a-git-branch) ]_ + +1. Create a fork of the develop branch to work on. +2. Find the Markdown file (.md) to edit in the `packages/mermaid/src/docs` directory. 3. Make changes or add new documentation. -4. Commit changes to your fork and push it to GitHub. +4. Commit changes to your branch and push it to GitHub (which should create a new branch). 5. Create a Pull Request of your fork. To edit Docs on GitHub: @@ -274,8 +278,9 @@ To edit Docs on GitHub: #### First search to see if someone has already asked (and hopefully been answered) or suggested the same thing. -- search in the Discussions -- search in the open Issues +- Search in the Discussions +- Search in the open Issues +- Search in the closed Issues If you find an open issue or discussion thread that is similar to your question but isn't answered, you can let us know that you are also interested in it. **_[TODO: describe upvoting]_** From 71d2175e19370317e268f5f7232bdfcd0d8e9e89 Mon Sep 17 00:00:00 2001 From: Ashley Engelund <weedySeaDragon@users.noreply.github.com> Date: Fri, 18 Nov 2022 15:38:52 -0800 Subject: [PATCH 018/255] questions? search in... capitalize Search, + closed issues Co-authored-by: Sidharth Vinod <sidharthv96@gmail.com> --- packages/mermaid/src/docs/community/development.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index 2779141de..0618040df 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -274,8 +274,9 @@ To edit Docs on GitHub: #### First search to see if someone has already asked (and hopefully been answered) or suggested the same thing. -- search in the Discussions -- search in the open Issues +- Search in Discussions +- Search in open Issues +- Search in closed Issues If you find an open issue or discussion thread that is similar to your question but isn't answered, you can let us know that you are also interested in it. **_[TODO: describe upvoting]_** From 0333bc172c4bb6c2101ea7d665a33099dd428986 Mon Sep 17 00:00:00 2001 From: Ashley Engelund <weedySeaDragon@users.noreply.github.com> Date: Fri, 18 Nov 2022 15:39:29 -0800 Subject: [PATCH 019/255] spelling: description; .. help us keep release notes organized Co-authored-by: Sidharth Vinod <sidharthv96@gmail.com> --- packages/mermaid/src/docs/community/development.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index 0618040df..6c086ca6f 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -110,7 +110,7 @@ We use the follow naming convention for branches: - followed by an _underscore_ ('\_') - followed by a short text description (but use dashes ('-') or underscores ('\_') instead of spaces) -If your work is specific to a single diagram type, it is a good idea to put the diagram type at the start of the dscription. This will help use keep release notes organized: it will help us keep changes for a diagram type together. +If your work is specific to a single diagram type, it is a good idea to put the diagram type at the start of the description. This will help us keep release notes organized: it will help us keep changes for a diagram type together. **Ex: A new feature described in issue 2945 that adds a new arrow type called 'florbs' to state diagrams** From fee63d83ee56d3b65732260f5ea8a2f0224e2bed Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" <ashley.engelund@gmail.com> Date: Sat, 19 Nov 2022 09:16:19 -0800 Subject: [PATCH 020/255] update related /docs file --- packages/mermaid/src/docs/community/development.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index 3ff13b35c..fc453da3e 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -239,12 +239,10 @@ We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs] - Documentation (we encourage updates to the `packages/mermaid/src/docs` folder; you can submit them via direct commits) - **_DO NOT CHANGE FILES IN `/docs`_** The source files for documentation are in `/packages/mermaid/docs` and are written in markdown. - ### The official documentation site **[The mermaid documentation site](https://mermaid-js.github.io/mermaid/) is powered by [Vitepress](https://vitepress.vuejs.org/).** @@ -257,7 +255,7 @@ Markdown is used to format the text, for more information about Markdown [see th To edit Docs on your computer: -_[TODO: need to keep this in sync with [check out a git branch in Contributing Code above](#1-checkout-a-git-branch) ]_ +_[TODO: need to keep this in sync with [check out a git branch in Contributing Code above](#1-checkout-a-git-branch) ]_ 1. Create a fork of the develop branch to work on. 2. Find the Markdown file (.md) to edit in the `packages/mermaid/src/docs` directory. From 3eb2bb9c0b3b06cfa1d72a1f850a5a4d223f2621 Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" <ashley.engelund@gmail.com> Date: Fri, 25 Nov 2022 10:40:04 -0800 Subject: [PATCH 021/255] Merge develop into HEAD; install; lint:fix --- .eslintrc.json | 14 +- .github/workflows/docs.yml | 28 -- .github/workflows/link-checker.yml | 2 +- .gitignore | 1 + .lintstagedrc.json | 4 - .lintstagedrc.mjs | 5 + .prettierignore | 3 +- .vite/build.ts | 32 +- README.md | 19 +- README.zh-CN.md | 2 +- __mocks__/d3.ts | 12 + .../rendering/classDiagram-v2.spec.js | 12 + .../integration/rendering/erDiagram.spec.js | 13 + .../rendering/flowchart-v2.spec.js | 11 + .../integration/rendering/gitGraph.spec.js | 11 + cypress/integration/rendering/mermaid.spec.js | 75 --- cypress/integration/rendering/mindmap.spec.js | 115 ----- cypress/integration/rendering/mindmap.spec.ts | 233 +++++++++ .../rendering/stateDiagram-v2.spec.js | 12 + cypress/tsconfig.json | 8 + demos/classchart.html | 3 + demos/er.html | 3 + demos/flowchart.html | 6 + demos/git.html | 3 + demos/index.html | 3 + demos/journey.html | 6 +- demos/mindmap.html | 108 ++++ demos/state.html | 88 +++- docs/config/setup/modules/defaultConfig.md | 2 +- docs/config/usage.md | 2 +- docs/intro/index.md | 2 +- docs/misc/integrations.md | 2 + docs/syntax/c4c.md | 4 +- docs/syntax/classDiagram.md | 14 +- docs/syntax/entityRelationshipDiagram.md | 6 + docs/syntax/flowchart.md | 14 +- docs/syntax/gitgraph.md | 50 +- docs/syntax/mindmap.md | 16 +- docs/syntax/pie.md | 2 +- docs/syntax/sequenceDiagram.md | 2 +- docs/syntax/stateDiagram.md | 246 ++++++++- package.json | 20 +- packages/mermaid-mindmap/src/mindmap.spec.js | 12 + packages/mermaid-mindmap/src/mindmapDb.js | 8 + .../mermaid-mindmap/src/mindmapRenderer.js | 4 - .../mermaid-mindmap/src/parser/mindmap.jison | 8 +- packages/mermaid-mindmap/src/styles.js | 4 +- packages/mermaid-mindmap/src/svgDraw.js | 42 ++ packages/mermaid/.lintstagedrc.json | 6 - packages/mermaid/.lintstagedrc.mjs | 7 + packages/mermaid/README.md | 19 +- packages/mermaid/README.zh-CN.md | 2 +- packages/mermaid/package.json | 18 +- packages/mermaid/src/Diagram.ts | 13 +- packages/mermaid/src/config.type.ts | 5 + packages/mermaid/src/dagre-wrapper/index.js | 16 +- .../src/dagre-wrapper/mermaid-graphlib.js | 13 +- .../dagre-wrapper/mermaid-graphlib.spec.js | 32 +- packages/mermaid/src/defaultConfig.ts | 52 ++ .../mermaid/src/diagram-api/detectType.ts | 3 +- .../src/diagram-api/frontmatter.spec.ts | 78 +++ .../mermaid/src/diagram-api/frontmatter.ts | 40 ++ packages/mermaid/src/diagram-api/types.ts | 10 +- .../mermaid/src/diagrams/class/classDb.js | 4 + .../src/diagrams/class/classRenderer-v2.js | 5 +- .../src/diagrams/class/classRenderer.js | 6 +- packages/mermaid/src/diagrams/class/styles.js | 5 + packages/mermaid/src/diagrams/er/erDb.js | 4 + .../mermaid/src/diagrams/er/erRenderer.js | 28 +- packages/mermaid/src/diagrams/er/styles.js | 6 + .../src/diagrams/flowchart/flowChartShapes.js | 25 +- .../mermaid/src/diagrams/flowchart/flowDb.js | 4 + .../src/diagrams/flowchart/flowRenderer-v2.js | 7 +- .../src/diagrams/flowchart/flowRenderer.js | 10 +- .../flowchart/parser/flow-direction.spec.js | 2 +- .../flowchart/parser/subgraph.spec.js | 2 +- .../mermaid/src/diagrams/flowchart/styles.ts | 6 + .../mermaid/src/diagrams/git/gitGraphAst.js | 4 + .../src/diagrams/git/gitGraphRenderer.js | 7 + packages/mermaid/src/diagrams/git/styles.js | 5 + .../mermaid/src/diagrams/pie/pieDetector.ts | 3 +- .../mermaid/src/diagrams/pie/pieRenderer.js | 10 +- .../requirement/requirementRenderer.js | 6 +- .../mermaid/src/diagrams/state/stateDb.js | 4 + .../src/diagrams/state/stateRenderer-v2.js | 6 +- .../src/diagrams/state/stateRenderer.js | 6 +- packages/mermaid/src/diagrams/state/styles.js | 6 + .../{ => .vitepress/theme}/redirect.spec.ts | 2 +- packages/mermaid/src/docs/config/usage.md | 2 +- packages/mermaid/src/docs/intro/index.md | 2 +- .../mermaid/src/docs/misc/integrations.md | 2 + packages/mermaid/src/docs/syntax/c4c.md | 2 +- .../mermaid/src/docs/syntax/classDiagram.md | 8 +- .../docs/syntax/entityRelationshipDiagram.md | 3 + packages/mermaid/src/docs/syntax/flowchart.md | 8 +- packages/mermaid/src/docs/syntax/gitgraph.md | 25 +- packages/mermaid/src/docs/syntax/mindmap.md | 9 +- packages/mermaid/src/docs/syntax/pie.md | 2 +- .../src/docs/syntax/sequenceDiagram.md | 2 +- .../mermaid/src/docs/syntax/stateDiagram.md | 190 ++++++- packages/mermaid/src/mermaidAPI.ts | 4 +- packages/mermaid/src/tests/setup.ts | 2 +- packages/mermaid/src/utils.spec.js | 32 +- packages/mermaid/src/utils.ts | 160 ++++-- pnpm-lock.yaml | 473 ++++++++++++++++-- 105 files changed, 2108 insertions(+), 597 deletions(-) delete mode 100644 .github/workflows/docs.yml delete mode 100644 .lintstagedrc.json create mode 100644 .lintstagedrc.mjs delete mode 100644 cypress/integration/rendering/mermaid.spec.js delete mode 100644 cypress/integration/rendering/mindmap.spec.js create mode 100644 cypress/integration/rendering/mindmap.spec.ts create mode 100644 cypress/tsconfig.json create mode 100644 demos/mindmap.html delete mode 100644 packages/mermaid/.lintstagedrc.json create mode 100644 packages/mermaid/.lintstagedrc.mjs create mode 100644 packages/mermaid/src/diagram-api/frontmatter.spec.ts create mode 100644 packages/mermaid/src/diagram-api/frontmatter.ts rename packages/mermaid/src/docs/{ => .vitepress/theme}/redirect.spec.ts (96%) diff --git a/.eslintrc.json b/.eslintrc.json index d83222f3a..1d052e22b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -21,7 +21,16 @@ "plugin:@cspell/recommended", "prettier" ], - "plugins": ["@typescript-eslint", "no-only-tests", "html", "jest", "jsdoc", "json", "@cspell"], + "plugins": [ + "@typescript-eslint", + "no-only-tests", + "html", + "jest", + "jsdoc", + "json", + "@cspell", + "lodash" + ], "rules": { "curly": "error", "no-console": "error", @@ -53,7 +62,8 @@ "allowEmptyCatch": true } ], - "no-only-tests/no-only-tests": "error" + "no-only-tests/no-only-tests": "error", + "lodash/import-scope": ["error", "method"] }, "overrides": [ { diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index dbdc4b904..000000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Documentation Checks - -on: - push: - branches: - - develop - paths: - - 'packages/mermaid/src/docs/**/*' - pull_request: - branches: - - develop - paths: - - 'packages/mermaid/src/docs/**/*' -jobs: - spellcheck: - name: 'Docs: Spellcheck' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - name: Check out the code - - uses: actions/setup-node@v3 - name: Setup node - with: - node-version: '18' - - run: npm install -g cspell - name: Install cSpell - - run: cspell --config ./cSpell.json "packages/mermaid/src/docs/**/*.md" --no-progress - name: Run cSpell diff --git a/.github/workflows/link-checker.yml b/.github/workflows/link-checker.yml index 0a499f2d6..fbf03cb39 100644 --- a/.github/workflows/link-checker.yml +++ b/.github/workflows/link-checker.yml @@ -36,7 +36,7 @@ jobs: restore-keys: cache-lychee- - name: Link Checker - uses: lycheeverse/lychee-action@v1.5.2 + uses: lycheeverse/lychee-action@v1.5.4 with: args: --verbose --no-progress --cache --max-cache-age 1d packages/mermaid/src/docs/**/*.md README.md README.zh-CN.md fail: true diff --git a/.gitignore b/.gitignore index 8cc09354b..f29286825 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,4 @@ tsconfig.tsbuildinfo knsv*.html local*.html +stats/ diff --git a/.lintstagedrc.json b/.lintstagedrc.json deleted file mode 100644 index 863473f2a..000000000 --- a/.lintstagedrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "!(docs/**/*)*.{ts,js,json,html,md,mts}": ["eslint --fix", "prettier --write"], - "cSpell.json": ["ts-node-esm scripts/fixCSpell.ts"] -} diff --git a/.lintstagedrc.mjs b/.lintstagedrc.mjs new file mode 100644 index 000000000..ff1d8c107 --- /dev/null +++ b/.lintstagedrc.mjs @@ -0,0 +1,5 @@ +export default { + '!(docs/**/*)*.{ts,js,json,html,md,mts}': ['eslint --fix', 'prettier --write'], + 'cSpell.json': ['ts-node-esm scripts/fixCSpell.ts'], + '**/*.jison': ['pnpm -w run lint:jison'], +}; diff --git a/.prettierignore b/.prettierignore index fe2c55574..b66f97d1c 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,4 +3,5 @@ cypress/platform/xss3.html .cache coverage # Autogenerated by PNPM -pnpm-lock.yaml \ No newline at end of file +pnpm-lock.yaml +stats \ No newline at end of file diff --git a/.vite/build.ts b/.vite/build.ts index 50b7fb1ad..1be46ad5a 100644 --- a/.vite/build.ts +++ b/.vite/build.ts @@ -1,9 +1,12 @@ -import { build, InlineConfig } from 'vite'; +import { build, InlineConfig, type PluginOption } from 'vite'; import { resolve } from 'path'; import { fileURLToPath } from 'url'; import jisonPlugin from './jisonPlugin.js'; import { readFileSync } from 'fs'; +import { visualizer } from 'rollup-plugin-visualizer'; +import type { TemplateType } from 'rollup-plugin-visualizer/dist/plugin/template-types.js'; +const visualize = process.argv.includes('--visualize'); const watch = process.argv.includes('--watch'); const mermaidOnly = process.argv.includes('--mermaid'); const __dirname = fileURLToPath(new URL('.', import.meta.url)); @@ -13,6 +16,20 @@ type OutputOptions = Exclude< undefined >['output']; +const visualizerOptions = (packageName: string, core = false): PluginOption[] => { + if (packageName !== 'mermaid' || !visualize) { + return []; + } + return ['network', 'treemap', 'sunburst'].map((chartType) => + visualizer({ + filename: `./stats/${chartType}${core ? '.core' : ''}.html`, + template: chartType as TemplateType, + gzipSize: true, + brotliSize: true, + }) + ); +}; + const packageOptions = { mermaid: { name: 'mermaid', @@ -39,7 +56,7 @@ interface BuildOptions { } export const getBuildConfig = ({ minify, core, watch, entryName }: BuildOptions): InlineConfig => { - const external = ['require', 'fs', 'path']; + const external: (string | RegExp)[] = ['require', 'fs', 'path']; console.log(entryName, packageOptions[entryName]); const { name, file, packageName } = packageOptions[entryName]; let output: OutputOptions = [ @@ -63,7 +80,9 @@ export const getBuildConfig = ({ minify, core, watch, entryName }: BuildOptions) ); // Core build is used to generate file without bundled dependencies. // This is used by downstream projects to bundle dependencies themselves. - external.push(...Object.keys(dependencies)); + // Ignore dependencies and any dependencies of dependencies + // Adapted from the RegEx used by `rollup-plugin-node` + external.push(new RegExp('^(?:' + Object.keys(dependencies).join('|') + ')(?:/.+)?$')); // This needs to be an array. Otherwise vite will build esm & umd with same name and overwrite esm with umd. output = [ { @@ -95,7 +114,7 @@ export const getBuildConfig = ({ minify, core, watch, entryName }: BuildOptions) resolve: { extensions: ['.jison', '.js', '.ts', '.json'], }, - plugins: [jisonPlugin()], + plugins: [jisonPlugin(), ...visualizerOptions(packageName, core)], }; if (watch && config.build) { @@ -121,7 +140,7 @@ const buildPackage = async (entryName: keyof typeof packageOptions) => { const main = async () => { const packageNames = Object.keys(packageOptions) as (keyof typeof packageOptions)[]; - for (const pkg of packageNames) { + for (const pkg of packageNames.filter((pkg) => !mermaidOnly || pkg === 'mermaid')) { await buildPackage(pkg); } }; @@ -132,6 +151,9 @@ if (watch) { build(getBuildConfig({ minify: false, watch, entryName: 'mermaid-mindmap' })); // build(getBuildConfig({ minify: false, watch, entryName: 'mermaid-example-diagram' })); } +} else if (visualize) { + await build(getBuildConfig({ minify: false, core: true, entryName: 'mermaid' })); + await build(getBuildConfig({ minify: false, core: false, entryName: 'mermaid' })); } else { void main(); } diff --git a/README.md b/README.md index 4d66d3e6b..059940a02 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,6 @@ # mermaid -[![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [![Twitter Follow](https://img.shields.io/twitter/follow/mermaidjs_?style=social)](https://twitter.com/mermaidjs_) - -# Whoa, what's going on here? - -We are transforming the Mermaid repository to a so called mono-repo. This is a part of the effort to decouple the diagrams from the core of mermaid. This will: - -- Make it possible to select which diagrams to include on your site -- Open up for lazy loading -- Make it possible to add diagrams from outside of the Mermaid repository -- Separate the release flow between different diagrams and the Mermaid core - -As such be aware of some changes.. - -# We use pnpm now - -# The source code has moved - -It is now located in the src folder for each respective package located as subfolders in packages. +[![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![npm minified gzipped bundle size](https://img.shields.io/bundlephobia/minzip/mermaid)](https://bundlephobia.com/package/mermaid) [![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [![Twitter Follow](https://img.shields.io/twitter/follow/mermaidjs_?style=social)](https://twitter.com/mermaidjs_) English | [简体中文](./README.zh-CN.md) diff --git a/README.zh-CN.md b/README.zh-CN.md index 62eba5244..4bdbc4ae7 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -1,6 +1,6 @@ # mermaid -[![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [![Twitter Follow](https://img.shields.io/twitter/follow/mermaidjs_?style=social)](https://twitter.com/mermaidjs_) +[![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![npm minified gzipped bundle size](https://img.shields.io/bundlephobia/minzip/mermaid)](https://bundlephobia.com/package/mermaid) [![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [![Twitter Follow](https://img.shields.io/twitter/follow/mermaidjs_?style=social)](https://twitter.com/mermaidjs_) [English](./README.md) | 简体中文 diff --git a/__mocks__/d3.ts b/__mocks__/d3.ts index 67f09b6f4..f90d93557 100644 --- a/__mocks__/d3.ts +++ b/__mocks__/d3.ts @@ -53,6 +53,18 @@ export const MockD3 = (name, parent) => { get __parent() { return parent; }, + node() { + return { + getBBox() { + return { + x: 5, + y: 10, + height: 15, + width: 20, + }; + }, + }; + }, }; elem.append = (name) => { const mockElem = MockD3(name, elem); diff --git a/cypress/integration/rendering/classDiagram-v2.spec.js b/cypress/integration/rendering/classDiagram-v2.spec.js index e36693a65..f97458857 100644 --- a/cypress/integration/rendering/classDiagram-v2.spec.js +++ b/cypress/integration/rendering/classDiagram-v2.spec.js @@ -496,4 +496,16 @@ describe('Class diagram V2', () => { ); cy.get('svg'); }); + + it('1433: should render a simple class with a title', () => { + imgSnapshotTest( + `--- +title: simple class diagram +--- +classDiagram-v2 +class Class10 +`, + {} + ); + }); }); diff --git a/cypress/integration/rendering/erDiagram.spec.js b/cypress/integration/rendering/erDiagram.spec.js index 057b36dc1..8e8946170 100644 --- a/cypress/integration/rendering/erDiagram.spec.js +++ b/cypress/integration/rendering/erDiagram.spec.js @@ -273,4 +273,17 @@ describe('Entity Relationship Diagram', () => { ); cy.get('svg'); }); + + it('1433: should render a simple ER diagram with a title', () => { + imgSnapshotTest( + `--- +title: simple ER diagram +--- +erDiagram +CUSTOMER ||--o{ ORDER : places +ORDER ||--|{ LINE-ITEM : contains +`, + {} + ); + }); }); diff --git a/cypress/integration/rendering/flowchart-v2.spec.js b/cypress/integration/rendering/flowchart-v2.spec.js index 61dccfb84..30ae4f0d2 100644 --- a/cypress/integration/rendering/flowchart-v2.spec.js +++ b/cypress/integration/rendering/flowchart-v2.spec.js @@ -663,4 +663,15 @@ flowchart RL { htmlLabels: true, flowchart: { htmlLabels: true }, securityLevel: 'loose' } ); }); + it('1433: should render a titled flowchart with titleTopMargin set to 0', () => { + imgSnapshotTest( + `--- +title: Simple flowchart +--- +flowchart TD +A --> B +`, + { titleTopMargin: 0 } + ); + }); }); diff --git a/cypress/integration/rendering/gitGraph.spec.js b/cypress/integration/rendering/gitGraph.spec.js index afb39b62e..0b5048b44 100644 --- a/cypress/integration/rendering/gitGraph.spec.js +++ b/cypress/integration/rendering/gitGraph.spec.js @@ -322,4 +322,15 @@ describe('Git Graph diagram', () => { {} ); }); + it('1433: should render a simple gitgraph with a title', () => { + imgSnapshotTest( + `--- +title: simple gitGraph +--- +gitGraph + commit +`, + {} + ); + }); }); diff --git a/cypress/integration/rendering/mermaid.spec.js b/cypress/integration/rendering/mermaid.spec.js deleted file mode 100644 index 4b7de3027..000000000 --- a/cypress/integration/rendering/mermaid.spec.js +++ /dev/null @@ -1,75 +0,0 @@ -import { imgSnapshotTest, renderGraph } from '../../helpers/util.js'; - -describe('Mindmap', () => { - it('square shape', () => { - imgSnapshotTest( - ` -mindmap - root[ - The root - ] - `, - {} - ); - cy.get('svg'); - }); - it('rounded rect shape', () => { - imgSnapshotTest( - ` -mindmap - root(( - The root - )) - `, - {} - ); - cy.get('svg'); - }); - it('circle shape', () => { - imgSnapshotTest( - ` -mindmap - root( - The root - ) - `, - {} - ); - cy.get('svg'); - }); - it('default shape', () => { - imgSnapshotTest( - ` -mindmap - The root - `, - {} - ); - cy.get('svg'); - }); - it('adding children', () => { - imgSnapshotTest( - ` -mindmap - The root - child1 - child2 - `, - {} - ); - cy.get('svg'); - }); - it('adding grand children', () => { - imgSnapshotTest( - ` -mindmap - The root - child1 - child2 - child3 - `, - {} - ); - cy.get('svg'); - }); -}); diff --git a/cypress/integration/rendering/mindmap.spec.js b/cypress/integration/rendering/mindmap.spec.js deleted file mode 100644 index f0cc2bc3f..000000000 --- a/cypress/integration/rendering/mindmap.spec.js +++ /dev/null @@ -1,115 +0,0 @@ -import { imgSnapshotTest, renderGraph } from '../../helpers/util.js'; - -describe('Mindmaps', () => { - it('Only a root', () => { - imgSnapshotTest( - `mindmap -root - `, - {} - ); - }); - - it('a root with a shape', () => { - imgSnapshotTest( - `mindmap -root[root] - `, - {} - ); - }); - - it('a root with wrapping text and a shape', () => { - imgSnapshotTest( - `mindmap -root[A root with a long text that wraps to keep the node size in check] - `, - {} - ); - }); - - it('a root with an icon', () => { - imgSnapshotTest( - `mindmap -root[root] -::icon(mdi mdi-fire) - `, - {} - ); - }); - - it('Blang and cloud shape', () => { - imgSnapshotTest( - `mindmap -root))bang(( - ::icon(mdi mdi-fire) - a))Another bang(( - ::icon(mdi mdi-fire) - a)A cloud( - ::icon(mdi mdi-fire) - `, - {} - ); - }); - - it('Blang and cloud shape with icons', () => { - imgSnapshotTest( - `mindmap -root))bang(( - - a))Another bang(( - a)A cloud( - `, - {} - ); - }); - - it('braches', () => { - imgSnapshotTest( - `mindmap -root - child1 - grandchild 1 - grandchild 2 - child2 - grandchild 3 - grandchild 4 - child3 - grandchild 5 - grandchild 6 - `, - {} - ); - }); - - it('braches with shapes and labels', () => { - imgSnapshotTest( - `mindmap -root - child1((Circle)) - grandchild 1 - grandchild 2 - child2(Round rectangle) - grandchild 3 - grandchild 4 - child3[Square] - grandchild 5 - ::icon(mdi mdi-fire) - gc6((grand<br/>child 6)) - ::icon(mdi mdi-fire) - `, - {} - ); - }); - it('text shouhld wrap with icon', () => { - imgSnapshotTest( - `mindmap -root - Child3(A node with an icon and with a long text that wraps to keep the node size in check) - `, - {} - ); - }); - - /* The end */ -}); diff --git a/cypress/integration/rendering/mindmap.spec.ts b/cypress/integration/rendering/mindmap.spec.ts new file mode 100644 index 000000000..62c7e785b --- /dev/null +++ b/cypress/integration/rendering/mindmap.spec.ts @@ -0,0 +1,233 @@ +import { imgSnapshotTest, renderGraph } from '../../helpers/util.js'; + +/** + * Check whether the SVG Element has a Mindmap root + * + * Sometimes, Cypress takes a snapshot before the mermaid mindmap has finished + * generating the SVG. + * + * @param $p - The element to check. + */ +function shouldHaveRoot($p: JQuery<SVGSVGElement>) { + // get HTML Element from jquery element + const svgElement = $p[0]; + expect(svgElement.nodeName).equal('svg'); + + const sectionRoots = svgElement.getElementsByClassName('mindmap-node section-root'); + // mindmap should have at least one root section + expect(sectionRoots).to.have.lengthOf.at.least(1); +} + +describe('Mindmaps', () => { + it('Only a root', () => { + imgSnapshotTest( + `mindmap +root + `, + {}, + undefined, + shouldHaveRoot + ); + }); + + it('a root with a shape', () => { + imgSnapshotTest( + `mindmap +root[root] + `, + {}, + undefined, + shouldHaveRoot + ); + }); + + it('a root with wrapping text and a shape', () => { + imgSnapshotTest( + `mindmap +root[A root with a long text that wraps to keep the node size in check] + `, + {}, + undefined, + shouldHaveRoot + ); + }); + + it('a root with an icon', () => { + imgSnapshotTest( + `mindmap +root[root] +::icon(mdi mdi-fire) + `, + {}, + undefined, + shouldHaveRoot + ); + }); + + it('Blang and cloud shape', () => { + imgSnapshotTest( + `mindmap +root))bang(( + ::icon(mdi mdi-fire) + a))Another bang(( + ::icon(mdi mdi-fire) + a)A cloud( + ::icon(mdi mdi-fire) + `, + {}, + undefined, + shouldHaveRoot + ); + }); + + it('Blang and cloud shape with icons', () => { + imgSnapshotTest( + `mindmap +root))bang(( + + a))Another bang(( + a)A cloud( + `, + {}, + undefined, + shouldHaveRoot + ); + }); + + it('braches', () => { + imgSnapshotTest( + `mindmap +root + child1 + grandchild 1 + grandchild 2 + child2 + grandchild 3 + grandchild 4 + child3 + grandchild 5 + grandchild 6 + `, + {}, + undefined, + shouldHaveRoot + ); + }); + + it('braches with shapes and labels', () => { + imgSnapshotTest( + `mindmap +root + child1((Circle)) + grandchild 1 + grandchild 2 + child2(Round rectangle) + grandchild 3 + grandchild 4 + child3[Square] + grandchild 5 + ::icon(mdi mdi-fire) + gc6((grand<br/>child 6)) + ::icon(mdi mdi-fire) + `, + {}, + undefined, + shouldHaveRoot + ); + }); + it('text shouhld wrap with icon', () => { + imgSnapshotTest( + `mindmap +root + Child3(A node with an icon and with a long text that wraps to keep the node size in check) + `, + {}, + undefined, + shouldHaveRoot + ); + }); + it('square shape', () => { + imgSnapshotTest( + ` +mindmap + root[ + The root + ] + `, + {}, + undefined, + shouldHaveRoot + ); + cy.get('svg'); + }); + it('rounded rect shape', () => { + imgSnapshotTest( + ` +mindmap + root(( + The root + )) + `, + {}, + undefined, + shouldHaveRoot + ); + cy.get('svg'); + }); + it('circle shape', () => { + imgSnapshotTest( + ` +mindmap + root( + The root + ) + `, + {}, + undefined, + shouldHaveRoot + ); + cy.get('svg'); + }); + it('default shape', () => { + imgSnapshotTest( + ` +mindmap + The root + `, + {}, + undefined, + shouldHaveRoot + ); + cy.get('svg'); + }); + it('adding children', () => { + imgSnapshotTest( + ` +mindmap + The root + child1 + child2 + `, + {}, + undefined, + shouldHaveRoot + ); + cy.get('svg'); + }); + it('adding grand children', () => { + imgSnapshotTest( + ` +mindmap + The root + child1 + child2 + child3 + `, + {}, + undefined, + shouldHaveRoot + ); + cy.get('svg'); + }); + /* The end */ +}); diff --git a/cypress/integration/rendering/stateDiagram-v2.spec.js b/cypress/integration/rendering/stateDiagram-v2.spec.js index 5b43c890c..0eca01873 100644 --- a/cypress/integration/rendering/stateDiagram-v2.spec.js +++ b/cypress/integration/rendering/stateDiagram-v2.spec.js @@ -559,4 +559,16 @@ stateDiagram-v2 ); }); }); + it('1433: should render a simple state diagram with a title', () => { + imgSnapshotTest( + `--- +title: simple state diagram +--- +stateDiagram-v2 +[*] --> State1 +State1 --> [*] +`, + {} + ); + }); }); diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json new file mode 100644 index 000000000..e3351cebe --- /dev/null +++ b/cypress/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "target": "es2020", + "lib": ["es2020", "dom"], + "types": ["cypress", "node"] + }, + "include": ["**/*.ts"] +} diff --git a/demos/classchart.html b/demos/classchart.html index 5979152d6..031f3b608 100644 --- a/demos/classchart.html +++ b/demos/classchart.html @@ -17,6 +17,9 @@ <h1>Class diagram demos</h1> <pre class="mermaid"> +--- +title: Demo Class Diagram +--- classDiagram accTitle: Demo Class Diagram accDescr: This class diagram show the abstract Animal class, and 3 classes that inherit from it: Duck, Fish, and Zebra. diff --git a/demos/er.html b/demos/er.html index 4c1a72c20..06fbf020e 100644 --- a/demos/er.html +++ b/demos/er.html @@ -20,6 +20,9 @@ <body> <pre class="mermaid"> +--- +title: This is a title +--- erDiagram %% title This is a title %% accDescription Test a description diff --git a/demos/flowchart.html b/demos/flowchart.html index e11bfcb26..7251e586e 100644 --- a/demos/flowchart.html +++ b/demos/flowchart.html @@ -17,6 +17,9 @@ <h2>Sample 1</h2> <h3>graph</h3> <pre class="mermaid"> +--- +title: This is a complicated flow +--- graph LR accTitle: This is a complicated flow accDescr: This is the descriptoin for the complicated flow. @@ -221,6 +224,9 @@ <h2>Sample 2</h2> <h3>graph</h3> <pre class="mermaid"> +--- +title: What to buy +--- graph TD accTitle: What to buy accDescr: Options of what to buy with Christmas money diff --git a/demos/git.html b/demos/git.html index 15b4401db..99c53d7d0 100644 --- a/demos/git.html +++ b/demos/git.html @@ -16,6 +16,9 @@ <body> <h1>Git diagram demo</h1> <pre class="mermaid"> +--- +title: Simple Git diagram +--- gitGraph: options { diff --git a/demos/index.html b/demos/index.html index a65681ddf..da27cdcff 100644 --- a/demos/index.html +++ b/demos/index.html @@ -48,6 +48,9 @@ <li> <h2><a href="./journey.html">Journey</a></h2> </li> + <li> + <h2><a href="./mindmap.html">Mindmap</a></h2> + </li> <li> <h2><a href="./pie.html">Pie</a></h2> </li> diff --git a/demos/journey.html b/demos/journey.html index c5c6c25e8..dadcfb13c 100644 --- a/demos/journey.html +++ b/demos/journey.html @@ -16,8 +16,10 @@ <body> <h1>Journey diagram demo</h1> <pre class="mermaid"> - journey - title My working day +--- +title: My working day +--- + journey accTitle: Very simple journey demo accDescr: 2 main sections: work and home, each with just a few tasks diff --git a/demos/mindmap.html b/demos/mindmap.html new file mode 100644 index 000000000..a5b554a1a --- /dev/null +++ b/demos/mindmap.html @@ -0,0 +1,108 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <title>Mindmap Mermaid Quick Test Page + + + + + +

Mindmap diagram demo

+
+        mindmap
+        root
+            child1((Circle))
+                grandchild 1
+                grandchild 2
+            child2(Round rectangle)
+                grandchild 3
+                grandchild 4
+            child3[Square]
+                grandchild 5
+                ::icon(mdi mdi-fire)
+                gc6((grand
child 6)) + ::icon(mdi mdi-fire) + gc7((grand
grand
child 8)) +
+ +

Mindmap with root wrapping text and a shape

+
+        mindmap
+            root[A root with a long text that wraps to keep the node size in check]
+    
+ + + + diff --git a/demos/state.html b/demos/state.html index dbe2286a3..3d070f379 100644 --- a/demos/state.html +++ b/demos/state.html @@ -1,5 +1,5 @@ - + @@ -17,6 +17,9 @@

State diagram demos

Very simple showing change from State1 to State2

+---
+title: Very simple diagram
+---
 		stateDiagram
 		  accTitle: This is the accessible title
       accDescr:This is an accessible description
@@ -30,8 +33,9 @@
     

classDef notMoving fill:white
- classDef movement font-style:italic;
- classDef badBadEvent fill:#f00,color:white,font-weight:bold
+ classDef movement font-style:italic
+ classDef badBadEvent + fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow

And these are how they are applied:

@@ -43,15 +47,20 @@

-		stateDiagram-v2
+---
+title: Very simple diagram
+---
+		stateDiagram
+      direction TB
+
 		  accTitle: This is the accessible title
       accDescr: This is an accessible description
 
       classDef notMoving fill:white
-      classDef movement font-style:italic;
-      classDef badBadEvent fill:#f00,color:white,font-weight:bold
+      classDef movement font-style:italic
+      classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow
 
-      [*] --> Still
+      [*]--> Still
       Still --> [*]
       Still --> Moving
       Moving --> Still
@@ -61,10 +70,57 @@
       class Still notMoving
       class Moving, Crash movement
       class Crash badBadEvent
+      class end badBadEvent
     

+

Here is a diagram that uses the ::: operator to apply styles to states

+

Here are the classDef statements:

+

+ + classDef notMoving fill:white
+ classDef movement font-style:italic
+ classDef badBadEvent + fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow
+
+

+

And these are how they are applied:

+

+ + [*] --> Still:::notMoving
+ ...
+ Still --> Moving:::movement
+ ...
+ Moving --> Crash:::movement
+ Crash:::badBadEvent --> [*]
+
+

+

+ Note that both the starting state and the end state have styles applied:
+ The start state has the start classDef style
and the end state has the + stop classDef style applied. +

+
+    stateDiagram
+      direction TB
+
+		  accTitle: This is the accessible title
+      accDescr: This is an accessible description
+
+      classDef notMoving fill:white
+      classDef movement font-style:italic
+      classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow
+
+      [*] --> Still:::notMoving
+      Still --> [*]
+      Still --> Moving:::movement
+      Moving --> Still
+      Moving --> Crash:::movement
+      Crash:::badBadEvent --> [*]
+    
+
+
     stateDiagram-v2
       accTitle: very very simple state
@@ -73,6 +129,20 @@
     

+

States with spaces in them

+
+      stateDiagram
+        classDef yourState font-style:italic,font-weight:bold,fill:white
+
+        yswsii: Your state with spaces in it
+        [*] --> yswsii:::yourState
+        [*] --> SomeOtherState
+        SomeOtherState --> YetAnotherState
+        yswsii --> YetAnotherState
+        YetAnotherState --> [*]
+    
+
+

You can label the relationships

     stateDiagram-v2
@@ -121,7 +191,7 @@
     
       stateDiagram-v2
       [*] --> S1
-      S1 --> S2: This long line uses a br tag
to create multiple
lines. + S1 --> S2: This long line uses a br tag
to create multiple
lines. S1 --> S3: This transition descripton uses \na newline character\nto create multiple\nlines.
@@ -133,7 +203,7 @@ direction LR State1: A state with a note note right of State1 - Important information!
You can write notes.
And\nthey\ncan\nbe\nmulti-\nline. + Important information!
You can write notes.
And\nthey\ncan\nbe\nmulti-\nline. end note State1 --> State2 note left of State2 : Notes can be to the left of a state\n(like this one). diff --git a/docs/config/setup/modules/defaultConfig.md b/docs/config/setup/modules/defaultConfig.md index c7ad1402f..05f6f8a2c 100644 --- a/docs/config/setup/modules/defaultConfig.md +++ b/docs/config/setup/modules/defaultConfig.md @@ -14,7 +14,7 @@ #### Defined in -[defaultConfig.ts:1881](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L1881) +[defaultConfig.ts:1933](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L1933) --- diff --git a/docs/config/usage.md b/docs/config/usage.md index a0fb371cd..29273e9b5 100644 --- a/docs/config/usage.md +++ b/docs/config/usage.md @@ -348,7 +348,7 @@ on what kind of integration you use. ## Using the mermaid object -Is it possible to set some configuration via the mermaid object. The two parameters that are supported using this +It is possible to set some configuration via the mermaid object. The two parameters that are supported using this approach are: - mermaid.startOnLoad diff --git a/docs/intro/index.md b/docs/intro/index.md index a3ed371ac..b8a27acff 100644 --- a/docs/intro/index.md +++ b/docs/intro/index.md @@ -14,7 +14,7 @@ It is a JavaScript based diagramming and charting tool that renders Markdown-ins -[![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [![Twitter Follow](https://img.shields.io/twitter/follow/mermaidjs_?style=social)](https://twitter.com/mermaidjs_) +[![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![npm minified gzipped bundle size](https://img.shields.io/bundlephobia/minzip/mermaid)](https://bundlephobia.com/package/mermaid) [![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [![Twitter Follow](https://img.shields.io/twitter/follow/mermaidjs_?style=social)](https://twitter.com/mermaidjs_) diff --git a/docs/misc/integrations.md b/docs/misc/integrations.md index f9fe5761f..007b9e778 100644 --- a/docs/misc/integrations.md +++ b/docs/misc/integrations.md @@ -39,6 +39,7 @@ They also serve as proof of concept, for the variety of things that can be built - [markdown-for-mermaid-plugin](https://github.com/jamieh-mongolian/markdown-for-mermaid-plugin) - [JetBrains IDE eg Pycharm](https://www.jetbrains.com/go/guide/tips/mermaid-js-support-in-markdown/) - [mermerd](https://github.com/KarnerTh/mermerd) +- Visual Studio Code [Polyglot Interactive Notebooks](https://github.com/dotnet/interactive#net-interactive) ## CRM/ERP/Similar @@ -121,6 +122,7 @@ They also serve as proof of concept, for the variety of things that can be built - [Draw.io](https://draw.io) - [Plugin](https://github.com/nopeslide/drawio_mermaid_plugin) - [Inkdrop](https://www.inkdrop.app) - [Plugin](https://github.com/inkdropapp/inkdrop-mermaid) - [Vim](https://www.vim.org) + - [Official Vim Syntax and ftplugin](https://github.com/craigmac/vim-mermaid) - [Vim Diagram Syntax](https://github.com/zhaozg/vim-diagram) - [GNU Emacs](https://www.gnu.org/software/emacs/) - [Major mode for .mmd files](https://github.com/abrochard/mermaid-mode) diff --git a/docs/syntax/c4c.md b/docs/syntax/c4c.md index ef1295450..e946aedb6 100644 --- a/docs/syntax/c4c.md +++ b/docs/syntax/c4c.md @@ -567,7 +567,7 @@ UpdateRelStyle(customerA, bankA, $offsetY="60") Container(mobile, "Mobile App", "Xamarin", "Provides a limited subset of the Internet Banking functionality to customers via their mobile device.") } - Deployment_Node(comp, "Customer's computer", "Mircosoft Windows or Apple macOS"){ + Deployment_Node(comp, "Customer's computer", "Microsoft Windows or Apple macOS"){ Deployment_Node(browser, "Web Browser", "Google Chrome, Mozilla Firefox,
Apple Safari or Microsoft Edge"){ Container(spa, "Single Page Application", "JavaScript and Angular", "Provides all of the Internet Banking functionality to customers via their web browser.") } @@ -619,7 +619,7 @@ UpdateRelStyle(customerA, bankA, $offsetY="60") Container(mobile, "Mobile App", "Xamarin", "Provides a limited subset of the Internet Banking functionality to customers via their mobile device.") } - Deployment_Node(comp, "Customer's computer", "Mircosoft Windows or Apple macOS"){ + Deployment_Node(comp, "Customer's computer", "Microsoft Windows or Apple macOS"){ Deployment_Node(browser, "Web Browser", "Google Chrome, Mozilla Firefox,
Apple Safari or Microsoft Edge"){ Container(spa, "Single Page Application", "JavaScript and Angular", "Provides all of the Internet Banking functionality to customers via their web browser.") } diff --git a/docs/syntax/classDiagram.md b/docs/syntax/classDiagram.md index d57125c84..5870d0743 100644 --- a/docs/syntax/classDiagram.md +++ b/docs/syntax/classDiagram.md @@ -14,6 +14,9 @@ The class diagram is the main building block of object-oriented modeling. It is Mermaid can render class diagrams. ```mermaid-example +--- +title: Animal example +--- classDiagram note "From Duck till Zebra" Animal <|-- Duck @@ -40,6 +43,9 @@ classDiagram ``` ```mermaid +--- +title: Animal example +--- classDiagram note "From Duck till Zebra" Animal <|-- Duck @@ -77,6 +83,9 @@ A single instance of a class in the diagram contains three compartments: - The bottom compartment contains the operations the class can execute. They are also left-aligned and the first letter is lowercase. ```mermaid-example +--- +title: Bank example +--- classDiagram class BankAccount BankAccount : +String owner @@ -87,6 +96,9 @@ classDiagram ``` ```mermaid +--- +title: Bank example +--- classDiagram class BankAccount BankAccount : +String owner @@ -559,7 +571,7 @@ You would define these actions on a separate line after all classes have been de ## Notes -It is possible to add notes on digram using `note "line1\nline2"` or note for class using `note for class "line1\nline2"` +It is possible to add notes on diagram using `note "line1\nline2"` or note for class using `note for class "line1\nline2"` ### Examples diff --git a/docs/syntax/entityRelationshipDiagram.md b/docs/syntax/entityRelationshipDiagram.md index fef7b6fee..9b938bc36 100644 --- a/docs/syntax/entityRelationshipDiagram.md +++ b/docs/syntax/entityRelationshipDiagram.md @@ -13,6 +13,9 @@ Note that practitioners of ER modelling almost always refer to _entity types_ si Mermaid can render ER diagrams ```mermaid-example +--- +title: Order example +--- erDiagram CUSTOMER ||--o{ ORDER : places ORDER ||--|{ LINE-ITEM : contains @@ -20,6 +23,9 @@ erDiagram ``` ```mermaid +--- +title: Order example +--- erDiagram CUSTOMER ||--o{ ORDER : places ORDER ||--|{ LINE-ITEM : contains diff --git a/docs/syntax/flowchart.md b/docs/syntax/flowchart.md index 234f46236..8b3859f8a 100644 --- a/docs/syntax/flowchart.md +++ b/docs/syntax/flowchart.md @@ -15,11 +15,17 @@ It can also accommodate different arrow types, multi directional arrows, and lin ### A node (default) ```mermaid-example +--- +title: Node +--- flowchart LR id ``` ```mermaid +--- +title: Node +--- flowchart LR id ``` @@ -33,11 +39,17 @@ found for the node that will be used. Also if you define edges for the node late one previously defined will be used when rendering the box. ```mermaid-example +--- +title: Node with text +--- flowchart LR id1[This is the text in the box] ``` ```mermaid +--- +title: Node with text +--- flowchart LR id1[This is the text in the box] ``` @@ -980,7 +992,7 @@ flowchart LR ## Configuration... -Is it possible to adjust the width of the rendered flowchart. +It is possible to adjust the width of the rendered flowchart. This is done by defining **mermaid.flowchartConfig** or by the CLI to use a JSON file with the configuration. How to use the CLI is described in the mermaidCLI page. mermaid.flowchartConfig can be set to a JSON string with config parameters or the corresponding object. diff --git a/docs/syntax/gitgraph.md b/docs/syntax/gitgraph.md index cd1a3f12a..964fe3886 100644 --- a/docs/syntax/gitgraph.md +++ b/docs/syntax/gitgraph.md @@ -13,31 +13,37 @@ These kind of diagram are particularly helpful to developers and devops teams to Mermaid can render Git diagrams ```mermaid-example - gitGraph - commit - commit - branch develop - checkout develop - commit - commit - checkout main - merge develop - commit - commit +--- +title: Example Git diagram +--- +gitGraph + commit + commit + branch develop + checkout develop + commit + commit + checkout main + merge develop + commit + commit ``` ```mermaid - gitGraph - commit - commit - branch develop - checkout develop - commit - commit - checkout main - merge develop - commit - commit +--- +title: Example Git diagram +--- +gitGraph + commit + commit + branch develop + checkout develop + commit + commit + checkout main + merge develop + commit + commit ``` In Mermaid, we support the basic git operations like: diff --git a/docs/syntax/mindmap.md b/docs/syntax/mindmap.md index 26a1065be..628461c4f 100644 --- a/docs/syntax/mindmap.md +++ b/docs/syntax/mindmap.md @@ -21,7 +21,7 @@ mindmap Popularisation British popular psychology author Tony Buzan Research - On effectivness
and eatures + On effectiveness
and features On Automatic creation Uses Creative techniques @@ -42,7 +42,7 @@ mindmap Popularisation British popular psychology author Tony Buzan Research - On effectivness
and eatures + On effectiveness
and features On Automatic creation Uses Creative techniques @@ -152,6 +152,18 @@ mindmap id)I am a cloud( ``` +### Hexagon + +```mermaid-example +mindmap + id{{I am a hexagon}} +``` + +```mermaid +mindmap + id{{I am a hexagon}} +``` + ### Default ```mermaid-example diff --git a/docs/syntax/pie.md b/docs/syntax/pie.md index 6801b3619..63f371e87 100644 --- a/docs/syntax/pie.md +++ b/docs/syntax/pie.md @@ -35,7 +35,7 @@ Drawing a pie chart is really simple in mermaid. - Followed by dataSet. Pie slices will be ordered clockwise in the same order as the labels. - `label` for a section in the pie diagram within `" "` quotes. - Followed by `:` colon as separator - - Followed by `positive numeric value` (supported upto two decimal places) + - Followed by `positive numeric value` (supported up to two decimal places) \[pie] \[showData] (OPTIONAL) \[title] \[titlevalue] (OPTIONAL) diff --git a/docs/syntax/sequenceDiagram.md b/docs/syntax/sequenceDiagram.md index 4e89eb0c6..ad88249be 100644 --- a/docs/syntax/sequenceDiagram.md +++ b/docs/syntax/sequenceDiagram.md @@ -727,7 +727,7 @@ text.actor { ## Configuration -Is it possible to adjust the margins for rendering the sequence diagram. +It is possible to adjust the margins for rendering the sequence diagram. This is done by defining `mermaid.sequenceConfig` or by the CLI to use a json file with the configuration. How to use the CLI is described in the [mermaidCLI](../config/mermaidCLI.md) page. diff --git a/docs/syntax/stateDiagram.md b/docs/syntax/stateDiagram.md index ec91411f6..72d7ec63b 100644 --- a/docs/syntax/stateDiagram.md +++ b/docs/syntax/stateDiagram.md @@ -6,11 +6,17 @@ # State diagrams -> "A state diagram is a type of diagram used in computer science and related fields to describe the behavior of systems. State diagrams require that the system described is composed of a finite number of states; sometimes, this is indeed the case, while at other times this is a reasonable abstraction." Wikipedia +> "A state diagram is a type of diagram used in computer science and related fields to describe the behavior of systems. +> State diagrams require that the system described is composed of a finite number of states; sometimes, this is indeed the +> case, while at other times this is a reasonable abstraction." Wikipedia -Mermaid can render state diagrams. The syntax tries to be compliant with the syntax used in plantUml as this will make it easier for users to share diagrams between mermaid and plantUml. +Mermaid can render state diagrams. The syntax tries to be compliant with the syntax used in plantUml as this will make +it easier for users to share diagrams between mermaid and plantUml. ```mermaid-example +--- +title: Simple sample +--- stateDiagram-v2 [*] --> Still Still --> [*] @@ -22,6 +28,9 @@ stateDiagram-v2 ``` ```mermaid +--- +title: Simple sample +--- stateDiagram-v2 [*] --> Still Still --> [*] @@ -56,20 +65,23 @@ stateDiagram Crash --> [*] ``` -In state diagrams systems are described in terms of its states and how the systems state can change to another state via a transitions. The example diagram above shows three states **Still**, **Moving** and **Crash**. You start in the state of Still. From Still you can change the state to Moving. In Moving you can change the state either back to Still or to Crash. There is no transition from Still to Crash. +In state diagrams systems are described in terms of _states_ and how one _state_ can change to another _state_ via +a _transition._ The example diagram above shows three states: **Still**, **Moving** and **Crash**. You start in the +**Still** state. From **Still** you can change to the **Moving** state. From **Moving** you can change either back to the **Still** state or to +the **Crash** state. There is no transition from **Still** to **Crash**. (You can't crash if you're still.) ## States -A state can be declared in multiple ways. The simplest way is to define a state id as a description. +A state can be declared in multiple ways. The simplest way is to define a state with just an id: ```mermaid-example stateDiagram-v2 - s1 + stateId ``` ```mermaid stateDiagram-v2 - s1 + stateId ``` Another way is by using the state keyword with a description as per below: @@ -100,7 +112,8 @@ stateDiagram-v2 Transitions are path/edges when one state passes into another. This is represented using text arrow, "-->". -When you define a transition between two states and the states are not already defined the undefined states are defined with the id from the transition. You can later add descriptions to states defined this way. +When you define a transition between two states and the states are not already defined, the undefined states are defined +with the id from the transition. You can later add descriptions to states defined this way. ```mermaid-example stateDiagram-v2 @@ -112,7 +125,7 @@ stateDiagram-v2 s1 --> s2 ``` -It is possible to add text to a transition. To describe what it represents. +It is possible to add text to a transition to describe what it represents: ```mermaid-example stateDiagram-v2 @@ -126,7 +139,8 @@ stateDiagram-v2 ## Start and End -There are two special states indicating the start and stop of the diagram. These are written with the \[\*] syntax and the direction of the transition to it defines it either as a start or a stop state. +There are two special states indicating the start and stop of the diagram. These are written with the \[\*] syntax and +the direction of the transition to it defines it either as a start or a stop state. ```mermaid-example stateDiagram-v2 @@ -142,10 +156,11 @@ stateDiagram-v2 ## Composite states -In a real world use of state diagrams you often end up with diagrams that are multi-dimensional as one state can +In a real world use of state diagrams you often end up with diagrams that are multidimensional as one state can have several internal states. These are called composite states in this terminology. -In order to define a composite state you need to use the state keyword followed by an id and the body of the composite state between {}. See the example below: +In order to define a composite state you need to use the state keyword followed by an id and the body of the composite +state between {}. See the example below: ```mermaid-example stateDiagram-v2 @@ -305,7 +320,7 @@ It is possible to specify a fork in the diagram using <\> <\>. ## Notes -Sometimes nothing says it better then a Post-it note. That is also the case in state diagrams. +Sometimes nothing says it better than a Post-it note. That is also the case in state diagrams. Here you can choose to put the note to the _right of_ or to the _left of_ a node. @@ -375,7 +390,8 @@ stateDiagram-v2 ## Setting the direction of the diagram -With state diagrams you can use the direction statement to set the direction which the diagram will render like in this example. +With state diagrams you can use the direction statement to set the direction which the diagram will render like in this +example. ```mermaid-example stateDiagram @@ -405,7 +421,9 @@ stateDiagram ## Comments -Comments can be entered within a state diagram chart, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any diagram syntax +Comments can be entered within a state diagram chart, which will be ignored by the parser. Comments need to be on their +own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next +newline will be treated as a comment, including any diagram syntax ```mermaid-example stateDiagram-v2 @@ -429,22 +447,204 @@ stateDiagram-v2 Crash --> [*] ``` -## Styling +## Styling with classDefs -Styling of the a state diagram is done by defining a number of css classes. During rendering these classes are extracted from the file located at src/themes/state.scss +As with other diagrams (like flowcharts), you can define a style in the diagram itself and apply that named style to a +state or states in the diagram. + +**These are the current limitations with state diagram classDefs:** + +1. Cannot be applied to start or end states +2. Cannot be applied to or within composite states + +_These are in development and will be available in a future version._ + +You define a style using the `classDef` keyword, which is short for "class definition" (where "class" means something +like a _CSS class_) +followed by _a name for the style,_ +and then one or more _property-value pairs_. Each _property-value pair_ is +a _[valid CSS property name](https://www.w3.org/TR/CSS/#properties)_ followed by a colon (`:`) and then a _value._ + +Here is an example of a classDef with just one property-value pair: + + classDef movement font-style:italic; + +where + +- the _name_ of the style is `movement` +- the only _property_ is `font-style` and its _value_ is `italic` + +If you want to have more than one _property-value pair_ then you put a comma (`,`) between each _property-value pair._ + +Here is an example with three property-value pairs: + + classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow + +where + +- the _name_ of the style is `badBadEvent` +- the first _property_ is `fill` and its _value_ is `#f00` +- the second _property_ is `color` and its _value_ is `white` +- the third _property_ is `font-weight` and its _value_ is `bold` +- the fourth _property_ is `stroke-width` and its _value_ is `2px` +- the fifth _property_ is `stroke` and its _value_ is `yello` + +### Apply classDef styles to states + +There are two ways to apply a `classDef` style to a state: + +1. use the `class` keyword to apply a classDef style to one or more states in a single statement, or +2. use the `:::` operator to apply a classDef style to a state as it is being used in a transition statement (e.g. with an arrow + to/from another state) + +#### 1. `class` statement + +A `class` statement tells Mermaid to apply the named classDef to one or more classes. The form is: + +```text + class [one or more state names, separated by commas] [name of a style defined with classDef] +``` + +Here is an example applying the `badBadEvent` style to a state named `Crash`: + +```text +class Crash badBadEvent +``` + +Here is an example applying the `movement` style to the two states `Moving` and `Crash`: + +```text +class Moving, Crash movement +``` + +Here is a diagram that shows the examples in use. Note that the `Crash` state has two classDef styles applied: `movement` +and `badBadEvent` + +```mermaid-example + stateDiagram + direction TB + + accTitle: This is the accessible title + accDescr: This is an accessible description + + classDef notMoving fill:white + classDef movement font-style:italic + classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow + + [*]--> Still + Still --> [*] + Still --> Moving + Moving --> Still + Moving --> Crash + Crash --> [*] + + class Still notMoving + class Moving, Crash movement + class Crash badBadEvent + class end badBadEvent +``` + +```mermaid + stateDiagram + direction TB + + accTitle: This is the accessible title + accDescr: This is an accessible description + + classDef notMoving fill:white + classDef movement font-style:italic + classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow + + [*]--> Still + Still --> [*] + Still --> Moving + Moving --> Still + Moving --> Crash + Crash --> [*] + + class Still notMoving + class Moving, Crash movement + class Crash badBadEvent + class end badBadEvent +``` + +#### 2. `:::` operator to apply a style to a state + +You can apply a classDef style to a state using the `:::` (three colons) operator. The syntax is + +```text +[state]:::[style name] +``` + +You can use this in a diagram within a statement using a class. This includes the start and end states. For example: + +```mermaid-example +stateDiagram + direction TB + + accTitle: This is the accessible title + accDescr: This is an accessible description + + classDef notMoving fill:white + classDef movement font-style:italic; + classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow + + [*] --> Still:::notMoving + Still --> [*] + Still --> Moving:::movement + Moving --> Still + Moving --> Crash:::movement + Crash:::badBadEvent --> [*] +``` + +```mermaid +stateDiagram + direction TB + + accTitle: This is the accessible title + accDescr: This is an accessible description + + classDef notMoving fill:white + classDef movement font-style:italic; + classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow + + [*] --> Still:::notMoving + Still --> [*] + Still --> Moving:::movement + Moving --> Still + Moving --> Crash:::movement + Crash:::badBadEvent --> [*] +``` ## Spaces in state names -Spaces can be added to a state by defining it at the top and referencing the acronym later. +Spaces can be added to a state by first defining the state with an id and then referencing the id later. + +In the following example there is a state with the id **yswsii** and description **Your state with spaces in it**. +After it has been defined, **yswsii** is used in the diagram in the first transition (`[*] --> yswsii`) +and also in the transition to **YetAnotherState** (`yswsii --> YetAnotherState`).\ +(**yswsii** has been styled so that it is different from the other states.) ```mermaid-example -stateDiagram-v2 - Yswsii: Your state with spaces in it - [*] --> Yswsii +stateDiagram + classDef yourState font-style:italic,font-weight:bold,fill:white + + yswsii: Your state with spaces in it + [*] --> yswsii:::yourState + [*] --> SomeOtherState + SomeOtherState --> YetAnotherState + yswsii --> YetAnotherState + YetAnotherState --> [*] ``` ```mermaid -stateDiagram-v2 - Yswsii: Your state with spaces in it - [*] --> Yswsii +stateDiagram + classDef yourState font-style:italic,font-weight:bold,fill:white + + yswsii: Your state with spaces in it + [*] --> yswsii:::yourState + [*] --> SomeOtherState + SomeOtherState --> YetAnotherState + yswsii --> YetAnotherState + YetAnotherState --> [*] ``` diff --git a/package.json b/package.json index 7bd648877..aec72da87 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "9.2.2", "description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "type": "module", - "packageManager": "pnpm@7.15.0", + "packageManager": "pnpm@7.17.0", "keywords": [ "diagram", "markdown", @@ -15,8 +15,9 @@ "git graph" ], "scripts": { - "build:mermaid": "ts-node-esm --transpileOnly .vite/build.ts --mermaid", "build:vite": "ts-node-esm --transpileOnly .vite/build.ts", + "build:mermaid": "pnpm build:vite --mermaid", + "build:viz": "pnpm build:mermaid --visualize", "build:types": "tsc -p ./packages/mermaid/tsconfig.json --emitDeclarationOnly && tsc -p ./packages/mermaid-mindmap/tsconfig.json --emitDeclarationOnly", "build:watch": "pnpm build:vite --watch", "build": "pnpm run -r clean && concurrently \"pnpm build:vite\" \"pnpm build:types\"", @@ -59,11 +60,13 @@ "@cspell/eslint-plugin": "^6.14.2", "@types/eslint": "^8.4.10", "@types/express": "^4.17.14", + "@types/js-yaml": "^4.0.5", "@types/jsdom": "^20.0.1", "@types/lodash": "^4.14.188", "@types/mdast": "^3.0.10", "@types/node": "^18.11.9", "@types/prettier": "^2.7.1", + "@types/rollup-plugin-visualizer": "^4.2.1", "@typescript-eslint/eslint-plugin": "^5.42.1", "@typescript-eslint/parser": "^5.42.1", "@vitest/coverage-c8": "^0.25.1", @@ -80,15 +83,18 @@ "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", "eslint-plugin-json": "^3.1.0", + "eslint-plugin-lodash": "^7.4.0", "eslint-plugin-markdown": "^3.0.0", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-tsdoc": "^0.2.17", + "eslint-plugin-unicorn": "^45.0.0", "express": "^4.18.2", "globby": "^13.1.2", "husky": "^8.0.2", "identity-obj-proxy": "^3.0.0", "jest": "^29.3.1", "jison": "^0.4.18", + "js-yaml": "^4.1.0", "jsdom": "^20.0.2", "lint-staged": "^13.0.3", "path-browserify": "^1.0.1", @@ -96,6 +102,7 @@ "prettier": "^2.7.1", "prettier-plugin-jsdoc": "^0.4.2", "rimraf": "^3.0.2", + "rollup-plugin-visualizer": "^5.8.3", "start-server-and-test": "^1.14.0", "ts-node": "^10.9.1", "typescript": "^4.8.4", @@ -103,15 +110,8 @@ "vitepress": "^1.0.0-alpha.28", "vitepress-plugin-mermaid": "^2.0.8", "vitepress-plugin-search": "^1.0.4-alpha.15", - "vitest": "^0.25.1" + "vitest": "^0.25.3" }, - "resolutions": { - "d3": "^7.6.1" - }, - "sideEffects": [ - "**/*.css", - "**/*.scss" - ], "volta": { "node": "18.12.1" } diff --git a/packages/mermaid-mindmap/src/mindmap.spec.js b/packages/mermaid-mindmap/src/mindmap.spec.js index b9e9abf6e..e3f018350 100644 --- a/packages/mermaid-mindmap/src/mindmap.spec.js +++ b/packages/mermaid-mindmap/src/mindmap.spec.js @@ -172,6 +172,18 @@ root expect(mm.children.length).toEqual(0); expect(mm.type).toEqual(mindmap.yy.nodeType.BANG); }); + + it('MMP-12-a mutiple types (hexagon)', function () { + let str = `mindmap + root{{the root}} +`; + + mindmap.parse(str); + const mm = mindmap.yy.getMindmap(); + expect(mm.type).toEqual(mindmap.yy.nodeType.HEXAGON); + expect(mm.descr).toEqual('the root'); + expect(mm.children.length).toEqual(0); + }); }); describe('decorations', function () { it('MMP-13 should be possible to set an icon for the node', function () { diff --git a/packages/mermaid-mindmap/src/mindmapDb.js b/packages/mermaid-mindmap/src/mindmapDb.js index 2ae98c223..16861cd23 100644 --- a/packages/mermaid-mindmap/src/mindmapDb.js +++ b/packages/mermaid-mindmap/src/mindmapDb.js @@ -42,6 +42,9 @@ export const addNode = (level, id, descr, type) => { case nodeType.RECT: node.padding = 2 * conf.mindmap.padding; break; + case nodeType.HEXAGON: + node.padding = 2 * conf.mindmap.padding; + break; default: node.padding = conf.mindmap.padding; } @@ -79,6 +82,7 @@ export const nodeType = { CIRCLE: 3, CLOUD: 4, BANG: 5, + HEXAGON: 6, }; export const getType = (startStr, endStr) => { @@ -94,6 +98,8 @@ export const getType = (startStr, endStr) => { return nodeType.CLOUD; case '))': return nodeType.BANG; + case '{{': + return nodeType.HEXAGON; default: return nodeType.DEFAULT; } @@ -127,6 +133,8 @@ export const type2Str = (type) => { return 'cloud'; case nodeType.BANG: return 'bang'; + case nodeType.HEXAGON: + return 'hexgon'; default: return 'no-border'; } diff --git a/packages/mermaid-mindmap/src/mindmapRenderer.js b/packages/mermaid-mindmap/src/mindmapRenderer.js index c0760e4ac..9fd557e51 100644 --- a/packages/mermaid-mindmap/src/mindmapRenderer.js +++ b/packages/mermaid-mindmap/src/mindmapRenderer.js @@ -92,10 +92,6 @@ function addNodes(mindmap, cy, conf, level) { */ function layoutMindmap(node, conf) { return new Promise((resolve) => { - if (node.children.length === 0) { - return node; - } - // Add temporary render element const renderEl = select('body').append('div').attr('id', 'cy').attr('style', 'display:none'); const cy = cytoscape({ diff --git a/packages/mermaid-mindmap/src/parser/mindmap.jison b/packages/mermaid-mindmap/src/parser/mindmap.jison index bd008db7f..a96ee6261 100644 --- a/packages/mermaid-mindmap/src/parser/mindmap.jison +++ b/packages/mermaid-mindmap/src/parser/mindmap.jison @@ -33,11 +33,12 @@ "))" { yy.getLogger().trace('Explosion Bang'); this.begin('NODE');return 'NODE_DSTART'; } ")" { yy.getLogger().trace('Cloud Bang'); this.begin('NODE');return 'NODE_DSTART'; } "((" { this.begin('NODE');return 'NODE_DSTART'; } +"{{" { this.begin('NODE');return 'NODE_DSTART'; } "(" { this.begin('NODE');return 'NODE_DSTART'; } "[" { this.begin('NODE');return 'NODE_DSTART'; } [\s]+ return 'SPACELIST' /* skip all whitespace */ ; // !(-\() return 'NODE_ID'; -[^\(\[\n\-\)]+ return 'NODE_ID'; +[^\(\[\n\-\)\{\}]+ return 'NODE_ID'; <> return 'EOF'; ["] { yy.getLogger().trace('Starting NSTR');this.begin("NSTR");} [^"]+ { yy.getLogger().trace('description:', yytext); return "NODE_DESCR";} @@ -45,11 +46,12 @@ [\)]\) {this.popState();yy.getLogger().trace('node end ))');return "NODE_DEND";} [\)] {this.popState();yy.getLogger().trace('node end )');return "NODE_DEND";} [\]] {this.popState();yy.getLogger().trace('node end ...',yytext);return "NODE_DEND";} +"}}" {this.popState();yy.getLogger().trace('node end ((');return "NODE_DEND";} "(-" {this.popState();yy.getLogger().trace('node end (-');return "NODE_DEND";} "-)" {this.popState();yy.getLogger().trace('node end (-');return "NODE_DEND";} "((" {this.popState();yy.getLogger().trace('node end ((');return "NODE_DEND";} -"(" {this.popState();yy.getLogger().trace('node end ((');return "NODE_DEND";} -[^\)\]\(]+ { yy.getLogger().trace('Long description:', yytext); return 'NODE_DESCR';} +"(" {this.popState();yy.getLogger().trace('node end ((');return "NODE_DEND";} +[^\)\]\(\}]+ { yy.getLogger().trace('Long description:', yytext); return 'NODE_DESCR';} .+(?!\(\() { yy.getLogger().trace('Long description:', yytext); return 'NODE_DESCR';} // [\[] return 'NODE_START'; // .+ return 'TXT' ; diff --git a/packages/mermaid-mindmap/src/styles.js b/packages/mermaid-mindmap/src/styles.js index a409aa4e5..986a04514 100644 --- a/packages/mermaid-mindmap/src/styles.js +++ b/packages/mermaid-mindmap/src/styles.js @@ -17,7 +17,7 @@ const genSections = (options) => { sections += ` .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${ i - 1 - } path { + } polygon, .section-${i - 1} path { fill: ${options['cScale' + i]}; } .section-${i - 1} text { @@ -55,7 +55,7 @@ const getStyles = (options) => stroke-width: 3; } ${genSections(options)} - .section-root rect, .section-root path, .section-root circle { + .section-root rect, .section-root path, .section-root circle, .section-root polygon { fill: ${options.git0}; } .section-root text { diff --git a/packages/mermaid-mindmap/src/svgDraw.js b/packages/mermaid-mindmap/src/svgDraw.js index 314503b20..d4f57f1f1 100644 --- a/packages/mermaid-mindmap/src/svgDraw.js +++ b/packages/mermaid-mindmap/src/svgDraw.js @@ -145,6 +145,45 @@ const circleBkg = function (elem, node) { .attr('class', 'node-bkg node-' + db.type2Str(node.type)) .attr('r', node.width / 2); }; + +/** + * + * @param parent + * @param w + * @param h + * @param points + * @param node + */ +function insertPolygonShape(parent, w, h, points, node) { + return parent + .insert('polygon', ':first-child') + .attr( + 'points', + points + .map(function (d) { + return d.x + ',' + d.y; + }) + .join(' ') + ) + .attr('transform', 'translate(' + (node.width - w) / 2 + ', ' + h + ')'); +} + +const hexagonBkg = function (elem, node) { + const h = node.height; + const f = 4; + const m = h / f; + const w = node.width - node.padding + 2 * m; + const points = [ + { x: m, y: 0 }, + { x: w - m, y: 0 }, + { x: w, y: -h / 2 }, + { x: w - m, y: -h }, + { x: m, y: -h }, + { x: 0, y: -h / 2 }, + ]; + const shapeSvg = insertPolygonShape(elem, w, h, points, node); +}; + const roundedRectBkg = function (elem, node) { elem .append('rect') @@ -252,6 +291,9 @@ export const drawNode = function (elem, node, fullSection, conf) { case db.nodeType.BANG: bangBkg(bkgElem, node, section, conf); break; + case db.nodeType.HEXAGON: + hexagonBkg(bkgElem, node, section, conf); + break; } // Position the node to its coordinate diff --git a/packages/mermaid/.lintstagedrc.json b/packages/mermaid/.lintstagedrc.json deleted file mode 100644 index c3cbb926b..000000000 --- a/packages/mermaid/.lintstagedrc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "src/docs/**": ["pnpm --filter mermaid run docs:build --git"], - "src/docs.mts": ["pnpm --filter mermaid run docs:build --git"], - "src/(defaultConfig|config|mermaidAPI).ts": ["pnpm --filter mermaid run docs:build --git"], - "*.jison": ["pnpm run lint:jison"] -} diff --git a/packages/mermaid/.lintstagedrc.mjs b/packages/mermaid/.lintstagedrc.mjs new file mode 100644 index 000000000..fe79ad254 --- /dev/null +++ b/packages/mermaid/.lintstagedrc.mjs @@ -0,0 +1,7 @@ +import baseConfig from '../../.lintstagedrc.mjs'; +export default { + ...baseConfig, + 'src/docs/**': ['pnpm --filter mermaid run docs:build --git'], + 'src/docs.mts': ['pnpm --filter mermaid run docs:build --git'], + 'src/(defaultConfig|config|mermaidAPI).ts': ['pnpm --filter mermaid run docs:build --git'], +}; diff --git a/packages/mermaid/README.md b/packages/mermaid/README.md index 90ae1ad4c..91c2d1640 100644 --- a/packages/mermaid/README.md +++ b/packages/mermaid/README.md @@ -1,23 +1,6 @@ # mermaid -[![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [![Twitter Follow](https://img.shields.io/twitter/follow/mermaidjs_?style=social)](https://twitter.com/mermaidjs_) - -# Whoa, what's going on here? - -We are transforming the Mermaid repository to a so called mono-repo. This is a part of the effort to decouple the diagrams from the core of mermaid. This will: - -- Make it possible to select which diagrams to include on your site -- Open up for lazy loading -- Make it possible to add diagrams from outside of the Mermaid repository -- Separate the release flow between different diagrams and the Mermaid core - -As such be aware of some changes.. - -# We use pnpm now - -# The source code has moved - -It is now located in the src folder for each respective package located as subfolders in packages. +[![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![npm minified gzipped bundle size](https://img.shields.io/bundlephobia/minzip/mermaid)](https://bundlephobia.com/package/mermaid) [![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [![Twitter Follow](https://img.shields.io/twitter/follow/mermaidjs_?style=social)](https://twitter.com/mermaidjs_) English | [简体中文](./README.zh-CN.md) diff --git a/packages/mermaid/README.zh-CN.md b/packages/mermaid/README.zh-CN.md index fcaa1f523..0ccef27e4 100644 --- a/packages/mermaid/README.zh-CN.md +++ b/packages/mermaid/README.zh-CN.md @@ -1,6 +1,6 @@ # mermaid -[![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [![Twitter Follow](https://img.shields.io/twitter/follow/mermaidjs_?style=social)](https://twitter.com/mermaidjs_) +[![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![npm minified gzipped bundle size](https://img.shields.io/bundlephobia/minzip/mermaid)](https://bundlephobia.com/package/mermaid) [![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [![Twitter Follow](https://img.shields.io/twitter/follow/mermaidjs_?style=social)](https://twitter.com/mermaidjs_) [English](./README.md) | 简体中文 diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index 9a713ed9c..4b24fb661 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -1,7 +1,7 @@ { "name": "mermaid", "version": "9.2.2", - "description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", + "description": "Markdown-ish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "main": "./dist/mermaid.min.js", "module": "./dist/mermaid.core.mjs", "types": "./dist/mermaid.d.ts", @@ -26,12 +26,13 @@ "scripts": { "clean": "rimraf dist", "docs:code": "typedoc src/defaultConfig.ts src/config.ts src/mermaidAPI.ts && prettier --write ./src/docs/config/setup", - "docs:build": "rimraf ../../docs && pnpm docs:code && ts-node-esm src/docs.mts", - "docs:verify": "pnpm docs:code && ts-node-esm src/docs.mts --verify", + "docs:build": "rimraf ../../docs && pnpm docs:spellcheck && pnpm docs:code && ts-node-esm src/docs.mts", + "docs:verify": "pnpm docs:spellcheck && pnpm docs:code && ts-node-esm src/docs.mts --verify", "docs:pre:vitepress": "rimraf src/vitepress && pnpm docs:code && ts-node-esm src/docs.mts --vitepress", "docs:build:vitepress": "pnpm docs:pre:vitepress && vitepress build src/vitepress", "docs:dev": "pnpm docs:pre:vitepress && concurrently \"vitepress dev src/vitepress\" \"ts-node-esm src/docs.mts --watch --vitepress\"", "docs:serve": "pnpm docs:build:vitepress && vitepress serve src/vitepress", + "docs:spellcheck": "cspell --config ../../cSpell.json \"src/docs/**/*.md\"", "release": "pnpm build", "prepublishOnly": "pnpm -w run build" }, @@ -54,13 +55,12 @@ "dependencies": { "@braintree/sanitize-url": "^6.0.0", "d3": "^7.0.0", - "dagre": "^0.8.5", - "dagre-d3": "^0.6.4", + "dagre-d3-es": "7.0.4", "dompurify": "2.4.1", "fast-clone": "^1.5.13", "graphlib": "^2.1.8", "khroma": "^2.0.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "moment-mini": "^2.24.0", "non-layered-tidy-tree-layout": "^2.0.2", "stylis": "^4.1.2", @@ -70,7 +70,7 @@ "@types/d3": "^7.4.0", "@types/dompurify": "^2.4.0", "@types/jsdom": "^20.0.1", - "@types/lodash": "^4.14.188", + "@types/lodash-es": "^4.17.6", "@types/micromatch": "^4.0.2", "@types/prettier": "^2.7.1", "@types/stylis": "^4.0.2", @@ -80,6 +80,7 @@ "chokidar": "^3.5.3", "concurrently": "^7.5.0", "coveralls": "^3.1.1", + "cspell": "^6.14.3", "globby": "^13.1.2", "identity-obj-proxy": "^3.0.0", "jison": "^0.4.18", @@ -97,9 +98,6 @@ "typescript": "^4.8.4", "unist-util-flatmap": "^1.0.0" }, - "resolutions": { - "d3": "^7.0.0" - }, "files": [ "dist", "README.md" diff --git a/packages/mermaid/src/Diagram.ts b/packages/mermaid/src/Diagram.ts index 798adf501..a2349c255 100644 --- a/packages/mermaid/src/Diagram.ts +++ b/packages/mermaid/src/Diagram.ts @@ -2,6 +2,7 @@ import * as configApi from './config'; import { log } from './logger'; import { getDiagram, registerDiagram } from './diagram-api/diagramAPI'; import { detectType, getDiagramLoader } from './diagram-api/detectType'; +import { extractFrontMatter } from './diagram-api/frontmatter'; import { isDetailedError, type DetailedError } from './utils'; export type ParseErrorFunction = (err: string | DetailedError, hash?: any) => void; @@ -29,6 +30,16 @@ export class Diagram { this.db.clear?.(); this.renderer = diagram.renderer; this.parser = diagram.parser; + const originalParse = this.parser.parse.bind(this.parser); + // Wrap the jison parse() method to handle extracting frontmatter. + // + // This can't be done in this.parse() because some code + // directly calls diagram.parser.parse(), bypassing this.parse(). + // + // Similarly, we can't do this in getDiagramFromText() because some code + // calls diagram.db.clear(), which would reset anything set by + // extractFrontMatter(). + this.parser.parse = (text: string) => originalParse(extractFrontMatter(text, this.db)); this.parser.parser.yy = this.db; if (diagram.init) { diagram.init(cnf); @@ -45,7 +56,7 @@ export class Diagram { } try { text = text + '\n'; - this.db.clear(); + this.db.clear?.(); this.parser.parse(text); return true; } catch (error) { diff --git a/packages/mermaid/src/config.type.ts b/packages/mermaid/src/config.type.ts index cbcd2f661..ff199ca8b 100644 --- a/packages/mermaid/src/config.type.ts +++ b/packages/mermaid/src/config.type.ts @@ -189,6 +189,7 @@ export interface C4DiagramConfig extends BaseDiagramConfig { } export interface GitGraphDiagramConfig extends BaseDiagramConfig { + titleTopMargin?: number; diagramPadding?: number; nodeLabel?: NodeLabel; mainBranchName?: string; @@ -227,6 +228,7 @@ export interface MindmapDiagramConfig extends BaseDiagramConfig { export type PieDiagramConfig = BaseDiagramConfig; export interface ErDiagramConfig extends BaseDiagramConfig { + titleTopMargin?: number; diagramPadding?: number; layoutDirection?: string; minEntityWidth?: number; @@ -238,6 +240,7 @@ export interface ErDiagramConfig extends BaseDiagramConfig { } export interface StateDiagramConfig extends BaseDiagramConfig { + titleTopMargin?: number; arrowMarkerAbsolute?: boolean; dividerMargin?: number; sizeUnit?: number; @@ -258,6 +261,7 @@ export interface StateDiagramConfig extends BaseDiagramConfig { } export interface ClassDiagramConfig extends BaseDiagramConfig { + titleTopMargin?: number; arrowMarkerAbsolute?: boolean; dividerMargin?: number; padding?: number; @@ -343,6 +347,7 @@ export interface SequenceDiagramConfig extends BaseDiagramConfig { } export interface FlowchartDiagramConfig extends BaseDiagramConfig { + titleTopMargin?: number; arrowMarkerAbsolute?: boolean; diagramPadding?: number; htmlLabels?: boolean; diff --git a/packages/mermaid/src/dagre-wrapper/index.js b/packages/mermaid/src/dagre-wrapper/index.js index 72652ff8c..8b77c8520 100644 --- a/packages/mermaid/src/dagre-wrapper/index.js +++ b/packages/mermaid/src/dagre-wrapper/index.js @@ -1,5 +1,5 @@ -import dagre from 'dagre'; -import graphlib from 'graphlib'; +import { layout as dagreLayout } from 'dagre-d3-es/src/dagre/index.js'; +import * as graphlibJson from 'dagre-d3-es/src/graphlib/json'; import insertMarkers from './markers'; import { updateNodeBounds } from './shapes/util'; import { @@ -15,7 +15,7 @@ import { insertEdgeLabel, positionEdgeLabel, insertEdge, clear as clearEdges } f import { log } from '../logger'; const recursiveRender = (_elem, graph, diagramtype, parentCluster) => { - log.info('Graph in recursive render: XXX', graphlib.json.write(graph), parentCluster); + log.info('Graph in recursive render: XXX', graphlibJson.write(graph), parentCluster); const dir = graph.graph().rankdir; log.trace('Dir in recursive render - dir:', dir); @@ -95,8 +95,8 @@ const recursiveRender = (_elem, graph, diagramtype, parentCluster) => { log.info('### Layout ###'); log.info('#############################################'); log.info(graph); - dagre.layout(graph); - log.info('Graph after layout:', graphlib.json.write(graph)); + dagreLayout(graph); + log.info('Graph after layout:', graphlibJson.write(graph)); // Move the nodes to the correct place let diff = 0; sortNodesByHierarchy(graph).forEach(function (v) { @@ -153,10 +153,10 @@ export const render = (elem, graph, markers, diagramtype, id) => { clearClusters(); clearGraphlib(); - log.warn('Graph at first:', graphlib.json.write(graph)); + log.warn('Graph at first:', graphlibJson.write(graph)); adjustClustersAndEdges(graph); - log.warn('Graph after:', graphlib.json.write(graph)); - // log.warn('Graph ever after:', graphlib.json.write(graph.node('A').graph)); + log.warn('Graph after:', graphlibJson.write(graph)); + // log.warn('Graph ever after:', graphlibJson.write(graph.node('A').graph)); recursiveRender(elem, graph, diagramtype); }; diff --git a/packages/mermaid/src/dagre-wrapper/mermaid-graphlib.js b/packages/mermaid/src/dagre-wrapper/mermaid-graphlib.js index 56f656430..15fadc940 100644 --- a/packages/mermaid/src/dagre-wrapper/mermaid-graphlib.js +++ b/packages/mermaid/src/dagre-wrapper/mermaid-graphlib.js @@ -1,6 +1,7 @@ /** Decorates with functions required by mermaids dagre-wrapper. */ import { log } from '../logger'; -import graphlib from 'graphlib'; +import * as graphlibJson from 'dagre-d3-es/src/graphlib/json'; +import * as graphlib from 'dagre-d3-es/src/graphlib'; export let clusterDb = {}; let decendants = {}; @@ -322,7 +323,7 @@ export const adjustClustersAndEdges = (graph, depth) => { graph.setEdge(v, w, edge, e.name); } }); - log.warn('Adjusted Graph', graphlib.json.write(graph)); + log.warn('Adjusted Graph', graphlibJson.write(graph)); extractor(graph, 0); log.trace(clusterDb); @@ -336,7 +337,7 @@ export const adjustClustersAndEdges = (graph, depth) => { }; export const extractor = (graph, depth) => { - log.warn('extractor - ', depth, graphlib.json.write(graph), graph.children('D')); + log.warn('extractor - ', depth, graphlibJson.write(graph), graph.children('D')); if (depth > 10) { log.error('Bailing out'); return; @@ -415,7 +416,7 @@ export const extractor = (graph, depth) => { return {}; }); - log.warn('Old graph before copy', graphlib.json.write(graph)); + log.warn('Old graph before copy', graphlibJson.write(graph)); copy(node, graph, clusterGraph, node); graph.setNode(node, { clusterNode: true, @@ -424,8 +425,8 @@ export const extractor = (graph, depth) => { labelText: clusterDb[node].labelText, graph: clusterGraph, }); - log.warn('New graph after copy node: (', node, ')', graphlib.json.write(clusterGraph)); - log.debug('Old graph after copy', graphlib.json.write(graph)); + log.warn('New graph after copy node: (', node, ')', graphlibJson.write(clusterGraph)); + log.debug('Old graph after copy', graphlibJson.write(graph)); } else { log.warn( 'Cluster ** ', diff --git a/packages/mermaid/src/dagre-wrapper/mermaid-graphlib.spec.js b/packages/mermaid/src/dagre-wrapper/mermaid-graphlib.spec.js index 8155bbf70..49b022f4d 100644 --- a/packages/mermaid/src/dagre-wrapper/mermaid-graphlib.spec.js +++ b/packages/mermaid/src/dagre-wrapper/mermaid-graphlib.spec.js @@ -1,5 +1,5 @@ -import graphlib from 'graphlib'; -import dagre from 'dagre'; +import * as graphlibJson from 'dagre-d3-es/src/graphlib/json'; +import * as graphlib from 'dagre-d3-es/src/graphlib'; import { validate, adjustClustersAndEdges, @@ -233,9 +233,9 @@ describe('Graphlib decorations', () => { g.setParent('D', 'C'); // log.info('Graph before', g.node('D')) - // log.info('Graph before', graphlib.json.write(g)) + // log.info('Graph before', graphlibJson.write(g)) adjustClustersAndEdges(g); - // log.info('Graph after', graphlib.json.write(g), g.node('C').graph) + // log.info('Graph after', graphlibJson.write(g), g.node('C').graph) const CGraph = g.node('C').graph; const DGraph = CGraph.node('D').graph; @@ -279,9 +279,9 @@ describe('Graphlib decorations', () => { g.setEdge('A', 'C', { data: 'link2' }, '2'); log.info('Graph before', g.node('D')); - log.info('Graph before', graphlib.json.write(g)); + log.info('Graph before', graphlibJson.write(g)); adjustClustersAndEdges(g); - log.trace('Graph after', graphlib.json.write(g)); + log.trace('Graph after', graphlibJson.write(g)); expect(g.nodes()).toEqual(['C', 'B', 'A']); expect(g.nodes().length).toBe(3); expect(g.edges().length).toBe(2); @@ -334,11 +334,11 @@ describe('Graphlib decorations', () => { g.setEdge('c', 'd', { data: 'link2' }, '2'); g.setEdge('d', 'e', { data: 'link2' }, '2'); - log.info('Graph before', graphlib.json.write(g)); + log.info('Graph before', graphlibJson.write(g)); adjustClustersAndEdges(g); const bGraph = g.node('b').graph; - // log.trace('Graph after', graphlib.json.write(g)) - log.info('Graph after', graphlib.json.write(bGraph)); + // log.trace('Graph after', graphlibJson.write(g)) + log.info('Graph after', graphlibJson.write(bGraph)); expect(bGraph.nodes().length).toBe(3); expect(bGraph.edges().length).toBe(2); }); @@ -360,13 +360,13 @@ describe('Graphlib decorations', () => { g.setParent('c', 'b'); g.setParent('e', 'c'); - log.info('Graph before', graphlib.json.write(g)); + log.info('Graph before', graphlibJson.write(g)); adjustClustersAndEdges(g); const aGraph = g.node('a').graph; const bGraph = aGraph.node('b').graph; - log.info('Graph after', graphlib.json.write(aGraph)); + log.info('Graph after', graphlibJson.write(aGraph)); const cGraph = bGraph.node('c').graph; - // log.trace('Graph after', graphlib.json.write(g)) + // log.trace('Graph after', graphlibJson.write(g)) expect(aGraph.nodes().length).toBe(1); expect(bGraph.nodes().length).toBe(1); expect(cGraph.nodes().length).toBe(1); @@ -388,14 +388,14 @@ flowchart TB const exportedGraph = JSON.parse( '{"options":{"directed":true,"multigraph":true,"compound":true},"nodes":[{"v":"A","value":{"labelStyle":"","shape":"rect","labelText":"A","rx":0,"ry":0,"class":"default","style":"","id":"A","width":500,"type":"group","padding":15}},{"v":"B","value":{"labelStyle":"","shape":"rect","labelText":"B","rx":0,"ry":0,"class":"default","style":"","id":"B","width":500,"type":"group","padding":15},"parent":"A"},{"v":"b","value":{"labelStyle":"","shape":"rect","labelText":"b","rx":0,"ry":0,"class":"default","style":"","id":"b","padding":15},"parent":"A"},{"v":"c","value":{"labelStyle":"","shape":"rect","labelText":"c","rx":0,"ry":0,"class":"default","style":"","id":"c","padding":15},"parent":"B"},{"v":"a","value":{"labelStyle":"","shape":"rect","labelText":"a","rx":0,"ry":0,"class":"default","style":"","id":"a","padding":15},"parent":"A"}],"edges":[{"v":"b","w":"B","name":"1","value":{"minlen":1,"arrowhead":"normal","arrowTypeStart":"arrow_open","arrowTypeEnd":"arrow_point","thickness":"normal","pattern":"solid","style":"fill:none","labelStyle":"","arrowheadStyle":"fill: #333","labelpos":"c","labelType":"text","label":"","id":"L-b-B","classes":"flowchart-link LS-b LE-B"}},{"v":"a","w":"c","name":"2","value":{"minlen":1,"arrowhead":"normal","arrowTypeStart":"arrow_open","arrowTypeEnd":"arrow_point","thickness":"normal","pattern":"solid","style":"fill:none","labelStyle":"","arrowheadStyle":"fill: #333","labelpos":"c","labelType":"text","label":"","id":"L-a-c","classes":"flowchart-link LS-a LE-c"}}],"value":{"rankdir":"TB","nodesep":50,"ranksep":50,"marginx":8,"marginy":8}}' ); - const gr = graphlib.json.read(exportedGraph); + const gr = graphlibJson.read(exportedGraph); - log.info('Graph before', graphlib.json.write(gr)); + log.info('Graph before', graphlibJson.write(gr)); adjustClustersAndEdges(gr); const aGraph = gr.node('A').graph; const bGraph = aGraph.node('B').graph; - log.info('Graph after', graphlib.json.write(aGraph)); - // log.trace('Graph after', graphlib.json.write(g)) + log.info('Graph after', graphlibJson.write(aGraph)); + // log.trace('Graph after', graphlibJson.write(g)) expect(aGraph.parent('c')).toBe('B'); expect(aGraph.parent('B')).toBe(undefined); }); diff --git a/packages/mermaid/src/defaultConfig.ts b/packages/mermaid/src/defaultConfig.ts index 2ddae580c..37d4f71ff 100644 --- a/packages/mermaid/src/defaultConfig.ts +++ b/packages/mermaid/src/defaultConfig.ts @@ -154,6 +154,17 @@ const config: Partial = { /** The object containing configurations specific for flowcharts */ flowchart: { + /** + * ### titleTopMargin + * + * | Parameter | Description | Type | Required | Values | + * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ | + * | titleTopMargin | Margin top for the text over the flowchart | Integer | Required | Any Positive Value | + * + * **Notes:** Default value: 25 + */ + titleTopMargin: 25, + /** * | Parameter | Description | Type | Required | Values | * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ | @@ -851,6 +862,16 @@ const config: Partial = { sectionColours: ['#fff'], }, class: { + /** + * ### titleTopMargin + * + * | Parameter | Description | Type | Required | Values | + * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ | + * | titleTopMargin | Margin top for the text over the class diagram | Integer | Required | Any Positive Value | + * + * **Notes:** Default value: 25 + */ + titleTopMargin: 25, arrowMarkerAbsolute: false, dividerMargin: 10, padding: 5, @@ -884,6 +905,16 @@ const config: Partial = { defaultRenderer: 'dagre-wrapper', }, state: { + /** + * ### titleTopMargin + * + * | Parameter | Description | Type | Required | Values | + * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ | + * | titleTopMargin | Margin top for the text over the state diagram | Integer | Required | Any Positive Value | + * + * **Notes:** Default value: 25 + */ + titleTopMargin: 25, dividerMargin: 10, sizeUnit: 5, padding: 8, @@ -932,6 +963,17 @@ const config: Partial = { /** The object containing configurations specific for entity relationship diagrams */ er: { + /** + * ### titleTopMargin + * + * | Parameter | Description | Type | Required | Values | + * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ | + * | titleTopMargin | Margin top for the text over the diagram | Integer | Required | Any Positive Value | + * + * **Notes:** Default value: 25 + */ + titleTopMargin: 25, + /** * | Parameter | Description | Type | Required | Values | * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ | @@ -1085,6 +1127,16 @@ const config: Partial = { line_height: 20, }, gitGraph: { + /** + * ### titleTopMargin + * + * | Parameter | Description | Type | Required | Values | + * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ | + * | titleTopMargin | Margin top for the text over the Git diagram | Integer | Required | Any Positive Value | + * + * **Notes:** Default value: 25 + */ + titleTopMargin: 25, diagramPadding: 8, nodeLabel: { width: 75, diff --git a/packages/mermaid/src/diagram-api/detectType.ts b/packages/mermaid/src/diagram-api/detectType.ts index 1c1abc51c..6f9857221 100644 --- a/packages/mermaid/src/diagram-api/detectType.ts +++ b/packages/mermaid/src/diagram-api/detectType.ts @@ -1,6 +1,7 @@ import { MermaidConfig } from '../config.type'; import { log } from '../logger'; import { DetectorRecord, DiagramDetector, DiagramLoader } from './types'; +import { frontMatterRegex } from './frontmatter'; const directive = /[%]{2}[{]\s*(?:(?:(\w+)\s*:|(\w+))\s*(?:(?:(\w+))|((?:(?![}][%]{2}).|\r?\n)*))?\s*)(?:[}][%]{2})?/gi; @@ -31,7 +32,7 @@ const detectors: Record = {}; * @returns A graph definition key */ export const detectType = function (text: string, config?: MermaidConfig): string { - text = text.replace(directive, '').replace(anyComment, '\n'); + text = text.replace(frontMatterRegex, '').replace(directive, '').replace(anyComment, '\n'); for (const [key, { detector }] of Object.entries(detectors)) { const diagram = detector(text, config); if (diagram) { diff --git a/packages/mermaid/src/diagram-api/frontmatter.spec.ts b/packages/mermaid/src/diagram-api/frontmatter.spec.ts new file mode 100644 index 000000000..4eb9789e2 --- /dev/null +++ b/packages/mermaid/src/diagram-api/frontmatter.spec.ts @@ -0,0 +1,78 @@ +import { vi } from 'vitest'; +import { extractFrontMatter } from './frontmatter'; + +const dbMock = () => ({ setDiagramTitle: vi.fn() }); + +describe('extractFrontmatter', () => { + it('returns text unchanged if no frontmatter', () => { + expect(extractFrontMatter('diagram', dbMock())).toEqual('diagram'); + }); + + it('returns text unchanged if frontmatter lacks closing delimiter', () => { + const text = `---\ntitle: foo\ndiagram`; + expect(extractFrontMatter(text, dbMock())).toEqual(text); + }); + + it('handles empty frontmatter', () => { + const db = dbMock(); + const text = `---\n\n---\ndiagram`; + expect(extractFrontMatter(text, db)).toEqual('diagram'); + expect(db.setDiagramTitle).not.toHaveBeenCalled(); + }); + + it('handles frontmatter without mappings', () => { + const db = dbMock(); + const text = `---\n1\n---\ndiagram`; + expect(extractFrontMatter(text, db)).toEqual('diagram'); + expect(db.setDiagramTitle).not.toHaveBeenCalled(); + }); + + it('does not try to parse frontmatter at the end', () => { + const db = dbMock(); + const text = `diagram\n---\ntitle: foo\n---\n`; + expect(extractFrontMatter(text, db)).toEqual(text); + expect(db.setDiagramTitle).not.toHaveBeenCalled(); + }); + + it('handles frontmatter with multiple delimiters', () => { + const db = dbMock(); + const text = `---\ntitle: foo---bar\n---\ndiagram\n---\ntest`; + expect(extractFrontMatter(text, db)).toEqual('diagram\n---\ntest'); + expect(db.setDiagramTitle).toHaveBeenCalledWith('foo---bar'); + }); + + it('handles frontmatter with multi-line string and multiple delimiters', () => { + const db = dbMock(); + const text = `---\ntitle: |\n multi-line string\n ---\n---\ndiagram`; + expect(extractFrontMatter(text, db)).toEqual('diagram'); + expect(db.setDiagramTitle).toHaveBeenCalledWith('multi-line string\n---\n'); + }); + + it('handles frontmatter with title', () => { + const db = dbMock(); + const text = `---\ntitle: foo\n---\ndiagram`; + expect(extractFrontMatter(text, db)).toEqual('diagram'); + expect(db.setDiagramTitle).toHaveBeenCalledWith('foo'); + }); + + it('handles booleans in frontmatter properly', () => { + const db = dbMock(); + const text = `---\ntitle: true\n---\ndiagram`; + expect(extractFrontMatter(text, db)).toEqual('diagram'); + expect(db.setDiagramTitle).toHaveBeenCalledWith('true'); + }); + + it('ignores unspecified frontmatter keys', () => { + const db = dbMock(); + const text = `---\ninvalid: true\ntitle: foo\ntest: bar\n---\ndiagram`; + expect(extractFrontMatter(text, db)).toEqual('diagram'); + expect(db.setDiagramTitle).toHaveBeenCalledWith('foo'); + }); + + it('throws exception for invalid YAML syntax', () => { + const text = `---\n!!!\n---\ndiagram`; + expect(() => extractFrontMatter(text, dbMock())).toThrow( + 'tag suffix cannot contain exclamation marks' + ); + }); +}); diff --git a/packages/mermaid/src/diagram-api/frontmatter.ts b/packages/mermaid/src/diagram-api/frontmatter.ts new file mode 100644 index 000000000..800e7399b --- /dev/null +++ b/packages/mermaid/src/diagram-api/frontmatter.ts @@ -0,0 +1,40 @@ +import { DiagramDb } from './types'; +// The "* as yaml" part is necessary for tree-shaking +import * as yaml from 'js-yaml'; + +// Match Jekyll-style front matter blocks (https://jekyllrb.com/docs/front-matter/). +// Based on regex used by Jekyll: https://github.com/jekyll/jekyll/blob/6dd3cc21c40b98054851846425af06c64f9fb466/lib/jekyll/document.rb#L10 +// Note that JS doesn't support the "\A" anchor, which means we can't use +// multiline mode. +// Relevant YAML spec: https://yaml.org/spec/1.2.2/#914-explicit-documents +export const frontMatterRegex = /^(?:---\s*[\r\n])(.*?)(?:[\r\n]---\s*[\r\n]+)/s; + +type FrontMatterMetadata = { + title?: string; +}; + +/** + * Extract and parse frontmatter from text, if present, and sets appropriate + * properties in the provided db. + * @param text - The text that may have a YAML frontmatter. + * @param db - Diagram database, could be of any diagram. + * @returns text with frontmatter stripped out + */ +export function extractFrontMatter(text: string, db: DiagramDb): string { + const matches = text.match(frontMatterRegex); + if (matches) { + const parsed: FrontMatterMetadata = yaml.load(matches[1], { + // To keep things simple, only allow strings, arrays, and plain objects. + // https://www.yaml.org/spec/1.2/spec.html#id2802346 + schema: yaml.FAILSAFE_SCHEMA, + }) as FrontMatterMetadata; + + if (parsed?.title) { + db.setDiagramTitle?.(parsed.title); + } + + return text.slice(matches[0].length); + } else { + return text; + } +} diff --git a/packages/mermaid/src/diagram-api/types.ts b/packages/mermaid/src/diagram-api/types.ts index d45eac6aa..23810d133 100644 --- a/packages/mermaid/src/diagram-api/types.ts +++ b/packages/mermaid/src/diagram-api/types.ts @@ -8,8 +8,16 @@ export interface InjectUtils { _setupGraphViewbox: any; } +/** + * Generic Diagram DB that may apply to any diagram type. + */ +export interface DiagramDb { + clear?: () => void; + setDiagramTitle?: (title: string) => void; +} + export interface DiagramDefinition { - db: any; + db: DiagramDb; renderer: any; parser: any; styles: any; diff --git a/packages/mermaid/src/diagrams/class/classDb.js b/packages/mermaid/src/diagrams/class/classDb.js index 83ef6072b..9830c059e 100644 --- a/packages/mermaid/src/diagrams/class/classDb.js +++ b/packages/mermaid/src/diagrams/class/classDb.js @@ -10,6 +10,8 @@ import { getAccDescription, setAccDescription, clear as commonClear, + setDiagramTitle, + getDiagramTitle, } from '../../commonDb'; const MERMAID_DOM_ID_PREFIX = 'classid-'; @@ -408,4 +410,6 @@ export default { getTooltip, setTooltip, lookUpDomId, + setDiagramTitle, + getDiagramTitle, }; diff --git a/packages/mermaid/src/diagrams/class/classRenderer-v2.js b/packages/mermaid/src/diagrams/class/classRenderer-v2.js index fbc2e4833..905e6ee2f 100644 --- a/packages/mermaid/src/diagrams/class/classRenderer-v2.js +++ b/packages/mermaid/src/diagrams/class/classRenderer-v2.js @@ -1,8 +1,9 @@ import { select } from 'd3'; -import graphlib from 'graphlib'; +import * as graphlib from 'dagre-d3-es/src/graphlib'; import { log } from '../../logger'; import { getConfig } from '../../config'; import { render } from '../../dagre-wrapper/index.js'; +import utils from '../../utils'; import { curveLinear } from 'd3'; import { interpolateToCurve, getStylesFromArray } from '../../utils'; import { setupGraphViewbox } from '../../setupGraphViewbox'; @@ -429,6 +430,8 @@ export const draw = function (text, id, _version, diagObj) { id ); + utils.insertTitle(svg, 'classTitleText', conf.titleTopMargin, diagObj.db.getDiagramTitle()); + setupGraphViewbox(g, svg, conf.diagramPadding, conf.useMaxWidth); // Add label rects for non html labels diff --git a/packages/mermaid/src/diagrams/class/classRenderer.js b/packages/mermaid/src/diagrams/class/classRenderer.js index 23b586192..74e2a48c2 100644 --- a/packages/mermaid/src/diagrams/class/classRenderer.js +++ b/packages/mermaid/src/diagrams/class/classRenderer.js @@ -1,6 +1,6 @@ import { select } from 'd3'; -import dagre from 'dagre'; -import graphlib from 'graphlib'; +import { layout as dagreLayout } from 'dagre-d3-es/src/dagre/index.js'; +import * as graphlib from 'dagre-d3-es/src/graphlib/index.js'; import { log } from '../../logger'; import svgDraw from './svgDraw'; import { configureSvgSize } from '../../setupGraphViewbox'; @@ -238,7 +238,7 @@ export const draw = function (text, id, _version, diagObj) { } }); - dagre.layout(g); + dagreLayout(g); g.nodes().forEach(function (v) { if (typeof v !== 'undefined' && typeof g.node(v) !== 'undefined') { log.debug('Node ' + v + ': ' + JSON.stringify(g.node(v))); diff --git a/packages/mermaid/src/diagrams/class/styles.js b/packages/mermaid/src/diagrams/class/styles.js index bc391114e..981cd7b73 100644 --- a/packages/mermaid/src/diagrams/class/styles.js +++ b/packages/mermaid/src/diagrams/class/styles.js @@ -148,6 +148,11 @@ g.classGroup line { font-size: 11px; } +.classTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${options.textColor}; +} `; export default getStyles; diff --git a/packages/mermaid/src/diagrams/er/erDb.js b/packages/mermaid/src/diagrams/er/erDb.js index ad3454f84..96b60836b 100644 --- a/packages/mermaid/src/diagrams/er/erDb.js +++ b/packages/mermaid/src/diagrams/er/erDb.js @@ -8,6 +8,8 @@ import { getAccDescription, setAccDescription, clear as commonClear, + setDiagramTitle, + getDiagramTitle, } from '../../commonDb'; let entities = {}; @@ -94,4 +96,6 @@ export default { getAccTitle, setAccDescription, getAccDescription, + setDiagramTitle, + getDiagramTitle, }; diff --git a/packages/mermaid/src/diagrams/er/erRenderer.js b/packages/mermaid/src/diagrams/er/erRenderer.js index 323bb4607..36267f415 100644 --- a/packages/mermaid/src/diagrams/er/erRenderer.js +++ b/packages/mermaid/src/diagrams/er/erRenderer.js @@ -1,8 +1,9 @@ -import graphlib from 'graphlib'; +import * as graphlib from 'dagre-d3-es/src/graphlib'; import { line, curveBasis, select } from 'd3'; -import dagre from 'dagre'; +import { layout as dagreLayout } from 'dagre-d3-es/src/dagre/index.js'; import { getConfig } from '../../config'; import { log } from '../../logger'; +import utils from '../../utils'; import erMarkers from './erMarkers'; import { configureSvgSize } from '../../setupGraphViewbox'; import addSVGAccessibilityFields from '../../accessibility'; @@ -210,9 +211,6 @@ const drawAttributes = (groupNode, entityTextNode, attributes) => { const typeRect = groupNode .insert('rect', '#' + attributeNode.tn.node().id) .classed(`er ${attribStyle}`, true) - .style('fill', conf.fill) - .style('fill-opacity', '100%') - .style('stroke', conf.stroke) .attr('x', 0) .attr('y', heightOffset) .attr('width', maxTypeWidth + widthPadding * 2 + spareColumnWidth) @@ -230,9 +228,6 @@ const drawAttributes = (groupNode, entityTextNode, attributes) => { const nameRect = groupNode .insert('rect', '#' + attributeNode.nn.node().id) .classed(`er ${attribStyle}`, true) - .style('fill', conf.fill) - .style('fill-opacity', '100%') - .style('stroke', conf.stroke) .attr('x', nameXOffset) .attr('y', heightOffset) .attr('width', maxNameWidth + widthPadding * 2 + spareColumnWidth) @@ -252,9 +247,6 @@ const drawAttributes = (groupNode, entityTextNode, attributes) => { const keyTypeRect = groupNode .insert('rect', '#' + attributeNode.kn.node().id) .classed(`er ${attribStyle}`, true) - .style('fill', conf.fill) - .style('fill-opacity', '100%') - .style('stroke', conf.stroke) .attr('x', keyTypeAndCommentXOffset) .attr('y', heightOffset) .attr('width', maxKeyWidth + widthPadding * 2 + spareColumnWidth) @@ -275,9 +267,6 @@ const drawAttributes = (groupNode, entityTextNode, attributes) => { groupNode .insert('rect', '#' + attributeNode.cn.node().id) .classed(`er ${attribStyle}`, 'true') - .style('fill', conf.fill) - .style('fill-opacity', '100%') - .style('stroke', conf.stroke) .attr('x', keyTypeAndCommentXOffset) .attr('y', heightOffset) .attr('width', maxCommentWidth + widthPadding * 2 + spareColumnWidth) @@ -347,9 +336,6 @@ const drawEntities = function (svgNode, entities, graph) { const rectNode = groupNode .insert('rect', '#' + textId) .classed('er entityBox', true) - .style('fill', conf.fill) - .style('fill-opacity', '100%') - .style('stroke', conf.stroke) .attr('x', 0) .attr('y', 0) .attr('width', entityWidth) @@ -547,9 +533,7 @@ const drawRelationshipFromLayout = function (svg, rel, g, insert, diagObj) { .attr('x', labelPoint.x - labelBBox.width / 2) .attr('y', labelPoint.y - labelBBox.height / 2) .attr('width', labelBBox.width) - .attr('height', labelBBox.height) - .style('fill', 'white') - .style('fill-opacity', '85%'); + .attr('height', labelBBox.height); }; /** @@ -637,7 +621,7 @@ export const draw = function (text, id, _version, diagObj) { // Add all the relationships to the graph const relationships = addRelationships(diagObj.db.getRelationships(), g); - dagre.layout(g); // Node and edge positions will be updated + dagreLayout(g); // Node and edge positions will be updated // Adjust the positions of the entities so that they adhere to the layout adjustEntities(svg, g); @@ -649,6 +633,8 @@ export const draw = function (text, id, _version, diagObj) { const padding = conf.diagramPadding; + utils.insertTitle(svg, 'entityTitleText', conf.titleTopMargin, diagObj.db.getDiagramTitle()); + const svgBounds = svg.node().getBBox(); const width = svgBounds.width + padding * 2; const height = svgBounds.height + padding * 2; diff --git a/packages/mermaid/src/diagrams/er/styles.js b/packages/mermaid/src/diagrams/er/styles.js index 907d813b6..42dbcebde 100644 --- a/packages/mermaid/src/diagrams/er/styles.js +++ b/packages/mermaid/src/diagrams/er/styles.js @@ -27,6 +27,12 @@ const getStyles = (options) => .relationshipLine { stroke: ${options.lineColor}; } + + .entityTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${options.textColor}; + } `; export default getStyles; diff --git a/packages/mermaid/src/diagrams/flowchart/flowChartShapes.js b/packages/mermaid/src/diagrams/flowchart/flowChartShapes.js index b66bfe730..d02d484c4 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowChartShapes.js +++ b/packages/mermaid/src/diagrams/flowchart/flowChartShapes.js @@ -1,4 +1,5 @@ -import dagreD3 from 'dagre-d3'; +import { intersectPolygon } from 'dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js'; +import { intersectRect } from 'dagre-d3-es/src/dagre-js/intersect/intersect-rect.js'; /** * @param parent @@ -17,7 +18,7 @@ function question(parent, bbox, node) { ]; const shapeSvg = insertPolygonShape(parent, s, s, points); node.intersect = function (point) { - return dagreD3.intersect.polygon(node, points, point); + return intersectPolygon(node, points, point); }; return shapeSvg; } @@ -42,7 +43,7 @@ function hexagon(parent, bbox, node) { ]; const shapeSvg = insertPolygonShape(parent, w, h, points); node.intersect = function (point) { - return dagreD3.intersect.polygon(node, points, point); + return intersectPolygon(node, points, point); }; return shapeSvg; } @@ -64,7 +65,7 @@ function rect_left_inv_arrow(parent, bbox, node) { ]; const shapeSvg = insertPolygonShape(parent, w, h, points); node.intersect = function (point) { - return dagreD3.intersect.polygon(node, points, point); + return intersectPolygon(node, points, point); }; return shapeSvg; } @@ -85,7 +86,7 @@ function lean_right(parent, bbox, node) { ]; const shapeSvg = insertPolygonShape(parent, w, h, points); node.intersect = function (point) { - return dagreD3.intersect.polygon(node, points, point); + return intersectPolygon(node, points, point); }; return shapeSvg; } @@ -106,7 +107,7 @@ function lean_left(parent, bbox, node) { ]; const shapeSvg = insertPolygonShape(parent, w, h, points); node.intersect = function (point) { - return dagreD3.intersect.polygon(node, points, point); + return intersectPolygon(node, points, point); }; return shapeSvg; } @@ -127,7 +128,7 @@ function trapezoid(parent, bbox, node) { ]; const shapeSvg = insertPolygonShape(parent, w, h, points); node.intersect = function (point) { - return dagreD3.intersect.polygon(node, points, point); + return intersectPolygon(node, points, point); }; return shapeSvg; } @@ -148,7 +149,7 @@ function inv_trapezoid(parent, bbox, node) { ]; const shapeSvg = insertPolygonShape(parent, w, h, points); node.intersect = function (point) { - return dagreD3.intersect.polygon(node, points, point); + return intersectPolygon(node, points, point); }; return shapeSvg; } @@ -170,7 +171,7 @@ function rect_right_inv_arrow(parent, bbox, node) { ]; const shapeSvg = insertPolygonShape(parent, w, h, points); node.intersect = function (point) { - return dagreD3.intersect.polygon(node, points, point); + return intersectPolygon(node, points, point); }; return shapeSvg; } @@ -194,7 +195,7 @@ function stadium(parent, bbox, node) { .attr('height', h); node.intersect = function (point) { - return dagreD3.intersect.rect(node, point); + return intersectRect(node, point); }; return shapeSvg; } @@ -221,7 +222,7 @@ function subroutine(parent, bbox, node) { ]; const shapeSvg = insertPolygonShape(parent, w, h, points); node.intersect = function (point) { - return dagreD3.intersect.polygon(node, points, point); + return intersectPolygon(node, points, point); }; return shapeSvg; } @@ -270,7 +271,7 @@ function cylinder(parent, bbox, node) { .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')'); node.intersect = function (point) { - const pos = dagreD3.intersect.rect(node, point); + const pos = intersectRect(node, point); const x = pos.x - node.x; if ( diff --git a/packages/mermaid/src/diagrams/flowchart/flowDb.js b/packages/mermaid/src/diagrams/flowchart/flowDb.js index 6abc22659..38754c667 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowDb.js +++ b/packages/mermaid/src/diagrams/flowchart/flowDb.js @@ -10,6 +10,8 @@ import { getAccDescription, setAccDescription, clear as commonClear, + setDiagramTitle, + getDiagramTitle, } from '../../commonDb'; const MERMAID_DOM_ID_PREFIX = 'flowchart-'; @@ -785,4 +787,6 @@ export default { }, exists, makeUniq, + setDiagramTitle, + getDiagramTitle, }; diff --git a/packages/mermaid/src/diagrams/flowchart/flowRenderer-v2.js b/packages/mermaid/src/diagrams/flowchart/flowRenderer-v2.js index 6b7c4c1bf..fa1b692cf 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowRenderer-v2.js +++ b/packages/mermaid/src/diagrams/flowchart/flowRenderer-v2.js @@ -1,11 +1,12 @@ -import graphlib from 'graphlib'; +import * as graphlib from 'dagre-d3-es/src/graphlib'; import { select, curveLinear, selectAll } from 'd3'; import flowDb from './flowDb'; import { getConfig } from '../../config'; +import utils from '../../utils'; import { render } from '../../dagre-wrapper/index.js'; -import addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js'; +import { addHtmlLabel } from 'dagre-d3-es/src/dagre-js/label/add-html-label.js'; import { log } from '../../logger'; import common, { evaluate } from '../common/common'; import { interpolateToCurve, getStylesFromArray } from '../../utils'; @@ -437,6 +438,8 @@ export const draw = function (text, id, _version, diagObj) { const element = root.select('#' + id + ' g'); render(element, g, ['point', 'circle', 'cross'], 'flowchart', id); + utils.insertTitle(svg, 'flowchartTitleText', conf.titleTopMargin, diagObj.db.getDiagramTitle()); + setupGraphViewbox(g, svg, conf.diagramPadding, conf.useMaxWidth); // Index nodes diff --git a/packages/mermaid/src/diagrams/flowchart/flowRenderer.js b/packages/mermaid/src/diagrams/flowchart/flowRenderer.js index c403b7fe3..7febc4034 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowRenderer.js +++ b/packages/mermaid/src/diagrams/flowchart/flowRenderer.js @@ -1,8 +1,9 @@ -import graphlib from 'graphlib'; +import * as graphlib from 'dagre-d3-es/src/graphlib'; import { select, curveLinear, selectAll } from 'd3'; import { getConfig } from '../../config'; -import dagreD3 from 'dagre-d3'; -import addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js'; +import { render as Render } from 'dagre-d3-es'; +import { applyStyle } from 'dagre-d3-es/src/dagre-js/util.js'; +import { addHtmlLabel } from 'dagre-d3-es/src/dagre-js/label/add-html-label.js'; import { log } from '../../logger'; import common, { evaluate } from '../common/common'; import { interpolateToCurve, getStylesFromArray } from '../../utils'; @@ -370,7 +371,6 @@ export const draw = function (text, id, _version, diagObj) { addEdges(edges, g, diagObj); // Create the renderer - const Render = dagreD3.render; const render = new Render(); // Add custom shapes @@ -390,7 +390,7 @@ export const draw = function (text, id, _version, diagObj) { .attr('orient', 'auto'); const path = marker.append('path').attr('d', 'M 0 0 L 0 0 L 0 0 z'); - dagreD3.util.applyStyle(path, edge[type + 'Style']); + applyStyle(path, edge[type + 'Style']); }; // Override normal arrowhead defined in d3. Remove style & add class to allow css styling. diff --git a/packages/mermaid/src/diagrams/flowchart/parser/flow-direction.spec.js b/packages/mermaid/src/diagrams/flowchart/parser/flow-direction.spec.js index 6b741fc12..6cba33f88 100644 --- a/packages/mermaid/src/diagrams/flowchart/parser/flow-direction.spec.js +++ b/packages/mermaid/src/diagrams/flowchart/parser/flow-direction.spec.js @@ -1,6 +1,6 @@ import flowDb from '../flowDb'; import flow from './flow'; -import filter from 'lodash/filter'; +import filter from 'lodash-es/filter'; import { setConfig } from '../../../config'; setConfig({ diff --git a/packages/mermaid/src/diagrams/flowchart/parser/subgraph.spec.js b/packages/mermaid/src/diagrams/flowchart/parser/subgraph.spec.js index aa8e9217f..6fec233e7 100644 --- a/packages/mermaid/src/diagrams/flowchart/parser/subgraph.spec.js +++ b/packages/mermaid/src/diagrams/flowchart/parser/subgraph.spec.js @@ -1,6 +1,6 @@ import flowDb from '../flowDb'; import flow from './flow'; -import filter from 'lodash/filter'; +import filter from 'lodash-es/filter'; import { setConfig } from '../../../config'; setConfig({ diff --git a/packages/mermaid/src/diagrams/flowchart/styles.ts b/packages/mermaid/src/diagrams/flowchart/styles.ts index 82fb1f875..a89d33d3d 100644 --- a/packages/mermaid/src/diagrams/flowchart/styles.ts +++ b/packages/mermaid/src/diagrams/flowchart/styles.ts @@ -103,6 +103,12 @@ const getStyles = (options: FlowChartStyleOptions) => pointer-events: none; z-index: 100; } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${options.textColor}; + } `; export default getStyles; diff --git a/packages/mermaid/src/diagrams/git/gitGraphAst.js b/packages/mermaid/src/diagrams/git/gitGraphAst.js index 496e578b7..65980933d 100644 --- a/packages/mermaid/src/diagrams/git/gitGraphAst.js +++ b/packages/mermaid/src/diagrams/git/gitGraphAst.js @@ -10,6 +10,8 @@ import { getAccDescription, setAccDescription, clear as commonClear, + setDiagramTitle, + getDiagramTitle, } from '../../commonDb'; let mainBranchName = getConfig().gitGraph.mainBranchName; @@ -529,5 +531,7 @@ export default { getAccTitle, getAccDescription, setAccDescription, + setDiagramTitle, + getDiagramTitle, commitType, }; diff --git a/packages/mermaid/src/diagrams/git/gitGraphRenderer.js b/packages/mermaid/src/diagrams/git/gitGraphRenderer.js index 71698a500..75e8d445d 100644 --- a/packages/mermaid/src/diagrams/git/gitGraphRenderer.js +++ b/packages/mermaid/src/diagrams/git/gitGraphRenderer.js @@ -1,6 +1,7 @@ import { select } from 'd3'; import { getConfig, setupGraphViewbox } from '../../diagram-api/diagramAPI'; import { log } from '../../logger'; +import utils from '../../utils'; import addSVGAccessibilityFields from '../../accessibility'; let allCommitsDict = {}; @@ -521,6 +522,12 @@ export const draw = function (txt, id, ver, diagObj) { } drawArrows(diagram, allCommitsDict); drawCommits(diagram, allCommitsDict, true); + utils.insertTitle( + diagram, + 'gitTitleText', + gitGraphConfig.titleTopMargin, + diagObj.db.getDiagramTitle() + ); // Setup the view box and size of the svg element setupGraphViewbox( diff --git a/packages/mermaid/src/diagrams/git/styles.js b/packages/mermaid/src/diagrams/git/styles.js index 7e09ff7e0..741760235 100644 --- a/packages/mermaid/src/diagrams/git/styles.js +++ b/packages/mermaid/src/diagrams/git/styles.js @@ -51,6 +51,11 @@ const getStyles = (options) => } .arrow { stroke-width: 8; stroke-linecap: round; fill: none} + .gitTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${options.textColor}; + } } `; diff --git a/packages/mermaid/src/diagrams/pie/pieDetector.ts b/packages/mermaid/src/diagrams/pie/pieDetector.ts index 65a011c7a..e267c710a 100644 --- a/packages/mermaid/src/diagrams/pie/pieDetector.ts +++ b/packages/mermaid/src/diagrams/pie/pieDetector.ts @@ -1,5 +1,6 @@ import type { DiagramDetector } from '../../diagram-api/types'; export const pieDetector: DiagramDetector = (txt) => { - return txt.match(/^\s*pie/) !== null; + const logOutput = txt.match(/^\s*pie/) !== null || txt.match(/^\s*bar/) !== null; + return logOutput; }; diff --git a/packages/mermaid/src/diagrams/pie/pieRenderer.js b/packages/mermaid/src/diagrams/pie/pieRenderer.js index 6cbb99fa3..60e9a59c9 100644 --- a/packages/mermaid/src/diagrams/pie/pieRenderer.js +++ b/packages/mermaid/src/diagrams/pie/pieRenderer.js @@ -157,11 +157,11 @@ export const draw = (txt, id, _version, diagObj) => { .append('g') .attr('class', 'legend') .attr('transform', function (d, i) { - var height = legendRectSize + legendSpacing; - var offset = (height * color.domain().length) / 2; - var horz = 12 * legendRectSize; - var vert = i * height - offset; - return 'translate(' + horz + ',' + vert + ')'; + const height = legendRectSize + legendSpacing; + const offset = (height * color.domain().length) / 2; + const horizontal = 12 * legendRectSize; + const vertical = i * height - offset; + return 'translate(' + horizontal + ',' + vertical + ')'; }); legend diff --git a/packages/mermaid/src/diagrams/requirement/requirementRenderer.js b/packages/mermaid/src/diagrams/requirement/requirementRenderer.js index 79d67e76e..10469d50d 100644 --- a/packages/mermaid/src/diagrams/requirement/requirementRenderer.js +++ b/packages/mermaid/src/diagrams/requirement/requirementRenderer.js @@ -1,6 +1,6 @@ import { line, select } from 'd3'; -import dagre from 'dagre'; -import graphlib from 'graphlib'; +import { layout as dagreLayout } from 'dagre-d3-es/src/dagre/index.js'; +import * as graphlib from 'dagre-d3-es/src/graphlib/index.js'; import { log } from '../../logger'; import { configureSvgSize } from '../../setupGraphViewbox'; import common from '../common/common'; @@ -348,7 +348,7 @@ export const draw = (text, id, _version, diagObj) => { drawReqs(requirements, g, svg); drawElements(elements, g, svg); addRelationships(relationships, g); - dagre.layout(g); + dagreLayout(g); adjustEntities(svg, g); relationships.forEach(function (rel) { diff --git a/packages/mermaid/src/diagrams/state/stateDb.js b/packages/mermaid/src/diagrams/state/stateDb.js index 5e82eaf78..19ecbe65f 100644 --- a/packages/mermaid/src/diagrams/state/stateDb.js +++ b/packages/mermaid/src/diagrams/state/stateDb.js @@ -9,6 +9,8 @@ import { getAccDescription, setAccDescription, clear as commonClear, + setDiagramTitle, + getDiagramTitle, } from '../../commonDb'; import { @@ -571,4 +573,6 @@ export default { addStyleClass, setCssClass, addDescription, + setDiagramTitle, + getDiagramTitle, }; diff --git a/packages/mermaid/src/diagrams/state/stateRenderer-v2.js b/packages/mermaid/src/diagrams/state/stateRenderer-v2.js index 752b70e44..6fdeb723e 100644 --- a/packages/mermaid/src/diagrams/state/stateRenderer-v2.js +++ b/packages/mermaid/src/diagrams/state/stateRenderer-v2.js @@ -1,10 +1,11 @@ -import graphlib from 'graphlib'; +import * as graphlib from 'dagre-d3-es/src/graphlib'; import { select } from 'd3'; import { getConfig } from '../../config'; import { render } from '../../dagre-wrapper/index.js'; import { log } from '../../logger'; import { configureSvgSize } from '../../setupGraphViewbox'; import common from '../common/common'; +import utils from '../../utils'; import addSVGAccessibilityFields from '../../accessibility'; import { DEFAULT_DIAGRAM_DIRECTION, @@ -437,8 +438,9 @@ export const draw = function (text, id, _version, diag) { const padding = 8; - const bounds = svg.node().getBBox(); + utils.insertTitle(svg, 'statediagramTitleText', conf.titleTopMargin, diag.db.getDiagramTitle()); + const bounds = svg.node().getBBox(); const width = bounds.width + padding * 2; const height = bounds.height + padding * 2; diff --git a/packages/mermaid/src/diagrams/state/stateRenderer.js b/packages/mermaid/src/diagrams/state/stateRenderer.js index 73717a645..57b1d1665 100644 --- a/packages/mermaid/src/diagrams/state/stateRenderer.js +++ b/packages/mermaid/src/diagrams/state/stateRenderer.js @@ -1,6 +1,6 @@ import { select } from 'd3'; -import dagre from 'dagre'; -import graphlib from 'graphlib'; +import { layout as dagreLayout } from 'dagre-d3-es/src/dagre/index.js'; +import * as graphlib from 'dagre-d3-es/src/graphlib/index.js'; import { log } from '../../logger'; import common from '../common/common'; import { drawState, addTitleAndBox, drawEdge } from './shapes'; @@ -239,7 +239,7 @@ const renderDoc = (doc, diagram, parentId, altBkg, root, domDocument, diagObj) = ); }); - dagre.layout(graph); + dagreLayout(graph); log.debug('Graph after layout', graph.nodes()); const svgElem = diagram.node(); diff --git a/packages/mermaid/src/diagrams/state/styles.js b/packages/mermaid/src/diagrams/state/styles.js index 4a1c46512..f4783b477 100644 --- a/packages/mermaid/src/diagrams/state/styles.js +++ b/packages/mermaid/src/diagrams/state/styles.js @@ -194,6 +194,12 @@ g.stateGroup line { stroke: ${options.lineColor}; stroke-width: 1; } + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${options.textColor}; +} `; export default getStyles; diff --git a/packages/mermaid/src/docs/redirect.spec.ts b/packages/mermaid/src/docs/.vitepress/theme/redirect.spec.ts similarity index 96% rename from packages/mermaid/src/docs/redirect.spec.ts rename to packages/mermaid/src/docs/.vitepress/theme/redirect.spec.ts index 6bf25c03b..c26364108 100644 --- a/packages/mermaid/src/docs/redirect.spec.ts +++ b/packages/mermaid/src/docs/.vitepress/theme/redirect.spec.ts @@ -2,7 +2,7 @@ // Update https://github.com/mermaid-js/mermaid/blob/18c27c6f1d0537a738cbd95898df301b83c38ffc/packages/mermaid/src/docs.mts#L246 once fixed import { expect, test } from 'vitest'; -import { getRedirect } from './.vitepress/theme/redirect'; +import { getRedirect } from './redirect'; test.each([ ['http://localhost:1234/mermaid/#/flowchart.md', 'syntax/flowchart.html'], diff --git a/packages/mermaid/src/docs/config/usage.md b/packages/mermaid/src/docs/config/usage.md index 187f3f89c..3eac4ad6f 100644 --- a/packages/mermaid/src/docs/config/usage.md +++ b/packages/mermaid/src/docs/config/usage.md @@ -347,7 +347,7 @@ This is the preferred way of configuring mermaid. ## Using the mermaid object -Is it possible to set some configuration via the mermaid object. The two parameters that are supported using this +It is possible to set some configuration via the mermaid object. The two parameters that are supported using this approach are: - mermaid.startOnLoad diff --git a/packages/mermaid/src/docs/intro/index.md b/packages/mermaid/src/docs/intro/index.md index 80d806730..b58321e75 100644 --- a/packages/mermaid/src/docs/intro/index.md +++ b/packages/mermaid/src/docs/intro/index.md @@ -8,7 +8,7 @@ It is a JavaScript based diagramming and charting tool that renders Markdown-ins -[![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [![Twitter Follow](https://img.shields.io/twitter/follow/mermaidjs_?style=social)](https://twitter.com/mermaidjs_) +[![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![npm minified gzipped bundle size](https://img.shields.io/bundlephobia/minzip/mermaid)](https://bundlephobia.com/package/mermaid) [![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [![Twitter Follow](https://img.shields.io/twitter/follow/mermaidjs_?style=social)](https://twitter.com/mermaidjs_) diff --git a/packages/mermaid/src/docs/misc/integrations.md b/packages/mermaid/src/docs/misc/integrations.md index 4c87d170e..06d09634f 100644 --- a/packages/mermaid/src/docs/misc/integrations.md +++ b/packages/mermaid/src/docs/misc/integrations.md @@ -33,6 +33,7 @@ They also serve as proof of concept, for the variety of things that can be built - [markdown-for-mermaid-plugin](https://github.com/jamieh-mongolian/markdown-for-mermaid-plugin) - [JetBrains IDE eg Pycharm](https://www.jetbrains.com/go/guide/tips/mermaid-js-support-in-markdown/) - [mermerd](https://github.com/KarnerTh/mermerd) +- Visual Studio Code [Polyglot Interactive Notebooks](https://github.com/dotnet/interactive#net-interactive) ## CRM/ERP/Similar @@ -115,6 +116,7 @@ They also serve as proof of concept, for the variety of things that can be built - [Draw.io](https://draw.io) - [Plugin](https://github.com/nopeslide/drawio_mermaid_plugin) - [Inkdrop](https://www.inkdrop.app) - [Plugin](https://github.com/inkdropapp/inkdrop-mermaid) - [Vim](https://www.vim.org) + - [Official Vim Syntax and ftplugin](https://github.com/craigmac/vim-mermaid) - [Vim Diagram Syntax](https://github.com/zhaozg/vim-diagram) - [GNU Emacs](https://www.gnu.org/software/emacs/) - [Major mode for .mmd files](https://github.com/abrochard/mermaid-mode) diff --git a/packages/mermaid/src/docs/syntax/c4c.md b/packages/mermaid/src/docs/syntax/c4c.md index f9850f2cd..78528f7b9 100644 --- a/packages/mermaid/src/docs/syntax/c4c.md +++ b/packages/mermaid/src/docs/syntax/c4c.md @@ -318,7 +318,7 @@ UpdateRelStyle(customerA, bankA, $offsetY="60") Container(mobile, "Mobile App", "Xamarin", "Provides a limited subset of the Internet Banking functionality to customers via their mobile device.") } - Deployment_Node(comp, "Customer's computer", "Mircosoft Windows or Apple macOS"){ + Deployment_Node(comp, "Customer's computer", "Microsoft Windows or Apple macOS"){ Deployment_Node(browser, "Web Browser", "Google Chrome, Mozilla Firefox,
Apple Safari or Microsoft Edge"){ Container(spa, "Single Page Application", "JavaScript and Angular", "Provides all of the Internet Banking functionality to customers via their web browser.") } diff --git a/packages/mermaid/src/docs/syntax/classDiagram.md b/packages/mermaid/src/docs/syntax/classDiagram.md index 20bdd657f..e9b918529 100644 --- a/packages/mermaid/src/docs/syntax/classDiagram.md +++ b/packages/mermaid/src/docs/syntax/classDiagram.md @@ -8,6 +8,9 @@ The class diagram is the main building block of object-oriented modeling. It is Mermaid can render class diagrams. ```mermaid-example +--- +title: Animal example +--- classDiagram note "From Duck till Zebra" Animal <|-- Duck @@ -45,6 +48,9 @@ A single instance of a class in the diagram contains three compartments: - The bottom compartment contains the operations the class can execute. They are also left-aligned and the first letter is lowercase. ```mermaid-example +--- +title: Bank example +--- classDiagram class BankAccount BankAccount : +String owner @@ -379,7 +385,7 @@ click className href "url" "tooltip" ## Notes -It is possible to add notes on digram using `note "line1\nline2"` or note for class using `note for class "line1\nline2"` +It is possible to add notes on diagram using `note "line1\nline2"` or note for class using `note for class "line1\nline2"` ### Examples diff --git a/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md b/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md index e52b0df4c..c666877c5 100644 --- a/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md +++ b/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md @@ -7,6 +7,9 @@ Note that practitioners of ER modelling almost always refer to _entity types_ si Mermaid can render ER diagrams ```mermaid-example +--- +title: Order example +--- erDiagram CUSTOMER ||--o{ ORDER : places ORDER ||--|{ LINE-ITEM : contains diff --git a/packages/mermaid/src/docs/syntax/flowchart.md b/packages/mermaid/src/docs/syntax/flowchart.md index 25252e54d..7f8284a2f 100644 --- a/packages/mermaid/src/docs/syntax/flowchart.md +++ b/packages/mermaid/src/docs/syntax/flowchart.md @@ -9,6 +9,9 @@ It can also accommodate different arrow types, multi directional arrows, and lin ### A node (default) ```mermaid-example +--- +title: Node +--- flowchart LR id ``` @@ -22,6 +25,9 @@ found for the node that will be used. Also if you define edges for the node late one previously defined will be used when rendering the box. ```mermaid-example +--- +title: Node with text +--- flowchart LR id1[This is the text in the box] ``` @@ -665,7 +671,7 @@ flowchart LR ## Configuration... -Is it possible to adjust the width of the rendered flowchart. +It is possible to adjust the width of the rendered flowchart. This is done by defining **mermaid.flowchartConfig** or by the CLI to use a JSON file with the configuration. How to use the CLI is described in the mermaidCLI page. mermaid.flowchartConfig can be set to a JSON string with config parameters or the corresponding object. diff --git a/packages/mermaid/src/docs/syntax/gitgraph.md b/packages/mermaid/src/docs/syntax/gitgraph.md index b19c1e2cd..f1930bb27 100644 --- a/packages/mermaid/src/docs/syntax/gitgraph.md +++ b/packages/mermaid/src/docs/syntax/gitgraph.md @@ -7,17 +7,20 @@ These kind of diagram are particularly helpful to developers and devops teams to Mermaid can render Git diagrams ```mermaid-example - gitGraph - commit - commit - branch develop - checkout develop - commit - commit - checkout main - merge develop - commit - commit +--- +title: Example Git diagram +--- +gitGraph + commit + commit + branch develop + checkout develop + commit + commit + checkout main + merge develop + commit + commit ``` In Mermaid, we support the basic git operations like: diff --git a/packages/mermaid/src/docs/syntax/mindmap.md b/packages/mermaid/src/docs/syntax/mindmap.md index af7a3df85..edad887c2 100644 --- a/packages/mermaid/src/docs/syntax/mindmap.md +++ b/packages/mermaid/src/docs/syntax/mindmap.md @@ -15,7 +15,7 @@ mindmap Popularisation British popular psychology author Tony Buzan Research - On effectivness
and eatures + On effectiveness
and features On Automatic creation Uses Creative techniques @@ -94,6 +94,13 @@ mindmap id)I am a cloud( ``` +### Hexagon + +```mermaid-example +mindmap + id{{I am a hexagon}} +``` + ### Default ```mermaid-example diff --git a/packages/mermaid/src/docs/syntax/pie.md b/packages/mermaid/src/docs/syntax/pie.md index 4e14efce1..2fe8c3e54 100644 --- a/packages/mermaid/src/docs/syntax/pie.md +++ b/packages/mermaid/src/docs/syntax/pie.md @@ -22,7 +22,7 @@ Drawing a pie chart is really simple in mermaid. - Followed by dataSet. Pie slices will be ordered clockwise in the same order as the labels. - `label` for a section in the pie diagram within `" "` quotes. - Followed by `:` colon as separator - - Followed by `positive numeric value` (supported upto two decimal places) + - Followed by `positive numeric value` (supported up to two decimal places) [pie] [showData] (OPTIONAL) [title] [titlevalue] (OPTIONAL) diff --git a/packages/mermaid/src/docs/syntax/sequenceDiagram.md b/packages/mermaid/src/docs/syntax/sequenceDiagram.md index beb417ee2..9c28883c9 100644 --- a/packages/mermaid/src/docs/syntax/sequenceDiagram.md +++ b/packages/mermaid/src/docs/syntax/sequenceDiagram.md @@ -534,7 +534,7 @@ text.actor { ## Configuration -Is it possible to adjust the margins for rendering the sequence diagram. +It is possible to adjust the margins for rendering the sequence diagram. This is done by defining `mermaid.sequenceConfig` or by the CLI to use a json file with the configuration. How to use the CLI is described in the [mermaidCLI](../config/mermaidCLI.md) page. diff --git a/packages/mermaid/src/docs/syntax/stateDiagram.md b/packages/mermaid/src/docs/syntax/stateDiagram.md index e28819e7a..29e355a72 100644 --- a/packages/mermaid/src/docs/syntax/stateDiagram.md +++ b/packages/mermaid/src/docs/syntax/stateDiagram.md @@ -1,10 +1,16 @@ # State diagrams -> "A state diagram is a type of diagram used in computer science and related fields to describe the behavior of systems. State diagrams require that the system described is composed of a finite number of states; sometimes, this is indeed the case, while at other times this is a reasonable abstraction." Wikipedia +> "A state diagram is a type of diagram used in computer science and related fields to describe the behavior of systems. +> State diagrams require that the system described is composed of a finite number of states; sometimes, this is indeed the +> case, while at other times this is a reasonable abstraction." Wikipedia -Mermaid can render state diagrams. The syntax tries to be compliant with the syntax used in plantUml as this will make it easier for users to share diagrams between mermaid and plantUml. +Mermaid can render state diagrams. The syntax tries to be compliant with the syntax used in plantUml as this will make +it easier for users to share diagrams between mermaid and plantUml. ```mermaid-example +--- +title: Simple sample +--- stateDiagram-v2 [*] --> Still Still --> [*] @@ -28,15 +34,18 @@ stateDiagram Crash --> [*] ``` -In state diagrams systems are described in terms of its states and how the systems state can change to another state via a transitions. The example diagram above shows three states **Still**, **Moving** and **Crash**. You start in the state of Still. From Still you can change the state to Moving. In Moving you can change the state either back to Still or to Crash. There is no transition from Still to Crash. +In state diagrams systems are described in terms of _states_ and how one _state_ can change to another _state_ via +a _transition._ The example diagram above shows three states: **Still**, **Moving** and **Crash**. You start in the +**Still** state. From **Still** you can change to the **Moving** state. From **Moving** you can change either back to the **Still** state or to +the **Crash** state. There is no transition from **Still** to **Crash**. (You can't crash if you're still.) ## States -A state can be declared in multiple ways. The simplest way is to define a state id as a description. +A state can be declared in multiple ways. The simplest way is to define a state with just an id: ```mermaid-example stateDiagram-v2 - s1 + stateId ``` Another way is by using the state keyword with a description as per below: @@ -57,14 +66,15 @@ stateDiagram-v2 Transitions are path/edges when one state passes into another. This is represented using text arrow, "\-\-\>". -When you define a transition between two states and the states are not already defined the undefined states are defined with the id from the transition. You can later add descriptions to states defined this way. +When you define a transition between two states and the states are not already defined, the undefined states are defined +with the id from the transition. You can later add descriptions to states defined this way. ```mermaid-example stateDiagram-v2 s1 --> s2 ``` -It is possible to add text to a transition. To describe what it represents. +It is possible to add text to a transition to describe what it represents: ```mermaid-example stateDiagram-v2 @@ -73,7 +83,8 @@ stateDiagram-v2 ## Start and End -There are two special states indicating the start and stop of the diagram. These are written with the [\*] syntax and the direction of the transition to it defines it either as a start or a stop state. +There are two special states indicating the start and stop of the diagram. These are written with the [\*] syntax and +the direction of the transition to it defines it either as a start or a stop state. ```mermaid-example stateDiagram-v2 @@ -83,10 +94,11 @@ stateDiagram-v2 ## Composite states -In a real world use of state diagrams you often end up with diagrams that are multi-dimensional as one state can +In a real world use of state diagrams you often end up with diagrams that are multidimensional as one state can have several internal states. These are called composite states in this terminology. -In order to define a composite state you need to use the state keyword followed by an id and the body of the composite state between \{\}. See the example below: +In order to define a composite state you need to use the state keyword followed by an id and the body of the composite +state between \{\}. See the example below: ```mermaid-example stateDiagram-v2 @@ -175,7 +187,7 @@ It is possible to specify a fork in the diagram using <<fork>> <& ## Notes -Sometimes nothing says it better then a Post-it note. That is also the case in state diagrams. +Sometimes nothing says it better than a Post-it note. That is also the case in state diagrams. Here you can choose to put the note to the _right of_ or to the _left of_ a node. @@ -215,7 +227,8 @@ stateDiagram-v2 ## Setting the direction of the diagram -With state diagrams you can use the direction statement to set the direction which the diagram will render like in this example. +With state diagrams you can use the direction statement to set the direction which the diagram will render like in this +example. ```mermaid-example stateDiagram @@ -232,7 +245,9 @@ stateDiagram ## Comments -Comments can be entered within a state diagram chart, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any diagram syntax +Comments can be entered within a state diagram chart, which will be ignored by the parser. Comments need to be on their +own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next +newline will be treated as a comment, including any diagram syntax ```mmd stateDiagram-v2 @@ -245,16 +260,153 @@ stateDiagram-v2 Crash --> [*] ``` -## Styling +## Styling with classDefs -Styling of the a state diagram is done by defining a number of css classes. During rendering these classes are extracted from the file located at src/themes/state.scss +As with other diagrams (like flowcharts), you can define a style in the diagram itself and apply that named style to a +state or states in the diagram. + +**These are the current limitations with state diagram classDefs:** + +1. Cannot be applied to start or end states +2. Cannot be applied to or within composite states + +_These are in development and will be available in a future version._ + +You define a style using the `classDef` keyword, which is short for "class definition" (where "class" means something +like a _CSS class_) +followed by _a name for the style,_ +and then one or more _property-value pairs_. Each _property-value pair_ is +a _[valid CSS property name](https://www.w3.org/TR/CSS/#properties)_ followed by a colon (`:`) and then a _value._ + +Here is an example of a classDef with just one property-value pair: + +``` + classDef movement font-style:italic; +``` + +where + +- the _name_ of the style is `movement` +- the only _property_ is `font-style` and its _value_ is `italic` + +If you want to have more than one _property-value pair_ then you put a comma (`,`) between each _property-value pair._ + +Here is an example with three property-value pairs: + +``` + classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow +``` + +where + +- the _name_ of the style is `badBadEvent` +- the first _property_ is `fill` and its _value_ is `#f00` +- the second _property_ is `color` and its _value_ is `white` +- the third _property_ is `font-weight` and its _value_ is `bold` +- the fourth _property_ is `stroke-width` and its _value_ is `2px` +- the fifth _property_ is `stroke` and its _value_ is `yello` + +### Apply classDef styles to states + +There are two ways to apply a `classDef` style to a state: + +1. use the `class` keyword to apply a classDef style to one or more states in a single statement, or +2. use the `:::` operator to apply a classDef style to a state as it is being used in a transition statement (e.g. with an arrow + to/from another state) + +#### 1. `class` statement + +A `class` statement tells Mermaid to apply the named classDef to one or more classes. The form is: + +```text + class [one or more state names, separated by commas] [name of a style defined with classDef] +``` + +Here is an example applying the `badBadEvent` style to a state named `Crash`: + +```text +class Crash badBadEvent +``` + +Here is an example applying the `movement` style to the two states `Moving` and `Crash`: + +```text +class Moving, Crash movement +``` + +Here is a diagram that shows the examples in use. Note that the `Crash` state has two classDef styles applied: `movement` +and `badBadEvent` + +```mermaid-example + stateDiagram + direction TB + + accTitle: This is the accessible title + accDescr: This is an accessible description + + classDef notMoving fill:white + classDef movement font-style:italic + classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow + + [*]--> Still + Still --> [*] + Still --> Moving + Moving --> Still + Moving --> Crash + Crash --> [*] + + class Still notMoving + class Moving, Crash movement + class Crash badBadEvent + class end badBadEvent +``` + +#### 2. `:::` operator to apply a style to a state + +You can apply a classDef style to a state using the `:::` (three colons) operator. The syntax is + +```text +[state]:::[style name] +``` + +You can use this in a diagram within a statement using a class. This includes the start and end states. For example: + +```mermaid-example +stateDiagram + direction TB + + accTitle: This is the accessible title + accDescr: This is an accessible description + + classDef notMoving fill:white + classDef movement font-style:italic; + classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow + + [*] --> Still:::notMoving + Still --> [*] + Still --> Moving:::movement + Moving --> Still + Moving --> Crash:::movement + Crash:::badBadEvent --> [*] +``` ## Spaces in state names -Spaces can be added to a state by defining it at the top and referencing the acronym later. +Spaces can be added to a state by first defining the state with an id and then referencing the id later. + +In the following example there is a state with the id **yswsii** and description **Your state with spaces in it**. +After it has been defined, **yswsii** is used in the diagram in the first transition (`[*] --> yswsii`) +and also in the transition to **YetAnotherState** (`yswsii --> YetAnotherState`). +(**yswsii** has been styled so that it is different from the other states.) ```mermaid-example -stateDiagram-v2 - Yswsii: Your state with spaces in it - [*] --> Yswsii +stateDiagram + classDef yourState font-style:italic,font-weight:bold,fill:white + + yswsii: Your state with spaces in it + [*] --> yswsii:::yourState + [*] --> SomeOtherState + SomeOtherState --> YetAnotherState + yswsii --> YetAnotherState + YetAnotherState --> [*] ``` diff --git a/packages/mermaid/src/mermaidAPI.ts b/packages/mermaid/src/mermaidAPI.ts index 0df1da305..0b2e85cd6 100644 --- a/packages/mermaid/src/mermaidAPI.ts +++ b/packages/mermaid/src/mermaidAPI.ts @@ -29,7 +29,7 @@ import utils, { directiveSanitizer } from './utils'; import DOMPurify from 'dompurify'; import { MermaidConfig } from './config.type'; import { evaluate } from './diagrams/common/common'; -import { isEmpty } from 'lodash'; +import isEmpty from 'lodash-es/isEmpty'; // diagram names that support classDef statements const CLASSDEF_DIAGRAMS = ['graph', 'flowchart', 'flowchart-v2', 'stateDiagram', 'stateDiagram-v2']; @@ -194,7 +194,7 @@ export const createCssStyles = ( const htmlLabels = config.htmlLabels || config.flowchart?.htmlLabels; // TODO why specifically check the Flowchart diagram config? const cssHtmlElements = ['> *', 'span']; // TODO make a constant - const cssShapeElements = ['rect', 'polygon', 'ellipse', 'circle']; // TODO make a constant + const cssShapeElements = ['rect', 'polygon', 'ellipse', 'circle', 'path']; // TODO make a constant const cssElements = htmlLabels ? cssHtmlElements : cssShapeElements; diff --git a/packages/mermaid/src/tests/setup.ts b/packages/mermaid/src/tests/setup.ts index e8058c517..b3330787c 100644 --- a/packages/mermaid/src/tests/setup.ts +++ b/packages/mermaid/src/tests/setup.ts @@ -1,3 +1,3 @@ import { vi } from 'vitest'; vi.mock('d3'); -vi.mock('dagre-d3'); +vi.mock('dagre-d3-es'); diff --git a/packages/mermaid/src/utils.spec.js b/packages/mermaid/src/utils.spec.js index 4a511b3c0..54262f10e 100644 --- a/packages/mermaid/src/utils.spec.js +++ b/packages/mermaid/src/utils.spec.js @@ -3,7 +3,8 @@ import utils from './utils'; import assignWithDepth from './assignWithDepth'; import { detectType } from './diagram-api/detectType'; import { addDiagrams } from './diagram-api/diagram-orchestration'; -import memoize from 'lodash/memoize'; +import memoize from 'lodash-es/memoize'; +import { MockD3 } from 'd3'; addDiagrams(); describe('when assignWithDepth: should merge objects within objects', function () { @@ -232,6 +233,15 @@ Alice->Bob: hi`; const type = detectType(str); expect(type).toBe('gitGraph'); }); + it('should handle frontmatter', function () { + const str = '---\ntitle: foo\n---\n gitGraph TB:\nbfs1:queue'; + const type = detectType(str); + expect(type).toBe('gitGraph'); + }); + it('should not allow frontmatter with leading spaces', function () { + const str = ' ---\ntitle: foo\n---\n gitGraph TB:\nbfs1:queue'; + expect(() => detectType(str)).toThrow('No diagram type detected for text'); + }); }); describe('when finding substring in array ', function () { it('should return the array index that contains the substring', function () { @@ -340,3 +350,23 @@ describe('when initializing the id generator', function () { expect(idGenerator.next()).toEqual(lastId + 1); }); }); + +describe('when inserting titles', function () { + it('should do nothing when title is empty', function () { + const svg = MockD3('svg'); + utils.insertTitle(svg, 'testClass', 0, ''); + expect(svg.__children.length).toBe(0); + }); + + it('should insert title centered', function () { + const svg = MockD3('svg'); + utils.insertTitle(svg, 'testClass', 5, 'test title'); + expect(svg.__children.length).toBe(1); + const text = svg.__children[0]; + expect(text.__name).toBe('text'); + expect(text.text).toHaveBeenCalledWith('test title'); + expect(text.attr).toHaveBeenCalledWith('x', 15); + expect(text.attr).toHaveBeenCalledWith('y', -5); + expect(text.attr).toHaveBeenCalledWith('class', 'testClass'); + }); +}); diff --git a/packages/mermaid/src/utils.ts b/packages/mermaid/src/utils.ts index 3eecd5f4f..3689a01a1 100644 --- a/packages/mermaid/src/utils.ts +++ b/packages/mermaid/src/utils.ts @@ -21,7 +21,7 @@ import { log } from './logger'; import { detectType } from './diagram-api/detectType'; import assignWithDepth from './assignWithDepth'; import { MermaidConfig } from './config.type'; -import memoize from 'lodash/memoize'; +import memoize from 'lodash-es/memoize'; // Effectively an enum of the supported curve types, accessible by name const d3CurveTypes = { @@ -561,54 +561,77 @@ export const drawSimpleText = function ( return textElem; }; -export const wrapLabel = memoize( - (label, maxWidth, config) => { - if (!label) { - return label; - } - config = Object.assign( - { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', joinWith: '
' }, - config - ); - if (common.lineBreakRegex.test(label)) { - return label; - } - const words = label.split(' '); - const completedLines = []; - let nextLine = ''; - words.forEach((word, index) => { - const wordLength = calculateTextWidth(`${word} `, config); - const nextLineLength = calculateTextWidth(nextLine, config); - if (wordLength > maxWidth) { - const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, '-', config); - completedLines.push(nextLine, ...hyphenatedStrings); - nextLine = remainingWord; - } else if (nextLineLength + wordLength >= maxWidth) { - completedLines.push(nextLine); - nextLine = word; - } else { - nextLine = [nextLine, word].filter(Boolean).join(' '); - } - const currentWord = index + 1; - const isLastWord = currentWord === words.length; - if (isLastWord) { - completedLines.push(nextLine); - } - }); - return completedLines.filter((line) => line !== '').join(config.joinWith); - }, - (label, maxWidth, config) => - `${label}${maxWidth}${config.fontSize}${config.fontWeight}${config.fontFamily}${config.joinWith}` -); +interface WrapLabelConfig { + fontSize: number; + fontFamily: string; + fontWeight: number; + joinWith: string; +} -const breakString = memoize( - (word, maxWidth, hyphenCharacter = '-', config) => { +export const wrapLabel: (label: string, maxWidth: string, config: WrapLabelConfig) => string = + memoize( + (label: string, maxWidth: string, config: WrapLabelConfig): string => { + if (!label) { + return label; + } + config = Object.assign( + { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', joinWith: '
' }, + config + ); + if (common.lineBreakRegex.test(label)) { + return label; + } + const words = label.split(' '); + const completedLines = []; + let nextLine = ''; + words.forEach((word, index) => { + const wordLength = calculateTextWidth(`${word} `, config); + const nextLineLength = calculateTextWidth(nextLine, config); + if (wordLength > maxWidth) { + const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, '-', config); + completedLines.push(nextLine, ...hyphenatedStrings); + nextLine = remainingWord; + } else if (nextLineLength + wordLength >= maxWidth) { + completedLines.push(nextLine); + nextLine = word; + } else { + nextLine = [nextLine, word].filter(Boolean).join(' '); + } + const currentWord = index + 1; + const isLastWord = currentWord === words.length; + if (isLastWord) { + completedLines.push(nextLine); + } + }); + return completedLines.filter((line) => line !== '').join(config.joinWith); + }, + (label, maxWidth, config) => + `${label}${maxWidth}${config.fontSize}${config.fontWeight}${config.fontFamily}${config.joinWith}` + ); + +interface BreakStringOutput { + hyphenatedStrings: string[]; + remainingWord: string; +} + +const breakString: ( + word: string, + maxWidth: number, + hyphenCharacter: string, + config: WrapLabelConfig +) => BreakStringOutput = memoize( + ( + word: string, + maxWidth: number, + hyphenCharacter = '-', + config: WrapLabelConfig + ): BreakStringOutput => { config = Object.assign( { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 0 }, config ); const characters = word.split(''); - const lines = []; + const lines: string[] = []; let currentLine = ''; characters.forEach((character, index) => { const nextLine = `${currentLine}${character}`; @@ -667,6 +690,16 @@ export function calculateTextWidth( return calculateTextDimensions(text, config).width; } +interface TextDimensionConfig { + fontSize?: number; + fontWeight?: number; + fontFamily?: string; +} +interface TextDimensions { + width: number; + height: number; + lineHeight?: number; +} /** * This calculates the dimensions of the given text, font size, font family, font weight, and * margins. @@ -676,15 +709,11 @@ export function calculateTextWidth( * the resulting size * @returns The dimensions for the given text */ -export const calculateTextDimensions = memoize( - function ( - text: string, - config: { - fontSize?: number; - fontWeight?: number; - fontFamily?: string; - } - ) { +export const calculateTextDimensions: ( + text: string, + config: TextDimensionConfig +) => TextDimensions = memoize( + (text: string, config: TextDimensionConfig): TextDimensions => { config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config); const { fontSize, fontFamily, fontWeight } = config; if (!text) { @@ -885,6 +914,32 @@ export function getErrorMessage(error: unknown): string { return String(error); } +/** + * Appends element with the given title, centered. + * + * @param parent - d3 svg object to append title to + * @param cssClass - CSS class for the element containing the title + * @param titleTopMargin - Margin in pixels between title and rest of the graph + * @param title - The title. If empty, returns immediately. + */ +export const insertTitle = ( + parent, + cssClass: string, + titleTopMargin: number, + title?: string +): void => { + if (!title) { + return; + } + const bounds = parent.node().getBBox(); + parent + .append('text') + .text(title) + .attr('x', bounds.x + bounds.width / 2) + .attr('y', -titleTopMargin) + .attr('class', cssClass); +}; + export default { assignWithDepth, wrapLabel, @@ -907,4 +962,5 @@ export default { initIdGenerator: initIdGenerator, directiveSanitizer, sanitizeCss, + insertTitle, }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 85afcb31d..ebb71f65e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,8 +1,5 @@ lockfileVersion: 5.4-inlineSpecifiers -overrides: - d3: ^7.6.1 - importers: .: @@ -25,6 +22,9 @@ importers: '@types/express': specifier: ^4.17.14 version: 4.17.14 + '@types/js-yaml': + specifier: ^4.0.5 + version: 4.0.5 '@types/jsdom': specifier: ^20.0.1 version: 20.0.1 @@ -40,6 +40,9 @@ importers: '@types/prettier': specifier: ^2.7.1 version: 2.7.1 + '@types/rollup-plugin-visualizer': + specifier: ^4.2.1 + version: 4.2.1 '@typescript-eslint/eslint-plugin': specifier: ^5.42.1 version: 5.42.1_2udltptbznfmezdozpdoa2aemq @@ -88,6 +91,9 @@ importers: eslint-plugin-json: specifier: ^3.1.0 version: 3.1.0 + eslint-plugin-lodash: + specifier: ^7.4.0 + version: 7.4.0_eslint@8.27.0 eslint-plugin-markdown: specifier: ^3.0.0 version: 3.0.0_eslint@8.27.0 @@ -97,6 +103,9 @@ importers: eslint-plugin-tsdoc: specifier: ^0.2.17 version: 0.2.17 + eslint-plugin-unicorn: + specifier: ^45.0.0 + version: 45.0.0_eslint@8.27.0 express: specifier: ^4.18.2 version: 4.18.2 @@ -115,6 +124,9 @@ importers: jison: specifier: ^0.4.18 version: 0.4.18 + js-yaml: + specifier: ^4.1.0 + version: 4.1.0 jsdom: specifier: ^20.0.2 version: 20.0.2 @@ -136,6 +148,9 @@ importers: rimraf: specifier: ^3.0.2 version: 3.0.2 + rollup-plugin-visualizer: + specifier: ^5.8.3 + version: 5.8.3_rollup@2.79.1 start-server-and-test: specifier: ^1.14.0 version: 1.14.0 @@ -158,8 +173,8 @@ importers: specifier: ^1.0.4-alpha.15 version: 1.0.4-alpha.15_s3edpouswd4dgoi2en7bdlrp54 vitest: - specifier: ^0.25.1 - version: 0.25.1_iyb77cyw3lw7duusvxyjdsflhu + specifier: ^0.25.3 + version: 0.25.3_iyb77cyw3lw7duusvxyjdsflhu packages/mermaid: dependencies: @@ -167,14 +182,11 @@ importers: specifier: ^6.0.0 version: 6.0.0 d3: - specifier: ^7.6.1 + specifier: ^7.0.0 version: 7.6.1 - dagre: - specifier: ^0.8.5 - version: 0.8.5 - dagre-d3: - specifier: ^0.6.4 - version: 0.6.4 + dagre-d3-es: + specifier: 7.0.4 + version: 7.0.4 dompurify: specifier: 2.4.1 version: 2.4.1 @@ -187,7 +199,7 @@ importers: khroma: specifier: ^2.0.0 version: 2.0.0 - lodash: + lodash-es: specifier: ^4.17.21 version: 4.17.21 moment-mini: @@ -212,9 +224,9 @@ importers: '@types/jsdom': specifier: ^20.0.1 version: 20.0.1 - '@types/lodash': - specifier: ^4.14.188 - version: 4.14.188 + '@types/lodash-es': + specifier: ^4.17.6 + version: 4.17.6 '@types/micromatch': specifier: ^4.0.2 version: 4.0.2 @@ -242,6 +254,9 @@ importers: coveralls: specifier: ^3.1.1 version: 3.1.1 + cspell: + specifier: ^6.14.3 + version: 6.14.3 globby: specifier: ^13.1.2 version: 13.1.2 @@ -315,7 +330,7 @@ importers: specifier: ^2.1.0 version: 2.1.0_cytoscape@3.23.0 d3: - specifier: ^7.6.1 + specifier: ^7.0.0 version: 7.6.1 khroma: specifier: ^2.0.0 @@ -1361,21 +1376,84 @@ packages: '@cspell/dict-vue': 3.0.0 dev: true + /@cspell/cspell-bundled-dicts/6.14.3: + resolution: {integrity: sha512-bgPBduoDi1jkrcLkmAwRG1c6F1iprF2yfBgEDT19dRG1kYuq/fLGNOcSmEp4CbApn8m0MmxsrhEp8O0Q9owQRQ==} + engines: {node: '>=14'} + dependencies: + '@cspell/dict-ada': 4.0.0 + '@cspell/dict-aws': 3.0.0 + '@cspell/dict-bash': 4.1.0 + '@cspell/dict-companies': 3.0.3 + '@cspell/dict-cpp': 4.0.0 + '@cspell/dict-cryptocurrencies': 3.0.1 + '@cspell/dict-csharp': 4.0.1 + '@cspell/dict-css': 4.0.0 + '@cspell/dict-dart': 2.0.0 + '@cspell/dict-django': 4.0.0 + '@cspell/dict-docker': 1.1.3 + '@cspell/dict-dotnet': 4.0.0 + '@cspell/dict-elixir': 4.0.0 + '@cspell/dict-en-gb': 1.1.33 + '@cspell/dict-en_us': 4.1.0 + '@cspell/dict-filetypes': 3.0.0 + '@cspell/dict-fonts': 3.0.0 + '@cspell/dict-fullstack': 3.0.0 + '@cspell/dict-git': 2.0.0 + '@cspell/dict-golang': 5.0.0 + '@cspell/dict-haskell': 4.0.0 + '@cspell/dict-html': 4.0.1 + '@cspell/dict-html-symbol-entities': 4.0.0 + '@cspell/dict-java': 5.0.2 + '@cspell/dict-latex': 3.0.0 + '@cspell/dict-lorem-ipsum': 3.0.0 + '@cspell/dict-lua': 3.0.0 + '@cspell/dict-node': 4.0.1 + '@cspell/dict-npm': 4.0.1 + '@cspell/dict-php': 3.0.3 + '@cspell/dict-powershell': 3.0.0 + '@cspell/dict-public-licenses': 2.0.0 + '@cspell/dict-python': 4.0.0 + '@cspell/dict-r': 2.0.0 + '@cspell/dict-ruby': 3.0.0 + '@cspell/dict-rust': 3.0.0 + '@cspell/dict-scala': 3.0.0 + '@cspell/dict-software-terms': 3.0.5 + '@cspell/dict-sql': 2.0.0 + '@cspell/dict-swift': 2.0.0 + '@cspell/dict-typescript': 3.0.1 + '@cspell/dict-vue': 3.0.0 + dev: true + /@cspell/cspell-pipe/6.14.2: resolution: {integrity: sha512-9H7Z/jy2tGpMW9T/JOk8T3bqvQoHJIz1wddktA5Lq8fnMqlDhM9le2uykhVlLpemLhWpDS2fNzLJ3sHiaPgHBA==} engines: {node: '>=14'} dev: true + /@cspell/cspell-pipe/6.14.3: + resolution: {integrity: sha512-/mLZxJOK3/UFpnR4jrImKY5W4cn5XWjvQPXnFCEzpU0tAAF6GboJgWl30TegqFJjLVCKTNRMOtT1r6kgvb66zw==} + engines: {node: '>=14'} + dev: true + /@cspell/cspell-service-bus/6.14.2: resolution: {integrity: sha512-IOK4MqwDNS2y29eZjdpHrCQ0ouTWZCS2e3EOmlvY+yUpT7e1AX8pVOaar4jLnXg03evAjrFrrmfmhFI6poO6Hg==} engines: {node: '>=14'} dev: true + /@cspell/cspell-service-bus/6.14.3: + resolution: {integrity: sha512-89OWGBzhorhiWcFqFTeHl9Y6WTdd5MGC2XNNCVZLM3VTYaFx4DVkiyxWdkE7gHjYxvNdGSH54/fE18TqLc//dQ==} + engines: {node: '>=14'} + dev: true + /@cspell/cspell-types/6.14.2: resolution: {integrity: sha512-/EZYVglm6+2GlnkFTzuLuQFr7vrttkhG+ZsNO9EDcFYB5N7O2ndNSkTQFxGi8FS8R3RS5CHyS5X6hANnolzvfQ==} engines: {node: '>=14'} dev: true + /@cspell/cspell-types/6.14.3: + resolution: {integrity: sha512-u4Hun0vOQVkk3tJ6VzPjHVmv2dq0D6jYqX8pWLKWRwo38rdoIkdWseN359sWCz96tDM8g5rpSFdmecbWLU7BYg==} + engines: {node: '>=14'} + dev: true + /@cspell/dict-ada/4.0.0: resolution: {integrity: sha512-M0n4ZYmpLOXbDD07Qb/Ekk0K5pX2C+mCuJ2ZxPgbTq9HGlrN43PmqrGJHWcgtVHE3fd1D4VxS85QcQP6r1Y+KQ==} dev: true @@ -1558,6 +1636,11 @@ packages: engines: {node: '>=14.6'} dev: true + /@cspell/strong-weak-map/6.14.3: + resolution: {integrity: sha512-/FTvcywuwfFTMEpRabL8+rqB/ezSjvMp6todO0SwL/agYQmRIuTvTYLh0Ikq430oVnjo7LDgztW0tHq38UlFLw==} + engines: {node: '>=14.6'} + dev: true + /@cspotcode/source-map-support/0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -1760,7 +1843,7 @@ packages: '@types/node': 18.11.9 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 3.4.0 + ci-info: 3.6.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.2.0 @@ -2466,6 +2549,10 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true + /@types/js-yaml/4.0.5: + resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} + dev: true + /@types/jsdom/20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: @@ -2488,6 +2575,12 @@ packages: resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} dev: true + /@types/lodash-es/4.17.6: + resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==} + dependencies: + '@types/lodash': 4.14.188 + dev: true + /@types/lodash/4.14.188: resolution: {integrity: sha512-zmEmF5OIM3rb7SbLCFYoQhO4dGt2FRM9AMkxvA3LaADOF1n8in/zGJlWji9fmafLoNyz+FoL6FE0SLtGIArD7w==} dev: true @@ -2584,6 +2677,13 @@ packages: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} dev: true + /@types/rollup-plugin-visualizer/4.2.1: + resolution: {integrity: sha512-Fk4y0EgmsSbvbayYhtSI9+cGvgw1rcQ9RlbExkQt4ivXRdiEwFKuRpxNuJCr0JktXIvOPUuPR7GSmtyZu0dujQ==} + dependencies: + '@types/node': 18.11.9 + rollup: 2.79.1 + dev: true + /@types/semver/7.3.12: resolution: {integrity: sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==} dev: true @@ -3534,7 +3634,7 @@ packages: /axios/0.21.4_debug@4.3.2: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} dependencies: - follow-redirects: 1.15.2 + follow-redirects: 1.15.2_debug@4.3.2 transitivePeerDependencies: - debug dev: true @@ -3762,6 +3862,11 @@ packages: ieee754: 1.2.1 dev: true + /builtin-modules/3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + /bytes/3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -3952,8 +4057,9 @@ packages: engines: {node: '>=6.0'} dev: true - /ci-info/3.4.0: - resolution: {integrity: sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==} + /ci-info/3.6.2: + resolution: {integrity: sha512-lVZdhvbEudris15CLytp2u6Y0p5EKfztae9Fqa189MfNmln9F33XuH69v5fvNfiRN5/0eAUz2yJL3mo+nhaRKg==} + engines: {node: '>=8'} dev: true /cjs-module-lexer/1.2.2: @@ -3967,6 +4073,13 @@ packages: jsonlint: 1.6.0 dev: true + /clean-regexp/1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + /clean-stack/2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -4099,6 +4212,11 @@ packages: engines: {node: ^12.20.0 || >=14} dev: true + /commander/9.4.1: + resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} + engines: {node: ^12.20.0 || >=14} + dev: true + /comment-json/4.2.3: resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} engines: {node: '>= 6'} @@ -4307,6 +4425,17 @@ packages: yaml: 1.10.2 dev: true + /cosmiconfig/7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + /coveralls/3.1.1: resolution: {integrity: sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==} engines: {node: '>=6'} @@ -4359,6 +4488,26 @@ packages: gensequence: 4.0.2 dev: true + /cspell-dictionary/6.14.3: + resolution: {integrity: sha512-yIqJEZZj36j1CmmjAiuQOYZM6T62Ih7k35DhAU1hYVARUEEnFN/Uz72UkDj2SAmURVn2On+bAmZ5zCx0JZzf2g==} + engines: {node: '>=14'} + dependencies: + '@cspell/cspell-pipe': 6.14.3 + '@cspell/cspell-types': 6.14.3 + cspell-trie-lib: 6.14.3 + fast-equals: 4.0.3 + gensequence: 4.0.2 + dev: true + + /cspell-gitignore/6.14.3: + resolution: {integrity: sha512-CZTGxx3msF6p1Z0xgLe5LXXvve7DooSuRMBMdGn230usce1nKoxpPoPxgs+zXeCpi+FanykKnoZkdRvjolMpOA==} + engines: {node: '>=14'} + hasBin: true + dependencies: + cspell-glob: 6.14.3 + find-up: 5.0.0 + dev: true + /cspell-glob/6.14.2: resolution: {integrity: sha512-a9o3lBccEcH2676RGge2YqEORovm+II++D53P6hOW/23ltDe1J509MSY6CJdYdPk/VssOExas6akJ6FbKSCBgw==} engines: {node: '>=14'} @@ -4366,6 +4515,13 @@ packages: micromatch: 4.0.5 dev: true + /cspell-glob/6.14.3: + resolution: {integrity: sha512-ISwCK8GqM/dnvtaxA17w1MPmMzFLOqdTz+JWIcR4at47T9qd8bNB0X0P4eqyuqgsbKkWbfnSlsYlEjRHTi4a7A==} + engines: {node: '>=14'} + dependencies: + micromatch: 4.0.5 + dev: true + /cspell-grammar/6.14.2: resolution: {integrity: sha512-Q9+gwp1U/qnECTqxa7WBMPn6sgBfXPIM68jXg8RgNMAuy1CE+m1eTCM9FBNFNpNKJWjaZPvANLOW5/EStN2A/A==} engines: {node: '>=14'} @@ -4375,6 +4531,15 @@ packages: '@cspell/cspell-types': 6.14.2 dev: true + /cspell-grammar/6.14.3: + resolution: {integrity: sha512-Nz8tYUmstyKcFlXbxdw4N8NsQ2ZY/5ztNfouokk47LKaTAS0LyWlLSkZUxN016fMY2h+C+3dI+jaut2H/rtNew==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@cspell/cspell-pipe': 6.14.3 + '@cspell/cspell-types': 6.14.3 + dev: true + /cspell-io/6.14.2: resolution: {integrity: sha512-QyQ0BBfDvF6B37SlSsmlzRnaGqiIHt7c5NsCNKf3ZfioTWkNI/fiabvSkpNGBAkELP6BPBxjsG+TaS+swZp+Kg==} engines: {node: '>=14'} @@ -4385,6 +4550,16 @@ packages: - encoding dev: true + /cspell-io/6.14.3: + resolution: {integrity: sha512-EbH+qopgWIzr9SZCGDsF4AWYgucN4QzYeAgyXjTbV9RnNIGKOKovMe3vN9nxjOZyPKv2TvmgU+uMXDM61iObRw==} + engines: {node: '>=14'} + dependencies: + '@cspell/cspell-service-bus': 6.14.3 + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + dev: true + /cspell-lib/6.14.2: resolution: {integrity: sha512-QNsmWix0oFi1CjzFfNG1xAJVl1OC+6kiWvq0A1S8VD3LJhJVvBqSv1vudpL1oS7H2/2yxk9PUC/MajGLi5i5MQ==} engines: {node: '>=14.6'} @@ -4415,6 +4590,36 @@ packages: - encoding dev: true + /cspell-lib/6.14.3: + resolution: {integrity: sha512-RJT5Tbe0UCMCtqDWRujjxq9u23sc2XylIpDP7MnpLx8wLVgFv2WPzESYNRGZqceqZYwBAPnpqS9h2ANxXSi8UQ==} + engines: {node: '>=14.6'} + dependencies: + '@cspell/cspell-bundled-dicts': 6.14.3 + '@cspell/cspell-pipe': 6.14.3 + '@cspell/cspell-types': 6.14.3 + '@cspell/strong-weak-map': 6.14.3 + clear-module: 4.1.2 + comment-json: 4.2.3 + configstore: 5.0.1 + cosmiconfig: 7.1.0 + cspell-dictionary: 6.14.3 + cspell-glob: 6.14.3 + cspell-grammar: 6.14.3 + cspell-io: 6.14.3 + cspell-trie-lib: 6.14.3 + fast-equals: 4.0.3 + find-up: 5.0.0 + fs-extra: 10.1.0 + gensequence: 4.0.2 + import-fresh: 3.3.0 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + vscode-languageserver-textdocument: 1.0.7 + vscode-uri: 3.0.6 + transitivePeerDependencies: + - encoding + dev: true + /cspell-trie-lib/6.14.2: resolution: {integrity: sha512-+aTRwFUzBPFbJ8zlDwzB1ew/gP7L6kddoXjmqCNeFx9B5DiwN1KPFRo+uBx21JOkoavnviGU//DpyWSU9Cittw==} engines: {node: '>=14'} @@ -4425,6 +4630,40 @@ packages: gensequence: 4.0.2 dev: true + /cspell-trie-lib/6.14.3: + resolution: {integrity: sha512-WVa5gbD9glsZ4c60qPD5RTwojKc5ooxw/Gn+HC9CBdWv5rE1AmM1V3yVWhYx2ZMbJufboBrzmSjJB9qdmUl3oA==} + engines: {node: '>=14'} + dependencies: + '@cspell/cspell-pipe': 6.14.3 + '@cspell/cspell-types': 6.14.3 + fs-extra: 10.1.0 + gensequence: 4.0.2 + dev: true + + /cspell/6.14.3: + resolution: {integrity: sha512-DimVpUiw2iOSvO1daOTtOWjmryVZdFnPmjPhyhWZUqakOEgE2MgoBuk3cFzXqb8GsGXHQh5PqiWr1rqIkQ99qA==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@cspell/cspell-pipe': 6.14.3 + chalk: 4.1.2 + commander: 9.4.1 + cspell-gitignore: 6.14.3 + cspell-glob: 6.14.3 + cspell-lib: 6.14.3 + fast-json-stable-stringify: 2.1.0 + file-entry-cache: 6.0.1 + fs-extra: 10.1.0 + get-stdin: 8.0.0 + glob: 8.0.3 + imurmurhash: 0.1.4 + semver: 7.3.8 + strip-ansi: 6.0.1 + vscode-uri: 3.0.6 + transitivePeerDependencies: + - encoding + dev: true + /css-tree/1.0.0-alpha.39: resolution: {integrity: sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==} engines: {node: '>=8.0.0'} @@ -4797,20 +5036,11 @@ packages: d3-zoom: 3.0.0 dev: false - /dagre-d3/0.6.4: - resolution: {integrity: sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==} + /dagre-d3-es/7.0.4: + resolution: {integrity: sha512-fQL8ldFR9UYpecz48d1smrXNJ9zGUK38Vl5OzX6Fhn9LR+oQh0GzHRPQylP5kWawmMTKm1QtqcHMVySMJ5CYaQ==} dependencies: d3: 7.6.1 - dagre: 0.8.5 - graphlib: 2.1.8 - lodash: 4.17.21 - dev: false - - /dagre/0.8.5: - resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==} - dependencies: - graphlib: 2.1.8 - lodash: 4.17.21 + lodash-es: 4.17.21 dev: false /dargs/7.0.0: @@ -5546,6 +5776,16 @@ packages: vscode-json-languageservice: 4.2.1 dev: true + /eslint-plugin-lodash/7.4.0_eslint@8.27.0: + resolution: {integrity: sha512-Tl83UwVXqe1OVeBRKUeWcfg6/pCW1GTRObbdnbEJgYwjxp5Q92MEWQaH9+dmzbRt6kvYU1Mp893E79nJiCSM8A==} + engines: {node: '>=10'} + peerDependencies: + eslint: '>=2' + dependencies: + eslint: 8.27.0 + lodash: 4.17.21 + dev: true + /eslint-plugin-markdown/3.0.0_eslint@8.27.0: resolution: {integrity: sha512-hRs5RUJGbeHDLfS7ELanT0e29Ocyssf/7kBM+p7KluY5AwngGkDf8Oyu4658/NZSGTTq05FZeWbkxXtbVyHPwg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5570,6 +5810,31 @@ packages: '@microsoft/tsdoc-config': 0.16.2 dev: true + /eslint-plugin-unicorn/45.0.0_eslint@8.27.0: + resolution: {integrity: sha512-iP8cMRxXKHonKioOhnCoCcqVhoqhAp6rB+nsoLjXFDxTHz3btWMAp8xwzjHA0B1K6YV/U/Yvqn1bUXZt8sJPuQ==} + engines: {node: '>=14.18'} + peerDependencies: + eslint: '>=8.28.0' + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + ci-info: 3.6.2 + clean-regexp: 1.0.0 + eslint: 8.27.0 + eslint-utils: 3.0.0_eslint@8.27.0 + esquery: 1.4.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.0 + jsesc: 3.0.2 + lodash: 4.17.21 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.24 + regjsparser: 0.9.1 + safe-regex: 2.1.1 + semver: 7.3.8 + strip-indent: 3.0.0 + dev: true + /eslint-scope/5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -6044,7 +6309,7 @@ packages: resolution: {integrity: sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==} dev: true - /follow-redirects/1.15.2: + /follow-redirects/1.15.2_debug@4.3.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} peerDependencies: @@ -6052,6 +6317,8 @@ packages: peerDependenciesMeta: debug: optional: true + dependencies: + debug: 4.3.2 dev: true /foreground-child/2.0.0: @@ -6218,6 +6485,11 @@ packages: engines: {node: '>=0.12.0'} dev: true + /get-stdin/8.0.0: + resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} + engines: {node: '>=10'} + dev: true + /get-stream/4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} @@ -6304,6 +6576,17 @@ packages: path-is-absolute: 1.0.1 dev: true + /glob/8.0.3: + resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.0 + once: 1.4.0 + dev: true + /global-dirs/0.1.1: resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} engines: {node: '>=4'} @@ -6628,7 +6911,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.2 + follow-redirects: 1.15.2_debug@4.3.2 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -6851,11 +7134,18 @@ packages: engines: {node: '>=4'} dev: true + /is-builtin-module/3.2.0: + resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + /is-ci/3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: - ci-info: 3.4.0 + ci-info: 3.6.2 dev: true /is-core-module/2.10.0: @@ -7153,7 +7443,7 @@ packages: '@types/node': 18.11.9 babel-jest: 29.3.1_@babel+core@7.12.3 chalk: 4.1.2 - ci-info: 3.4.0 + ci-info: 3.6.2 deepmerge: 4.2.2 glob: 7.2.3 graceful-fs: 4.2.10 @@ -7439,7 +7729,7 @@ packages: '@jest/types': 29.3.1 '@types/node': 18.11.9 chalk: 4.1.2 - ci-info: 3.4.0 + ci-info: 3.6.2 graceful-fs: 4.2.10 picomatch: 2.3.1 dev: true @@ -7628,12 +7918,23 @@ packages: - utf-8-validate dev: true + /jsesc/0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + /jsesc/2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true dev: true + /jsesc/3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + dev: true + /json-buffer/3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true @@ -7902,6 +8203,10 @@ packages: p-locate: 5.0.0 dev: true + /lodash-es/4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: false + /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -8945,6 +9250,11 @@ packages: xmlbuilder: 15.1.1 dev: true + /pluralize/8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true + /png-async/0.9.4: resolution: {integrity: sha512-B//AXX9TkneKfgtOpT1mdUnnhk2BImGD+a98vImsMU8uo1dBeHyW/kM2erWZ/CsYteTPU/xKG+t6T62heHkC3A==} dev: true @@ -9231,11 +9541,23 @@ packages: strip-indent: 3.0.0 dev: true + /regexp-tree/0.1.24: + resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} + hasBin: true + dev: true + /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} dev: true + /regjsparser/0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + /remark-parse/10.0.1: resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} dependencies: @@ -9412,6 +9734,22 @@ packages: resolution: {integrity: sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==} dev: false + /rollup-plugin-visualizer/5.8.3_rollup@2.79.1: + resolution: {integrity: sha512-QGJk4Bqe4AOat5AjipOh8esZH1nck5X2KFpf4VytUdSUuuuSwvIQZjMGgjcxe/zXexltqaXp5Vx1V3LmnQH15Q==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x + peerDependenciesMeta: + rollup: + optional: true + dependencies: + open: 8.4.0 + rollup: 2.79.1 + source-map: 0.7.4 + yargs: 17.5.1 + dev: true + /rollup/2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} @@ -9451,6 +9789,12 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true + /safe-regex/2.1.1: + resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} + dependencies: + regexp-tree: 0.1.24 + dev: true + /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -9768,6 +10112,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /source-map/0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + /sourcemap-codec/1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} dev: true @@ -10865,6 +11214,54 @@ packages: - terser dev: true + /vitest/0.25.3_iyb77cyw3lw7duusvxyjdsflhu: + resolution: {integrity: sha512-/UzHfXIKsELZhL7OaM2xFlRF8HRZgAHtPctacvNK8H4vOcbJJAMEgbWNGSAK7Y9b1NBe5SeM7VTuz2RsTHFJJA==} + engines: {node: '>=v14.16.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/chai': 4.3.3 + '@types/chai-subset': 1.3.3 + '@types/node': 18.11.9 + '@vitest/ui': 0.25.1 + acorn: 8.8.0 + acorn-walk: 8.2.0 + chai: 4.3.6 + debug: 4.3.4 + happy-dom: 6.0.4 + jsdom: 20.0.2 + local-pkg: 0.4.2 + source-map: 0.6.1 + strip-literal: 0.4.2 + tinybench: 2.3.1 + tinypool: 0.3.0 + tinyspy: 1.0.2 + vite: 3.2.3_@types+node@18.11.9 + transitivePeerDependencies: + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /vm2/3.9.11: resolution: {integrity: sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==} engines: {node: '>=6.0'} From b15eacf6f2f2428a865dbd3665cfa4125e2e4c2b Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Sun, 27 Nov 2022 11:11:13 -0800 Subject: [PATCH 022/255] remove references to old sidebar.md file --- docs/community/development.md | 11 ++++++----- packages/mermaid/src/docs/community/development.md | 11 ++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/docs/community/development.md b/docs/community/development.md index d7143e1ba..01727b176 100644 --- a/docs/community/development.md +++ b/docs/community/development.md @@ -227,13 +227,16 @@ we have put in place a process wherein _knsv, Knut Sveidqvist_ is the primary re If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? The docs are located in the `packages/mermaid/src/docs` folder and are written in Markdown. Just pick the right section and start typing. -If you want to propose changes to the structure of the documentation, such as adding a new section or a new file you do that via the **[sidebar](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. - -> **All the documents displayed in the GitHub.io page are listed in [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. The contents of are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. +### Documentation organization: sidebar navigation + +If you want to propose changes to how the documentation is _organized_, such as adding a new section or re-arranging or renaming a section, you must update the **sidebar navigation.** + +The sidebar navigation is defined in [the vitepress configuration file config.ts](../.vitepress/config.ts). + ### How to Contribute to Documentation We are a little less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator. @@ -242,8 +245,6 @@ The documentation is located in the `packages/mermaid/src/docs` directory and or The contents of are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. -**The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** - The `docs` folder will be automatically generated when committing to `packages/mermaid/src/docs` and should not be edited manually. We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation to GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index 32eae512a..6b0463410 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -216,13 +216,16 @@ we have put in place a process wherein _knsv, Knut Sveidqvist_ is the primary re If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? The docs are located in the `packages/mermaid/src/docs` folder and are written in Markdown. Just pick the right section and start typing. -If you want to propose changes to the structure of the documentation, such as adding a new section or a new file you do that via the **[sidebar](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. - -> **All the documents displayed in the GitHub.io page are listed in [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)**. The contents of [https://mermaid-js.github.io/mermaid/](https://mermaid-js.github.io/mermaid/) are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. +### Documentation organization: sidebar navigation + +If you want to propose changes to how the documentation is _organized_, such as adding a new section or re-arranging or renaming a section, you must update the **sidebar navigation.** + +The sidebar navigation is defined in [the vitepress configuration file config.ts](../.vitepress/config.ts). + ### How to Contribute to Documentation We are a little less strict here, it is OK to commit directly in the `develop` branch if you are a collaborator. @@ -231,8 +234,6 @@ The documentation is located in the `packages/mermaid/src/docs` directory and or The contents of are based on the docs from the `master` branch. Updates committed to the `master` branch are reflected in the [Mermaid Docs](https://mermaid-js.github.io/mermaid/) once released. -**The Docs Structure is dictated by [sidebar.md](https://github.com/mermaid-js/mermaid/edit/develop/src/docs/_sidebar.md)** - The `docs` folder will be automatically generated when committing to `packages/mermaid/src/docs` and should not be edited manually. We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation to GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) From 3c49fb2c84e890aca28027db44116a460a514231 Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Sun, 27 Nov 2022 11:39:25 -0800 Subject: [PATCH 023/255] (minor) force link check again (too many network calls before) --- docs/community/development.md | 2 +- packages/mermaid/src/docs/community/development.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/community/development.md b/docs/community/development.md index 01727b176..c12ecc142 100644 --- a/docs/community/development.md +++ b/docs/community/development.md @@ -222,7 +222,7 @@ we have put in place a process wherein _knsv, Knut Sveidqvist_ is the primary re ## Contributing Documentation -**_\[TODO: This section is still a WIP. It still needs revision.]_** +**_\[TODO: This section is still a WIP. It still needs MAJOR revision.]_** If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index 6b0463410..fdd8432e7 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -211,7 +211,7 @@ we have put in place a process wherein _knsv, Knut Sveidqvist_ is the primary re ## Contributing Documentation -**_[TODO: This section is still a WIP. It still needs revision.]_** +**_[TODO: This section is still a WIP. It still needs MAJOR revision.]_** If it is not in the documentation, it's like it never happened. Wouldn't that be sad? With all the effort that was put into the feature? From 6807f19ec2a6c540a854e5e732d9fff28200e3e1 Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Mon, 28 Nov 2022 07:38:19 -0800 Subject: [PATCH 024/255] fix links --- docs/community/development.md | 4 ++-- packages/mermaid/src/docs/community/development.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/community/development.md b/docs/community/development.md index c12ecc142..f54a56c77 100644 --- a/docs/community/development.md +++ b/docs/community/development.md @@ -247,7 +247,7 @@ The contents of are based on the docs fr The `docs` folder will be automatically generated when committing to `packages/mermaid/src/docs` and should not be edited manually. -We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation to GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) +We encourage contributions to the documentation at [packages/mermaid/src/docs in the _develop_ branch](https://github.com/mermaid-js/mermaid/tree/develop/packages/mermaid/src/docs). We publish documentation to GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) - Documentation (we encourage updates to the `packages/mermaid/src/docs` folder; you can submit them via direct commits) @@ -278,7 +278,7 @@ _\[TODO: need to keep this in sync with [check out a git branch in Contributing To edit Docs on GitHub: 1. Login to [GitHub.com](https://www.github.com). -2. Navigate to [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). +2. Navigate to [packages/mermaid/src/docs in the mermaid-js repository](https://github.com/mermaid-js/mermaid/tree/develop/packages/mermaid/src/docs). 3. To edit a file, click the pencil icon at the top-right of the file contents panel. 4. Describe what you changed in the **Propose file change** section, located at the bottom of the page. 5. Submit your changes by clicking the button **Propose file change** at the bottom (by automatic creation of a fork and a new branch). diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index fdd8432e7..80ed5ecb9 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -236,7 +236,7 @@ The contents of are based on the docs fr The `docs` folder will be automatically generated when committing to `packages/mermaid/src/docs` and should not be edited manually. -We encourage contributions to the documentation at [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). We publish documentation to GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) +We encourage contributions to the documentation at [packages/mermaid/src/docs in the _develop_ branch](https://github.com/mermaid-js/mermaid/tree/develop/packages/mermaid/src/docs). We publish documentation to GitHub Pages with [Docsify](https://www.youtube.com/watch?v=TV88lp7egMw&t=3s) - Documentation (we encourage updates to the `packages/mermaid/src/docs` folder; you can submit them via direct commits) @@ -267,7 +267,7 @@ _[TODO: need to keep this in sync with [check out a git branch in Contributing C To edit Docs on GitHub: 1. Login to [GitHub.com](https://www.github.com). -2. Navigate to [mermaid-js/mermaid/src/docs](https://github.com/mermaid-js/mermaid/tree/develop/src/docs). +2. Navigate to [packages/mermaid/src/docs in the mermaid-js repository](https://github.com/mermaid-js/mermaid/tree/develop/packages/mermaid/src/docs). 3. To edit a file, click the pencil icon at the top-right of the file contents panel. 4. Describe what you changed in the **Propose file change** section, located at the bottom of the page. 5. Submit your changes by clicking the button **Propose file change** at the bottom (by automatic creation of a fork and a new branch). From 75fa2594721c2a80329b58846058b74b64e1bd88 Mon Sep 17 00:00:00 2001 From: Ashley Engelund Date: Mon, 28 Nov 2022 08:46:10 -0800 Subject: [PATCH 025/255] simplify pnpm cypress command example Co-authored-by: Sidharth Vinod --- packages/mermaid/src/docs/community/development.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index 80ed5ecb9..7ecf7918c 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -145,7 +145,7 @@ This ensures that the rendering of that feature in the e2e will be reviewed in t To start working with the e2e tests: 1. Run `pnpm run dev` to start the dev server (or use the `pnpm dev` script) -2. Start **Cypress** by running `pnpm exec cypress open` in the **mermaid** folder (or use the `pnpm cypress:open` script). +2. Start **Cypress** by running `pnpm cypress:open`. The rendering tests are very straightforward to create. There is a function `imgSnapshotTest`, which takes a diagram in text form and the mermaid options, and it renders that diagram in Cypress. From a497909446f7561d97ffcca5864ac5f6d470f164 Mon Sep 17 00:00:00 2001 From: "Ashley Engelund (weedySeaDragon @ github)" Date: Mon, 28 Nov 2022 08:54:14 -0800 Subject: [PATCH 026/255] fix pnpm dev command example --- docs/community/development.md | 4 ++-- packages/mermaid/src/docs/community/development.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/community/development.md b/docs/community/development.md index f54a56c77..3ed1fe700 100644 --- a/docs/community/development.md +++ b/docs/community/development.md @@ -155,8 +155,8 @@ This ensures that the rendering of that feature in the e2e will be reviewed in t To start working with the e2e tests: -1. Run `pnpm run dev` to start the dev server (or use the `pnpm dev` script) -2. Start **Cypress** by running `pnpm exec cypress open` in the **mermaid** folder (or use the `pnpm cypress:open` script). +1. Run `pnpm dev` to start the dev server +2. Start **Cypress** by running `pnpm cypress:open`. The rendering tests are very straightforward to create. There is a function `imgSnapshotTest`, which takes a diagram in text form and the mermaid options, and it renders that diagram in Cypress. diff --git a/packages/mermaid/src/docs/community/development.md b/packages/mermaid/src/docs/community/development.md index 7ecf7918c..63f99ba38 100644 --- a/packages/mermaid/src/docs/community/development.md +++ b/packages/mermaid/src/docs/community/development.md @@ -144,7 +144,7 @@ This ensures that the rendering of that feature in the e2e will be reviewed in t To start working with the e2e tests: -1. Run `pnpm run dev` to start the dev server (or use the `pnpm dev` script) +1. Run `pnpm dev` to start the dev server 2. Start **Cypress** by running `pnpm cypress:open`. The rendering tests are very straightforward to create. There is a function `imgSnapshotTest`, which takes a diagram in text form and the mermaid options, and it renders that diagram in Cypress. From 1495ae623a27fcb7cb98a6e458e436dcb48fe1e7 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 21 Dec 2022 10:54:23 +0530 Subject: [PATCH 027/255] WIP Adding contributors page from vitest --- cSpell.json | 27 +- package.json | 4 +- .../.vitepress/components/Contributors.vue | 27 ++ .../docs/.vitepress/contributor-names.json | 387 ++++++++++++++++++ .../src/docs/.vitepress/contributors.ts | 111 +++++ pnpm-lock.yaml | 43 ++ scripts/updateContributors.ts | 40 ++ 7 files changed, 633 insertions(+), 6 deletions(-) create mode 100644 packages/mermaid/src/docs/.vitepress/components/Contributors.vue create mode 100644 packages/mermaid/src/docs/.vitepress/contributor-names.json create mode 100644 packages/mermaid/src/docs/.vitepress/contributors.ts create mode 100644 scripts/updateContributors.ts diff --git a/cSpell.json b/cSpell.json index 4e9e4945a..b3da99863 100644 --- a/cSpell.json +++ b/cSpell.json @@ -62,6 +62,7 @@ "mitigations", "mkdocs", "mult", + "ohmyfetch", "orlandoni", "phpbb", "plantuml", @@ -99,7 +100,11 @@ "yash" ], "patterns": [ - { "name": "Markdown links", "pattern": "\\((.*)\\)", "description": "" }, + { + "name": "Markdown links", + "pattern": "\\((.*)\\)", + "description": "" + }, { "name": "Markdown code blocks", "pattern": "/^(\\s*`{3,}).*[\\s\\S]*?^\\1/gmx", @@ -110,14 +115,25 @@ "pattern": "\\`([^\\`\\r\\n]+?)\\`", "description": "https://stackoverflow.com/questions/41274241/how-to-capture-inline-markdown-code-but-not-a-markdown-code-fence-with-regex" }, - { "name": "Link contents", "pattern": "\\", "description": "" }, - { "name": "Snippet references", "pattern": "-- snippet:(.*)", "description": "" }, + { + "name": "Link contents", + "pattern": "\\", + "description": "" + }, + { + "name": "Snippet references", + "pattern": "-- snippet:(.*)", + "description": "" + }, { "name": "Snippet references 2", "pattern": "\\<\\[sample:(.*)", "description": "another kind of snippet reference" }, - { "name": "Multi-line code blocks", "pattern": "/^\\s*```[\\s\\S]*?^\\s*```/gm" }, + { + "name": "Multi-line code blocks", + "pattern": "/^\\s*```[\\s\\S]*?^\\s*```/gm" + }, { "name": "HTML Tags", "pattern": "<[^>]*>", @@ -136,6 +152,7 @@ ], "ignorePaths": [ "packages/mermaid/src/docs/CHANGELOG.md", - "packages/mermaid/src/docs/.vitepress/redirect.ts" + "packages/mermaid/src/docs/.vitepress/redirect.ts", + "packages/mermaid/src/docs/.vitepress/contributor-names.json" ] } diff --git a/package.json b/package.json index c027fa71f..5d2daa48f 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "lint": "eslint --cache --ignore-path .gitignore . && pnpm lint:jison && prettier --check .", "lint:fix": "eslint --fix --ignore-path .gitignore . && prettier --write . && ts-node-esm scripts/fixCSpell.ts", "lint:jison": "ts-node-esm ./scripts/jison/lint.mts", + "contributors": "ts-node-esm scripts/updateContributors.ts", "cypress": "cypress run", "cypress:open": "cypress open", "e2e": "start-server-and-test dev http://localhost:9000/ cypress", @@ -96,6 +97,7 @@ "js-yaml": "^4.1.0", "jsdom": "^20.0.2", "lint-staged": "^13.0.3", + "ohmyfetch": "^0.4.21", "path-browserify": "^1.0.1", "pnpm": "^7.15.0", "prettier": "^2.7.1", @@ -111,4 +113,4 @@ "volta": { "node": "18.12.1" } -} +} \ No newline at end of file diff --git a/packages/mermaid/src/docs/.vitepress/components/Contributors.vue b/packages/mermaid/src/docs/.vitepress/components/Contributors.vue new file mode 100644 index 000000000..37b7b9133 --- /dev/null +++ b/packages/mermaid/src/docs/.vitepress/components/Contributors.vue @@ -0,0 +1,27 @@ + + + diff --git a/packages/mermaid/src/docs/.vitepress/contributor-names.json b/packages/mermaid/src/docs/.vitepress/contributor-names.json new file mode 100644 index 000000000..f1253b557 --- /dev/null +++ b/packages/mermaid/src/docs/.vitepress/contributor-names.json @@ -0,0 +1,387 @@ +[ + "knsv", + "sidharthv96", + "NeilCuzon", + "tylerlong", + "ashishjain0512", + "weedySeaDragon", + "mmorel-35", + "GDFaber", + "aloisklink", + "klemmchr", + "jgreywolf", + "cmmoran", + "Yash-Singh1", + "IOrlandoni", + "raghur", + "SeanKilleen", + "erelling", + "spopida", + "emersonbottero", + "bjowes", + "Andre601", + "dbartholomae", + "gibson042", + "pbrolin47", + "chrismoran-bkt", + "abzicht", + "gwincr11", + "mearns", + "spier", + "BastianZim", + "devcer", + "sagea", + "DKurilo", + "gijswijs", + "timmaffett", + "pinghe", + "ciekawy", + "lexmin0412", + "koljatm-edeka", + "notquiterussell", + "spect88", + "huynhicode", + "dany74q", + "johnnywalker", + "72636c", + "therzka", + "fardog", + "Mogztter", + "bollwyvl", + "adamwulf", + "elliot-nelson", + "fabiospampinato", + "HustLion", + "nacc", + "flying-sheep", + "vallsv", + "Xstoudi", + "arpansaha13", + "Some-Dood", + "DanShai", + "LarryKlugerDS", + "MasonM", + "stanhu", + "sechel", + "swoyam2609", + "abhijeet-pathak", + "lishid", + "eajenkins", + "harshilparmar", + "Guy-Adler", + "ahmadnassri", + "crodriguez1a", + "danangtomo", + "FlorianWoelki", + "Jmuccigr", + "joshuacolvin", + "khiga8", + "keenanjt33", + "lf-novelt", + "faisalarbain", + "cm-wada-yusuke", + "ymgch", + "yutotnh", + "arnaud-zg", + "BD103", + "Aniket1026", + "CalebUsadi", + "gene1wood", + "gillesdemey", + "JoshSharpe", + "heyfirst", + "knuts-ic", + "loris-intergalactique", + "lindseywild", + "tmatz", + "mahomedalid", + "doble-eme", + "Mister-Hope", + "MrCoder", + "pbendersky", + "Rutorai", + "ThanasisMpalatsoukas", + "thomasleveil", + "tomperr", + "husa", + "abeaton", + "anugs", + "ginomempin", + "lilisha100", + "nothingismagick", + "phairow", + "deining", + "jsyang", + "naveensrinivasan", + "tommoor", + "vijay40", + "0xflotus", + "AndreasVolkmann", + "ashsearle", + "bish0polis", + "DawMatt", + "frankschmitt", + "ggpasqualino", + "hrgui", + "IanLee1521", + "jbednar", + "jdavis61", + "jayvdb", + "jbronson-sf", + "lorint", + "MindaugasLaganeckas", + "u-minor", + "namgivu", + "OlegAxenow", + "phschaer", + "rmedaer", + "rheggen", + "larkinscott", + "The-Alchemist", + "TomWright", + "tshepang", + "Vrixyz", + "sinedied", + "yonasb", + "Zer0n0mask", + "brookhong", + "edumicse", + "ilmari-lauhakangas", + "jasmaa", + "sy-records", + "uttk", + "el-mapache", + "bigred8982", + "imgss", + "Joxtacy", + "mrmanc", + "riaanduplessis", + "sylhare", + "vikyaiyer", + "CollierCZ", + "adutton", + "adam-hotait", + "ameech", + "AlanHohn", + "aledileo", + "alexislefebvre", + "zag", + "alvynmcq", + "alwinw", + "amyq", + "ajthinking", + "NKjoep", + "AndrewL-64", + "sublimino", + "andrewschleifer", + "andrew-demb", + "6footGeek", + "anishkny", + "aniston", + "antco25", + "saveman71", + "Abrifq", + "arfanliaqat", + "Arthaey", + "AsaAyers", + "bglnelissen", + "ben-page", + "jawn", + "Billiam", + "xbojch", + "craigmac", + "hydrosquall", + "carlosblanco", + "carbeer", + "watsoncj", + "dodoinblue", + "ctruelson", + "beaudry", + "ct-martin", + "Clint-Chester", + "connor4312", + "DCsunset", + "activus-d", + "DanInProgress", + "egnor", + "Olshansk", + "danielsitnik", + "dariuswiles", + "DarkNami", + "daveaglick", + "davidpendraykalibrate", + "DavidWittman", + "detj", + "dbrans", + "dbussink", + "dwinston", + "dfinke", + "quickstep25", + "ebjornset", + "Eji4h", + "glensc", + "Erhannis", + "FabAlchemy", + "fregante", + "filipedeschamps", + "Foo-x", + "Frank-Mayer", + "gwatts", + "gnkm", + "gjlubbertsen", + "guidanoli", + "guyellis", + "H3RSKO", + "hwine", + "HerbCaudill", + "TribalNightOwl", + "hugovk", + "jolting", + "ImanimalXI", + "ImgBotApp", + "imma90", + "inclusive-coding-bot", + "itprdev", + "revolter", + "isinek", + "marcastel", + "coxy1989", + "janverb", + "jasonbellamy", + "jasonmhoule", + "jayenashar", + "jaybuidl", + "jeroenekkelkamp", + "joebordes", + "jnnnnn", + "jfuentescpp", + "jinntrance", + "jmelfi", + "Qix-", + "jmg-duarte", + "kahgoh", + "Schweinepriester", + "Kaligule", + "kdipippo", + "khink", + "kevinkhill", + "kkirsche", + "kriskhaira", + "kale-stew", + "Lance-DC", + "kciter", + "zaaath", + "manicki", + "levlas", + "spydon", + "woehrl01", + "lukehsiao", + "korycins", + "maiconschmitz", + "vaceletm", + "marcjansen", + "markdalgleish", + "markotibold", + "Swaagie", + "Narretz", + "ma-zal", + "mgaitan", + "mapio", + "matteodelabre", + "maxArturo", + "DavertMik", + "mgenereu", + "maiermic", + "magmax", + "quulah", + "mbostock", + "Crocin", + "elv-nate", + "NateChurch", + "gerardnico", + "NitinLodha2812", + "hype09", + "pje", + "saulgajda", + "skywinder", + "ticapix", + "pravi", + "bfriedz", + "reetghosh1", + "renanlecaro", + "Renfay007", + "wontonst", + "RudolfMan", + "SlideeScherz", + "SilvM", + "simon-id", + "simonplattner", + "sdankel", + "Soptq", + "stevenengler", + "stevenschobert", + "swhgoon", + "hiramekun", + "gitter-badger", + "KarnerTh", + "codebeige", + "schmelto", + "TreyE", + "thilde", + "vaniship", + "commai", + "MetalBlueberry", + "volkanunsal", + "yudenzel", + "uskey512", + "zakhenry", + "abergquist", + "JiChao99", + "aryandeelwal", + "avijit1258", + "bby-bishopclark", + "beriakomal", + "bolshoytoster", + "chrismetz09", + "christopherkade", + "tenuki", + "dkkb", + "endolith", + "eel87", + "esphas", + "raptor0929", + "flywire", + "gkchic", + "gomlgs", + "hikerpig", + "hopoverflow", + "hughli-git", + "ishuen", + "it-sec-std", + "it0a", + "ivan-danilov", + "kerwin612", + "kuanyi-ng", + "laDanz", + "lgasp", + "mahimas28", + "may4everL", + "meganemura", + "monsterkrampe", + "mupple", + "mvandermade", + "penenkel", + "r-a-v-a-s", + "ryenus", + "alguerocode", + "siddhant-tripathy1", + "sifb", + "silverwind", + "wfnuser", + "chewnoill", + "znxkznxk1030", + "zepatrik", + "zephyraft", + "zwpaper", + "hetz" +] diff --git a/packages/mermaid/src/docs/.vitepress/contributors.ts b/packages/mermaid/src/docs/.vitepress/contributors.ts new file mode 100644 index 000000000..0e504466e --- /dev/null +++ b/packages/mermaid/src/docs/.vitepress/contributors.ts @@ -0,0 +1,111 @@ +import contributorNames from './contributor-names.json'; + +export interface Contributor { + name: string; + avatar: string; +} + +export interface SocialEntry { + icon: string; + link: string; +} + +export interface CoreTeam { + avatar: string; + name: string; + // required to download avatars from GitHub + github: string; + twitter: string; + sponsor?: string; + title?: string; + org?: string; + desc?: string; + links?: SocialEntry[]; +} + +const contributorsAvatars: Record = {}; + +const getAvatarUrl = (name: string) => + import.meta.hot ? `https://github.com/${name}.png` : `/user-avatars/${name}.png`; + +export const contributors = (contributorNames as string[]).reduce((acc, name) => { + contributorsAvatars[name] = getAvatarUrl(name); + acc.push({ name, avatar: contributorsAvatars[name] }); + return acc; +}, [] as Contributor[]); + +// const createLinks = (tm: CoreTeam): CoreTeam => { +// tm.links = [ +// { icon: 'github', link: `https://github.com/${tm.github}` }, +// { icon: 'twitter', link: `https://twitter.com/${tm.twitter}` }, +// ]; +// return tm; +// }; + +// const plainTeamMembers: CoreTeam[] = [ +// { +// avatar: contributorsAvatars.antfu, +// name: 'Anthony Fu', +// github: 'antfu', +// twitter: 'antfu7', +// sponsor: 'https://github.com/sponsors/antfu', +// title: 'A fanatical open sourceror, working', +// org: 'NuxtLabs', +// desc: 'Core team member of Vite & Vue', +// }, +// { +// avatar: contributorsAvatars['sheremet-va'], +// name: 'Vladimir', +// github: 'sheremet-va', +// twitter: 'sheremet_va', +// sponsor: 'https://github.com/sponsors/sheremet-va', +// title: 'An open source fullstack developer', +// desc: 'Core team member of Vitest', +// }, +// { +// avatar: contributorsAvatars['patak-dev'], +// name: 'Patak', +// github: 'patak-dev', +// twitter: 'patak_dev', +// sponsor: 'https://github.com/sponsors/patak-dev', +// title: 'A collaborative being, working', +// org: 'StackBlitz', +// desc: 'Core team member of Vite & Vue', +// }, +// { +// avatar: contributorsAvatars.Aslemammad, +// name: 'Mohammad Bagher', +// github: 'Aslemammad', +// twitter: 'asleMammadam', +// title: 'An open source developer', +// desc: 'Team member of Poimandres & Vike', +// }, +// { +// avatar: contributorsAvatars.Demivan, +// name: 'Ivan Demchuk', +// github: 'Demivan', +// twitter: 'IvanDemchuk', +// title: 'A tech lead, fullstack developer', +// desc: 'Author of fluent-vue', +// }, +// { +// avatar: contributorsAvatars.userquin, +// name: 'Joaquín Sánchez', +// github: 'userquin', +// twitter: 'userquin', +// title: 'A fullstack and android developer', +// desc: "Vite's fanatical follower", +// }, +// { +// avatar: contributorsAvatars.zxch3n, +// name: 'Zixuan Chen', +// github: 'zxch3n', +// twitter: 'zxch3n', +// title: 'A fullstack developer', +// desc: 'Creating tools for collaboration', +// }, +// ]; + +// const teamMembers = plainTeamMembers.map((tm) => createLinks(tm)); + +// export { teamMembers }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 951d3cc1e..12700ebd8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -130,6 +130,9 @@ importers: lint-staged: specifier: ^13.0.3 version: 13.0.3 + ohmyfetch: + specifier: ^0.4.21 + version: 0.4.21 path-browserify: specifier: ^1.0.1 version: 1.0.1 @@ -3961,6 +3964,13 @@ packages: engines: {node: '>=6'} dev: true + /busboy/1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: true + /bytes/3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -5408,6 +5418,10 @@ packages: engines: {node: '>=6'} dev: true + /destr/1.2.2: + resolution: {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==} + dev: true + /destroy/1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -8913,6 +8927,10 @@ packages: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: true + /node-fetch-native/0.1.8: + resolution: {integrity: sha512-ZNaury9r0NxaT2oL65GvdGDy+5PlSaHTovT6JV5tOW07k1TQmgC0olZETa4C9KZg0+6zBr99ctTYa3Utqj9P/Q==} + dev: true + /node-fetch/2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} @@ -9016,6 +9034,15 @@ packages: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} dev: true + /ohmyfetch/0.4.21: + resolution: {integrity: sha512-VG7f/JRvqvBOYvL0tHyEIEG7XHWm7OqIfAs6/HqwWwDfjiJ1g0huIpe5sFEmyb+7hpFa1EGNH2aERWR72tlClw==} + dependencies: + destr: 1.2.2 + node-fetch-native: 0.1.8 + ufo: 0.8.6 + undici: 5.14.0 + dev: true + /on-finished/2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -10410,6 +10437,11 @@ packages: duplexer: 0.1.2 dev: true + /streamsearch/1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: true + /string-argv/0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} @@ -10931,6 +10963,10 @@ packages: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} dev: true + /ufo/0.8.6: + resolution: {integrity: sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==} + dev: true + /uglify-js/3.17.3: resolution: {integrity: sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==} engines: {node: '>=0.8.0'} @@ -10943,6 +10979,13 @@ packages: resolution: {integrity: sha512-w4QtCHoLBXw1mjofIDoMyexaEdWGMedWNDhlWTtT1V1lCRqi65Pnoygkh6+WRdr+Bm8ldkBNkNeCsXGMlQS9HQ==} dev: true + /undici/5.14.0: + resolution: {integrity: sha512-yJlHYw6yXPPsuOH0x2Ib1Km61vu4hLiRRQoafs+WUgX1vO64vgnxiCEN9dpIrhZyHFsai3F0AEj4P9zy19enEQ==} + engines: {node: '>=12.18'} + dependencies: + busboy: 1.6.0 + dev: true + /unified/10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} dependencies: diff --git a/scripts/updateContributors.ts b/scripts/updateContributors.ts new file mode 100644 index 000000000..e28f24b0a --- /dev/null +++ b/scripts/updateContributors.ts @@ -0,0 +1,40 @@ +// Adapted from https://github.dev/vitest-dev/vitest/blob/991ff33ab717caee85ef6cbe1c16dc514186b4cc/scripts/update-contributors.ts#L6 + +import { writeFile } from 'node:fs/promises'; +import { $fetch } from 'ohmyfetch'; + +interface Contributor { + login: string; +} + +async function fetchContributors() { + const collaborators: string[] = []; + let page = 1; + let data: Contributor[] = []; + do { + data = + (await $fetch( + `https://api.github.com/repos/mermaid-js/mermaid/contributors?per_page=100&page=${page}`, + { + method: 'get', + headers: { + 'content-type': 'application/json', + }, + } + )) || []; + collaborators.push(...data.map((i) => i.login)); + page++; + } while (data.length === 100); + return collaborators.filter((name) => !name.includes('[bot]')); +} + +async function generate() { + const collaborators = await fetchContributors(); + await writeFile( + './packages/mermaid/src/docs/.vitepress/contributor-names.json', + `${JSON.stringify(collaborators, null, 2)}\n`, + 'utf8' + ); +} + +void generate(); From d688f1fe942f68d9818c33cb5c2976da358fe096 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 24 Feb 2023 21:16:09 +0530 Subject: [PATCH 028/255] fix lockfile --- pnpm-lock.yaml | 65 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 47 insertions(+), 18 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7f9456224..c67866b61 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1175,6 +1175,7 @@ packages: /@braintree/sanitize-url/6.0.0: resolution: {integrity: sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w==} + dev: false /@colors/colors/1.5.0: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -2991,10 +2992,6 @@ packages: resolution: {integrity: sha512-zmEmF5OIM3rb7SbLCFYoQhO4dGt2FRM9AMkxvA3LaADOF1n8in/zGJlWji9fmafLoNyz+FoL6FE0SLtGIArD7w==} dev: true - /@types/lodash/4.14.189: - resolution: {integrity: sha512-kb9/98N6X8gyME9Cf7YaqIMvYGnBSWqEci6tiettE6iJWH1XdJz/PO8LB0GtLCG7x8dU3KWhZT+lA1a35127tA==} - dev: true - /@types/markdown-it/12.2.3: resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} dependencies: @@ -4249,7 +4246,7 @@ packages: /axios/0.21.4_debug@4.3.2: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} dependencies: - follow-redirects: 1.15.2_debug@4.3.2 + follow-redirects: 1.15.2_debug@4.3.4 transitivePeerDependencies: - debug dev: true @@ -5450,10 +5447,12 @@ packages: engines: {node: '>=12'} dependencies: internmap: 2.0.3 + dev: false /d3-axis/3.0.0: resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} engines: {node: '>=12'} + dev: false /d3-brush/3.0.0: resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} @@ -5464,32 +5463,38 @@ packages: d3-interpolate: 3.0.1 d3-selection: 3.0.0 d3-transition: 3.0.1_d3-selection@3.0.0 + dev: false /d3-chord/3.0.1: resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} engines: {node: '>=12'} dependencies: d3-path: 3.0.1 + dev: false /d3-color/3.1.0: resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} engines: {node: '>=12'} + dev: false /d3-contour/4.0.0: resolution: {integrity: sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==} engines: {node: '>=12'} dependencies: d3-array: 3.2.0 + dev: false /d3-delaunay/6.0.2: resolution: {integrity: sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==} engines: {node: '>=12'} dependencies: delaunator: 5.0.0 + dev: false /d3-dispatch/3.0.1: resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} engines: {node: '>=12'} + dev: false /d3-drag/3.0.0: resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} @@ -5497,6 +5502,7 @@ packages: dependencies: d3-dispatch: 3.0.1 d3-selection: 3.0.0 + dev: false /d3-dsv/3.0.1: resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} @@ -5506,16 +5512,19 @@ packages: commander: 7.2.0 iconv-lite: 0.6.3 rw: 1.3.3 + dev: false /d3-ease/3.0.1: resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} engines: {node: '>=12'} + dev: false /d3-fetch/3.0.1: resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} engines: {node: '>=12'} dependencies: d3-dsv: 3.0.1 + dev: false /d3-force/3.0.0: resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} @@ -5524,42 +5533,51 @@ packages: d3-dispatch: 3.0.1 d3-quadtree: 3.0.1 d3-timer: 3.0.1 + dev: false /d3-format/3.1.0: resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} engines: {node: '>=12'} + dev: false /d3-geo/3.0.1: resolution: {integrity: sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==} engines: {node: '>=12'} dependencies: d3-array: 3.2.0 + dev: false /d3-hierarchy/3.1.2: resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} engines: {node: '>=12'} + dev: false /d3-interpolate/3.0.1: resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} engines: {node: '>=12'} dependencies: d3-color: 3.1.0 + dev: false /d3-path/3.0.1: resolution: {integrity: sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==} engines: {node: '>=12'} + dev: false /d3-polygon/3.0.1: resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} engines: {node: '>=12'} + dev: false /d3-quadtree/3.0.1: resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} engines: {node: '>=12'} + dev: false /d3-random/3.0.1: resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} engines: {node: '>=12'} + dev: false /d3-scale-chromatic/3.0.0: resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} @@ -5567,6 +5585,7 @@ packages: dependencies: d3-color: 3.1.0 d3-interpolate: 3.0.1 + dev: false /d3-scale/4.0.2: resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} @@ -5577,32 +5596,38 @@ packages: d3-interpolate: 3.0.1 d3-time: 3.0.0 d3-time-format: 4.1.0 + dev: false /d3-selection/3.0.0: resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} engines: {node: '>=12'} + dev: false /d3-shape/3.1.0: resolution: {integrity: sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==} engines: {node: '>=12'} dependencies: d3-path: 3.0.1 + dev: false /d3-time-format/4.1.0: resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} engines: {node: '>=12'} dependencies: d3-time: 3.0.0 + dev: false /d3-time/3.0.0: resolution: {integrity: sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==} engines: {node: '>=12'} dependencies: d3-array: 3.2.0 + dev: false /d3-timer/3.0.1: resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} engines: {node: '>=12'} + dev: false /d3-transition/3.0.1_d3-selection@3.0.0: resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} @@ -5616,6 +5641,7 @@ packages: d3-interpolate: 3.0.1 d3-selection: 3.0.0 d3-timer: 3.0.1 + dev: false /d3-zoom/3.0.0: resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} @@ -5626,6 +5652,7 @@ packages: d3-interpolate: 3.0.1 d3-selection: 3.0.0 d3-transition: 3.0.1_d3-selection@3.0.0 + dev: false /d3/7.8.2: resolution: {integrity: sha512-WXty7qOGSHb7HR7CfOzwN1Gw04MUOzN8qh9ZUsvwycIMb4DYMpY9xczZ6jUorGtO6bR9BPMPaueIKwiDxu9uiQ==} @@ -5661,6 +5688,7 @@ packages: d3-timer: 3.0.1 d3-transition: 3.0.1_d3-selection@3.0.0 d3-zoom: 3.0.0 + dev: false /dagre-d3-es/7.0.8: resolution: {integrity: sha512-eykdoYQ4FwCJinEYS0gPL2f2w+BPbSLvnQSJ3Ye1vAoPjdkq6xIMKBv+UkICd3qZE26wBKIn3p+6n0QC7R1LyA==} @@ -5854,6 +5882,7 @@ packages: resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==} dependencies: robust-predicates: 3.0.1 + dev: false /delayed-stream/1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} @@ -6801,18 +6830,6 @@ packages: resolution: {integrity: sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==} dev: true - /follow-redirects/1.15.2_debug@4.3.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dependencies: - debug: 4.3.2 - dev: true - /follow-redirects/1.15.2_debug@4.3.4: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} @@ -7362,7 +7379,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.2_debug@4.3.2 + follow-redirects: 1.15.2_debug@4.3.4 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -7506,6 +7523,7 @@ packages: /internmap/2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} + dev: false /interpret/2.2.0: resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} @@ -8462,6 +8480,7 @@ packages: /khroma/2.0.0: resolution: {integrity: sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==} + dev: false /kind-of/6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} @@ -9335,6 +9354,7 @@ packages: /moment-mini/2.29.4: resolution: {integrity: sha512-uhXpYwHFeiTbY9KSgPPRoo1nt8OxNVdMVoTBYHfSEKeRkIkwGpO+gERmhuhBtzfaeOyTkykSrm2+noJBgqt3Hg==} + dev: false /mri/1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} @@ -9441,6 +9461,7 @@ packages: /non-layered-tidy-tree-layout/2.0.2: resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==} + dev: false /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -10458,6 +10479,7 @@ packages: /robust-predicates/3.0.1: resolution: {integrity: sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==} + dev: false /rollup-plugin-visualizer/5.8.3: resolution: {integrity: sha512-QGJk4Bqe4AOat5AjipOh8esZH1nck5X2KFpf4VytUdSUuuuSwvIQZjMGgjcxe/zXexltqaXp5Vx1V3LmnQH15Q==} @@ -10498,6 +10520,7 @@ packages: /rw/1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + dev: false /rxjs/7.5.6: resolution: {integrity: sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==} @@ -11136,6 +11159,7 @@ packages: /stylis/4.1.2: resolution: {integrity: sha512-Nn2CCrG2ZaFziDxaZPN43CXqn+j7tcdjPFCkRBkFue8QYXC2HdEwnw5TCBo4yQZ2WxKYeSi0fdoOrtEqgDrXbA==} + dev: false /supports-color/2.0.0: resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} @@ -11562,6 +11586,10 @@ packages: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} dev: true + /ufo/0.8.6: + resolution: {integrity: sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==} + dev: true + /ufo/1.0.1: resolution: {integrity: sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==} dev: true @@ -11711,6 +11739,7 @@ packages: /uuid/9.0.0: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true + dev: false /uvu/0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} From 00a14ee81164b1f7fb7119cdc497c191779ce8d8 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 24 Feb 2023 23:03:51 +0530 Subject: [PATCH 029/255] WIP: Contributors --- cSpell.json | 9 + packages/mermaid/.gitignore | 4 +- packages/mermaid/package.json | 4 +- packages/mermaid/src/docs.mts | 2 +- .../src/docs/.vitepress/components.d.ts | 13 + .../docs/.vitepress/components/HomePage.vue | 26 + .../src/docs/.vitepress/contributors.ts | 204 +- .../docs/.vitepress/scripts/fetch-avatars.ts | 40 + .../src/docs/.vitepress/style/main.css | 77 + .../src/docs/.vitepress/theme/index.ts | 21 +- packages/mermaid/src/docs/index.md | 154 +- packages/mermaid/src/docs/package.json | 35 + packages/mermaid/src/docs/vite.config.ts | 52 +- pnpm-lock.yaml | 3024 ++++++++++++++++- pnpm-workspace.yaml | 3 +- 15 files changed, 3345 insertions(+), 323 deletions(-) create mode 100644 packages/mermaid/src/docs/.vitepress/components.d.ts create mode 100644 packages/mermaid/src/docs/.vitepress/components/HomePage.vue create mode 100644 packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts create mode 100644 packages/mermaid/src/docs/.vitepress/style/main.css create mode 100644 packages/mermaid/src/docs/package.json diff --git a/cSpell.json b/cSpell.json index 2bca06807..5ff3a3bc5 100644 --- a/cSpell.json +++ b/cSpell.json @@ -5,11 +5,13 @@ "acyclicer", "adamiecki", "alois", + "aloisklink", "antiscript", "appli", "applitools", "asciidoctor", "ashish", + "ashishjain", "astah", "bbox", "bilkent", @@ -48,6 +50,7 @@ "greywolf", "inkdrop", "jaoude", + "jgreywolf", "jison", "kaufmann", "khroma", @@ -55,11 +58,13 @@ "klink", "knsv", "knut", + "knutsveidqvist", "laganeckas", "lintstagedrc", "logmsg", "lucida", "matthieu", + "matthieumorel", "mdast", "mdbook", "mermerd", @@ -68,9 +73,11 @@ "mindmaps", "mitigations", "mkdocs", + "mmorel", "mult", "ohmyfetch", "orlandoni", + "pbrolin", "phpbb", "plantuml", "playfair", @@ -100,8 +107,10 @@ "treemap", "ts-nocheck", "tuleap", + "tylerlong", "ugge", "unist", + "Unocss", "verdana", "viewports", "vinod", diff --git a/packages/mermaid/.gitignore b/packages/mermaid/.gitignore index 6ed32bcf7..2d71b0dd3 100644 --- a/packages/mermaid/.gitignore +++ b/packages/mermaid/.gitignore @@ -1,3 +1,5 @@ src/vitepress src/docs/config/setup -README.* \ No newline at end of file +README.* +src/docs/public/user-avatars/ +src/docs/.vitepress/cache diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index 9fdef30b4..016886c99 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -27,8 +27,8 @@ "docs:build": "rimraf ../../docs && pnpm docs:spellcheck && pnpm docs:code && ts-node-esm src/docs.mts", "docs:verify": "pnpm docs:spellcheck && pnpm docs:code && ts-node-esm src/docs.mts --verify", "docs:pre:vitepress": "rimraf src/vitepress && pnpm docs:code && ts-node-esm src/docs.mts --vitepress", - "docs:build:vitepress": "pnpm docs:pre:vitepress && vitepress build src/vitepress && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing", - "docs:dev": "pnpm docs:pre:vitepress && concurrently \"vitepress dev src/vitepress\" \"ts-node-esm src/docs.mts --watch --vitepress\"", + "docs:build:vitepress": "pnpm docs:pre:vitepress && (cd src/vitepress && pnpm --filter ./ install && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing", + "docs:dev": "pnpm docs:pre:vitepress && concurrently \"pnpm --filter ./ src/vitepress dev\" \"ts-node-esm src/docs.mts --watch --vitepress\"", "docs:serve": "pnpm docs:build:vitepress && vitepress serve src/vitepress", "docs:spellcheck": "cspell --config ../../cSpell.json \"src/docs/**/*.md\"", "release": "pnpm build", diff --git a/packages/mermaid/src/docs.mts b/packages/mermaid/src/docs.mts index 7f3ab4e8b..d7b558a00 100644 --- a/packages/mermaid/src/docs.mts +++ b/packages/mermaid/src/docs.mts @@ -362,7 +362,7 @@ const transformHtml = (filename: string) => { }; const getGlobs = (globs: string[]): string[] => { - globs.push('!**/dist', '!**/redirect.spec.ts', '!**/landing'); + globs.push('!**/dist', '!**/redirect.spec.ts', '!**/landing', '!**/node_modules'); if (!vitepress) { globs.push('!**/.vitepress', '!**/vite.config.ts', '!src/docs/index.md'); } diff --git a/packages/mermaid/src/docs/.vitepress/components.d.ts b/packages/mermaid/src/docs/.vitepress/components.d.ts new file mode 100644 index 000000000..e02f97c92 --- /dev/null +++ b/packages/mermaid/src/docs/.vitepress/components.d.ts @@ -0,0 +1,13 @@ +// generated by unplugin-vue-components +// We suggest you to commit this file into source control +// Read more: https://github.com/vuejs/core/pull/3399 +import '@vue/runtime-core' + +export {} + +declare module '@vue/runtime-core' { + export interface GlobalComponents { + Contributors: typeof import('./components/Contributors.vue')['default'] + HomePage: typeof import('./components/HomePage.vue')['default'] + } +} diff --git a/packages/mermaid/src/docs/.vitepress/components/HomePage.vue b/packages/mermaid/src/docs/.vitepress/components/HomePage.vue new file mode 100644 index 000000000..19f3912a7 --- /dev/null +++ b/packages/mermaid/src/docs/.vitepress/components/HomePage.vue @@ -0,0 +1,26 @@ + + + diff --git a/packages/mermaid/src/docs/.vitepress/contributors.ts b/packages/mermaid/src/docs/.vitepress/contributors.ts index 0e504466e..510c44c45 100644 --- a/packages/mermaid/src/docs/.vitepress/contributors.ts +++ b/packages/mermaid/src/docs/.vitepress/contributors.ts @@ -1,4 +1,4 @@ -import contributorNames from './contributor-names.json'; +import contributorNamesJson from './contributor-names.json'; export interface Contributor { name: string; @@ -6,7 +6,7 @@ export interface Contributor { } export interface SocialEntry { - icon: string; + icon: string | { svg: string }; link: string; } @@ -15,97 +15,143 @@ export interface CoreTeam { name: string; // required to download avatars from GitHub github: string; - twitter: string; + twitter?: string; + mastodon?: string sponsor?: string; + website?: string; + linkedIn?: string; title?: string; org?: string; desc?: string; links?: SocialEntry[]; } +const contributorNames: string[] = contributorNamesJson; const contributorsAvatars: Record = {}; const getAvatarUrl = (name: string) => import.meta.hot ? `https://github.com/${name}.png` : `/user-avatars/${name}.png`; export const contributors = (contributorNames as string[]).reduce((acc, name) => { - contributorsAvatars[name] = getAvatarUrl(name); - acc.push({ name, avatar: contributorsAvatars[name] }); - return acc; -}, [] as Contributor[]); + contributorsAvatars[name] = getAvatarUrl(name) + acc.push({ name, avatar: contributorsAvatars[name] }) + return acc +}, [] as Contributor[]) -// const createLinks = (tm: CoreTeam): CoreTeam => { -// tm.links = [ -// { icon: 'github', link: `https://github.com/${tm.github}` }, -// { icon: 'twitter', link: `https://twitter.com/${tm.twitter}` }, -// ]; -// return tm; -// }; +const websiteSVG = { + svg: '' +} -// const plainTeamMembers: CoreTeam[] = [ -// { -// avatar: contributorsAvatars.antfu, -// name: 'Anthony Fu', -// github: 'antfu', -// twitter: 'antfu7', -// sponsor: 'https://github.com/sponsors/antfu', -// title: 'A fanatical open sourceror, working', -// org: 'NuxtLabs', -// desc: 'Core team member of Vite & Vue', -// }, -// { -// avatar: contributorsAvatars['sheremet-va'], -// name: 'Vladimir', -// github: 'sheremet-va', -// twitter: 'sheremet_va', -// sponsor: 'https://github.com/sponsors/sheremet-va', -// title: 'An open source fullstack developer', -// desc: 'Core team member of Vitest', -// }, -// { -// avatar: contributorsAvatars['patak-dev'], -// name: 'Patak', -// github: 'patak-dev', -// twitter: 'patak_dev', -// sponsor: 'https://github.com/sponsors/patak-dev', -// title: 'A collaborative being, working', -// org: 'StackBlitz', -// desc: 'Core team member of Vite & Vue', -// }, -// { -// avatar: contributorsAvatars.Aslemammad, -// name: 'Mohammad Bagher', -// github: 'Aslemammad', -// twitter: 'asleMammadam', -// title: 'An open source developer', -// desc: 'Team member of Poimandres & Vike', -// }, -// { -// avatar: contributorsAvatars.Demivan, -// name: 'Ivan Demchuk', -// github: 'Demivan', -// twitter: 'IvanDemchuk', -// title: 'A tech lead, fullstack developer', -// desc: 'Author of fluent-vue', -// }, -// { -// avatar: contributorsAvatars.userquin, -// name: 'Joaquín Sánchez', -// github: 'userquin', -// twitter: 'userquin', -// title: 'A fullstack and android developer', -// desc: "Vite's fanatical follower", -// }, -// { -// avatar: contributorsAvatars.zxch3n, -// name: 'Zixuan Chen', -// github: 'zxch3n', -// twitter: 'zxch3n', -// title: 'A fullstack developer', -// desc: 'Creating tools for collaboration', -// }, -// ]; +const createLinks = (tm: CoreTeam): CoreTeam => { + tm.links = [{ icon: 'github', link: `https://github.com/${tm.github}` }] + if (tm.mastodon) { + tm.links.push({ icon: 'mastodon', link: tm.mastodon }) + } + if (tm.twitter) { + tm.links.push({ icon: 'twitter', link: `https://twitter.com/${tm.twitter}` }) + } + if (tm.website) { + tm.links.push({ icon: websiteSVG, link: tm.website }) + } + if (tm.linkedIn) { + tm.links.push({ icon: 'linkedin', link: `https://www.linkedin.com/in/${tm.linkedIn}` }) + } + return tm +} -// const teamMembers = plainTeamMembers.map((tm) => createLinks(tm)); +const plainTeamMembers: CoreTeam[] = [ + { + github: 'knsv', + avatar: contributorsAvatars.knsv, + name: 'Knut Sveidqvist', + title: 'Creator', + twitter: 'knutsveidqvist', + sponsor: 'https://github.com/sponsors/knsv', + }, + { + github: 'NeilCuzon', + avatar: contributorsAvatars.NeilCuzon, + name: 'Neil Cuzon', + title: 'Developer' + }, + { + github: 'tylerlong', + avatar: contributorsAvatars.tylerlong, + name: 'Tyler Liu', + title: 'Developer' + }, + { + github: 'sidharthv96', + avatar: contributorsAvatars.sidharthv96, + name: 'Sidharth Vinod', + title: 'Developer', + twitter: 'sidv42', + mastodon: 'https://techhub.social/@sidv', + sponsor: 'https://github.com/sponsors/sidharthv96', + linkedIn: 'sidharth-vinod', + website: 'https://sidharth.dev' + }, + { + github: 'ashishjain0512', + avatar: contributorsAvatars.ashishjain0512, + name: 'Ashish Jain', + title: 'Developer' + }, + { + github: 'mmorel-35', + avatar: contributorsAvatars['mmorel-35'], + name: 'Matthieu Morel', + title: 'Developer', + linkedIn: 'matthieumorel35' + }, + { + github: 'aloisklink', + avatar: contributorsAvatars.aloisklink, + name: 'Alois Klink', + title: 'Developer', + linkedIn: 'aloisklink', + website: 'https://aloisklink.com' + }, + { + github: 'pbrolin47', + avatar: contributorsAvatars.pbrolin47, + name: 'Per Brolin', + title: 'Developer' + }, + { + github: 'Yash-Singh1', + avatar: contributorsAvatars['Yash-Singh1'], + name: 'Yash Singh', + title: 'Developer' + }, + { + github: 'GDFaber', + avatar: contributorsAvatars.GDFaber, + name: 'Marc Faber', + title: 'Developer', + linkedIn: 'marc-faber' + }, + { + github: 'MindaugasLaganeckas', + avatar: contributorsAvatars.MindaugasLaganeckas, + name: 'Mindaugas Laganeckas', + title: 'Developer' + }, + { + github: 'jgreywolf', + avatar: contributorsAvatars.jgreywolf, + name: 'Justin Greywolf', + title: 'Developer' + }, + { + github: 'IOrlandoni', + avatar: contributorsAvatars.IOrlandoni, + name: 'Nacho Orlandoni', + title: 'Developer' + }, +] -// export { teamMembers }; +const teamMembers = plainTeamMembers.map(tm => createLinks(tm)) +teamMembers.sort((a, b) => contributorNames.indexOf(a.github) - contributorNames.indexOf(b.github)) + +export { teamMembers } diff --git a/packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts b/packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts new file mode 100644 index 000000000..d071f527b --- /dev/null +++ b/packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts @@ -0,0 +1,40 @@ +import { join, resolve } from 'pathe' +import fs from 'fs-extra' +import { $fetch } from 'ohmyfetch' + +const docsDir = resolve(__dirname, '../..') +const pathContributors = resolve(docsDir, '.vitepress/contributor-names.json') +const dirAvatars = resolve(docsDir, 'public/user-avatars/') +const dirSponsors = resolve(docsDir, 'public/sponsors/') + +let contributors: string[] = [] + +async function download(url: string, fileName: string) { + if (fs.existsSync(fileName)) + return + // eslint-disable-next-line no-console + console.log('downloading', fileName) + try { + const image = await $fetch(url, { responseType: 'arrayBuffer' }) + await fs.writeFile(fileName, Buffer.from(image)) + } + catch { + } +} + +async function fetchAvatars() { + await fs.ensureDir(dirAvatars) + contributors = JSON.parse(await fs.readFile(pathContributors, { encoding: 'utf-8' })) + + await Promise.all(contributors.map(name => download(`https://github.com/${name}.png?size=100`, join(dirAvatars, `${name}.png`)))) +} + +// async function fetchSponsors() { +// await fs.ensureDir(dirSponsors) +// await download('https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg', join(dirSponsors, 'antfu.svg')) +// await download('https://cdn.jsdelivr.net/gh/patak-dev/static/sponsors.svg', join(dirSponsors, 'patak-dev.svg')) +// await download('https://cdn.jsdelivr.net/gh/sheremet-va/static/sponsors.svg', join(dirSponsors, 'sheremet-va.svg')) +// } + +fetchAvatars() +// fetchSponsors() diff --git a/packages/mermaid/src/docs/.vitepress/style/main.css b/packages/mermaid/src/docs/.vitepress/style/main.css new file mode 100644 index 000000000..a6a31f3da --- /dev/null +++ b/packages/mermaid/src/docs/.vitepress/style/main.css @@ -0,0 +1,77 @@ +.dark [img-light] { + display: none; +} + +html:not(.dark) [img-dark] { + display: none; +} + +/* Overrides */ + +.VPSocialLink { + transform: scale(0.9); +} + +.vp-doc th, +.vp-doc td { + padding: 6px 10px; + border: 1px solid #8882; +} + +/* h3 breaks SEO => replaced with h2 with the same size */ +.home-content h2 { + margin-top: 2rem; + font-size: 1.35rem; + border-bottom: none; + margin-bottom: 0; +} + +img.resizable-img { + width: unset; + height: unset; +} + +/* fix height ~ 2 lines of text: 3 or more cards per row */ +.VPTeamMembersItem.small .profile .data .affiliation { + min-height: 3rem; +} +.VPTeamMembersItem.small .profile .data .desc { + min-height: 3rem; +} + +/* fix height ~ 3 lines of text: 4 cards per row */ +@media (min-width: 1064px) and (max-width: 1143px) { + .VPTeamMembersItem.small .profile .data .affiliation { + min-height: 4rem; + } + .VPTeamMembersItem.small .profile .data .desc { + min-height: 4rem; + } +} +/* fix height ~ 3 lines of text: 3 cards per row */ +@media (min-width: 815px) and (max-width: 875px) { + .VPTeamMembersItem.small .profile .data .affiliation { + min-height: 4rem; + } + .VPTeamMembersItem.small .profile .data .desc { + min-height: 4rem; + } +} +/* fix height ~ 3 lines of text: 2 cards per row */ +@media (max-width: 612px) { + .VPTeamMembersItem.small .profile .data .affiliation { + min-height: 4rem; + } + .VPTeamMembersItem.small .profile .data .desc { + min-height: 4rem; + } +} +/* fix height: one card per row */ +@media (max-width: 568px) { + .VPTeamMembersItem.small .profile .data .affiliation { + min-height: unset; + } + .VPTeamMembersItem.small .profile .data .desc { + min-height: unset; + } +} diff --git a/packages/mermaid/src/docs/.vitepress/theme/index.ts b/packages/mermaid/src/docs/.vitepress/theme/index.ts index 273880d91..77cfea0af 100644 --- a/packages/mermaid/src/docs/.vitepress/theme/index.ts +++ b/packages/mermaid/src/docs/.vitepress/theme/index.ts @@ -2,13 +2,29 @@ import DefaultTheme from 'vitepress/theme'; import './custom.css'; // @ts-ignore import Mermaid from './Mermaid.vue'; +// @ts-ignore +import Contributors from '../components/Contributors.vue'; +// @ts-ignore +import HomePage from '../components/HomePage.vue' import { getRedirect } from './redirect'; +import { h } from 'vue' +import Theme from 'vitepress/theme' +import '../style/main.css' +import 'uno.css' + + export default { ...DefaultTheme, + Layout() { + return h(Theme.Layout, null, { + 'home-features-after': () => h(HomePage), + }) + }, enhanceApp({ app, router }) { // register global components app.component('Mermaid', Mermaid); + app.component('Contributors', Contributors); router.onBeforeRouteChange = (to) => { try { const newPath = getRedirect(to); @@ -17,7 +33,8 @@ export default { // router.go isn't loading the ID properly. window.location.href = `/${newPath}`; } - } catch (e) {} + } catch (e) { } }; }, -} as typeof DefaultTheme; +}; + diff --git a/packages/mermaid/src/docs/index.md b/packages/mermaid/src/docs/index.md index b0b38bd79..bb812bde9 100644 --- a/packages/mermaid/src/docs/index.md +++ b/packages/mermaid/src/docs/index.md @@ -1,5 +1,6 @@ --- layout: home +sidebar: false title: Mermaid titleTemplate: Diagramming and charting tool @@ -33,156 +34,3 @@ features: details: 2019 JavaScript Open Source Award winner for "The Most Exciting Use of Technology". link: https://osawards.com/javascript/2019 --- - - - -
-

Meet The Team

- -
- - diff --git a/packages/mermaid/src/docs/package.json b/packages/mermaid/src/docs/package.json new file mode 100644 index 000000000..2ee5e8fff --- /dev/null +++ b/packages/mermaid/src/docs/package.json @@ -0,0 +1,35 @@ +{ + "name": "docs", + "private": true, + "scripts": { + "dev": "vitepress --port 3333 --open", + "build": "nr prefetch && vitepress build", + "build-no-prefetch": "vitepress build", + "serve": "vitepress serve", + "preview-https": "pnpm run build && serve .vitepress/dist", + "preview-https-no-prefetch": "pnpm run build-no-prefetch && serve .vitepress/dist", + "prefetch": "esno .vitepress/scripts/fetch-avatars.ts" + }, + "dependencies": { + "@vueuse/core": "^9.10.0", + "jiti": "^1.16.1", + "vue": "latest" + }, + "devDependencies": { + "@iconify-json/carbon": "^1.1.13", + "@unocss/reset": "^0.48.3", + "@vite-pwa/vitepress": "^0.0.4", + "@vitejs/plugin-vue": "latest", + "esno": "^0.16.3", + "fast-glob": "^3.2.12", + "fs-extra": "^10.1.0", + "https-localhost": "^4.7.1", + "pathe": "^1.1.0", + "unocss": "^0.48.3", + "unplugin-vue-components": "^0.22.12", + "vite": "^4.1.4", + "vite-plugin-pwa": "^0.14.1", + "vitepress": "1.0.0-alpha.47", + "workbox-window": "^6.5.4" + } +} diff --git a/packages/mermaid/src/docs/vite.config.ts b/packages/mermaid/src/docs/vite.config.ts index 179e271fd..2ce575537 100644 --- a/packages/mermaid/src/docs/vite.config.ts +++ b/packages/mermaid/src/docs/vite.config.ts @@ -1,12 +1,43 @@ -import { defineConfig, type PluginOption, searchForWorkspaceRoot } from 'vite'; +import { defineConfig, searchForWorkspaceRoot } from 'vite'; +import type { PluginOption, Plugin } from 'vite'; import path from 'path'; import { SearchPlugin } from 'vitepress-plugin-search'; +import fs from 'fs' +import Components from 'unplugin-vue-components/vite' +import Unocss from 'unocss/vite' +import { presetAttributify, presetIcons, presetUno } from 'unocss' +import { resolve } from 'pathe' const virtualModuleId = 'virtual:mermaid-config'; const resolvedVirtualModuleId = '\0' + virtualModuleId; export default defineConfig({ + optimizeDeps: { + // vitepress is aliased with replacement `join(DIST_CLIENT_PATH, '/index')` + // This needs to be excluded from optimization + exclude: ['vitepress'], + }, plugins: [ + Components({ + include: [/\.vue/, /\.md/], + dirs: '.vitepress/components', + dts: '.vitepress/components.d.ts', + }) as Plugin, + Unocss({ + shortcuts: [ + ['btn', 'px-4 py-1 rounded inline-flex justify-center gap-2 text-white leading-30px children:mya !no-underline cursor-pointer disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50'], + ], + presets: [ + presetUno({ + dark: 'media', + }), + presetAttributify(), + presetIcons({ + scale: 1.2, + }), + ], + }) as unknown as Plugin, + IncludesPlugin(), SearchPlugin() as PluginOption, { // TODO: will be fixed in the next vitepress release. @@ -47,3 +78,22 @@ export default defineConfig({ }, }, }); + + +function IncludesPlugin(): Plugin { + return { + name: 'include-plugin', + enforce: 'pre', + transform(code: string, id: string): string | undefined { + let changed = false + code = code.replace(/\[@@include]\((.*?)\)/, (_: string, url: any): string => { + changed = true + const full = resolve(id, url) + return fs.readFileSync(full, 'utf-8') + }) + if (changed) { + return code + } + }, + } as Plugin +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c67866b61..f88782e01 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -328,7 +328,7 @@ importers: version: 1.0.0-alpha.46_tbpndr44ulefs3hehwpi2mkf2y vitepress-plugin-search: specifier: ^1.0.4-alpha.19 - version: 1.0.4-alpha.19_g67lr3vgasogkevpbew55lljzq + version: 1.0.4-alpha.19_izgnxokfetdl4ncj36u4rk6qgu packages/mermaid-example-diagram: dependencies: @@ -367,6 +367,122 @@ importers: specifier: ^4.0.0 version: 4.1.2 + packages/mermaid/src/docs: + dependencies: + '@vueuse/core': + specifier: ^9.10.0 + version: 9.12.0_vue@3.2.47 + jiti: + specifier: ^1.16.1 + version: 1.17.1 + vue: + specifier: latest + version: 3.2.47 + devDependencies: + '@iconify-json/carbon': + specifier: ^1.1.13 + version: 1.1.16 + '@unocss/reset': + specifier: ^0.48.3 + version: 0.48.5 + '@vite-pwa/vitepress': + specifier: ^0.0.4 + version: 0.0.4_vite-plugin-pwa@0.14.4 + '@vitejs/plugin-vue': + specifier: latest + version: 4.0.0_vite@4.1.4+vue@3.2.47 + esno: + specifier: ^0.16.3 + version: 0.16.3 + fast-glob: + specifier: ^3.2.12 + version: 3.2.12 + fs-extra: + specifier: ^10.1.0 + version: 10.1.0 + https-localhost: + specifier: ^4.7.1 + version: 4.7.1 + pathe: + specifier: ^1.1.0 + version: 1.1.0 + unocss: + specifier: ^0.48.3 + version: 0.48.5_rollup@2.79.1+vite@4.1.4 + unplugin-vue-components: + specifier: ^0.22.12 + version: 0.22.12_rollup@2.79.1+vue@3.2.47 + vite: + specifier: ^4.1.4 + version: 4.1.4 + vite-plugin-pwa: + specifier: ^0.14.1 + version: 0.14.4_qtdhuw7qkuvvectm2wxn5d44j4 + vitepress: + specifier: 1.0.0-alpha.47 + version: 1.0.0-alpha.47_tbpndr44ulefs3hehwpi2mkf2y + workbox-window: + specifier: ^6.5.4 + version: 6.5.4 + + packages/mermaid/src/vitepress: + dependencies: + '@vueuse/core': + specifier: ^9.10.0 + version: 9.13.0_vue@3.2.47 + jiti: + specifier: ^1.16.1 + version: 1.17.1 + vue: + specifier: latest + version: 3.2.47 + devDependencies: + '@iconify-json/carbon': + specifier: ^1.1.13 + version: 1.1.16 + '@unocss/reset': + specifier: ^0.48.3 + version: 0.48.5 + '@vite-pwa/vitepress': + specifier: ^0.0.4 + version: 0.0.4_vite-plugin-pwa@0.14.4 + '@vitejs/plugin-vue': + specifier: latest + version: 4.0.0_vite@4.1.4+vue@3.2.47 + esno: + specifier: ^0.16.3 + version: 0.16.3 + fast-glob: + specifier: ^3.2.12 + version: 3.2.12 + fs-extra: + specifier: ^10.1.0 + version: 10.1.0 + https-localhost: + specifier: ^4.7.1 + version: 4.7.1 + pathe: + specifier: ^1.1.0 + version: 1.1.0 + unocss: + specifier: ^0.48.3 + version: 0.48.5_rollup@2.79.1+vite@4.1.4 + unplugin-vue-components: + specifier: ^0.22.12 + version: 0.22.12_rollup@2.79.1+vue@3.2.47 + vite: + specifier: ^4.1.4 + version: 4.1.4 + vite-plugin-pwa: + specifier: ^0.14.1 + version: 0.14.4_qtdhuw7qkuvvectm2wxn5d44j4 + vitepress: + specifier: 1.0.0-alpha.47 + version: 1.0.0-alpha.47_tbpndr44ulefs3hehwpi2mkf2y + workbox-window: + specifier: ^6.5.4 + version: 6.5.4 + tests/webpack: dependencies: '@mermaid-js/mermaid-example-diagram': @@ -499,6 +615,41 @@ packages: '@algolia/requester-common': 4.14.2 dev: true + /@ampproject/remapping/2.2.0: + resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.1.1 + '@jridgewell/trace-mapping': 0.3.17 + dev: true + + /@antfu/install-pkg/0.1.1: + resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} + dependencies: + execa: 5.1.1 + find-up: 5.0.0 + dev: true + + /@antfu/utils/0.5.2: + resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==} + dev: true + + /@antfu/utils/0.7.2: + resolution: {integrity: sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==} + dev: true + + /@apideck/better-ajv-errors/0.3.6_ajv@8.11.0: + resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} + engines: {node: '>=10'} + peerDependencies: + ajv: '>=8' + dependencies: + ajv: 8.11.0 + json-schema: 0.4.0 + jsonpointer: 5.0.1 + leven: 3.1.0 + dev: true + /@applitools/core-base/1.1.7: resolution: {integrity: sha512-jxiRS7pQ9Q6deXeDa/mIACL/7S7ZxIOms49WSZGhUjb+1bfKEsH6+kLZKy5wUDHrUWRqPdILkLKWgQ0rLnKmFA==} engines: {node: '>=12.13.0'} @@ -871,18 +1022,23 @@ packages: '@babel/highlight': 7.18.6 dev: true + /@babel/compat-data/7.21.0: + resolution: {integrity: sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core/7.12.3: resolution: {integrity: sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.0 - '@babel/helper-module-transforms': 7.19.0 + '@babel/generator': 7.21.1 + '@babel/helper-module-transforms': 7.21.2 '@babel/helpers': 7.19.0 - '@babel/parser': 7.19.1 - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.1 - '@babel/types': 7.19.0 + '@babel/parser': 7.21.2 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 convert-source-map: 1.8.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -899,90 +1055,260 @@ packages: resolution: {integrity: sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.21.2 '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 dev: true + /@babel/generator/7.21.1: + resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure/7.18.6: + resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: + resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-explode-assignable-expression': 7.18.6 + '@babel/types': 7.21.2 + dev: true + + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.12.3: + resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.12.3 + '@babel/helper-validator-option': 7.21.0 + browserslist: 4.21.5 + lru-cache: 5.1.1 + semver: 6.3.0 + dev: true + + /@babel/helper-create-class-features-plugin/7.21.0_@babel+core@7.12.3: + resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-member-expression-to-functions': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-split-export-declaration': 7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-create-regexp-features-plugin/7.21.0_@babel+core@7.12.3: + resolution: {integrity: sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-annotate-as-pure': 7.18.6 + regexpu-core: 5.3.1 + dev: true + + /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.12.3: + resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-environment-visitor/7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} dev: true + /@babel/helper-explode-assignable-expression/7.18.6: + resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 + dev: true + /@babel/helper-function-name/7.19.0: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.18.10 - '@babel/types': 7.19.0 + '@babel/types': 7.21.2 + dev: true + + /@babel/helper-function-name/7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.21.2 dev: true /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.21.2 + dev: true + + /@babel/helper-member-expression-to-functions/7.21.0: + resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 dev: true /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.21.2 dev: true - /@babel/helper-module-transforms/7.19.0: - resolution: {integrity: sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==} + /@babel/helper-module-transforms/7.21.2: + resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.18.6 + '@babel/helper-simple-access': 7.20.2 '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.1 - '@babel/types': 7.19.0 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 transitivePeerDependencies: - supports-color dev: true + /@babel/helper-optimise-call-expression/7.18.6: + resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 + dev: true + /@babel/helper-plugin-utils/7.19.0: resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-simple-access/7.18.6: - resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} + /@babel/helper-plugin-utils/7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.12.3: + resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-wrap-function': 7.20.5 + '@babel/types': 7.21.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-replace-supers/7.20.7: + resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-member-expression-to-functions': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-simple-access/7.20.2: + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers/7.20.0: + resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 dev: true /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.21.2 dev: true - /@babel/helper-string-parser/7.18.10: - resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} + /@babel/helper-string-parser/7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-validator-identifier/7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option/7.21.0: + resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-wrap-function/7.20.5: + resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.21.0 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 + transitivePeerDependencies: + - supports-color dev: true /@babel/helpers/7.19.0: resolution: {integrity: sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.1 - '@babel/types': 7.19.0 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 transitivePeerDependencies: - supports-color dev: true @@ -1001,7 +1327,220 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.21.2 + dev: true + + /@babel/parser/7.21.2: + resolution: {integrity: sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.21.2 + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.20.7_@babel+core@7.12.3: + resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.12.3 + dev: true + + /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.12.3: + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.12.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-class-static-block/7.21.0_@babel+core@7.12.3: + resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.12.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.3 + dev: true + + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.12.3: + resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.3 + dev: true + + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.3 + dev: true + + /@babel/plugin-proposal-logical-assignment-operators/7.20.7_@babel+core@7.12.3: + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.3 + dev: true + + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.3 + dev: true + + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.3 + dev: true + + /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.12.3: + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.12.3 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.12.3 + dev: true + + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.3 + dev: true + + /@babel/plugin-proposal-optional-chaining/7.21.0_@babel+core@7.12.3: + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.3 + dev: true + + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-private-property-in-object/7.21.0_@babel+core@7.12.3: + resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.12.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.12.3: @@ -1010,7 +1549,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.12.3: @@ -1028,7 +1567,45 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.12.3: + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.12.3: + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.12.3: + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.12.3: + resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.12.3: @@ -1046,7 +1623,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.12.3: @@ -1065,7 +1642,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.12.3: @@ -1074,7 +1651,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.12.3: @@ -1083,7 +1660,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.3: @@ -1092,7 +1669,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.12.3: @@ -1101,7 +1678,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.12.3: @@ -1110,7 +1687,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.12.3: + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.12.3: @@ -1120,7 +1707,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.12.3: @@ -1133,13 +1720,493 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-arrow-functions/7.20.7_@babel+core@7.12.3: + resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.12.3: + resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.12.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-block-scoping/7.21.0_@babel+core@7.12.3: + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-classes/7.21.0_@babel+core@7.12.3: + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.3 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.12.3: + resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/template': 7.20.7 + dev: true + + /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.12.3: + resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.12.3: + resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-for-of/7.21.0_@babel+core@7.12.3: + resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.12.3: + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.3 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.12.3: + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.12.3: + resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs/7.21.2_@babel+core@7.12.3: + resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.12.3: + resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-identifier': 7.19.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.12.3: + resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.12.3: + resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.12.3: + resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + regenerator-transform: 0.15.1 + dev: true + + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-spread/7.20.7_@babel+core@7.12.3: + resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + dev: true + + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.12.3: + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.12.3: + resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.12.3: + resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.12.3: + resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/preset-env/7.20.2_@babel+core@7.12.3: + resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.12.3 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7_@babel+core@7.12.3 + '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.12.3 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-proposal-class-static-block': 7.21.0_@babel+core@7.12.3 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.12.3 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7_@babel+core@7.12.3 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.12.3 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.12.3 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-proposal-private-property-in-object': 7.21.0_@babel+core@7.12.3 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.3 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.12.3 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.12.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.12.3 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.3 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.3 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.12.3 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.12.3 + '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.12.3 + '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.12.3 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.12.3 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.12.3 + '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.12.3 + '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.12.3 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.12.3 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-transform-for-of': 7.21.0_@babel+core@7.12.3 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.12.3 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.12.3 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.12.3 + '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.12.3 + '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.12.3 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.12.3 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.12.3 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.12.3 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.12.3 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.12.3 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.12.3 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.12.3 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.12.3 + '@babel/preset-modules': 0.1.5_@babel+core@7.12.3 + '@babel/types': 7.21.2 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.12.3 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.12.3 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.12.3 + core-js-compat: 3.28.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-modules/0.1.5_@babel+core@7.12.3: + resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.12.3 + '@babel/types': 7.21.2 + esutils: 2.0.3 + dev: true + + /@babel/regjsgen/0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: true + + /@babel/runtime/7.21.0: + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + dev: true + /@babel/template/7.18.10: resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.19.1 - '@babel/types': 7.19.0 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 + dev: true + + /@babel/template/7.20.7: + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 dev: true /@babel/traverse/7.19.1: @@ -1152,22 +2219,39 @@ packages: '@babel/helper-function-name': 7.19.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.19.1 - '@babel/types': 7.19.0 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.19.0: - resolution: {integrity: sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==} + /@babel/traverse/7.21.2: + resolution: {integrity: sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.18.10 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.21.1 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types/7.21.2: + resolution: {integrity: sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - dev: true /@bcoe/v8-coverage/0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -1751,6 +2835,27 @@ packages: jsdoc-type-pratt-parser: 3.1.0 dev: true + /@esbuild-kit/cjs-loader/2.4.2: + resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} + dependencies: + '@esbuild-kit/core-utils': 3.1.0 + get-tsconfig: 4.4.0 + dev: true + + /@esbuild-kit/core-utils/3.1.0: + resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} + dependencies: + esbuild: 0.17.10 + source-map-support: 0.5.21 + dev: true + + /@esbuild-kit/esm-loader/2.5.5: + resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} + dependencies: + '@esbuild-kit/core-utils': 3.1.0 + get-tsconfig: 4.4.0 + dev: true + /@esbuild/android-arm/0.16.17: resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} engines: {node: '>=12'} @@ -1769,6 +2874,15 @@ packages: dev: true optional: true + /@esbuild/android-arm/0.17.10: + resolution: {integrity: sha512-7YEBfZ5lSem9Tqpsz+tjbdsEshlO9j/REJrfv4DXgKTt1+/MHqGwbtlyxQuaSlMeUZLxUKBaX8wdzlTfHkmnLw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64/0.16.17: resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} engines: {node: '>=12'} @@ -1787,6 +2901,15 @@ packages: dev: true optional: true + /@esbuild/android-arm64/0.17.10: + resolution: {integrity: sha512-ht1P9CmvrPF5yKDtyC+z43RczVs4rrHpRqrmIuoSvSdn44Fs1n6DGlpZKdK6rM83pFLbVaSUwle8IN+TPmkv7g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64/0.16.17: resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} engines: {node: '>=12'} @@ -1805,6 +2928,15 @@ packages: dev: true optional: true + /@esbuild/android-x64/0.17.10: + resolution: {integrity: sha512-CYzrm+hTiY5QICji64aJ/xKdN70IK8XZ6iiyq0tZkd3tfnwwSWTYH1t3m6zyaaBxkuj40kxgMyj1km/NqdjQZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64/0.16.17: resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} engines: {node: '>=12'} @@ -1823,6 +2955,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64/0.17.10: + resolution: {integrity: sha512-3HaGIowI+nMZlopqyW6+jxYr01KvNaLB5znXfbyyjuo4lE0VZfvFGcguIJapQeQMS4cX/NEispwOekJt3gr5Dg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64/0.16.17: resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} engines: {node: '>=12'} @@ -1841,6 +2982,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64/0.17.10: + resolution: {integrity: sha512-J4MJzGchuCRG5n+B4EHpAMoJmBeAE1L3wGYDIN5oWNqX0tEr7VKOzw0ymSwpoeSpdCa030lagGUfnfhS7OvzrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64/0.16.17: resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} engines: {node: '>=12'} @@ -1859,6 +3009,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64/0.17.10: + resolution: {integrity: sha512-ZkX40Z7qCbugeK4U5/gbzna/UQkM9d9LNV+Fro8r7HA7sRof5Rwxc46SsqeMvB5ZaR0b1/ITQ/8Y1NmV2F0fXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64/0.16.17: resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} engines: {node: '>=12'} @@ -1877,6 +3036,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64/0.17.10: + resolution: {integrity: sha512-0m0YX1IWSLG9hWh7tZa3kdAugFbZFFx9XrvfpaCMMvrswSTvUZypp0NFKriUurHpBA3xsHVE9Qb/0u2Bbi/otg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm/0.16.17: resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} engines: {node: '>=12'} @@ -1895,6 +3063,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm/0.17.10: + resolution: {integrity: sha512-whRdrrl0X+9D6o5f0sTZtDM9s86Xt4wk1bf7ltx6iQqrIIOH+sre1yjpcCdrVXntQPCNw/G+XqsD4HuxeS+2QA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64/0.16.17: resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} engines: {node: '>=12'} @@ -1913,6 +3090,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64/0.17.10: + resolution: {integrity: sha512-g1EZJR1/c+MmCgVwpdZdKi4QAJ8DCLP5uTgLWSAVd9wlqk9GMscaNMEViG3aE1wS+cNMzXXgdWiW/VX4J+5nTA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32/0.16.17: resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} engines: {node: '>=12'} @@ -1931,6 +3117,15 @@ packages: dev: true optional: true + /@esbuild/linux-ia32/0.17.10: + resolution: {integrity: sha512-1vKYCjfv/bEwxngHERp7huYfJ4jJzldfxyfaF7hc3216xiDA62xbXJfRlradiMhGZbdNLj2WA1YwYFzs9IWNPw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64/0.16.17: resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} engines: {node: '>=12'} @@ -1949,6 +3144,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64/0.17.10: + resolution: {integrity: sha512-mvwAr75q3Fgc/qz3K6sya3gBmJIYZCgcJ0s7XshpoqIAIBszzfXsqhpRrRdVFAyV1G9VUjj7VopL2HnAS8aHFA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el/0.16.17: resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} engines: {node: '>=12'} @@ -1967,6 +3171,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el/0.17.10: + resolution: {integrity: sha512-XilKPgM2u1zR1YuvCsFQWl9Fc35BqSqktooumOY2zj7CSn5czJn279j9TE1JEqSqz88izJo7yE4x3LSf7oxHzg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64/0.16.17: resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} engines: {node: '>=12'} @@ -1985,6 +3198,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64/0.17.10: + resolution: {integrity: sha512-kM4Rmh9l670SwjlGkIe7pYWezk8uxKHX4Lnn5jBZYBNlWpKMBCVfpAgAJqp5doLobhzF3l64VZVrmGeZ8+uKmQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64/0.16.17: resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} engines: {node: '>=12'} @@ -2003,6 +3225,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64/0.17.10: + resolution: {integrity: sha512-r1m9ZMNJBtOvYYGQVXKy+WvWd0BPvSxMsVq8Hp4GzdMBQvfZRvRr5TtX/1RdN6Va8JMVQGpxqde3O+e8+khNJQ==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x/0.16.17: resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} engines: {node: '>=12'} @@ -2021,6 +3252,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x/0.17.10: + resolution: {integrity: sha512-LsY7QvOLPw9WRJ+fU5pNB3qrSfA00u32ND5JVDrn/xG5hIQo3kvTxSlWFRP0NJ0+n6HmhPGG0Q4jtQsb6PFoyg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64/0.16.17: resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} engines: {node: '>=12'} @@ -2039,6 +3279,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64/0.17.10: + resolution: {integrity: sha512-zJUfJLebCYzBdIz/Z9vqwFjIA7iSlLCFvVi7glMgnu2MK7XYigwsonXshy9wP9S7szF+nmwrelNaP3WGanstEg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64/0.16.17: resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} engines: {node: '>=12'} @@ -2057,6 +3306,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64/0.17.10: + resolution: {integrity: sha512-lOMkailn4Ok9Vbp/q7uJfgicpDTbZFlXlnKT2DqC8uBijmm5oGtXAJy2ZZVo5hX7IOVXikV9LpCMj2U8cTguWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64/0.16.17: resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} engines: {node: '>=12'} @@ -2075,6 +3333,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64/0.17.10: + resolution: {integrity: sha512-/VE0Kx6y7eekqZ+ZLU4AjMlB80ov9tEz4H067Y0STwnGOYL8CsNg4J+cCmBznk1tMpxMoUOf0AbWlb1d2Pkbig==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64/0.16.17: resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} engines: {node: '>=12'} @@ -2093,6 +3360,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64/0.17.10: + resolution: {integrity: sha512-ERNO0838OUm8HfUjjsEs71cLjLMu/xt6bhOlxcJ0/1MG3hNqCmbWaS+w/8nFLa0DDjbwZQuGKVtCUJliLmbVgg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64/0.16.17: resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} engines: {node: '>=12'} @@ -2111,6 +3387,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64/0.17.10: + resolution: {integrity: sha512-fXv+L+Bw2AeK+XJHwDAQ9m3NRlNemG6Z6ijLwJAAVdu4cyoFbBWbEtyZzDeL+rpG2lWI51cXeMt70HA8g2MqIg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32/0.16.17: resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} engines: {node: '>=12'} @@ -2129,6 +3414,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32/0.17.10: + resolution: {integrity: sha512-3s+HADrOdCdGOi5lnh5DMQEzgbsFsd4w57L/eLKKjMnN0CN4AIEP0DCP3F3N14xnxh3ruNc32A0Na9zYe1Z/AQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64/0.16.17: resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} engines: {node: '>=12'} @@ -2147,6 +3441,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64/0.17.10: + resolution: {integrity: sha512-oP+zFUjYNaMNmjTwlFtWep85hvwUu19cZklB3QsBOcZSs6y7hmH4LNCJ7075bsqzYaNvZFXJlAVaQ2ApITDXtw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint/eslintrc/1.4.1: resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2194,6 +3497,29 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true + /@iconify-json/carbon/1.1.16: + resolution: {integrity: sha512-AD8bcnRSGA0WfcGEass2FbA0sagrUzrpFx5WchuDy3uf7yKBWumdypdQK121DH321fQDl5+zZQ26T6gC9knwUQ==} + dependencies: + '@iconify/types': 2.0.0 + dev: true + + /@iconify/types/2.0.0: + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + dev: true + + /@iconify/utils/2.1.4: + resolution: {integrity: sha512-7vzsYIvxv5Hng0MNEtSSnyMBD/+zqnORqmKiYsSgpMBGSz1r93URgBZHPYCZ1/gpoaVstYW4/SVLGCMJBNMCLQ==} + dependencies: + '@antfu/install-pkg': 0.1.1 + '@antfu/utils': 0.7.2 + '@iconify/types': 2.0.0 + debug: 4.3.4 + kolorist: 1.7.0 + local-pkg: 0.4.3 + transitivePeerDependencies: + - supports-color + dev: true + /@istanbuljs/load-nyc-config/1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -2423,13 +3749,21 @@ packages: chalk: 4.1.2 dev: true + /@jridgewell/gen-mapping/0.1.1: + resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + /@jridgewell/gen-mapping/0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.15 + '@jridgewell/trace-mapping': 0.3.17 dev: true /@jridgewell/resolve-uri/3.1.0: @@ -2446,7 +3780,7 @@ packages: resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} dependencies: '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.15 + '@jridgewell/trace-mapping': 0.3.17 dev: true /@jridgewell/sourcemap-codec/1.4.14: @@ -2460,6 +3794,13 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true + /@jridgewell/trace-mapping/0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + /@jridgewell/trace-mapping/0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: @@ -2509,6 +3850,104 @@ packages: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true + /@rollup/plugin-babel/5.3.1_dckrvusq2p5l2rafxmdzsxgali: + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-module-imports': 7.18.6 + '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + rollup: 2.79.1 + dev: true + + /@rollup/plugin-node-resolve/11.2.1_rollup@2.79.1: + resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@types/resolve': 1.17.1 + builtin-modules: 3.3.0 + deepmerge: 4.2.2 + is-module: 1.0.0 + resolve: 1.22.1 + rollup: 2.79.1 + dev: true + + /@rollup/plugin-replace/2.4.2_rollup@2.79.1: + resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + magic-string: 0.25.9 + rollup: 2.79.1 + dev: true + + /@rollup/plugin-replace/5.0.2_rollup@3.15.0: + resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2_rollup@3.15.0 + magic-string: 0.27.0 + rollup: 3.15.0 + dev: true + + /@rollup/pluginutils/3.1.0_rollup@2.79.1: + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.79.1 + dev: true + + /@rollup/pluginutils/5.0.2_rollup@2.79.1: + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.0 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 2.79.1 + dev: true + + /@rollup/pluginutils/5.0.2_rollup@3.15.0: + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.0 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 3.15.0 + dev: true + /@sideway/address/4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: @@ -2548,6 +3987,15 @@ packages: '@sinonjs/commons': 1.8.3 dev: true + /@surma/rollup-plugin-off-main-thread/2.2.3: + resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} + dependencies: + ejs: 3.1.8 + json5: 2.2.1 + magic-string: 0.25.9 + string.prototype.matchall: 4.0.8 + dev: true + /@szmarczak/http-timer/4.0.6: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} @@ -2584,8 +4032,8 @@ packages: /@types/babel__core/7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: - '@babel/parser': 7.19.1 - '@babel/types': 7.19.0 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.2 @@ -2594,20 +4042,20 @@ packages: /@types/babel__generator/7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.21.2 dev: true /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.19.1 - '@babel/types': 7.19.0 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 dev: true /@types/babel__traverse/7.18.2: resolution: {integrity: sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.21.2 dev: true /@types/body-parser/1.19.2: @@ -2874,6 +4322,10 @@ packages: '@types/json-schema': 7.0.11 dev: true + /@types/estree/0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + dev: true + /@types/estree/0.0.51: resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} dev: true @@ -3066,6 +4518,12 @@ packages: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true + /@types/resolve/1.17.1: + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + dependencies: + '@types/node': 18.11.9 + dev: true + /@types/responselike/1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: @@ -3140,7 +4598,6 @@ packages: /@types/web-bluetooth/0.0.16: resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} - dev: true /@types/ws/8.5.3: resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} @@ -3465,6 +4922,175 @@ packages: eslint-visitor-keys: 3.3.0 dev: true + /@unocss/astro/0.48.5_rollup@2.79.1+vite@4.1.4: + resolution: {integrity: sha512-3OkMAceJwfa+mUfPEAATRNCXwpI4aLl+upXVsoHDN013pM7st4oC7ZgYHvb8EajuSinng9ffMcPfgrIJK9N5bQ==} + dependencies: + '@unocss/core': 0.48.5 + '@unocss/reset': 0.48.5 + '@unocss/vite': 0.48.5_rollup@2.79.1+vite@4.1.4 + transitivePeerDependencies: + - rollup + - vite + dev: true + + /@unocss/cli/0.48.5_rollup@2.79.1: + resolution: {integrity: sha512-xFz5iPc9t3sDDZyPq/1Sy83tpMUFSSPm7FUCVucaJ9LmROFii5yy1L+aILecUMRVfx3VN5TpJ1eqNB3Yqx63Yg==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@ampproject/remapping': 2.2.0 + '@rollup/pluginutils': 5.0.2_rollup@2.79.1 + '@unocss/config': 0.48.5 + '@unocss/core': 0.48.5 + '@unocss/preset-uno': 0.48.5 + cac: 6.7.14 + chokidar: 3.5.3 + colorette: 2.0.19 + consola: 2.15.3 + fast-glob: 3.2.12 + magic-string: 0.27.0 + pathe: 1.1.0 + perfect-debounce: 0.1.3 + transitivePeerDependencies: + - rollup + dev: true + + /@unocss/config/0.48.5: + resolution: {integrity: sha512-b1HThifrJLUTYDxeaoL02blk/IMCtbode5pv57mVpBY7v29XICkcfe2PW27BQHIsEmI6LdFICjAB0Xn9kwrRyQ==} + engines: {node: '>=14'} + dependencies: + '@unocss/core': 0.48.5 + unconfig: 0.3.7 + dev: true + + /@unocss/core/0.48.5: + resolution: {integrity: sha512-goidlxqDEW14yYzLIqyUsoVPvrq3BuxvzY+87tulfHtiHWXd7fITSjHu80Bn0J6LZm1bVn2/D5nfE7ZLU/uW8g==} + dev: true + + /@unocss/inspector/0.48.5: + resolution: {integrity: sha512-zEIAC2nELJNyW9S6Rsg9EAzYlFP+bNBuz53OSQQyikn39vQKFHa0bfsfSvJl/JHZIL7U6H4WqeSppIuiW//WdQ==} + dependencies: + gzip-size: 6.0.0 + sirv: 2.0.2 + dev: true + + /@unocss/preset-attributify/0.48.5: + resolution: {integrity: sha512-nxYChw4vpppKt1nIFItsFkopdH7gTY19ZE4ieMen3cP27YWC6BSNg5L4QksaLlABPCIqAYHmpH3e41FGZonM+g==} + dependencies: + '@unocss/core': 0.48.5 + dev: true + + /@unocss/preset-icons/0.48.5: + resolution: {integrity: sha512-pXgerhZfSZX2YNXW+1S6UtJEDgAGEz7u5Popx8IBoVmUr8xnFN1+AYZOTNH0KATx4R7s9NyRIr0sxD4DMq8bcA==} + dependencies: + '@iconify/utils': 2.1.4 + '@unocss/core': 0.48.5 + ohmyfetch: 0.4.21 + transitivePeerDependencies: + - supports-color + dev: true + + /@unocss/preset-mini/0.48.5: + resolution: {integrity: sha512-jMKUCkbKsgLkEAeaB7qV/ExZ1W9yAnRQ/PwrnGnxbIIAxDIylfPDBL2bR2w2TucHblpqCf6Twb09r1F6qfy3yQ==} + dependencies: + '@unocss/core': 0.48.5 + dev: true + + /@unocss/preset-tagify/0.48.5: + resolution: {integrity: sha512-ZWwDYBZ/aeN8LaH1AGKyXVye3PNXgT2yzL8fJmWf0VCZtT02cH4AE9GLGeKISOvl47J16oDuE6jd3nd1tBw+vg==} + dependencies: + '@unocss/core': 0.48.5 + dev: true + + /@unocss/preset-typography/0.48.5: + resolution: {integrity: sha512-KYVrbOAC2c1frV3QrebQdxNTttZY3ImfuZfhxPhywickNIEHc6Hn5UugZJ5XrfkiMD4aXQ0vDeDUFlXtMPn9ug==} + dependencies: + '@unocss/core': 0.48.5 + dev: true + + /@unocss/preset-uno/0.48.5: + resolution: {integrity: sha512-D/vVO1fgFll5IpoE92BVhKFkaejJAhux0DVAtRC/VUwOR0NE3CmRlTct+mBRO938aeuiELxFysuO0hNMDpTmeA==} + dependencies: + '@unocss/core': 0.48.5 + '@unocss/preset-mini': 0.48.5 + '@unocss/preset-wind': 0.48.5 + dev: true + + /@unocss/preset-web-fonts/0.48.5: + resolution: {integrity: sha512-cX2xRQzzuaMD5+f5ea9fjYfnjIGJqERP5Jpo2fiReNEhXFWYRAkFgK5Wcgzx2TLP47NvM4oWJR+pKBoaCJzsaQ==} + dependencies: + '@unocss/core': 0.48.5 + ohmyfetch: 0.4.21 + dev: true + + /@unocss/preset-wind/0.48.5: + resolution: {integrity: sha512-uSlViwl+1mJeClxJcwE6QA3SIOnOpL+Nes8VeO4NQADhn8ywhgjouAi2fy/gxQAcGtAV5PODn2jrG2M80+Ghkw==} + dependencies: + '@unocss/core': 0.48.5 + '@unocss/preset-mini': 0.48.5 + dev: true + + /@unocss/reset/0.48.5: + resolution: {integrity: sha512-+JJT3Btj1oNX4XwKBDPRUYre3NYBNmi0PsC3tqkHN2VphJG0iZl91XNfsveLz8pVpDJPUDdLH4xsqh52WmxU1g==} + dev: true + + /@unocss/scope/0.48.5: + resolution: {integrity: sha512-2xPJWUyDUnJkn37n6+a0t4vKb8l07UeGTHM4jxOvKdML4Gi5tsxulyj+lBPP+wLWu9fNiFe7HlEejbh/J13QVw==} + dev: true + + /@unocss/transformer-attributify-jsx/0.48.5: + resolution: {integrity: sha512-GRV3aNXgQ9YBXblwGV4PgVjUZExsAyGViN2LVl1qAUlnN3IgTjBFGGWo9t/I90LEk3Sy1TiOj05iZ9vB0RPq8g==} + dependencies: + '@unocss/core': 0.48.5 + dev: true + + /@unocss/transformer-compile-class/0.48.5: + resolution: {integrity: sha512-ZMZ0Z8tJ6TFHyoUPAYY3FG0euJ4OmGlcMVDKfbDPOH0Gxxj2VJ+5Xn57VTy1GjfAKxk4MLnf08THwcCuh0BrZw==} + dependencies: + '@unocss/core': 0.48.5 + dev: true + + /@unocss/transformer-directives/0.48.5: + resolution: {integrity: sha512-pl8SekJvkXEBzUbXDaYexeOpT3UWzS/YS4nVzN6gEisLGSpbD5a/yfI3iAA3GVWCH8HrmzUl0FpL3cY5yf44rg==} + dependencies: + '@unocss/core': 0.48.5 + css-tree: 2.3.1 + dev: true + + /@unocss/transformer-variant-group/0.48.5: + resolution: {integrity: sha512-j7P/gpW1WzlDRBey4GxHsDbLQt8a8jrOD0PbRwJJCIBg6XrV/gsojgbwGQc/NMEXuwFPBMdLWM52dDYg2+NxYw==} + dependencies: + '@unocss/core': 0.48.5 + dev: true + + /@unocss/vite/0.48.5_rollup@2.79.1+vite@4.1.4: + resolution: {integrity: sha512-eUZSM9vxTdUe70/aDpxGODjLJtrAa80pmipqgFaZ0B++LsglZMiSZD38/Bw7w5FTLv78ViRgTJ+rGh/SOe+rdw==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 + dependencies: + '@ampproject/remapping': 2.2.0 + '@rollup/pluginutils': 5.0.2_rollup@2.79.1 + '@unocss/config': 0.48.5 + '@unocss/core': 0.48.5 + '@unocss/inspector': 0.48.5 + '@unocss/scope': 0.48.5 + '@unocss/transformer-directives': 0.48.5 + chokidar: 3.5.3 + fast-glob: 3.2.12 + magic-string: 0.27.0 + vite: 4.1.4 + transitivePeerDependencies: + - rollup + dev: true + + /@vite-pwa/vitepress/0.0.4_vite-plugin-pwa@0.14.4: + resolution: {integrity: sha512-+uMmxOe8G5X+9zbeP7htVINv0MVn8tuaKEE96jHXmV4dRb5HJX9U8WbgSJ4QD8ezoeYABjPjagGWOV3l0DMrtw==} + peerDependencies: + vite-plugin-pwa: ^0.14.0 + dependencies: + vite-plugin-pwa: 0.14.4_qtdhuw7qkuvvectm2wxn5d44j4 + dev: true + /@vitejs/plugin-vue/4.0.0_vite@4.1.1+vue@3.2.45: resolution: {integrity: sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==} engines: {node: ^14.18.0 || >=16.0.0} @@ -3476,6 +5102,17 @@ packages: vue: 3.2.45 dev: true + /@vitejs/plugin-vue/4.0.0_vite@4.1.4+vue@3.2.47: + resolution: {integrity: sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 + vue: ^3.2.25 + dependencies: + vite: 4.1.4 + vue: 3.2.47 + dev: true + /@vitest/coverage-c8/0.28.4_vun5xzxu3tkrssf3erdbijyyki: resolution: {integrity: sha512-btelLBxaWhHnywXRQxDlrvPhGdnuIaD3XulsxcZRIcnpLPbFu39dNTT0IYu2QWP2ZZrV0AmNtdLIfD4c77zMAg==} dependencies: @@ -3574,12 +5211,20 @@ packages: /@vue/compiler-core/3.2.45: resolution: {integrity: sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==} dependencies: - '@babel/parser': 7.19.1 + '@babel/parser': 7.21.2 '@vue/shared': 3.2.45 estree-walker: 2.0.2 source-map: 0.6.1 dev: true + /@vue/compiler-core/3.2.47: + resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} + dependencies: + '@babel/parser': 7.21.2 + '@vue/shared': 3.2.47 + estree-walker: 2.0.2 + source-map: 0.6.1 + /@vue/compiler-dom/3.2.45: resolution: {integrity: sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==} dependencies: @@ -3587,6 +5232,12 @@ packages: '@vue/shared': 3.2.45 dev: true + /@vue/compiler-dom/3.2.47: + resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==} + dependencies: + '@vue/compiler-core': 3.2.47 + '@vue/shared': 3.2.47 + /@vue/compiler-sfc/3.2.45: resolution: {integrity: sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==} dependencies: @@ -3602,6 +5253,20 @@ packages: source-map: 0.6.1 dev: true + /@vue/compiler-sfc/3.2.47: + resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} + dependencies: + '@babel/parser': 7.21.2 + '@vue/compiler-core': 3.2.47 + '@vue/compiler-dom': 3.2.47 + '@vue/compiler-ssr': 3.2.47 + '@vue/reactivity-transform': 3.2.47 + '@vue/shared': 3.2.47 + estree-walker: 2.0.2 + magic-string: 0.25.9 + postcss: 8.4.21 + source-map: 0.6.1 + /@vue/compiler-ssr/3.2.45: resolution: {integrity: sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==} dependencies: @@ -3609,6 +5274,12 @@ packages: '@vue/shared': 3.2.45 dev: true + /@vue/compiler-ssr/3.2.47: + resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==} + dependencies: + '@vue/compiler-dom': 3.2.47 + '@vue/shared': 3.2.47 + /@vue/devtools-api/6.5.0: resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} dev: true @@ -3616,19 +5287,33 @@ packages: /@vue/reactivity-transform/3.2.45: resolution: {integrity: sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==} dependencies: - '@babel/parser': 7.19.1 + '@babel/parser': 7.21.2 '@vue/compiler-core': 3.2.45 '@vue/shared': 3.2.45 estree-walker: 2.0.2 magic-string: 0.25.9 dev: true + /@vue/reactivity-transform/3.2.47: + resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} + dependencies: + '@babel/parser': 7.21.2 + '@vue/compiler-core': 3.2.47 + '@vue/shared': 3.2.47 + estree-walker: 2.0.2 + magic-string: 0.25.9 + /@vue/reactivity/3.2.45: resolution: {integrity: sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==} dependencies: '@vue/shared': 3.2.45 dev: true + /@vue/reactivity/3.2.47: + resolution: {integrity: sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==} + dependencies: + '@vue/shared': 3.2.47 + /@vue/runtime-core/3.2.45: resolution: {integrity: sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==} dependencies: @@ -3636,6 +5321,12 @@ packages: '@vue/shared': 3.2.45 dev: true + /@vue/runtime-core/3.2.47: + resolution: {integrity: sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==} + dependencies: + '@vue/reactivity': 3.2.47 + '@vue/shared': 3.2.47 + /@vue/runtime-dom/3.2.45: resolution: {integrity: sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==} dependencies: @@ -3644,6 +5335,13 @@ packages: csstype: 2.6.21 dev: true + /@vue/runtime-dom/3.2.47: + resolution: {integrity: sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==} + dependencies: + '@vue/runtime-core': 3.2.47 + '@vue/shared': 3.2.47 + csstype: 2.6.21 + /@vue/server-renderer/3.2.45_vue@3.2.45: resolution: {integrity: sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==} peerDependencies: @@ -3654,10 +5352,22 @@ packages: vue: 3.2.45 dev: true + /@vue/server-renderer/3.2.47_vue@3.2.47: + resolution: {integrity: sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==} + peerDependencies: + vue: 3.2.47 + dependencies: + '@vue/compiler-ssr': 3.2.47 + '@vue/shared': 3.2.47 + vue: 3.2.47 + /@vue/shared/3.2.45: resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==} dev: true + /@vue/shared/3.2.47: + resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} + /@vueuse/core/9.12.0_vue@3.2.45: resolution: {integrity: sha512-h/Di8Bvf6xRcvS/PvUVheiMYYz3U0tH3X25YxONSaAUBa841ayMwxkuzx/DGUMCW/wHWzD8tRy2zYmOC36r4sg==} dependencies: @@ -3670,9 +5380,34 @@ packages: - vue dev: true + /@vueuse/core/9.12.0_vue@3.2.47: + resolution: {integrity: sha512-h/Di8Bvf6xRcvS/PvUVheiMYYz3U0tH3X25YxONSaAUBa841ayMwxkuzx/DGUMCW/wHWzD8tRy2zYmOC36r4sg==} + dependencies: + '@types/web-bluetooth': 0.0.16 + '@vueuse/metadata': 9.12.0 + '@vueuse/shared': 9.12.0_vue@3.2.47 + vue-demi: 0.13.11_vue@3.2.47 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@vueuse/core/9.13.0_vue@3.2.47: + resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} + dependencies: + '@types/web-bluetooth': 0.0.16 + '@vueuse/metadata': 9.13.0 + '@vueuse/shared': 9.13.0_vue@3.2.47 + vue-demi: 0.13.11_vue@3.2.47 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + /@vueuse/metadata/9.12.0: resolution: {integrity: sha512-9oJ9MM9lFLlmvxXUqsR1wLt1uF7EVbP5iYaHJYqk+G2PbMjY6EXvZeTjbdO89HgoF5cI6z49o2zT/jD9SVoNpQ==} - dev: true + + /@vueuse/metadata/9.13.0: + resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} /@vueuse/shared/9.12.0_vue@3.2.45: resolution: {integrity: sha512-TWuJLACQ0BVithVTRbex4Wf1a1VaRuSpVeyEd4vMUWl54PzlE0ciFUshKCXnlLuD0lxIaLK4Ypj3NXYzZh4+SQ==} @@ -3683,6 +5418,23 @@ packages: - vue dev: true + /@vueuse/shared/9.12.0_vue@3.2.47: + resolution: {integrity: sha512-TWuJLACQ0BVithVTRbex4Wf1a1VaRuSpVeyEd4vMUWl54PzlE0ciFUshKCXnlLuD0lxIaLK4Ypj3NXYzZh4+SQ==} + dependencies: + vue-demi: 0.13.11_vue@3.2.47 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@vueuse/shared/9.13.0_vue@3.2.47: + resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} + dependencies: + vue-demi: 0.13.11_vue@3.2.47 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + /@wdio/config/7.16.11: resolution: {integrity: sha512-sIk9FINQfXohuDONb8RA1uv+29XvUw6OBHfaaU7/c9gfKiOWiRczdfiLqfySZRwYgEgNhzCw5vHIogTry1h+xQ==} engines: {node: '>=12.0.0'} @@ -3965,6 +5717,12 @@ packages: hasBin: true dev: true + /acorn/8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /agent-base/6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -4142,6 +5900,10 @@ packages: execa: 1.0.0 dev: true + /appdata-path/1.0.0: + resolution: {integrity: sha512-ZbH3ezXfnT/YE3NdqduIt4lBV+H0ybvA2Qx3K76gIjQvh8gROpDFdDLpx6B1QJtW7zxisCbpTlCLhKqoR8cDBw==} + dev: true + /arch/2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true @@ -4235,6 +5997,11 @@ packages: engines: {node: '>= 4.0.0'} dev: true + /available-typed-arrays/1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + /aws-sign2/0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} dev: true @@ -4296,11 +6063,47 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.18.10 - '@babel/types': 7.19.0 + '@babel/types': 7.21.2 '@types/babel__core': 7.1.19 '@types/babel__traverse': 7.18.2 dev: true + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.12.3: + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.12.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.12.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.12.3: + resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.12.3 + core-js-compat: 3.28.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.12.3: + resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.12.3 + transitivePeerDependencies: + - supports-color + dev: true + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.12.3: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: @@ -4439,6 +6242,17 @@ packages: update-browserslist-db: 1.0.10_browserslist@4.21.4 dev: true + /browserslist/4.21.5: + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001457 + electron-to-chromium: 1.4.284 + node-releases: 2.0.10 + update-browserslist-db: 1.0.10_browserslist@4.21.5 + dev: true + /bser/2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: @@ -4533,7 +6347,7 @@ packages: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 dev: true /callsites/3.1.0: @@ -4574,6 +6388,10 @@ packages: resolution: {integrity: sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==} dev: true + /caniuse-lite/1.0.30001457: + resolution: {integrity: sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA==} + dev: true + /caseless/0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} dev: true @@ -4899,7 +6717,7 @@ packages: dev: true /concat-map/0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true /concurrently/7.5.0: @@ -4935,6 +6753,10 @@ packages: engines: {node: '>=0.8'} dev: true + /consola/2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + dev: true + /content-disposition/0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -4996,6 +6818,12 @@ packages: engines: {node: '>= 0.6'} dev: true + /core-js-compat/3.28.0: + resolution: {integrity: sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg==} + dependencies: + browserslist: 4.21.5 + dev: true + /core-util-is/1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} dev: true @@ -5330,6 +7158,14 @@ packages: source-map: 0.6.1 dev: true + /css-tree/2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 + dev: true + /cssom/0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true @@ -5347,7 +7183,6 @@ packages: /csstype/2.6.21: resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} - dev: true /cypress-image-snapshot/4.0.1_cypress@12.5.1+jest@29.3.1: resolution: {integrity: sha512-PBpnhX/XItlx3/DAk5ozsXQHUi72exybBNH5Mpqj1DVmjq+S5Jd9WE5CRa4q5q0zuMZb2V2VpXHth6MjFpgj9Q==} @@ -5868,6 +7703,18 @@ packages: engines: {node: '>=8'} dev: true + /define-properties/1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: true + + /defu/6.1.2: + resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} + dev: true + /degenerator/3.0.2: resolution: {integrity: sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==} engines: {node: '>= 6'} @@ -6030,6 +7877,14 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true + /ejs/3.1.8: + resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.8.5 + dev: true + /electron-to-chromium/1.4.284: resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} dev: true @@ -6099,10 +7954,67 @@ packages: is-arrayish: 0.2.1 dev: true + /es-abstract/1.21.1: + resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.2.0 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.1 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.10 + is-weakref: 1.0.2 + object-inspect: 1.12.2 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + safe-regex-test: 1.0.0 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.9 + dev: true + /es-module-lexer/0.9.3: resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} dev: true + /es-set-tostringtag/2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: true + + /es-to-primitive/1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + /esbuild/0.16.17: resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} engines: {node: '>=12'} @@ -6163,6 +8075,36 @@ packages: '@esbuild/win32-x64': 0.17.0 dev: true + /esbuild/0.17.10: + resolution: {integrity: sha512-n7V3v29IuZy5qgxx25TKJrEm0FHghAlS6QweUcyIgh/U0zYmQcvogWROitrTyZId1mHSkuhhuyEXtI9OXioq7A==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.10 + '@esbuild/android-arm64': 0.17.10 + '@esbuild/android-x64': 0.17.10 + '@esbuild/darwin-arm64': 0.17.10 + '@esbuild/darwin-x64': 0.17.10 + '@esbuild/freebsd-arm64': 0.17.10 + '@esbuild/freebsd-x64': 0.17.10 + '@esbuild/linux-arm': 0.17.10 + '@esbuild/linux-arm64': 0.17.10 + '@esbuild/linux-ia32': 0.17.10 + '@esbuild/linux-loong64': 0.17.10 + '@esbuild/linux-mips64el': 0.17.10 + '@esbuild/linux-ppc64': 0.17.10 + '@esbuild/linux-riscv64': 0.17.10 + '@esbuild/linux-s390x': 0.17.10 + '@esbuild/linux-x64': 0.17.10 + '@esbuild/netbsd-x64': 0.17.10 + '@esbuild/openbsd-x64': 0.17.10 + '@esbuild/sunos-x64': 0.17.10 + '@esbuild/win32-arm64': 0.17.10 + '@esbuild/win32-ia32': 0.17.10 + '@esbuild/win32-x64': 0.17.10 + dev: true + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -6445,6 +8387,13 @@ packages: - supports-color dev: true + /esno/0.16.3: + resolution: {integrity: sha512-6slSBEV1lMKcX13DBifvnDFpNno5WXhw4j/ff7RI0y51BZiDqEe5dNhhjhIQ3iCOQuzsm2MbVzmwqbN78BBhPg==} + hasBin: true + dependencies: + tsx: 3.12.3 + dev: true + /espree/9.4.0: resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6495,9 +8444,12 @@ packages: engines: {node: '>=4.0'} dev: true + /estree-walker/1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: true + /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true /esutils/1.0.0: resolution: {integrity: sha512-x/iYH53X3quDwfHRz4y8rn4XcEwwCJeWsul9pF1zldMbGtgOtMNBEOuYWwB1EQlK2LRa1fev3YAgym/RElp5Cg==} @@ -6769,6 +8721,12 @@ packages: engines: {node: '>= 6'} dev: true + /filelist/1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.6 + dev: true + /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -6842,6 +8800,12 @@ packages: debug: 4.3.4 dev: true + /for-each/0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + /foreground-child/2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} @@ -6965,6 +8929,20 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true + /function.prototype.name/1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names/1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + /gensequence/4.0.2: resolution: {integrity: sha512-mQiFskYFPFDSUpBJ/n3ebAV2Ufu6DZGvUPXzyWYzFfJr6/DyOOZVnjx6VTWE4y0RLvYWnc5tZq5sCjzEWhRjqQ==} engines: {node: '>=14'} @@ -6984,14 +8962,18 @@ packages: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true - /get-intrinsic/1.1.3: - resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} + /get-intrinsic/1.2.0: + resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} dependencies: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.3 dev: true + /get-own-enumerable-property-symbols/3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + dev: true + /get-package-type/0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -7026,6 +9008,18 @@ packages: engines: {node: '>=10'} dev: true + /get-symbol-description/1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + dev: true + + /get-tsconfig/4.4.0: + resolution: {integrity: sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==} + dev: true + /get-uri/3.0.2: resolution: {integrity: sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==} engines: {node: '>= 6'} @@ -7130,6 +9124,13 @@ packages: type-fest: 0.20.2 dev: true + /globalthis/1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.0 + dev: true + /globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -7157,6 +9158,12 @@ packages: resolution: {integrity: sha512-l+8esYHTKOx2G/Aao4lEQ0bnHWg4fWtJbVoZZT9Knxi01pB8C80BR85nONLFwkkQoFRCmXY+BUcGZN3yZ2QsRA==} dev: true + /gopd/1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.0 + dev: true + /got/11.8.5: resolution: {integrity: sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==} engines: {node: '>=10.19.0'} @@ -7182,6 +9189,13 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true + /gzip-size/6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + dev: true + /handle-thing/2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} dev: true @@ -7225,6 +9239,10 @@ packages: ansi-regex: 2.1.1 dev: true + /has-bigints/1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + /has-flag/3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -7240,11 +9258,29 @@ packages: engines: {node: '>=8'} dev: true + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.2.0 + dev: true + + /has-proto/1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + /has-symbols/1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: true + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -7411,6 +9447,20 @@ packages: resolve-alpn: 1.2.1 dev: true + /https-localhost/4.7.1: + resolution: {integrity: sha512-rl+NFV0l67/0W7fZwk4LB5gS6HdhtSFLpCpf1N+KD5WQAXtPXX1QE8H0cP8VNJii18rtpTkE9eAHdUfJ0goAnQ==} + hasBin: true + dependencies: + appdata-path: 1.0.0 + compression: 1.7.4 + cors: 2.8.5 + express: 4.18.2 + spdy: 4.0.2 + uglify-js: 3.17.3 + transitivePeerDependencies: + - supports-color + dev: true + /https-proxy-agent/5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -7455,6 +9505,10 @@ packages: dependencies: safer-buffer: 2.1.2 + /idb/7.1.1: + resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + dev: true + /ieee754/1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true @@ -7520,6 +9574,15 @@ packages: engines: {node: '>=10'} dev: true + /internal-slot/1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + side-channel: 1.0.4 + dev: true + /internmap/2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} @@ -7559,10 +9622,24 @@ packages: is-decimal: 1.0.4 dev: true + /is-array-buffer/3.0.1: + resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-typed-array: 1.1.10 + dev: true + /is-arrayish/0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true + /is-bigint/1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + /is-binary-path/2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -7570,6 +9647,14 @@ packages: binary-extensions: 2.2.0 dev: true + /is-boolean-object/1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + /is-buffer/2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} @@ -7582,6 +9667,11 @@ packages: builtin-modules: 3.3.0 dev: true + /is-callable/1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + /is-ci/3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true @@ -7595,6 +9685,13 @@ packages: has: 1.0.3 dev: true + /is-date-object/1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-decimal/1.0.4: resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} dev: true @@ -7644,11 +9741,32 @@ packages: is-path-inside: 3.0.3 dev: true + /is-module/1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: true + + /is-negative-zero/2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object/1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: true + /is-obj/1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + dev: true + /is-obj/2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} @@ -7685,6 +9803,25 @@ packages: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true + /is-regex/1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-regexp/1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + dev: true + + /is-shared-array-buffer/1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: true + /is-stream/1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} @@ -7700,6 +9837,20 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true + /is-string/1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol/1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + /is-text-path/1.0.1: resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} engines: {node: '>=0.10.0'} @@ -7707,6 +9858,17 @@ packages: text-extensions: 1.9.0 dev: true + /is-typed-array/1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + /is-typedarray/1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: true @@ -7716,6 +9878,12 @@ packages: engines: {node: '>=10'} dev: true + /is-weakref/1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: true + /is-wsl/2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -7754,7 +9922,7 @@ packages: engines: {node: '>=8'} dependencies: '@babel/core': 7.12.3 - '@babel/parser': 7.19.1 + '@babel/parser': 7.21.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -7798,6 +9966,17 @@ packages: plist: 3.0.6 dev: true + /jake/10.8.5: + resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.4 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: true + /jest-changed-files/29.2.0: resolution: {integrity: sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8135,7 +10314,7 @@ packages: '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.12.3 '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.12.3 '@babel/traverse': 7.19.1 - '@babel/types': 7.19.0 + '@babel/types': 7.21.2 '@jest/expect-utils': 29.3.1 '@jest/transform': 29.3.1 '@jest/types': 29.3.1 @@ -8196,6 +10375,15 @@ packages: string-length: 4.0.2 dev: true + /jest-worker/26.6.2: + resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 18.11.9 + merge-stream: 2.0.0 + supports-color: 7.2.0 + dev: true + /jest-worker/27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} @@ -8259,6 +10447,10 @@ packages: nomnom: 1.5.2 dev: true + /jiti/1.17.1: + resolution: {integrity: sha512-NZIITw8uZQFuzQimqjUxIrIcEdxYDFIe/0xYfIlVXTkiBjjyBEvgasj5bb0/cHtPRD/NziPbT312sFrkI5ALpw==} + hasBin: true + /jju/1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true @@ -8447,6 +10639,11 @@ packages: engines: {'0': node >= 0.2.0} dev: true + /jsonpointer/5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + dev: true + /jsprim/1.4.2: resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} engines: {node: '>=0.6.0'} @@ -8497,6 +10694,10 @@ packages: engines: {node: '>=6'} dev: true + /kolorist/1.7.0: + resolution: {integrity: sha512-ymToLHqL02udwVdbkowNpzjFd6UzozMtshPQKVi5k1EjKRqKqBrOnE9QbLEb0/pV76SAiIT13hdL8R6suc+f3g==} + dev: true + /ky/0.28.7: resolution: {integrity: sha512-a23i6qSr/ep15vdtw/zyEQIDLoUaKDg9Jf04CYl/0ns/wXNYna26zJpI+MeIFaPeDvkrjLPrKtKOiiI3IE53RQ==} engines: {node: '>=12'} @@ -8632,6 +10833,11 @@ packages: engines: {node: '>=14'} dev: true + /local-pkg/0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + dev: true + /locate-path/3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -8658,6 +10864,10 @@ packages: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} dev: false + /lodash.debounce/4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true + /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -8666,6 +10876,10 @@ packages: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} dev: true + /lodash.sortby/4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: true + /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -8737,6 +10951,12 @@ packages: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 + + /magic-string/0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.14 dev: true /make-dir/3.1.0: @@ -8912,6 +11132,10 @@ packages: resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} dev: true + /mdn-data/2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: true + /mdn-data/2.0.6: resolution: {integrity: sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==} dev: true @@ -9319,6 +11543,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch/5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist-options/4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -9390,7 +11621,6 @@ packages: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: true /natural-compare-lite/1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} @@ -9447,6 +11677,10 @@ packages: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true + /node-releases/2.0.10: + resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} + dev: true + /node-releases/2.0.6: resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} dev: true @@ -9530,6 +11764,21 @@ packages: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} dev: true + /object-keys/1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign/4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + /obuf/1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} dev: true @@ -9862,13 +12111,16 @@ packages: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true + /perfect-debounce/0.1.3: + resolution: {integrity: sha512-NOT9AcKiDGpnV/HBhI22Str++XWcErO/bALvHCuhv33owZW/CjH8KAFLZDCmu3727sihe0wTxpDhyGc6M8qacQ==} + dev: true + /performance-now/2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -9973,7 +12225,6 @@ packages: nanoid: 3.3.4 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true /preact/10.11.0: resolution: {integrity: sha512-Fk6+vB2kb6mSJfDgODq0YDhMfl0HNtK5+Uc9QqECO4nlyPAQwCI+BKyWO//idA7ikV7o+0Fm6LQmNuQi1wXI1w==} @@ -10014,6 +12265,11 @@ packages: engines: {node: '>=6'} dev: true + /pretty-bytes/6.1.0: + resolution: {integrity: sha512-Rk753HI8f4uivXi4ZCIYdhmG1V+WKzvRMg/X+M42a6t7D07RcmopXJMDNk6N++7Bl75URRGsb40ruvg7Hcp2wQ==} + engines: {node: ^14.13.1 || >=16.0.0} + dev: true + /pretty-format/27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -10262,16 +12518,58 @@ packages: strip-indent: 4.0.0 dev: true + /regenerate-unicode-properties/10.1.0: + resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate/1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true + + /regenerator-runtime/0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: true + + /regenerator-transform/0.15.1: + resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} + dependencies: + '@babel/runtime': 7.21.0 + dev: true + /regexp-tree/0.1.24: resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} hasBin: true dev: true + /regexp.prototype.flags/1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 + dev: true + /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} dev: true + /regexpu-core/5.3.1: + resolution: {integrity: sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.0 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: true + /regjsparser/0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true @@ -10481,6 +12779,19 @@ packages: resolution: {integrity: sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==} dev: false + /rollup-plugin-terser/7.0.2_rollup@2.79.1: + resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser + peerDependencies: + rollup: ^2.0.0 + dependencies: + '@babel/code-frame': 7.18.6 + jest-worker: 26.6.2 + rollup: 2.79.1 + serialize-javascript: 4.0.0 + terser: 5.15.1 + dev: true + /rollup-plugin-visualizer/5.8.3: resolution: {integrity: sha512-QGJk4Bqe4AOat5AjipOh8esZH1nck5X2KFpf4VytUdSUuuuSwvIQZjMGgjcxe/zXexltqaXp5Vx1V3LmnQH15Q==} engines: {node: '>=14'} @@ -10549,6 +12860,14 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true + /safe-regex-test/1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-regex: 1.1.4 + dev: true + /safe-regex/2.1.1: resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} dependencies: @@ -10649,6 +12968,12 @@ packages: - supports-color dev: true + /serialize-javascript/4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + dependencies: + randombytes: 2.1.0 + dev: true + /serialize-javascript/6.0.0: resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: @@ -10746,7 +13071,7 @@ packages: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 object-inspect: 1.12.2 dev: true @@ -10842,7 +13167,6 @@ packages: /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - dev: true /source-map-support/0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} @@ -10875,17 +13199,22 @@ packages: /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true /source-map/0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} dev: true + /source-map/0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + dependencies: + whatwg-url: 7.1.0 + dev: true + /sourcemap-codec/1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead - dev: true /spawn-command/0.0.2-1: resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} @@ -11075,6 +13404,35 @@ packages: strip-ansi: 7.0.1 dev: true + /string.prototype.matchall/4.0.8: + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + get-intrinsic: 1.2.0 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + regexp.prototype.flags: 1.4.3 + side-channel: 1.0.4 + dev: true + + /string.prototype.trimend/1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + dev: true + + /string.prototype.trimstart/1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + dev: true + /string_decoder/0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} dev: true @@ -11091,6 +13449,15 @@ packages: safe-buffer: 5.2.1 dev: true + /stringify-object/3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + dev: true + /strip-ansi/3.0.1: resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} engines: {node: '>=0.10.0'} @@ -11117,6 +13484,11 @@ packages: engines: {node: '>=8'} dev: true + /strip-comments/2.0.1: + resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} + engines: {node: '>=10'} + dev: true + /strip-eof/1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} @@ -11201,6 +13573,21 @@ packages: engines: {node: '>=6'} dev: true + /temp-dir/2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + dev: true + + /tempy/0.6.0: + resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} + engines: {node: '>=10'} + dependencies: + is-stream: 2.0.1 + temp-dir: 2.0.0 + type-fest: 0.16.0 + unique-string: 2.0.0 + dev: true + /term-img/4.1.0: resolution: {integrity: sha512-DFpBhaF5j+2f7kheKFc1ajsAUUDGOaNPpKPtiIMxlbfud6mvfFZuWGnTRpaujUa5J7yl6cIw/h6nyr4mSsENPg==} engines: {node: '>=8'} @@ -11239,7 +13626,7 @@ packages: hasBin: true dependencies: '@jridgewell/source-map': 0.3.2 - acorn: 8.8.1 + acorn: 8.8.2 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -11312,7 +13699,6 @@ packages: /to-fast-properties/2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - dev: true /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -11353,6 +13739,12 @@ packages: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true + /tr46/1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + dependencies: + punycode: 2.1.1 + dev: true + /tr46/3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} @@ -11474,6 +13866,17 @@ packages: typescript: 4.9.5 dev: true + /tsx/3.12.3: + resolution: {integrity: sha512-Wc5BFH1xccYTXaQob+lEcimkcb/Pq+0en2s+ruiX0VEIC80nV7/0s7XRahx8NnsoCnpCVUPz8wrqVSPi760LkA==} + hasBin: true + dependencies: + '@esbuild-kit/cjs-loader': 2.4.2 + '@esbuild-kit/core-utils': 3.1.0 + '@esbuild-kit/esm-loader': 2.5.5 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /tunnel-agent/0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: @@ -11503,6 +13906,11 @@ packages: engines: {node: '>=4'} dev: true + /type-fest/0.16.0: + resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + engines: {node: '>=10'} + dev: true + /type-fest/0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} @@ -11541,6 +13949,14 @@ packages: mime-types: 2.1.35 dev: true + /typed-array-length/1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.10 + dev: true + /typedarray-to-buffer/3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: @@ -11600,7 +14016,23 @@ packages: hasBin: true requiresBuild: true dev: true - optional: true + + /unbox-primitive/1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /unconfig/0.3.7: + resolution: {integrity: sha512-1589b7oGa8ILBYpta7TndM5mLHLzHUqBfhszeZxuUBrjO/RoQ52VGVWsS3w0C0GLNxO9RPmqkf6BmIvBApaRdA==} + dependencies: + '@antfu/utils': 0.5.2 + defu: 6.1.2 + jiti: 1.17.1 + dev: true /underscore/1.1.7: resolution: {integrity: sha512-w4QtCHoLBXw1mjofIDoMyexaEdWGMedWNDhlWTtT1V1lCRqi65Pnoygkh6+WRdr+Bm8ldkBNkNeCsXGMlQS9HQ==} @@ -11613,6 +14045,29 @@ packages: busboy: 1.6.0 dev: true + /unicode-canonical-property-names-ecmascript/2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: true + + /unicode-match-property-ecmascript/2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: true + + /unicode-match-property-value-ecmascript/2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: true + + /unicode-property-aliases-ecmascript/2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: true + /unified/10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} dependencies: @@ -11682,16 +14137,88 @@ packages: engines: {node: '>= 10.0.0'} dev: true + /unocss/0.48.5_rollup@2.79.1+vite@4.1.4: + resolution: {integrity: sha512-OK24OS2IO4oJa/jtfoxUIciY6M05Nx16M6pzfCqzcglvaIIM/rpsA2D3dYmC3f3IeBuC31FpB59cM05CF7E0bQ==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.48.5 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + dependencies: + '@unocss/astro': 0.48.5_rollup@2.79.1+vite@4.1.4 + '@unocss/cli': 0.48.5_rollup@2.79.1 + '@unocss/core': 0.48.5 + '@unocss/preset-attributify': 0.48.5 + '@unocss/preset-icons': 0.48.5 + '@unocss/preset-mini': 0.48.5 + '@unocss/preset-tagify': 0.48.5 + '@unocss/preset-typography': 0.48.5 + '@unocss/preset-uno': 0.48.5 + '@unocss/preset-web-fonts': 0.48.5 + '@unocss/preset-wind': 0.48.5 + '@unocss/reset': 0.48.5 + '@unocss/transformer-attributify-jsx': 0.48.5 + '@unocss/transformer-compile-class': 0.48.5 + '@unocss/transformer-directives': 0.48.5 + '@unocss/transformer-variant-group': 0.48.5 + '@unocss/vite': 0.48.5_rollup@2.79.1+vite@4.1.4 + transitivePeerDependencies: + - rollup + - supports-color + - vite + dev: true + /unpipe/1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} dev: true + /unplugin-vue-components/0.22.12_rollup@2.79.1+vue@3.2.47: + resolution: {integrity: sha512-FxyzsuBvMCYPIk+8cgscGBQ345tvwVu+qY5IhE++eorkyvA4Z1TiD/HCiim+Kbqozl10i4K+z+NCa2WO2jexRA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/parser': ^7.15.8 + vue: 2 || 3 + peerDependenciesMeta: + '@babel/parser': + optional: true + dependencies: + '@antfu/utils': 0.7.2 + '@rollup/pluginutils': 5.0.2_rollup@2.79.1 + chokidar: 3.5.3 + debug: 4.3.4 + fast-glob: 3.2.12 + local-pkg: 0.4.3 + magic-string: 0.27.0 + minimatch: 5.1.6 + resolve: 1.22.1 + unplugin: 1.1.0 + vue: 3.2.47 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /unplugin/1.1.0: + resolution: {integrity: sha512-I8obQ8Rs/hnkxokRV6g8JKOQFgYNnTd9DL58vcSt5IJ9AkK8wbrtsnzD5hi4BJlvcY536JzfEXj9L6h7j559/A==} + dependencies: + acorn: 8.8.2 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.5.0 + dev: true + /untildify/4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} dev: true + /upath/1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} + dev: true + /update-browserslist-db/1.0.10_browserslist@4.21.4: resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true @@ -11703,6 +14230,17 @@ packages: picocolors: 1.0.0 dev: true + /update-browserslist-db/1.0.10_browserslist@4.21.5: + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.5 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -11814,7 +14352,7 @@ packages: picocolors: 1.0.0 source-map: 0.6.1 source-map-support: 0.5.21 - vite: 4.1.1_@types+node@18.11.9 + vite: 4.1.4_@types+node@18.11.9 transitivePeerDependencies: - '@types/node' - less @@ -11837,7 +14375,7 @@ packages: picocolors: 1.0.0 source-map: 0.6.1 source-map-support: 0.5.21 - vite: 4.1.1_@types+node@18.11.9 + vite: 4.1.4_@types+node@18.11.9 transitivePeerDependencies: - '@types/node' - less @@ -11848,6 +14386,25 @@ packages: - terser dev: true + /vite-plugin-pwa/0.14.4_qtdhuw7qkuvvectm2wxn5d44j4: + resolution: {integrity: sha512-M7Ct0so8OlouMkTWgXnl8W1xU95glITSKIe7qswZf1tniAstO2idElGCnsrTJ5NPNSx1XqfTCOUj8j94S6FD7Q==} + peerDependencies: + vite: ^3.1.0 || ^4.0.0 + workbox-build: ^6.5.4 + workbox-window: ^6.5.4 + dependencies: + '@rollup/plugin-replace': 5.0.2_rollup@3.15.0 + debug: 4.3.4 + fast-glob: 3.2.12 + pretty-bytes: 6.1.0 + rollup: 3.15.0 + vite: 4.1.4 + workbox-build: 6.5.4 + workbox-window: 6.5.4 + transitivePeerDependencies: + - supports-color + dev: true + /vite/4.1.1: resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} engines: {node: ^14.18.0 || >=16.0.0} @@ -11915,7 +14472,74 @@ packages: fsevents: 2.3.2 dev: true - /vitepress-plugin-search/1.0.4-alpha.19_g67lr3vgasogkevpbew55lljzq: + /vite/4.1.4: + resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.16.17 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 3.15.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vite/4.1.4_@types+node@18.11.9: + resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.11.9 + esbuild: 0.16.17 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 3.15.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vitepress-plugin-search/1.0.4-alpha.19_izgnxokfetdl4ncj36u4rk6qgu: resolution: {integrity: sha512-WFOPn5dStyMINd+rVjNxbEmGa7U+qGHLxLnda56EG+ATil1i0yOauGhJEh5LPMvuCUVIA9tInJnFXklOBb39dA==} engines: {node: ^14.13.1 || ^16.7.0 || >=18} peerDependencies: @@ -11928,7 +14552,7 @@ packages: flexsearch: 0.7.31 markdown-it: 13.0.1 vitepress: 1.0.0-alpha.46_tbpndr44ulefs3hehwpi2mkf2y - vue: 3.2.45 + vue: 3.2.47 dev: true /vitepress/1.0.0-alpha.46_tbpndr44ulefs3hehwpi2mkf2y: @@ -11958,6 +14582,33 @@ packages: - terser dev: true + /vitepress/1.0.0-alpha.47_tbpndr44ulefs3hehwpi2mkf2y: + resolution: {integrity: sha512-vj+LOY0WJtKSk98HV4qqG6p4MofmF+C8yrWHiiw+GCMfr6C+610U5D7oD2OruroIafsON6F4nBDWGK8ZyGIpXQ==} + hasBin: true + dependencies: + '@docsearch/css': 3.3.3 + '@docsearch/js': 3.3.3_tbpndr44ulefs3hehwpi2mkf2y + '@vitejs/plugin-vue': 4.0.0_vite@4.1.4+vue@3.2.47 + '@vue/devtools-api': 6.5.0 + '@vueuse/core': 9.13.0_vue@3.2.47 + body-scroll-lock: 4.0.0-beta.0 + shiki: 0.14.1 + vite: 4.1.4 + vue: 3.2.47 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - less + - react + - react-dom + - sass + - stylus + - sugarss + - terser + dev: true + /vitest/0.28.4_vun5xzxu3tkrssf3erdbijyyki: resolution: {integrity: sha512-sfWIy0AdlbyGRhunm+TLQEJrFH9XuRPdApfubsyLcDbCRrUX717BRQKInTgzEfyl2Ipi1HWoHB84Nqtcwxogcg==} engines: {node: '>=v14.16.0'} @@ -12003,7 +14654,7 @@ packages: tinybench: 2.3.1 tinypool: 0.3.1 tinyspy: 1.0.2 - vite: 4.1.1_@types+node@18.11.9 + vite: 4.1.4_@types+node@18.11.9 vite-node: 0.28.4_@types+node@18.11.9 why-is-node-running: 2.2.2 transitivePeerDependencies: @@ -12060,7 +14711,7 @@ packages: tinybench: 2.3.1 tinypool: 0.3.1 tinyspy: 1.0.2 - vite: 4.1.1_@types+node@18.11.9 + vite: 4.1.4_@types+node@18.11.9 vite-node: 0.28.5_@types+node@18.11.9 why-is-node-running: 2.2.2 transitivePeerDependencies: @@ -12138,6 +14789,20 @@ packages: vue: 3.2.45 dev: true + /vue-demi/0.13.11_vue@3.2.47: + resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.2.47 + /vue/3.2.45: resolution: {integrity: sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==} dependencies: @@ -12148,6 +14813,15 @@ packages: '@vue/shared': 3.2.45 dev: true + /vue/3.2.47: + resolution: {integrity: sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==} + dependencies: + '@vue/compiler-dom': 3.2.47 + '@vue/compiler-sfc': 3.2.47 + '@vue/runtime-dom': 3.2.47 + '@vue/server-renderer': 3.2.47_vue@3.2.47 + '@vue/shared': 3.2.47 + /w3c-hr-time/1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} deprecated: Use your platform's native performance.now() and performance.timeOrigin. @@ -12240,6 +14914,10 @@ packages: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true + /webidl-conversions/4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: true + /webidl-conversions/7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -12357,6 +15035,10 @@ packages: engines: {node: '>=10.13.0'} dev: true + /webpack-virtual-modules/0.5.0: + resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} + dev: true + /webpack/5.75.0_webpack-cli@4.10.0: resolution: {integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==} engines: {node: '>=10.13.0'} @@ -12447,6 +15129,36 @@ packages: webidl-conversions: 3.0.1 dev: true + /whatwg-url/7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: true + + /which-boxed-primitive/1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-typed-array/1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + dev: true + /which/1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -12484,6 +15196,152 @@ packages: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true + /workbox-background-sync/6.5.4: + resolution: {integrity: sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==} + dependencies: + idb: 7.1.1 + workbox-core: 6.5.4 + dev: true + + /workbox-broadcast-update/6.5.4: + resolution: {integrity: sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==} + dependencies: + workbox-core: 6.5.4 + dev: true + + /workbox-build/6.5.4: + resolution: {integrity: sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==} + engines: {node: '>=10.0.0'} + dependencies: + '@apideck/better-ajv-errors': 0.3.6_ajv@8.11.0 + '@babel/core': 7.12.3 + '@babel/preset-env': 7.20.2_@babel+core@7.12.3 + '@babel/runtime': 7.21.0 + '@rollup/plugin-babel': 5.3.1_dckrvusq2p5l2rafxmdzsxgali + '@rollup/plugin-node-resolve': 11.2.1_rollup@2.79.1 + '@rollup/plugin-replace': 2.4.2_rollup@2.79.1 + '@surma/rollup-plugin-off-main-thread': 2.2.3 + ajv: 8.11.0 + common-tags: 1.8.2 + fast-json-stable-stringify: 2.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + lodash: 4.17.21 + pretty-bytes: 5.6.0 + rollup: 2.79.1 + rollup-plugin-terser: 7.0.2_rollup@2.79.1 + source-map: 0.8.0-beta.0 + stringify-object: 3.3.0 + strip-comments: 2.0.1 + tempy: 0.6.0 + upath: 1.2.0 + workbox-background-sync: 6.5.4 + workbox-broadcast-update: 6.5.4 + workbox-cacheable-response: 6.5.4 + workbox-core: 6.5.4 + workbox-expiration: 6.5.4 + workbox-google-analytics: 6.5.4 + workbox-navigation-preload: 6.5.4 + workbox-precaching: 6.5.4 + workbox-range-requests: 6.5.4 + workbox-recipes: 6.5.4 + workbox-routing: 6.5.4 + workbox-strategies: 6.5.4 + workbox-streams: 6.5.4 + workbox-sw: 6.5.4 + workbox-window: 6.5.4 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + dev: true + + /workbox-cacheable-response/6.5.4: + resolution: {integrity: sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==} + dependencies: + workbox-core: 6.5.4 + dev: true + + /workbox-core/6.5.4: + resolution: {integrity: sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==} + dev: true + + /workbox-expiration/6.5.4: + resolution: {integrity: sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==} + dependencies: + idb: 7.1.1 + workbox-core: 6.5.4 + dev: true + + /workbox-google-analytics/6.5.4: + resolution: {integrity: sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==} + dependencies: + workbox-background-sync: 6.5.4 + workbox-core: 6.5.4 + workbox-routing: 6.5.4 + workbox-strategies: 6.5.4 + dev: true + + /workbox-navigation-preload/6.5.4: + resolution: {integrity: sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==} + dependencies: + workbox-core: 6.5.4 + dev: true + + /workbox-precaching/6.5.4: + resolution: {integrity: sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==} + dependencies: + workbox-core: 6.5.4 + workbox-routing: 6.5.4 + workbox-strategies: 6.5.4 + dev: true + + /workbox-range-requests/6.5.4: + resolution: {integrity: sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==} + dependencies: + workbox-core: 6.5.4 + dev: true + + /workbox-recipes/6.5.4: + resolution: {integrity: sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==} + dependencies: + workbox-cacheable-response: 6.5.4 + workbox-core: 6.5.4 + workbox-expiration: 6.5.4 + workbox-precaching: 6.5.4 + workbox-routing: 6.5.4 + workbox-strategies: 6.5.4 + dev: true + + /workbox-routing/6.5.4: + resolution: {integrity: sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==} + dependencies: + workbox-core: 6.5.4 + dev: true + + /workbox-strategies/6.5.4: + resolution: {integrity: sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==} + dependencies: + workbox-core: 6.5.4 + dev: true + + /workbox-streams/6.5.4: + resolution: {integrity: sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==} + dependencies: + workbox-core: 6.5.4 + workbox-routing: 6.5.4 + dev: true + + /workbox-sw/6.5.4: + resolution: {integrity: sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==} + dev: true + + /workbox-window/6.5.4: + resolution: {integrity: sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==} + dependencies: + '@types/trusted-types': 2.0.2 + workbox-core: 6.5.4 + dev: true + /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 4b8be5cdc..01e9fda24 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,4 +1,5 @@ packages: - # all packages in direct subdirs of packages/ - 'packages/*' + - 'packages/mermaid/src/docs' + - 'packages/mermaid/src/vitepress' - 'tests/*' From c1df62638d1b1a158f74dc6285f03d59dcb2d6f8 Mon Sep 17 00:00:00 2001 From: Kazuki Tsunemi Date: Thu, 9 Mar 2023 21:14:30 +0900 Subject: [PATCH 030/255] class body grammer apply to class stetement only --- .../diagrams/class/parser/classDiagram.jison | 123 ++++++++++-------- 1 file changed, 66 insertions(+), 57 deletions(-) diff --git a/packages/mermaid/src/diagrams/class/parser/classDiagram.jison b/packages/mermaid/src/diagrams/class/parser/classDiagram.jison index 0c9ad2f2a..4e68372f3 100644 --- a/packages/mermaid/src/diagrams/class/parser/classDiagram.jison +++ b/packages/mermaid/src/diagrams/class/parser/classDiagram.jison @@ -19,6 +19,8 @@ %x acc_title %x acc_descr %x acc_descr_multiline +%x class +%x class-body %% \%\%\{ { this.begin('open_directive'); return 'open_directive'; } .*direction\s+TB[^\n]* return 'direction_tb'; @@ -41,35 +43,30 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multili \s*(\r?\n)+ return 'NEWLINE'; \s+ /* skip whitespace */ + "classDiagram-v2" return 'CLASS_DIAGRAM'; "classDiagram" return 'CLASS_DIAGRAM'; -[{] { this.begin("struct"); /*console.log('Starting struct');*/ return 'STRUCT_START';} -"[*]" { /*console.log('EDGE_STATE=',yytext);*/ return 'EDGE_STATE';} -<> return "EOF_IN_STRUCT"; -[{] return "OPEN_IN_STRUCT"; -[}] { /*console.log('Ending struct');*/this.popState(); return 'STRUCT_STOP';}} -[\n] /* nothing */ -[^{}\n]* { /*console.log('lex-member: ' + yytext);*/ return "MEMBER";} +"[*]" return 'EDGE_STATE'; -"class" return 'CLASS'; -"cssClass" return 'CSSCLASS'; -"callback" return 'CALLBACK'; -"link" return 'LINK'; -"click" return 'CLICK'; -"note for" return 'NOTE_FOR'; -"note" return 'NOTE'; -"<<" return 'ANNOTATION_START'; -">>" return 'ANNOTATION_END'; -[~] this.begin("generic"); -[~] this.popState(); -[^~]* return "GENERICTYPE"; -["] this.begin("string"); -["] this.popState(); -[^"]* return "STR"; +"class" { this.begin('class'); return 'CLASS';} +\s*(\r?\n)+ { this.popState(); return 'NEWLINE'; } +\s+ /* skip whitespace */ +[{] { this.begin("class-body"); return 'STRUCT_START';} +[}] { this.popState(); return 'STRUCT_STOP'; } +<> return "EOF_IN_STRUCT"; +"[*]" { return 'EDGE_STATE';} +[{] return "OPEN_IN_STRUCT"; +[\n] /* nothing */ +[^{}\n]* { return "MEMBER";} -[`] this.begin("bqstring"); -[`] this.popState(); -[^`]+ return "BQUOTE_STR"; +<*>"cssClass" return 'CSSCLASS'; +<*>"callback" return 'CALLBACK'; +<*>"link" return 'LINK'; +<*>"click" return 'CLICK'; +<*>"note for" return 'NOTE_FOR'; +<*>"note" return 'NOTE'; +<*>"<<" return 'ANNOTATION_START'; +<*>">>" return 'ANNOTATION_END'; /* ---interactivity command--- @@ -77,7 +74,7 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multili line was introduced with 'click'. 'href ""' attaches the specified link to the node that was specified by 'click'. */ -"href"[\s]+["] this.begin("href"); +<*>"href"[\s]+["] this.begin("href"); ["] this.popState(); [^"]* return 'HREF'; @@ -89,41 +86,53 @@ the line was introduced with 'click'. arguments to the node that was specified by 'click'. Function arguments are optional: 'call ()' simply executes 'callback_name' without any arguments. */ -"call"[\s]+ this.begin("callback_name"); +<*>"call"[\s]+ this.begin("callback_name"); \([\s]*\) this.popState(); \( this.popState(); this.begin("callback_args"); [^(]* return 'CALLBACK_NAME'; \) this.popState(); [^)]* return 'CALLBACK_ARGS'; -"_self" return 'LINK_TARGET'; -"_blank" return 'LINK_TARGET'; -"_parent" return 'LINK_TARGET'; -"_top" return 'LINK_TARGET'; +[~] this.popState(); +[^~]* return "GENERICTYPE"; +<*>[~] this.begin("generic"); -\s*\<\| return 'EXTENSION'; -\s*\|\> return 'EXTENSION'; -\s*\> return 'DEPENDENCY'; -\s*\< return 'DEPENDENCY'; -\s*\* return 'COMPOSITION'; -\s*o return 'AGGREGATION'; -\s*\(\) return 'LOLLIPOP'; -\-\- return 'LINE'; -\.\. return 'DOTTED_LINE'; -":"{1}[^:\n;]+ return 'LABEL'; -":"{3} return 'STYLE_SEPARATOR'; -\- return 'MINUS'; -"." return 'DOT'; -\+ return 'PLUS'; -\% return 'PCT'; -"=" return 'EQUALS'; -\= return 'EQUALS'; -\w+ return 'ALPHA'; -"[" return 'SQS'; -"]" return 'SQE'; -[!"#$%&'*+,-.`?\\/] return 'PUNCTUATION'; -[0-9]+ return 'NUM'; -[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]| +["] this.popState(); +[^"]* return "STR"; +<*>["] this.begin("string"); + +[`] this.popState(); +[^`]+ return "BQUOTE_STR"; +<*>[`] this.begin("bqstring"); + +<*>"_self" return 'LINK_TARGET'; +<*>"_blank" return 'LINK_TARGET'; +<*>"_parent" return 'LINK_TARGET'; +<*>"_top" return 'LINK_TARGET'; + +<*>\s*\<\| return 'EXTENSION'; +<*>\s*\|\> return 'EXTENSION'; +<*>\s*\> return 'DEPENDENCY'; +<*>\s*\< return 'DEPENDENCY'; +<*>\s*\* return 'COMPOSITION'; +<*>\s*o return 'AGGREGATION'; +<*>\s*\(\) return 'LOLLIPOP'; +<*>\-\- return 'LINE'; +<*>\.\. return 'DOTTED_LINE'; +<*>":"{1}[^:\n;]+ return 'LABEL'; +<*>":"{3} return 'STYLE_SEPARATOR'; +<*>\- return 'MINUS'; +<*>"." return 'DOT'; +<*>\+ return 'PLUS'; +<*>\% return 'PCT'; +<*>"=" return 'EQUALS'; +<*>\= return 'EQUALS'; +<*>\w+ return 'ALPHA'; +<*>"[" return 'SQS'; +<*>"]" return 'SQE'; +<*>[!"#$%&'*+,-.`?\\/] return 'PUNCTUATION'; +<*>[0-9]+ return 'NUM'; +<*>[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]| [\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]| [\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]| [\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]| @@ -184,9 +193,9 @@ Function arguments are optional: 'call ()' simply executes 'callb [\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]| [\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]| [\uFFD2-\uFFD7\uFFDA-\uFFDC] - return 'UNICODE_TEXT'; -\s return 'SPACE'; -<> return 'EOF'; + return 'UNICODE_TEXT'; +<*>\s return 'SPACE'; +<*><> return 'EOF'; /lex From 4017bb3c49d26c50ec87e3afcb9bf2b0b8cd1593 Mon Sep 17 00:00:00 2001 From: Kazuki Tsunemi Date: Thu, 9 Mar 2023 17:42:38 +0900 Subject: [PATCH 031/255] Implement namespace parser --- .../mermaid/src/diagrams/class/classDb.ts | 25 +++++++++++++ .../src/diagrams/class/classDiagram.spec.ts | 31 ++++++++++++++++ .../diagrams/class/parser/classDiagram.jison | 36 ++++++++++++++++++- 3 files changed, 91 insertions(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/class/classDb.ts b/packages/mermaid/src/diagrams/class/classDb.ts index 48ef7ccbe..851353477 100644 --- a/packages/mermaid/src/diagrams/class/classDb.ts +++ b/packages/mermaid/src/diagrams/class/classDb.ts @@ -392,6 +392,29 @@ const setDirection = (dir: string) => { direction = dir; }; +/** + * Function called by parser when a namespace keyword has been found. + * + * @param id - Id of the namespace to add + * @public + */ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export const addNamespace = function (id: string) { + // TODO: Implement here +}; + +/** + * Function called by parser when a namespace definition has been found. + * + * @param id - Id of the namespace to add + * @param classNames - Ids of the class to add + * @public + */ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export const addClassesToNamespace = function (id: string, classNames: string[]) { + // TODO: Implement here +}; + export default { parseDirective, setAccTitle, @@ -425,4 +448,6 @@ export default { setDiagramTitle, getDiagramTitle, setClassLabel, + addNamespace, + addClassesToNamespace, }; diff --git a/packages/mermaid/src/diagrams/class/classDiagram.spec.ts b/packages/mermaid/src/diagrams/class/classDiagram.spec.ts index 24fbc41ea..11b556179 100644 --- a/packages/mermaid/src/diagrams/class/classDiagram.spec.ts +++ b/packages/mermaid/src/diagrams/class/classDiagram.spec.ts @@ -571,6 +571,37 @@ foo() const str = 'classDiagram\n' + 'note "test"\n'; parser.parse(str); }); + + it('should handle "namespace"', function () { + const str = `classDiagram +namespace Namespace1 { class Class1 } +namespace Namespace2 { class Class1 +} +namespace Namespace3 { +class Class1 { +int : test +string : foo +test() +foo() +} +} +namespace Namespace4 { +class Class1 { +int : test +string : foo +test() +foo() +} +class Class2 { +int : test +string : foo +test() +foo() +} +} +`; + parser.parse(str); + }); }); describe('when fetching data from a classDiagram it', function () { diff --git a/packages/mermaid/src/diagrams/class/parser/classDiagram.jison b/packages/mermaid/src/diagrams/class/parser/classDiagram.jison index 4e68372f3..1c0ccdbbe 100644 --- a/packages/mermaid/src/diagrams/class/parser/classDiagram.jison +++ b/packages/mermaid/src/diagrams/class/parser/classDiagram.jison @@ -21,6 +21,8 @@ %x acc_descr_multiline %x class %x class-body +%x namespace +%x namespace-body %% \%\%\{ { this.begin('open_directive'); return 'open_directive'; } .*direction\s+TB[^\n]* return 'direction_tb'; @@ -48,9 +50,20 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multili "classDiagram" return 'CLASS_DIAGRAM'; "[*]" return 'EDGE_STATE'; -"class" { this.begin('class'); return 'CLASS';} +"namespace" { this.begin('namespace'); return 'NAMESPACE'; } +\s*(\r?\n)+ { this.popState(); return 'NEWLINE'; } +\s+ /* skip whitespace */ +[{] { this.begin("namespace-body"); return 'STRUCT_START';} +[}] { this.popState(); return 'STRUCT_STOP'; } +<> return "EOF_IN_STRUCT"; +\s*(\r?\n)+ return 'NEWLINE'; +\s+ /* skip whitespace */ +"[*]" return 'EDGE_STATE'; + +"class" { this.begin('class'); return 'CLASS';} \s*(\r?\n)+ { this.popState(); return 'NEWLINE'; } \s+ /* skip whitespace */ +[}] { this.popState(); this.popState(); return 'STRUCT_STOP';} [{] { this.begin("class-body"); return 'STRUCT_START';} [}] { this.popState(); return 'STRUCT_STOP'; } <> return "EOF_IN_STRUCT"; @@ -264,6 +277,11 @@ classLabel : SQS STR SQE { $$=$2; } ; +namespaceName + : alphaNumToken { $$=$1; } + | alphaNumToken namespaceName { $$=$1+$2; } + ; + className : alphaNumToken { $$=$1; } | classLiteralName { $$=$1; } @@ -275,6 +293,7 @@ className statement : relationStatement { yy.addRelation($1); } | relationStatement LABEL { $1.title = yy.cleanupLabel($2); yy.addRelation($1); } + | namespaceStatement | classStatement | methodStatement | annotationStatement @@ -288,6 +307,21 @@ statement | acc_descr_multiline_value { $$=$1.trim();yy.setAccDescription($$); } ; +namespaceStatement + : namespaceIdentifier STRUCT_START classStatements STRUCT_STOP {yy.addClassesToNamespace($1, $3);} + | namespaceIdentifier STRUCT_START NEWLINE classStatements STRUCT_STOP {yy.addClassesToNamespace($1, $4);} + ; + +namespaceIdentifier + : NAMESPACE namespaceName {$$=$2; yy.addNamespace($2);} + ; + +classStatements + : classStatement {$$=[$1]} + | classStatement NEWLINE {$$=[$1]} + | classStatement NEWLINE classStatements {$3.unshift($1); $$=$3} + ; + classStatement : classIdentifier | classIdentifier STYLE_SEPARATOR alphaNumToken {yy.setCssClass($1, $3);} From 75502d076e843d3eb932c86027849347df737e08 Mon Sep 17 00:00:00 2001 From: Kazuki Tsunemi Date: Fri, 10 Mar 2023 19:37:54 +0900 Subject: [PATCH 032/255] Implement database for namespace data --- .../mermaid/src/diagrams/class/classDb.ts | 46 ++++++++++++++++--- .../src/diagrams/class/classDiagram.spec.ts | 19 ++++++++ .../mermaid/src/diagrams/class/classTypes.ts | 9 ++++ 3 files changed, 67 insertions(+), 7 deletions(-) diff --git a/packages/mermaid/src/diagrams/class/classDb.ts b/packages/mermaid/src/diagrams/class/classDb.ts index 851353477..18e218244 100644 --- a/packages/mermaid/src/diagrams/class/classDb.ts +++ b/packages/mermaid/src/diagrams/class/classDb.ts @@ -14,7 +14,14 @@ import { setDiagramTitle, getDiagramTitle, } from '../../commonDb'; -import { ClassRelation, ClassNode, ClassNote, ClassMap } from './classTypes'; +import { + ClassRelation, + ClassNode, + ClassNote, + ClassMap, + NamespaceMap, + NamespaceNode, +} from './classTypes'; const MERMAID_DOM_ID_PREFIX = 'classId-'; @@ -22,6 +29,8 @@ let relations: ClassRelation[] = []; let classes: ClassMap = {}; let notes: ClassNote[] = []; let classCounter = 0; +let namespaces: NamespaceMap = {}; +let namespaceCounter = 0; let functions: any[] = []; @@ -100,6 +109,8 @@ export const clear = function () { notes = []; functions = []; functions.push(setupToolTips); + namespaces = {}; + namespaceCounter = 0; commonClear(); }; @@ -393,14 +404,28 @@ const setDirection = (dir: string) => { }; /** - * Function called by parser when a namespace keyword has been found. + * Function called by parser when a namespace definition has been found. * * @param id - Id of the namespace to add * @public */ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export const addNamespace = function (id: string) { - // TODO: Implement here +export const addNamespace = function (name: string) { + namespaces[name] = { + id: name, + domId: MERMAID_DOM_ID_PREFIX + name + '-' + namespaceCounter, + classes: {}, + children: {}, + }; + + namespaceCounter++; +}; + +const getNamespace = function (name: string): NamespaceNode { + return namespaces[name]; +}; + +const getNamespaces = function (): NamespaceMap { + return namespaces; }; /** @@ -410,9 +435,14 @@ export const addNamespace = function (id: string) { * @param classNames - Ids of the class to add * @public */ -// eslint-disable-next-line @typescript-eslint/no-unused-vars export const addClassesToNamespace = function (id: string, classNames: string[]) { - // TODO: Implement here + if (namespaces[id] !== undefined) { + classNames.map((className) => { + namespaces[id].classes[className] = classes[className]; + delete classes[className]; + classCounter--; + }); + } }; export default { @@ -450,4 +480,6 @@ export default { setClassLabel, addNamespace, addClassesToNamespace, + getNamespace, + getNamespaces, }; diff --git a/packages/mermaid/src/diagrams/class/classDiagram.spec.ts b/packages/mermaid/src/diagrams/class/classDiagram.spec.ts index 11b556179..48d7ca64d 100644 --- a/packages/mermaid/src/diagrams/class/classDiagram.spec.ts +++ b/packages/mermaid/src/diagrams/class/classDiagram.spec.ts @@ -1008,6 +1008,25 @@ foo() expect(classDb.setClickEvent).toHaveBeenCalledWith('Class1', 'functionCall'); expect(classDb.setTooltip).toHaveBeenCalledWith('Class1', 'A tooltip'); }); + + it('should add classes namespaces', function () { + const str = `classDiagram +namespace Namespace1 { +class Class1 { +int : test +string : foo +test() +foo() +} +class Class2 +}`; + parser.parse(str); + + const testNamespace = parser.yy.getNamespace('Namespace1'); + expect(Object.keys(testNamespace.classes).length).toBe(2); + expect(Object.keys(testNamespace.children).length).toBe(0); + expect(testNamespace.classes['Class1'].id).toBe('Class1'); + }); }); describe('when parsing classDiagram with text labels', () => { diff --git a/packages/mermaid/src/diagrams/class/classTypes.ts b/packages/mermaid/src/diagrams/class/classTypes.ts index 4cacad3db..cf6f20f0b 100644 --- a/packages/mermaid/src/diagrams/class/classTypes.ts +++ b/packages/mermaid/src/diagrams/class/classTypes.ts @@ -52,4 +52,13 @@ export type ClassRelation = { lineType: number; }; }; + +export interface NamespaceNode { + id: string; + domId: string; + classes: ClassMap; + children: NamespaceMap; +} + export type ClassMap = Record; +export type NamespaceMap = Record; From 434961b44a5705a9f198047a76712bd97b982f91 Mon Sep 17 00:00:00 2001 From: Kazuki Tsunemi Date: Fri, 10 Mar 2023 18:04:05 +0900 Subject: [PATCH 033/255] Implement rendering logic --- .../rendering/classDiagram-v2.spec.js | 14 ++++ .../mermaid/src/diagrams/class/classDb.ts | 20 ++++-- .../src/diagrams/class/classRenderer-v2.ts | 67 ++++++++++++++++++- 3 files changed, 92 insertions(+), 9 deletions(-) diff --git a/cypress/integration/rendering/classDiagram-v2.spec.js b/cypress/integration/rendering/classDiagram-v2.spec.js index 71810cfa4..90ad677ea 100644 --- a/cypress/integration/rendering/classDiagram-v2.spec.js +++ b/cypress/integration/rendering/classDiagram-v2.spec.js @@ -548,4 +548,18 @@ class C13["With Città foreign language"] ` ); }); + it('should add classes namespaces', function () { + imgSnapshotTest( + ` + classDiagram + namespace Namespace1 { + class C1 + class C2 + } + C1 --> C2 + class C3 + class C4 + ` + ); + }); }); diff --git a/packages/mermaid/src/diagrams/class/classDb.ts b/packages/mermaid/src/diagrams/class/classDb.ts index 18e218244..6468b5e8c 100644 --- a/packages/mermaid/src/diagrams/class/classDb.ts +++ b/packages/mermaid/src/diagrams/class/classDb.ts @@ -245,7 +245,11 @@ const setTooltip = function (ids: string, tooltip?: string) { } }); }; -export const getTooltip = function (id: string) { +export const getTooltip = function (id: string, namespace?: string) { + if (namespace) { + return namespaces[namespace].classes[id].tooltip; + } + return classes[id].tooltip; }; /** @@ -409,13 +413,17 @@ const setDirection = (dir: string) => { * @param id - Id of the namespace to add * @public */ -export const addNamespace = function (name: string) { - namespaces[name] = { - id: name, - domId: MERMAID_DOM_ID_PREFIX + name + '-' + namespaceCounter, +export const addNamespace = function (id: string) { + if (namespaces[id] !== undefined) { + return; + } + + namespaces[id] = { + id: id, classes: {}, children: {}, - }; + domId: MERMAID_DOM_ID_PREFIX + id + '-' + namespaceCounter, + } as NamespaceNode; namespaceCounter++; }; diff --git a/packages/mermaid/src/diagrams/class/classRenderer-v2.ts b/packages/mermaid/src/diagrams/class/classRenderer-v2.ts index e308990c6..e9b221141 100644 --- a/packages/mermaid/src/diagrams/class/classRenderer-v2.ts +++ b/packages/mermaid/src/diagrams/class/classRenderer-v2.ts @@ -8,7 +8,7 @@ import utils from '../../utils'; import { interpolateToCurve, getStylesFromArray } from '../../utils'; import { setupGraphViewbox } from '../../setupGraphViewbox'; import common from '../common/common'; -import { ClassRelation, ClassNote, ClassMap, EdgeData } from './classTypes'; +import { ClassRelation, ClassNote, ClassMap, EdgeData, NamespaceMap } from './classTypes'; const sanitizeText = (txt: string) => common.sanitizeText(txt, getConfig()); @@ -19,6 +19,58 @@ let conf = { curve: undefined, }; +interface RectParameters { + id: string; + shape: 'rect'; + labelStyle: string; + domId: string; + labelText: string; + padding: number | undefined; + style?: string; +} + +/** + * Function that adds the vertices found during parsing to the graph to be rendered. + * + * @param namespaces - Object containing the vertices. + * @param g - The graph that is to be drawn. + * @param _id - id of the graph + * @param diagObj - The diagram object + */ +export const addNamespaces = function ( + namespaces: NamespaceMap, + g: graphlib.Graph, + _id: string, + diagObj: any +) { + const keys = Object.keys(namespaces); + log.info('keys:', keys); + log.info(namespaces); + + // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition + keys.forEach(function (id) { + const vertex = namespaces[id]; + + // parent node must be one of [rect, roundedWithTitle, noteGroup, divider] + const shape = 'rect'; + + const node: RectParameters = { + shape: shape, + id: vertex.id, + domId: vertex.domId, + labelText: sanitizeText(vertex.id), + labelStyle: '', + // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release + padding: getConfig().flowchart?.padding ?? getConfig().class?.padding, + }; + + g.setNode(vertex.id, node); + addClasses(vertex.classes, g, _id, diagObj, vertex.id); + + log.info('setNode', node); + }); +}; + /** * Function that adds the vertices found during parsing to the graph to be rendered. * @@ -31,7 +83,8 @@ export const addClasses = function ( classes: ClassMap, g: graphlib.Graph, _id: string, - diagObj: any + diagObj: any, + parent?: string ) { const keys = Object.keys(classes); log.info('keys:', keys); @@ -55,6 +108,7 @@ export const addClasses = function ( const vertexText = vertex.label ?? vertex.id; const radius = 0; const shape = 'class_box'; + // Add the node const node = { labelStyle: styles.labelStyle, @@ -67,7 +121,7 @@ export const addClasses = function ( style: styles.style, id: vertex.id, domId: vertex.domId, - tooltip: diagObj.db.getTooltip(vertex.id) || '', + tooltip: diagObj.db.getTooltip(vertex.id, parent) || '', haveCallback: vertex.haveCallback, link: vertex.link, width: vertex.type === 'group' ? 500 : undefined, @@ -76,6 +130,11 @@ export const addClasses = function ( padding: getConfig().flowchart?.padding ?? getConfig().class?.padding, }; g.setNode(vertex.id, node); + + if (parent) { + g.setParent(vertex.id, parent); + } + log.info('setNode', node); }); }; @@ -275,10 +334,12 @@ export const draw = function (text: string, id: string, _version: string, diagOb }); // Fetch the vertices/nodes and edges/links from the parsed graph definition + const namespaces: NamespaceMap = diagObj.db.getNamespaces(); const classes: ClassMap = diagObj.db.getClasses(); const relations: ClassRelation[] = diagObj.db.getRelations(); const notes: ClassNote[] = diagObj.db.getNotes(); log.info(relations); + addNamespaces(namespaces, g, id, diagObj); addClasses(classes, g, id, diagObj); addRelations(relations, g); addNotes(notes, g, relations.length + 1, classes); From b51b2c7b04fab4135044b984dcb94a4a4edd6c41 Mon Sep 17 00:00:00 2001 From: Kazuki Tsunemi Date: Fri, 17 Mar 2023 14:21:31 +0900 Subject: [PATCH 034/255] Add namespace sample to README --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index d42e2f7e1..d8e06b62f 100644 --- a/README.md +++ b/README.md @@ -165,6 +165,13 @@ class Class10 { int id size() } +namespace Namespace01 { + class Class11 + class Class12 { + int id + size() + } +} ``` ```mermaid @@ -184,6 +191,13 @@ class Class10 { int id size() } +namespace Namespace01 { + class Class11 + class Class12 { + int id + size() + } +} ``` ### State diagram [docs - live editor] From b725b69fda5641904a5ec89ef75533093439a874 Mon Sep 17 00:00:00 2001 From: Kazuki Tsunemi Date: Fri, 17 Mar 2023 14:47:32 +0900 Subject: [PATCH 035/255] Add package of class diagrams to doc --- docs/syntax/classDiagram.md | 28 +++++++++++++++++++ .../mermaid/src/docs/syntax/classDiagram.md | 17 +++++++++++ 2 files changed, 45 insertions(+) diff --git a/docs/syntax/classDiagram.md b/docs/syntax/classDiagram.md index 69144ef39..bc44a4c48 100644 --- a/docs/syntax/classDiagram.md +++ b/docs/syntax/classDiagram.md @@ -421,6 +421,34 @@ And `Link` can be one of: | -- | Solid | | .. | Dashed | +## Define Namespace + +A namespace groups classes. + +Code: + +```mermaid-example +classDiagram +namespace BaseShapes { + class Triangle + class Rectangle { + double width + double height + } +} +``` + +```mermaid +classDiagram +namespace BaseShapes { + class Triangle + class Rectangle { + double width + double height + } +} +``` + ## Cardinality / Multiplicity on relations Multiplicity or cardinality in class diagrams indicates the number of instances of one class that can be linked to an instance of the other class. For example, each company will have one or more employees (not zero), and each employee currently works for zero or one companies. diff --git a/packages/mermaid/src/docs/syntax/classDiagram.md b/packages/mermaid/src/docs/syntax/classDiagram.md index 9d3766590..588aff874 100644 --- a/packages/mermaid/src/docs/syntax/classDiagram.md +++ b/packages/mermaid/src/docs/syntax/classDiagram.md @@ -277,6 +277,23 @@ And `Link` can be one of: | -- | Solid | | .. | Dashed | +## Define Namespace + +A namespace groups classes. + +Code: + +```mermaid-example +classDiagram +namespace BaseShapes { + class Triangle + class Rectangle { + double width + double height + } +} +``` + ## Cardinality / Multiplicity on relations Multiplicity or cardinality in class diagrams indicates the number of instances of one class that can be linked to an instance of the other class. For example, each company will have one or more employees (not zero), and each employee currently works for zero or one companies. From e357bbee4287eb303db00ed31738d6ef2ecc809f Mon Sep 17 00:00:00 2001 From: Justin Greywolf Date: Thu, 30 Mar 2023 11:04:19 -0700 Subject: [PATCH 036/255] Refactor to consolidate shared svgDraw components --- packages/mermaid/src/diagrams/c4/svgDraw.js | 46 ++----- .../mermaid/src/diagrams/class/svgDraw.js | 2 +- .../src/diagrams/common/svgDrawCommon.js | 122 ++++++++++++++++++ .../mermaid/src/diagrams/mindmap/svgDraw.js | 4 + .../src/diagrams/sequence/sequenceRenderer.ts | 7 +- .../mermaid/src/diagrams/sequence/svgDraw.js | 113 +++------------- .../src/diagrams/sequence/svgDraw.spec.js | 12 -- .../src/diagrams/user-journey/svgDraw.js | 79 +----------- 8 files changed, 165 insertions(+), 220 deletions(-) create mode 100644 packages/mermaid/src/diagrams/common/svgDrawCommon.js diff --git a/packages/mermaid/src/diagrams/c4/svgDraw.js b/packages/mermaid/src/diagrams/c4/svgDraw.js index 690dd26ad..ce465cad3 100644 --- a/packages/mermaid/src/diagrams/c4/svgDraw.js +++ b/packages/mermaid/src/diagrams/c4/svgDraw.js @@ -1,28 +1,9 @@ import common from '../common/common'; +import * as svgDrawCommon from '../common/svgDrawCommon'; import { sanitizeUrl } from '@braintree/sanitize-url'; export const drawRect = function (elem, rectData) { - const rectElem = elem.append('rect'); - rectElem.attr('x', rectData.x); - rectElem.attr('y', rectData.y); - rectElem.attr('fill', rectData.fill); - rectElem.attr('stroke', rectData.stroke); - rectElem.attr('width', rectData.width); - rectElem.attr('height', rectData.height); - rectElem.attr('rx', rectData.rx); - rectElem.attr('ry', rectData.ry); - - if (rectData.attrs !== 'undefined' && rectData.attrs !== null) { - for (let attrKey in rectData.attrs) { - rectElem.attr(attrKey, rectData.attrs[attrKey]); - } - } - - if (rectData.class !== 'undefined') { - rectElem.attr('class', rectData.class); - } - - return rectElem; + return svgDrawCommon.drawRect(elem, rectData); }; export const drawImage = function (elem, width, height, x, y, link) { @@ -236,7 +217,8 @@ export const drawC4Shape = function (elem, c4Shape, conf) { // // draw rect of c4Shape - const rect = getNoteRect(); + const rect = svgDrawCommon.getNoteRect(); + switch (c4Shape.typeC4Shape.text) { case 'person': case 'external_person': @@ -479,6 +461,7 @@ export const insertArrowHead = function (elem) { .append('path') .attr('d', 'M 0 0 L 10 5 L 0 10 z'); // this is actual shape for arrowhead }; + export const insertArrowEnd = function (elem) { elem .append('defs') @@ -493,6 +476,7 @@ export const insertArrowEnd = function (elem) { .append('path') .attr('d', 'M 10 0 L 0 5 L 10 10 z'); // this is actual shape for arrowhead }; + /** * Setup arrow head and define the marker. The result is appended to the svg. * @@ -511,6 +495,7 @@ export const insertArrowFilledHead = function (elem) { .append('path') .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z'); }; + /** * Setup node number. The result is appended to the svg. * @@ -532,6 +517,7 @@ export const insertDynamicNumber = function (elem) { .attr('r', 6); // .style("fill", '#f00'); }; + /** * Setup arrow head and define the marker. The result is appended to the svg. * @@ -568,20 +554,6 @@ export const insertArrowCrossHead = function (elem) { // this is actual shape for arrowhead }; -export const getNoteRect = function () { - return { - x: 0, - y: 0, - fill: '#EDF2AE', - stroke: '#666', - width: 100, - anchor: 'start', - height: 100, - rx: 0, - ry: 0, - }; -}; - const getC4ShapeFont = (cnf, typeC4Shape) => { return { fontFamily: cnf[typeC4Shape + 'FontFamily'], @@ -714,6 +686,4 @@ export default { insertDatabaseIcon, insertComputerIcon, insertClockIcon, - getNoteRect, - sanitizeUrl, // TODO why is this exported? }; diff --git a/packages/mermaid/src/diagrams/class/svgDraw.js b/packages/mermaid/src/diagrams/class/svgDraw.js index cc6909280..bc6d0ab11 100644 --- a/packages/mermaid/src/diagrams/class/svgDraw.js +++ b/packages/mermaid/src/diagrams/class/svgDraw.js @@ -440,7 +440,6 @@ const buildLegacyDisplay = function (text) { } const parameters = text.substring(methodStart + 1, methodEnd); - const classifier = text.substring(methodEnd + 1, 1); cssStyle = parseClassifier(text.substring(methodEnd + 1, methodEnd + 2)); displayText = visibility + methodName + '(' + parseGenericTypes(parameters.trim()) + ')'; @@ -462,6 +461,7 @@ const buildLegacyDisplay = function (text) { cssStyle, }; }; + /** * Adds a for a member in a diagram * diff --git a/packages/mermaid/src/diagrams/common/svgDrawCommon.js b/packages/mermaid/src/diagrams/common/svgDrawCommon.js new file mode 100644 index 000000000..e054f53b6 --- /dev/null +++ b/packages/mermaid/src/diagrams/common/svgDrawCommon.js @@ -0,0 +1,122 @@ +import { sanitizeUrl } from '@braintree/sanitize-url'; + +export const drawRect = function (elem, rectData) { + const rectElem = elem.append('rect'); + rectElem.attr('x', rectData.x); + rectElem.attr('y', rectData.y); + rectElem.attr('fill', rectData.fill); + rectElem.attr('stroke', rectData.stroke); + rectElem.attr('width', rectData.width); + rectElem.attr('height', rectData.height); + rectElem.attr('rx', rectData.rx); + rectElem.attr('ry', rectData.ry); + + if (rectData.attrs !== 'undefined' && rectData.attrs !== null) { + for (let attrKey in rectData.attrs) { + rectElem.attr(attrKey, rectData.attrs[attrKey]); + } + } + + if (rectData.class !== 'undefined') { + rectElem.attr('class', rectData.class); + } + + return rectElem; +}; + +/** + * Draws a background rectangle + * + * @param {any} elem Diagram (reference for bounds) + * @param {any} bounds Shape of the rectangle + */ +export const drawBackgroundRect = function (elem, bounds) { + const rectElem = drawRect(elem, { + x: bounds.startx, + y: bounds.starty, + width: bounds.stopx - bounds.startx, + height: bounds.stopy - bounds.starty, + fill: bounds.fill, + stroke: bounds.stroke, + class: 'rect', + }); + rectElem.lower(); +}; + +export const drawText = function (elem, textData) { + // Remove and ignore br:s + const nText = textData.text.replace(//gi, ' '); + + const textElem = elem.append('text'); + textElem.attr('x', textData.x); + textElem.attr('y', textData.y); + textElem.attr('class', 'legend'); + + textElem.style('text-anchor', textData.anchor); + + if (textData.class !== undefined) { + textElem.attr('class', textData.class); + } + + const span = textElem.append('tspan'); + span.attr('x', textData.x + textData.textMargin * 2); + span.text(nText); + + return textElem; +}; + +export const drawImage = function (elem, x, y, link) { + const imageElem = elem.append('image'); + imageElem.attr('x', x); + imageElem.attr('y', y); + var sanitizedLink = sanitizeUrl(link); + imageElem.attr('xlink:href', sanitizedLink); +}; + +export const drawEmbeddedImage = function (elem, x, y, link) { + const imageElem = elem.append('use'); + imageElem.attr('x', x); + imageElem.attr('y', y); + var sanitizedLink = sanitizeUrl(link); + imageElem.attr('xlink:href', '#' + sanitizedLink); +}; + +export const getNoteRect = function () { + return { + x: 0, + y: 0, + width: 100, + height: 100, + fill: '#EDF2AE', + stroke: '#666', + anchor: 'start', + rx: 0, + ry: 0, + }; +}; + +export const getTextObj = function () { + return { + x: 0, + y: 0, + width: 100, + height: 100, + fill: undefined, + anchor: undefined, + 'text-anchor': 'start', + style: '#666', + textMargin: 0, + rx: 0, + ry: 0, + tspan: true, + valign: undefined, + }; +}; + +export default { + drawRect, + drawImage, + drawText, + getNoteRect, + getTextObj, +}; diff --git a/packages/mermaid/src/diagrams/mindmap/svgDraw.js b/packages/mermaid/src/diagrams/mindmap/svgDraw.js index 2b1aa021e..44172f222 100644 --- a/packages/mermaid/src/diagrams/mindmap/svgDraw.js +++ b/packages/mermaid/src/diagrams/mindmap/svgDraw.js @@ -69,6 +69,7 @@ const defaultBkg = function (elem, node, section) { .attr('x2', node.width) .attr('y2', node.height); }; + const rectBkg = function (elem, node) { elem .append('rect') @@ -77,6 +78,7 @@ const rectBkg = function (elem, node) { .attr('height', node.height) .attr('width', node.width); }; + const cloudBkg = function (elem, node) { const w = node.width; const h = node.height; @@ -107,6 +109,7 @@ const cloudBkg = function (elem, node) { H0 V0 Z` ); }; + const bangBkg = function (elem, node) { const w = node.width; const h = node.height; @@ -138,6 +141,7 @@ const bangBkg = function (elem, node) { H0 V0 Z` ); }; + const circleBkg = function (elem, node) { elem .append('circle') diff --git a/packages/mermaid/src/diagrams/sequence/sequenceRenderer.ts b/packages/mermaid/src/diagrams/sequence/sequenceRenderer.ts index acee7bbe5..f45de2e49 100644 --- a/packages/mermaid/src/diagrams/sequence/sequenceRenderer.ts +++ b/packages/mermaid/src/diagrams/sequence/sequenceRenderer.ts @@ -3,6 +3,7 @@ import { select, selectAll } from 'd3'; import svgDraw, { drawText, fixLifeLineHeights } from './svgDraw'; import { log } from '../../logger'; import common from '../common/common'; +import * as svgDrawCommon from '../common/svgDrawCommon'; import * as configApi from '../../config'; import assignWithDepth from '../../assignWithDepth'; import utils from '../../utils'; @@ -225,7 +226,7 @@ const drawNote = function (elem: any, noteModel: NoteModel) { bounds.bumpVerticalPos(conf.boxMargin); noteModel.height = conf.boxMargin; noteModel.starty = bounds.getVerticalPos(); - const rect = svgDraw.getNoteRect(); + const rect = svgDrawCommon.getNoteRect(); rect.x = noteModel.startx; rect.y = noteModel.starty; rect.width = noteModel.width || conf.width; @@ -233,7 +234,7 @@ const drawNote = function (elem: any, noteModel: NoteModel) { const g = elem.append('g'); const rectElem = svgDraw.drawRect(g, rect); - const textObj = svgDraw.getTextObj(); + const textObj = svgDrawCommon.getTextObj(); textObj.x = noteModel.startx; textObj.y = noteModel.starty; textObj.width = rect.width; @@ -347,7 +348,7 @@ function boundMessage(_diagram, msgModel): number { const drawMessage = function (diagram, msgModel, lineStartY: number, diagObj: Diagram) { const { startx, stopx, starty, message, type, sequenceIndex, sequenceVisible } = msgModel; const textDims = utils.calculateTextDimensions(message, messageFont(conf)); - const textObj = svgDraw.getTextObj(); + const textObj = svgDrawCommon.getTextObj(); textObj.x = startx; textObj.y = starty + 10; textObj.width = stopx - startx; diff --git a/packages/mermaid/src/diagrams/sequence/svgDraw.js b/packages/mermaid/src/diagrams/sequence/svgDraw.js index be34daf4b..668cecb36 100644 --- a/packages/mermaid/src/diagrams/sequence/svgDraw.js +++ b/packages/mermaid/src/diagrams/sequence/svgDraw.js @@ -1,33 +1,13 @@ import common from '../common/common'; +import * as svgDrawCommon from '../common/svgDrawCommon'; import { addFunction } from '../../interactionDb'; import { parseFontSize } from '../../utils'; import { sanitizeUrl } from '@braintree/sanitize-url'; export const drawRect = function (elem, rectData) { - const rectElem = elem.append('rect'); - rectElem.attr('x', rectData.x); - rectElem.attr('y', rectData.y); - rectElem.attr('fill', rectData.fill); - rectElem.attr('stroke', rectData.stroke); - rectElem.attr('width', rectData.width); - rectElem.attr('height', rectData.height); - rectElem.attr('rx', rectData.rx); - rectElem.attr('ry', rectData.ry); - - if (rectData.class !== undefined) { - rectElem.attr('class', rectData.class); - } - - return rectElem; + return svgDrawCommon.drawRect(elem, rectData); }; -// const sanitizeUrl = function (s) { -// return s -// .replace(/&/g, '&') -// .replace(/ { addFunction(() => { const arr = document.querySelectorAll(id); @@ -43,6 +23,7 @@ const addPopupInteraction = (id, actorCnt) => { }); }); }; + export const drawPopup = function (elem, actor, minMenuWidth, textAttrs, forceMenus) { if (actor.links === undefined || actor.links === null || Object.keys(actor.links).length === 0) { return { height: 0, width: 0 }; @@ -107,22 +88,6 @@ export const drawPopup = function (elem, actor, minMenuWidth, textAttrs, forceMe return { height: rectData.height + linkY, width: menuWidth }; }; -export const drawImage = function (elem, x, y, link) { - const imageElem = elem.append('image'); - imageElem.attr('x', x); - imageElem.attr('y', y); - var sanitizedLink = sanitizeUrl(link); - imageElem.attr('xlink:href', sanitizedLink); -}; - -export const drawEmbeddedImage = function (elem, x, y, link) { - const imageElem = elem.append('use'); - imageElem.attr('x', x); - imageElem.attr('y', y); - var sanitizedLink = sanitizeUrl(link); - imageElem.attr('xlink:href', '#' + sanitizedLink); -}; - export const popupMenu = function (popid) { return ( "var pu = document.getElementById('" + @@ -152,9 +117,10 @@ const popupMenuDownFunc = function (popupId) { pu.style.display = 'none'; } }; + export const drawText = function (elem, textData) { - let prevTextHeight = 0, - textHeight = 0; + let prevTextHeight = 0; + let textHeight = 0; const lines = textData.text.split(common.lineBreakRegex); const [_textFontSize, _textFontSizePx] = parseFontSize(textData.fontSize); @@ -188,6 +154,7 @@ export const drawText = function (elem, textData) { break; } } + if ( textData.anchor !== undefined && textData.textMargin !== undefined && @@ -217,6 +184,7 @@ export const drawText = function (elem, textData) { break; } } + for (let [i, line] of lines.entries()) { if ( textData.textMargin !== undefined && @@ -371,7 +339,7 @@ const drawActorTypeParticipant = function (elem, actor, conf, isFooter) { } } - const rect = getNoteRect(); + const rect = svgDrawCommon.getNoteRect(); var cssclass = 'actor'; if (actor.properties != null && actor.properties['class']) { cssclass = actor.properties['class']; @@ -391,9 +359,9 @@ const drawActorTypeParticipant = function (elem, actor, conf, isFooter) { if (actor.properties != null && actor.properties['icon']) { const iconSrc = actor.properties['icon'].trim(); if (iconSrc.charAt(0) === '@') { - drawEmbeddedImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc.substr(1)); + svgDrawCommon.drawEmbeddedImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc.substr(1)); } else { - drawImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc); + svgDrawCommon.drawImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc); } } @@ -438,7 +406,7 @@ const drawActorTypeActor = function (elem, actor, conf, isFooter) { const actElem = elem.append('g'); actElem.attr('class', 'actor-man'); - const rect = getNoteRect(); + const rect = svgDrawCommon.getNoteRect(); rect.x = actor.x; rect.y = actor.y; rect.fill = '#eaeaea'; @@ -447,7 +415,6 @@ const drawActorTypeActor = function (elem, actor, conf, isFooter) { rect.class = 'actor'; rect.rx = 3; rect.ry = 3; - // drawRect(actElem, rect); actElem .append('line') @@ -532,6 +499,7 @@ export const drawBox = function (elem, box, conf) { export const anchorElement = function (elem) { return elem.append('g'); }; + /** * Draws an activation in the diagram * @@ -542,7 +510,7 @@ export const anchorElement = function (elem) { * @param {any} actorActivations - Number of activations on the actor. */ export const drawActivation = function (elem, bounds, verticalPos, conf, actorActivations) { - const rect = getNoteRect(); + const rect = svgDrawCommon.getNoteRect(); const g = bounds.anchored; rect.x = bounds.startx; rect.y = bounds.starty; @@ -594,7 +562,7 @@ export const drawLoop = function (elem, loopModel, labelText, conf) { }); } - let txt = getTextObj(); + let txt = svgDrawCommon.getTextObj(); txt.text = labelText; txt.x = loopModel.startx; txt.y = loopModel.starty; @@ -610,7 +578,7 @@ export const drawLoop = function (elem, loopModel, labelText, conf) { txt.class = 'labelText'; drawLabel(g, txt); - txt = getTextObj(); + txt = svgDrawCommon.getTextObj(); txt.text = loopModel.title; txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2; txt.y = loopModel.starty + boxMargin + boxTextMargin; @@ -661,16 +629,7 @@ export const drawLoop = function (elem, loopModel, labelText, conf) { * @param {any} bounds Shape of the rectangle */ export const drawBackgroundRect = function (elem, bounds) { - const rectElem = drawRect(elem, { - x: bounds.startx, - y: bounds.starty, - width: bounds.stopx - bounds.startx, - height: bounds.stopy - bounds.starty, - fill: bounds.fill, - stroke: bounds.stroke, - class: 'rect', - }); - rectElem.lower(); + svgDrawCommon.drawBackgroundRect(elem, bounds); }; export const insertDatabaseIcon = function (elem) { @@ -737,6 +696,7 @@ export const insertArrowHead = function (elem) { .append('path') .attr('d', 'M 0 0 L 10 5 L 0 10 z'); // this is actual shape for arrowhead }; + /** * Setup arrow head and define the marker. The result is appended to the svg. * @@ -755,6 +715,7 @@ export const insertArrowFilledHead = function (elem) { .append('path') .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z'); }; + /** * Setup node number. The result is appended to the svg. * @@ -776,6 +737,7 @@ export const insertSequenceNumber = function (elem) { .attr('r', 6); // .style("fill", '#f00'); }; + /** * Setup cross head and define the marker. The result is appended to the svg. * @@ -802,37 +764,6 @@ export const insertArrowCrossHead = function (elem) { // this is actual shape for arrowhead }; -export const getTextObj = function () { - return { - x: 0, - y: 0, - fill: undefined, - anchor: undefined, - style: '#666', - width: undefined, - height: undefined, - textMargin: 0, - rx: 0, - ry: 0, - tspan: true, - valign: undefined, - }; -}; - -export const getNoteRect = function () { - return { - x: 0, - y: 0, - fill: '#EDF2AE', - stroke: '#666', - width: 100, - anchor: 'start', - height: 100, - rx: 0, - ry: 0, - }; -}; - const _drawTextCandidateFunc = (function () { /** * @param {any} content @@ -1062,8 +993,6 @@ export default { drawActor, drawBox, drawPopup, - drawImage, - drawEmbeddedImage, anchorElement, drawActivation, drawLoop, @@ -1075,8 +1004,6 @@ export default { insertDatabaseIcon, insertComputerIcon, insertClockIcon, - getTextObj, - getNoteRect, popupMenu, popdownMenu, fixLifeLineHeights, diff --git a/packages/mermaid/src/diagrams/sequence/svgDraw.spec.js b/packages/mermaid/src/diagrams/sequence/svgDraw.spec.js index ed60285ed..648ee58f8 100644 --- a/packages/mermaid/src/diagrams/sequence/svgDraw.spec.js +++ b/packages/mermaid/src/diagrams/sequence/svgDraw.spec.js @@ -174,16 +174,4 @@ describe('svgDraw', function () { expect(rect.lower).toHaveBeenCalled(); }); }); - describe('sanitizeUrl', function () { - it('should sanitize malicious urls', function () { - const maliciousStr = 'javascript:script:alert(1)'; - const result = svgDraw.sanitizeUrl(maliciousStr); - expect(result).not.toContain('javascript:alert(1)'); - }); - it('should not sanitize non dangerous urls', function () { - const maliciousStr = 'javajavascript:script:alert(1)'; - const result = svgDraw.sanitizeUrl(maliciousStr); - expect(result).not.toContain('javascript:alert(1)'); - }); - }); }); diff --git a/packages/mermaid/src/diagrams/user-journey/svgDraw.js b/packages/mermaid/src/diagrams/user-journey/svgDraw.js index f6dbe71e1..108f4b2f9 100644 --- a/packages/mermaid/src/diagrams/user-journey/svgDraw.js +++ b/packages/mermaid/src/diagrams/user-journey/svgDraw.js @@ -1,21 +1,8 @@ import { arc as d3arc } from 'd3'; +import * as svgDrawCommon from '../common/svgDrawCommon'; export const drawRect = function (elem, rectData) { - const rectElem = elem.append('rect'); - rectElem.attr('x', rectData.x); - rectElem.attr('y', rectData.y); - rectElem.attr('fill', rectData.fill); - rectElem.attr('stroke', rectData.stroke); - rectElem.attr('width', rectData.width); - rectElem.attr('height', rectData.height); - rectElem.attr('rx', rectData.rx); - rectElem.attr('ry', rectData.ry); - - if (rectData.class !== undefined) { - rectElem.attr('class', rectData.class); - } - - return rectElem; + return svgDrawCommon.drawRect(elem, rectData); }; export const drawFace = function (element, faceData) { @@ -128,25 +115,7 @@ export const drawCircle = function (element, circleData) { }; export const drawText = function (elem, textData) { - // Remove and ignore br:s - const nText = textData.text.replace(//gi, ' '); - - const textElem = elem.append('text'); - textElem.attr('x', textData.x); - textElem.attr('y', textData.y); - textElem.attr('class', 'legend'); - - textElem.style('text-anchor', textData.anchor); - - if (textData.class !== undefined) { - textElem.attr('class', textData.class); - } - - const span = textElem.append('tspan'); - span.attr('x', textData.x + textData.textMargin * 2); - span.text(nText); - - return textElem; + return svgDrawCommon.drawText(elem, textData); }; export const drawLabel = function (elem, txtObject) { @@ -192,7 +161,7 @@ export const drawLabel = function (elem, txtObject) { export const drawSection = function (elem, section, conf) { const g = elem.append('g'); - const rect = getNoteRect(); + const rect = svgDrawCommon.getNoteRect(); rect.x = section.x; rect.y = section.y; rect.fill = section.fill; @@ -249,7 +218,7 @@ export const drawTask = function (elem, task, conf) { score: task.score, }); - const rect = getNoteRect(); + const rect = svgDrawCommon.getNoteRect(); rect.x = task.x; rect.y = task.y; rect.fill = task.fill; @@ -298,41 +267,7 @@ export const drawTask = function (elem, task, conf) { * @param {any} bounds The bounds of the drawing */ export const drawBackgroundRect = function (elem, bounds) { - const rectElem = drawRect(elem, { - x: bounds.startx, - y: bounds.starty, - width: bounds.stopx - bounds.startx, - height: bounds.stopy - bounds.starty, - fill: bounds.fill, - class: 'rect', - }); - rectElem.lower(); -}; - -export const getTextObj = function () { - return { - x: 0, - y: 0, - fill: undefined, - 'text-anchor': 'start', - width: 100, - height: 100, - textMargin: 0, - rx: 0, - ry: 0, - }; -}; - -export const getNoteRect = function () { - return { - x: 0, - y: 0, - width: 100, - anchor: 'start', - height: 100, - rx: 0, - ry: 0, - }; + svgDrawCommon.drawBackgroundRect(elem, bounds); }; const _drawTextCandidateFunc = (function () { @@ -475,7 +410,5 @@ export default { drawLabel, drawTask, drawBackgroundRect, - getTextObj, - getNoteRect, initGraphics, }; From fd6d1941b7e4102ec2beda8bd7bbb54309911910 Mon Sep 17 00:00:00 2001 From: Steph <35910788+huynhicode@users.noreply.github.com> Date: Tue, 18 Apr 2023 12:39:35 -0700 Subject: [PATCH 037/255] Docs: Flowchart - minor verbiage update Minor verbiage update to Flowchart doc --- packages/mermaid/src/docs/syntax/flowchart.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/mermaid/src/docs/syntax/flowchart.md b/packages/mermaid/src/docs/syntax/flowchart.md index bdc4a2fa0..e8f3b11d1 100644 --- a/packages/mermaid/src/docs/syntax/flowchart.md +++ b/packages/mermaid/src/docs/syntax/flowchart.md @@ -5,11 +5,9 @@ outline: 'deep' # shows all h3 headings in outline in Vitepress # Flowcharts - Basic Syntax -All Flowcharts are composed of **nodes**, the geometric shapes and **edges**, the arrows or lines. The mermaid code defines the way that these **nodes** and **edges** are made and interact. +Flowcharts are composed of **nodes** (geometric shapes) and **edges** (arrows or lines). The Mermaid code defines how nodes and edges are made and accommodates different arrow types, multi-directional arrows, and any linking to and from subgraphs. -It can also accommodate different arrow types, multi directional arrows, and linking to and from subgraphs. - -> **Important note**: Do not type the word "end" as a Flowchart node. Capitalize all or any one the letters to keep the flowchart from breaking, i.e, "End" or "END". Or you can apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). +> **Important**: If you are using the word "end" in a Flowchart node, capitalize the entire word or any of the letters (e.g., "End" or "END"), or apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). Typing "end" in all lowercase letters will break the Flowchart. ### A node (default) From be69f494b713e2078ecc64a2e1981493867717f2 Mon Sep 17 00:00:00 2001 From: huynhicode Date: Tue, 18 Apr 2023 19:43:30 +0000 Subject: [PATCH 038/255] Update docs --- docs/syntax/flowchart.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/syntax/flowchart.md b/docs/syntax/flowchart.md index d10b2c6c5..dd94d8138 100644 --- a/docs/syntax/flowchart.md +++ b/docs/syntax/flowchart.md @@ -6,11 +6,9 @@ # Flowcharts - Basic Syntax -All Flowcharts are composed of **nodes**, the geometric shapes and **edges**, the arrows or lines. The mermaid code defines the way that these **nodes** and **edges** are made and interact. +Flowcharts are composed of **nodes** (geometric shapes) and **edges** (arrows or lines). The Mermaid code defines how nodes and edges are made and accommodates different arrow types, multi-directional arrows, and any linking to and from subgraphs. -It can also accommodate different arrow types, multi directional arrows, and linking to and from subgraphs. - -> **Important note**: Do not type the word "end" as a Flowchart node. Capitalize all or any one the letters to keep the flowchart from breaking, i.e, "End" or "END". Or you can apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). +> **Important**: If you are using the word "end" in a Flowchart node, capitalize the entire word or any of the letters (e.g., "End" or "END"), or apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). Typing "end" in all lowercase letters will break the Flowchart. ### A node (default) From 12ed81855a90c7dd2d8ce2f74d7e60270da80ff3 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sun, 23 Apr 2023 00:34:59 +0530 Subject: [PATCH 039/255] Add zenuml --- .vite/build.ts | 6 + .vite/server.ts | 1 + cSpell.json | 4 +- demos/index.html | 3 + demos/zenuml.html | 53 ++ packages/mermaid-zenuml/package.json | 47 ++ packages/mermaid-zenuml/src/detector.ts | 21 + packages/mermaid-zenuml/src/mermaidUtils.ts | 58 ++ packages/mermaid-zenuml/src/parser.ts | 10 + .../mermaid-zenuml/src/zenuml-definition.ts | 17 + packages/mermaid-zenuml/src/zenumlRenderer.ts | 68 +++ packages/mermaid-zenuml/tsconfig.json | 9 + pnpm-lock.yaml | 514 ++++++++++++++---- 13 files changed, 698 insertions(+), 113 deletions(-) create mode 100644 demos/zenuml.html create mode 100644 packages/mermaid-zenuml/package.json create mode 100644 packages/mermaid-zenuml/src/detector.ts create mode 100644 packages/mermaid-zenuml/src/mermaidUtils.ts create mode 100644 packages/mermaid-zenuml/src/parser.ts create mode 100644 packages/mermaid-zenuml/src/zenuml-definition.ts create mode 100644 packages/mermaid-zenuml/src/zenumlRenderer.ts create mode 100644 packages/mermaid-zenuml/tsconfig.json diff --git a/.vite/build.ts b/.vite/build.ts index 183158288..dcbf0feff 100644 --- a/.vite/build.ts +++ b/.vite/build.ts @@ -43,6 +43,11 @@ const packageOptions = { packageName: 'mermaid-example-diagram', file: 'detector.ts', }, + 'mermaid-zenuml': { + name: 'mermaid-zenuml', + packageName: 'mermaid-zenuml', + file: 'detector.ts', + }, }; interface BuildOptions { @@ -139,6 +144,7 @@ if (watch) { build(getBuildConfig({ minify: false, watch, core: false, entryName: 'mermaid' })); if (!mermaidOnly) { build(getBuildConfig({ minify: false, watch, entryName: 'mermaid-example-diagram' })); + build(getBuildConfig({ minify: false, watch, entryName: 'mermaid-zenuml' })); } } else if (visualize) { await build(getBuildConfig({ minify: false, core: true, entryName: 'mermaid' })); diff --git a/.vite/server.ts b/.vite/server.ts index 5a86b3d5b..41e510c83 100644 --- a/.vite/server.ts +++ b/.vite/server.ts @@ -15,6 +15,7 @@ async function createServer() { app.use(cors()); app.use(express.static('./packages/mermaid/dist')); + app.use(express.static('./packages/mermaid-zenuml/dist')); app.use(express.static('./packages/mermaid-example-diagram/dist')); app.use(vite.middlewares); app.use(express.static('demos')); diff --git a/cSpell.json b/cSpell.json index 94276b683..2c44fbbe3 100644 --- a/cSpell.json +++ b/cSpell.json @@ -6,6 +6,7 @@ "adamiecki", "alois", "antiscript", + "antlr", "appli", "applitools", "asciidoctor", @@ -110,7 +111,8 @@ "visio", "vitepress", "xlink", - "yash" + "yash", + "zenuml" ], "patterns": [ { "name": "Markdown links", "pattern": "\\((.*)\\)", "description": "" }, diff --git a/demos/index.html b/demos/index.html index da27cdcff..65c0f431a 100644 --- a/demos/index.html +++ b/demos/index.html @@ -63,6 +63,9 @@
  • State

  • +
  • +

    ZenUML

    +
  • diff --git a/demos/zenuml.html b/demos/zenuml.html new file mode 100644 index 000000000..a567d38fe --- /dev/null +++ b/demos/zenuml.html @@ -0,0 +1,53 @@ + + + + + + Mermaid Zenuml Test Page + + + +

    Zenuml demos

    +
    +		zenuml
    +      title Sync Messages (Design Pattern: Adapter)
    +			@Starter(Client)
    +      Adapter.interfaceMethod() {
    +        translateParameter(parameter)
    +
    +        result = Implementation.implementationMethod()
    +
    +        translateResult()
    +        return translatedResult
    +      }
    +    
    +
    +		zenuml
    +      title Async Messages (SPA Authentication)
    +      // ```
    +      // GET https://${account.namespace}/authorize/?
    +      // response_type=token
    +      // &client_id=${account.clientId}
    +      // &redirect_url=YOUR_CALLBACK_URL
    +      // &state=VALUE_THAT_SURVIVES_REDIRECTS
    +      // &scope=openid
    +      // ```
    +      Browser->Auth0: 1. initiate the authentication
    +      Auth0->"Identity Provider": 2. OAuth2 / SAML, etc
    +      "Identity Provider"->"Identity Provider": 3. user gets authenticated
    +      Auth0->Browser: 4. redirect to ${YOUR_CALLBACK_URL}/#id_token=e68...
    +      Browser->Auth0: 5. validate id_token and get user profile
    +      Browser->"Your API": 6. call API sending JWT in Authorization header
    +      "Your API"->"Your API": 7. validate token
    +    
    + + + + diff --git a/packages/mermaid-zenuml/package.json b/packages/mermaid-zenuml/package.json new file mode 100644 index 000000000..d4a2e9438 --- /dev/null +++ b/packages/mermaid-zenuml/package.json @@ -0,0 +1,47 @@ +{ + "name": "@mermaid-js/mermaid-zenuml", + "version": "0.0.1", + "description": "Zenuml integration for MermaidJS.", + "module": "dist/mermaid-zenuml.core.mjs", + "types": "dist/detector.d.ts", + "type": "module", + "exports": { + ".": { + "import": "./dist/mermaid-zenuml.core.mjs", + "types": "./dist/detector.d.ts" + }, + "./*": "./*" + }, + "keywords": [ + "diagram", + "markdown", + "zenuml", + "mermaid" + ], + "scripts": { + "prepublishOnly": "pnpm -w run build" + }, + "repository": { + "type": "git", + "url": "https://github.com/mermaid-js/mermaid" + }, + "author": "Peng Xiao", + "license": "MIT", + "standard": { + "ignore": [ + "dist/**/*.js" + ], + "globals": [ + "page" + ] + }, + "dependencies": { + "@zenuml/core": "^2.0.36" + }, + "devDependencies": { + "mermaid": "workspace:*" + }, + "files": [ + "dist" + ] +} diff --git a/packages/mermaid-zenuml/src/detector.ts b/packages/mermaid-zenuml/src/detector.ts new file mode 100644 index 000000000..b22af469f --- /dev/null +++ b/packages/mermaid-zenuml/src/detector.ts @@ -0,0 +1,21 @@ +import type { ExternalDiagramDefinition } from 'mermaid'; + +const id = 'zenuml'; +const regexp = /^\s*zenuml/; + +const detector = (txt: string) => { + return txt.match(regexp) !== null; +}; + +const loader = async () => { + const { diagram } = await import('./zenuml-definition.js'); + return { id, diagram }; +}; + +const plugin: ExternalDiagramDefinition = { + id, + detector, + loader, +}; + +export default plugin; diff --git a/packages/mermaid-zenuml/src/mermaidUtils.ts b/packages/mermaid-zenuml/src/mermaidUtils.ts new file mode 100644 index 000000000..623685879 --- /dev/null +++ b/packages/mermaid-zenuml/src/mermaidUtils.ts @@ -0,0 +1,58 @@ +import type { MermaidConfig } from 'mermaid'; + +const warning = (s: string) => { + // Todo remove debug code + // eslint-disable-next-line no-console + console.error('Log function was called before initialization', s); +}; + +export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal'; + +export const LEVELS: Record = { + trace: 0, + debug: 1, + info: 2, + warn: 3, + error: 4, + fatal: 5, +}; + +export const log: Record = { + trace: warning, + debug: warning, + info: warning, + warn: warning, + error: warning, + fatal: warning, +}; + +export let setLogLevel: (level: keyof typeof LEVELS | number | string) => void; +export let getConfig: () => MermaidConfig; +export let sanitizeText: (str: string) => string; +// eslint-disable @typescript-eslint/no-explicit-any +export let setupGraphViewbox: ( + graph: any, + svgElem: any, + padding: any, + useMaxWidth: boolean +) => void; + +export const injectUtils = ( + _log: Record, + _setLogLevel: any, + _getConfig: any, + _sanitizeText: any, + _setupGraphViewbox: any +) => { + _log.info('Mermaid utils injected'); + log.trace = _log.trace; + log.debug = _log.debug; + log.info = _log.info; + log.warn = _log.warn; + log.error = _log.error; + log.fatal = _log.fatal; + setLogLevel = _setLogLevel; + getConfig = _getConfig; + sanitizeText = _sanitizeText; + setupGraphViewbox = _setupGraphViewbox; +}; diff --git a/packages/mermaid-zenuml/src/parser.ts b/packages/mermaid-zenuml/src/parser.ts new file mode 100644 index 000000000..6a97991c6 --- /dev/null +++ b/packages/mermaid-zenuml/src/parser.ts @@ -0,0 +1,10 @@ +// ZenUML manage parsing internally. It uses Antlr4 to parse the DSL. +// The parser is defined in https://github.com/ZenUml/vue-sequence/blob/main/src/parser/index.js + +// This is a dummy parser that satisfies the mermaid API logic. +export default { + parser: { yy: {} }, + parse: () => { + // no op + }, +}; diff --git a/packages/mermaid-zenuml/src/zenuml-definition.ts b/packages/mermaid-zenuml/src/zenuml-definition.ts new file mode 100644 index 000000000..ab287ff81 --- /dev/null +++ b/packages/mermaid-zenuml/src/zenuml-definition.ts @@ -0,0 +1,17 @@ +import { injectUtils } from './mermaidUtils.js'; +import parser from './parser.js'; +import renderer from './zenumlRenderer.js'; + +export const diagram = { + db: { + clear: () => { + // no-op + }, + }, + renderer, + parser, + styles: () => { + // no-op + }, + injectUtils, +}; diff --git a/packages/mermaid-zenuml/src/zenumlRenderer.ts b/packages/mermaid-zenuml/src/zenumlRenderer.ts new file mode 100644 index 000000000..8ea5f4331 --- /dev/null +++ b/packages/mermaid-zenuml/src/zenumlRenderer.ts @@ -0,0 +1,68 @@ +import { getConfig, log } from './mermaidUtils.js'; +import ZenUml from '@zenuml/core'; + +const regexp = /^\s*zenuml/; + +// Create a Zen UML container outside the svg first for rendering, otherwise the Zen UML diagram cannot be rendered properly +function createTemporaryZenumlContainer(id: string) { + const container = document.createElement('div'); + container.id = `container-${id}`; + container.style.display = 'flex'; + container.innerHTML = `
    `; + const app = container.querySelector(`#zenUMLApp-${id}`) as HTMLElement; + return { container, app }; +} + +// Create a foreignObject to wrap the Zen UML container in the svg +function createForeignObject(id: string) { + const foreignObject = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'); + foreignObject.setAttribute('x', '0'); + foreignObject.setAttribute('y', '0'); + foreignObject.setAttribute('width', '100%'); + foreignObject.setAttribute('height', '100%'); + const { container, app } = createTemporaryZenumlContainer(id); + foreignObject.appendChild(container); + return { foreignObject, container, app }; +} + +/** + * Draws a Zen UML in the tag with id: id based on the graph definition in text. + * + * @param text - The text of the diagram + * @param id - The id of the diagram which will be used as a DOM element id¨ + */ +export const draw = async function (text: string, id: string) { + log.info('draw with Zen UML renderer', ZenUml); + + text = text.replace(regexp, ''); + const { securityLevel } = getConfig(); + // Handle root and Document for when rendering in sandbox mode + let sandboxElement: HTMLIFrameElement | null = null; + if (securityLevel === 'sandbox') { + sandboxElement = document.getElementById('i' + id) as HTMLIFrameElement; + } + + const root = securityLevel === 'sandbox' ? sandboxElement?.contentWindow?.document : document; + + const svgContainer = root?.querySelector(`svg#${id}`); + + if (!root || !svgContainer) { + log.error('Cannot find root or svgContainer'); + return; + } + + const { foreignObject, container, app } = createForeignObject(id); + svgContainer.appendChild(foreignObject); + + const zenuml = new ZenUml(app); + // default is a theme name. More themes to be added and will be configurable in the future + await zenuml.render(text, 'theme-mermaid'); + + const { width, height } = window.getComputedStyle(container); + log.debug('zenuml diagram size', width, height); + svgContainer.setAttribute('style', `width: ${width}; height: ${height};`); +}; + +export default { + draw, +}; diff --git a/packages/mermaid-zenuml/tsconfig.json b/packages/mermaid-zenuml/tsconfig.json new file mode 100644 index 000000000..45076b7b5 --- /dev/null +++ b/packages/mermaid-zenuml/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist" + }, + "include": ["./src/**/*.ts"], + "typeRoots": ["./src/types"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6ce888612..33317d133 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -256,6 +256,15 @@ importers: mermaid: link:../mermaid rimraf: 4.1.2 + packages/mermaid-zenuml: + specifiers: + '@zenuml/core': ^2.0.36 + mermaid: workspace:* + dependencies: + '@zenuml/core': 2.0.36 + devDependencies: + mermaid: link:../mermaid + tests/webpack: specifiers: '@mermaid-js/mermaid-example-diagram': workspace:* @@ -854,12 +863,10 @@ packages: /@babel/helper-string-parser/7.18.10: resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-validator-identifier/7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} - dev: true /@babel/helpers/7.19.0: resolution: {integrity: sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==} @@ -887,7 +894,6 @@ packages: hasBin: true dependencies: '@babel/types': 7.19.0 - dev: true /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.12.3: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -1052,7 +1058,6 @@ packages: '@babel/helper-string-parser': 7.18.10 '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - dev: true /@bcoe/v8-coverage/0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -2515,17 +2520,14 @@ packages: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.14 '@jridgewell/trace-mapping': 0.3.15 - dev: true /@jridgewell/resolve-uri/3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/set-array/1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/source-map/0.3.2: resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} @@ -2536,14 +2538,12 @@ packages: /@jridgewell/sourcemap-codec/1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true /@jridgewell/trace-mapping/0.3.15: resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - dev: true /@jridgewell/trace-mapping/0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -2586,12 +2586,10 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true /@nodelib/fs.stat/2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true /@nodelib/fs.walk/1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -2599,7 +2597,6 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 - dev: true /@polka/url/1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} @@ -2709,6 +2706,10 @@ packages: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} dev: true + /@types/assert/1.5.6: + resolution: {integrity: sha512-Y7gDJiIqb9qKUHfBQYOWGngUpLORtirAVPuj/CWJrU2C6ZM4/y3XLwuwfGMF8s7QzW746LQZx23m0+1FSgjfug==} + dev: false + /@types/babel__core/7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: @@ -3186,6 +3187,12 @@ packages: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: true + /@types/ramda/0.28.25: + resolution: {integrity: sha512-HrQNqQAGcITpn9HAJFamDxm7iZeeXiP/95pN5OMbNniDjzCCeOHbBKNGmUy8NRi0fhYS+/cXeo91MFC+06gbow==} + dependencies: + ts-toolbelt: 6.15.5 + dev: false + /@types/range-parser/1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true @@ -3624,6 +3631,17 @@ packages: pretty-format: 27.5.1 dev: true + /@vue/compat/3.2.47_vue@3.2.47: + resolution: {integrity: sha512-spULbnhceN3fIGYRRgq75RPRqsakfUV0tyZ4zTweOB48bWtwHUn677exg8/58uLOBc1F5B5lXTD5qf7epqpTuw==} + peerDependencies: + vue: 3.2.47 + dependencies: + '@babel/parser': 7.19.1 + estree-walker: 2.0.2 + source-map: 0.6.1 + vue: 3.2.47 + dev: false + /@vue/compiler-core/3.2.47: resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} dependencies: @@ -3631,14 +3649,12 @@ packages: '@vue/shared': 3.2.47 estree-walker: 2.0.2 source-map: 0.6.1 - dev: true /@vue/compiler-dom/3.2.47: resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==} dependencies: '@vue/compiler-core': 3.2.47 '@vue/shared': 3.2.47 - dev: true /@vue/compiler-sfc/3.2.47: resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} @@ -3653,18 +3669,15 @@ packages: magic-string: 0.25.9 postcss: 8.4.21 source-map: 0.6.1 - dev: true /@vue/compiler-ssr/3.2.47: resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==} dependencies: '@vue/compiler-dom': 3.2.47 '@vue/shared': 3.2.47 - dev: true /@vue/devtools-api/6.5.0: resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} - dev: true /@vue/reactivity-transform/3.2.47: resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} @@ -3674,20 +3687,17 @@ packages: '@vue/shared': 3.2.47 estree-walker: 2.0.2 magic-string: 0.25.9 - dev: true /@vue/reactivity/3.2.47: resolution: {integrity: sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==} dependencies: '@vue/shared': 3.2.47 - dev: true /@vue/runtime-core/3.2.47: resolution: {integrity: sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==} dependencies: '@vue/reactivity': 3.2.47 '@vue/shared': 3.2.47 - dev: true /@vue/runtime-dom/3.2.47: resolution: {integrity: sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==} @@ -3695,7 +3705,6 @@ packages: '@vue/runtime-core': 3.2.47 '@vue/shared': 3.2.47 csstype: 2.6.21 - dev: true /@vue/server-renderer/3.2.47_vue@3.2.47: resolution: {integrity: sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==} @@ -3705,11 +3714,9 @@ packages: '@vue/compiler-ssr': 3.2.47 '@vue/shared': 3.2.47 vue: 3.2.47 - dev: true /@vue/shared/3.2.47: resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} - dev: true /@vueuse/core/10.0.2_vue@3.2.47: resolution: {integrity: sha512-/UGc2cXbxbeIFLDSJyHUjI9QZ4CJJkhiJe9TbKNPSofcWmYhhUgJ+7iw9njXTKu/Xc3Z6UeXVR9fosW1+cyrnQ==} @@ -3924,6 +3931,31 @@ packages: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} dev: true + /@zenuml/core/2.0.36: + resolution: {integrity: sha512-JcvSa3ZYlpQZGnt9pwv0veSoSay3raKis9Y9rvbvSY31qE2sZvAjjbfHC0oj6R5PVN9GKHf/7ETfNZ7oASakQg==} + engines: {node: '>=12.0.0'} + dependencies: + '@types/assert': 1.5.6 + '@types/ramda': 0.28.25 + '@vue/compat': 3.2.47_vue@3.2.47 + antlr4: 4.12.0 + color-string: 1.9.1 + dom-to-image-more: 2.16.0 + file-saver: 2.0.5 + highlight.js: 10.7.3 + html-to-image: 1.11.11 + lodash: 4.17.21 + marked: 4.1.1 + pino: 8.11.0 + postcss: 8.4.21 + ramda: 0.28.0 + tailwindcss: 3.3.1_postcss@8.4.21 + vue: 3.2.47 + vuex: 4.1.0_vue@3.2.47 + transitivePeerDependencies: + - ts-node + dev: false + /JSONSelect/0.4.0: resolution: {integrity: sha512-VRLR3Su35MH+XV2lrvh9O7qWoug/TUyj9tLDjn9rtpUCNnILLrHjgd/tB0KrhugCxUpj3UqoLqfYb3fLJdIQQQ==} engines: {node: '>=0.4.7'} @@ -3950,7 +3982,6 @@ packages: engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 - dev: true /accepts/1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} @@ -4180,13 +4211,21 @@ packages: engines: {node: '>=12'} dev: true + /antlr4/4.12.0: + resolution: {integrity: sha512-23iB5IzXJZRZeK9TigzUyrNc9pSmNqAerJRBcNq1ETrmttMWRgaYZzC561IgEO3ygKsDJTYDTozABXa4b/fTQQ==} + engines: {node: '>=16'} + dev: false + + /any-promise/1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: false + /anymatch/3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: true /app-path/3.3.0: resolution: {integrity: sha512-EAgEXkdcxH1cgEePOSsmUtw9ItPl0KTxnh/pj9ZbhvbKbij9x0oX6PWpGnorDr0DS5AosLgoa5n3T/hZmKQpYA==} @@ -4205,7 +4244,6 @@ packages: /arg/5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - dev: true /argparse/1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -4288,6 +4326,11 @@ packages: engines: {node: '>= 4.0.0'} dev: true + /atomic-sleep/1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + dev: false + /aws-sign2/0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} dev: true @@ -4299,7 +4342,7 @@ packages: /axios/0.21.4_debug@4.3.2: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} dependencies: - follow-redirects: 1.15.2_debug@4.3.2 + follow-redirects: 1.15.2_debug@4.3.4 transitivePeerDependencies: - debug dev: true @@ -4391,11 +4434,9 @@ packages: /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true /base64-js/1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true /batch/0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} @@ -4410,7 +4451,6 @@ packages: /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - dev: true /binary-searching/2.0.5: resolution: {integrity: sha512-v4N2l3RxL+m4zDxyxz3Ne2aTmiPn8ZUpKFpdPtO+ItW1NcTCXA7JeHG5GMBSvoKSkQZ9ycS+EouDVxYB9ufKWA==} @@ -4462,7 +4502,6 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true /brace-expansion/2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -4475,7 +4514,6 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - dev: true /browser-process-hrtime/1.0.0: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} @@ -4513,6 +4551,13 @@ packages: ieee754: 1.2.1 dev: true + /buffer/6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + /builtin-modules/3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} @@ -4587,6 +4632,11 @@ packages: engines: {node: '>=6'} dev: true + /camelcase-css/2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: false + /camelcase-keys/6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} @@ -4720,7 +4770,6 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 - dev: true /chrome-trace-event/1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} @@ -4869,7 +4918,13 @@ packages: /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true + + /color-string/1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false /colorette/2.0.19: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} @@ -4891,6 +4946,11 @@ packages: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true + /commander/4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: false + /commander/5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} @@ -4962,7 +5022,6 @@ packages: /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} - dev: true /concurrently/8.0.1: resolution: {integrity: sha512-Sh8bGQMEL0TAmAm2meAXMjcASHZa7V0xXQVDBLknCPa9TPtkY9yYs+0cnGGgfdkW0SV1Mlg+hVGfXcoI8d3MJA==} @@ -5400,6 +5459,12 @@ packages: source-map-js: 1.0.2 dev: true + /cssesc/3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: false + /cssom/0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true @@ -5427,7 +5492,6 @@ packages: /csstype/2.6.21: resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} - dev: true /csstype/3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} @@ -6001,6 +6065,10 @@ packages: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} dev: true + /didyoumean/1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: false + /diff-sequences/29.3.1: resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6023,6 +6091,10 @@ packages: path-type: 4.0.0 dev: true + /dlv/1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: false + /dns-equal/1.0.0: resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} dev: true @@ -6049,6 +6121,10 @@ packages: entities: 4.4.0 dev: true + /dom-to-image-more/2.16.0: + resolution: {integrity: sha512-RyjtkaM/zVy90uJ20lT+/G7MwBZx6l/ePliq5CQOeAnPeew7aUGS6IqRWBkHpstU+POmhaKA8A9H9qf476gisQ==} + dev: false + /domelementtype/2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: true @@ -6606,7 +6682,6 @@ packages: /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true /esutils/1.0.0: resolution: {integrity: sha512-x/iYH53X3quDwfHRz4y8rn4XcEwwCJeWsul9pF1zldMbGtgOtMNBEOuYWwB1EQlK2LRa1fev3YAgym/RElp5Cg==} @@ -6638,7 +6713,6 @@ packages: /event-target-shim/5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - dev: true /eventemitter2/6.4.7: resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} @@ -6651,7 +6725,6 @@ packages: /events/3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - dev: true /execa/1.0.0: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} @@ -6813,7 +6886,6 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: true /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -6823,6 +6895,11 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true + /fast-redact/3.1.2: + resolution: {integrity: sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==} + engines: {node: '>=6'} + dev: false + /fastest-levenshtein/1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -6832,7 +6909,6 @@ packages: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: reusify: 1.0.4 - dev: true /fault/2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} @@ -6873,6 +6949,10 @@ packages: flat-cache: 3.0.4 dev: true + /file-saver/2.0.5: + resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} + dev: false + /file-uri-to-path/2.0.0: resolution: {integrity: sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==} engines: {node: '>= 6'} @@ -6883,7 +6963,6 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: true /finalhandler/1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} @@ -6939,28 +7018,6 @@ packages: resolution: {integrity: sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==} dev: true - /follow-redirects/1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: true - - /follow-redirects/1.15.2_debug@4.3.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dependencies: - debug: 4.3.2 - dev: true - /follow-redirects/1.15.2_debug@4.3.4: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} @@ -7074,14 +7131,12 @@ packages: /fs.realpath/1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true /fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true /ftp/0.3.10: @@ -7094,7 +7149,6 @@ packages: /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true /gensequence/4.0.2: resolution: {integrity: sha512-mQiFskYFPFDSUpBJ/n3ebAV2Ufu6DZGvUPXzyWYzFfJr6/DyOOZVnjx6VTWE4y0RLvYWnc5tZq5sCjzEWhRjqQ==} @@ -7200,19 +7254,28 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - dev: true /glob-parent/6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 - dev: true /glob-to-regexp/0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: true + /glob/7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + /glob/7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -7381,12 +7444,15 @@ packages: engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - dev: true /heap/0.2.7: resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} dev: false + /highlight.js/10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + dev: false + /hosted-git-info/2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true @@ -7422,6 +7488,10 @@ packages: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true + /html-to-image/1.11.11: + resolution: {integrity: sha512-9gux8QhvjRO/erSnDPv28noDZcPZmYE7e1vFsBLKLlRlKDSqNJYebj6Qz1TGd5lsRV+X+xYyjCKjuZdABinWjA==} + dev: false + /htmlparser2/8.0.1: resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} dependencies: @@ -7510,7 +7580,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.2 + follow-redirects: 1.15.2_debug@4.3.4 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -7588,7 +7658,6 @@ packages: /ieee754/1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: true /ignore/5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} @@ -7632,7 +7701,6 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true /inherits/2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} @@ -7640,7 +7708,6 @@ packages: /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true /ini/1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} @@ -7694,12 +7761,15 @@ packages: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true + /is-arrayish/0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false + /is-binary-path/2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - dev: true /is-buffer/2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} @@ -7724,7 +7794,6 @@ packages: resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} dependencies: has: 1.0.3 - dev: true /is-decimal/1.0.4: resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} @@ -7739,7 +7808,6 @@ packages: /is-extglob/2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: true /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} @@ -7761,7 +7829,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true /is-hexadecimal/1.0.4: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} @@ -7778,7 +7845,6 @@ packages: /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true /is-obj/2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} @@ -8390,6 +8456,11 @@ packages: nomnom: 1.5.2 dev: true + /jiti/1.18.2: + resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} + hasBin: true + dev: false + /jju/1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true @@ -8680,9 +8751,13 @@ packages: engines: {node: '>=10'} dev: true + /lilconfig/2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: false + /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true /linkify-it/4.0.1: resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} @@ -8873,7 +8948,6 @@ packages: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 - dev: true /make-dir/3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} @@ -8929,7 +9003,6 @@ packages: resolution: {integrity: sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==} engines: {node: '>= 12'} hasBin: true - dev: true /mdast-util-find-and-replace/2.2.1: resolution: {integrity: sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==} @@ -9122,7 +9195,6 @@ packages: /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: true /methods/1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} @@ -9401,7 +9473,6 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: true /mime-db/1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} @@ -9454,7 +9525,6 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - dev: true /minimatch/5.1.0: resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} @@ -9530,11 +9600,18 @@ packages: thunky: 1.1.0 dev: true + /mz/2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: false + /nanoid/3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: true /natural-compare-lite/1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} @@ -9625,7 +9702,6 @@ packages: /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - dev: true /normalize-url/6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} @@ -9665,6 +9741,11 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + /object-hash/3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: false + /object-inspect/1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} dev: true @@ -9673,6 +9754,10 @@ packages: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} dev: true + /on-exit-leak-free/2.1.0: + resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} + dev: false + /on-finished/2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -9689,7 +9774,6 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - dev: true /onetime/5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} @@ -9944,7 +10028,6 @@ packages: /path-is-absolute/1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - dev: true /path-key/2.0.1: resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} @@ -9963,7 +10046,6 @@ packages: /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true /path-to-regexp/0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} @@ -9998,12 +10080,10 @@ packages: /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: true /pidtree/0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} @@ -10014,12 +10094,38 @@ packages: /pify/2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - dev: true + + /pino-abstract-transport/1.0.0: + resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} + dependencies: + readable-stream: 4.3.0 + split2: 4.2.0 + dev: false + + /pino-std-serializers/6.2.0: + resolution: {integrity: sha512-IWgSzUL8X1w4BIWTwErRgtV8PyOGOOi60uqv0oKuS/fOA8Nco/OeI6lBuc4dyP8MMfdFwyHqTMcBIA7nDiqEqA==} + dev: false + + /pino/8.11.0: + resolution: {integrity: sha512-Z2eKSvlrl2rH8p5eveNUnTdd4AjJk8tAsLkHYZQKGHP4WTh2Gi1cOSOs3eWPqaj+niS3gj4UkoreoaWgF3ZWYg==} + hasBin: true + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.1.2 + on-exit-leak-free: 2.1.0 + pino-abstract-transport: 1.0.0 + pino-std-serializers: 6.2.0 + process-warning: 2.2.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.4.3 + sonic-boom: 3.3.0 + thread-stream: 2.3.0 + dev: false /pirates/4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} - dev: true /pixelmatch/5.3.0: resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==} @@ -10083,9 +10189,65 @@ packages: hasBin: true dev: true + /postcss-import/14.1.0_postcss@8.4.21: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.1 + dev: false + + /postcss-js/4.0.1_postcss@8.4.21: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.21 + dev: false + + /postcss-load-config/3.1.4_postcss@8.4.21: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + postcss: 8.4.21 + yaml: 1.10.2 + dev: false + + /postcss-nested/6.0.0_postcss@8.4.21: + resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-selector-parser/6.0.11: + resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: false + /postcss-value-parser/4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: true /postcss/8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} @@ -10094,7 +10256,6 @@ packages: nanoid: 3.3.4 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true /preact/10.11.0: resolution: {integrity: sha512-Fk6+vB2kb6mSJfDgODq0YDhMfl0HNtK5+Uc9QqECO4nlyPAQwCI+BKyWO//idA7ikV7o+0Fm6LQmNuQi1wXI1w==} @@ -10157,6 +10318,15 @@ packages: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true + /process-warning/2.2.0: + resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} + dev: false + + /process/0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: false + /prompts/2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -10251,7 +10421,10 @@ packages: /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true + + /quick-format-unescaped/4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + dev: false /quick-lru/4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} @@ -10261,7 +10434,10 @@ packages: /quick-lru/5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - dev: true + + /ramda/0.28.0: + resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} + dev: false /randombytes/2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -10314,6 +10490,12 @@ packages: object-assign: 4.1.1 prop-types: 15.8.1 + /read-cache/1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: false + /read-pkg-up/7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -10382,12 +10564,26 @@ packages: util-deprecate: 1.0.2 dev: true + /readable-stream/4.3.0: + resolution: {integrity: sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + dev: false + /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - dev: true + + /real-require/0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + dev: false /rechoir/0.7.1: resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==} @@ -10577,7 +10773,6 @@ packages: is-core-module: 2.10.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true /responselike/2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} @@ -10601,7 +10796,6 @@ packages: /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true /rfdc/1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} @@ -10674,7 +10868,6 @@ packages: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: true /rw/1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} @@ -10707,6 +10900,11 @@ packages: regexp-tree: 0.1.24 dev: true + /safe-stable-stringify/2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + dev: false + /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -10916,6 +11114,12 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true + /simple-swizzle/0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: false + /sirv/2.0.2: resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} engines: {node: '>= 10'} @@ -10997,10 +11201,15 @@ packages: smart-buffer: 4.2.0 dev: true + /sonic-boom/3.3.0: + resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==} + dependencies: + atomic-sleep: 1.0.0 + dev: false + /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - dev: true /source-map-support/0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} @@ -11033,7 +11242,6 @@ packages: /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true /source-map/0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} @@ -11043,7 +11251,6 @@ packages: /sourcemap-codec/1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead - dev: true /spawn-command/0.0.2-1: resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} @@ -11109,6 +11316,11 @@ packages: readable-stream: 3.6.0 dev: true + /split2/4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: false + /sprintf-js/1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true @@ -11314,6 +11526,20 @@ packages: resolution: {integrity: sha512-Nn2CCrG2ZaFziDxaZPN43CXqn+j7tcdjPFCkRBkFue8QYXC2HdEwnw5TCBo4yQZ2WxKYeSi0fdoOrtEqgDrXbA==} dev: false + /sucrase/3.32.0: + resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.2 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.5 + ts-interface-checker: 0.1.13 + dev: false + /supports-color/2.0.0: resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} engines: {node: '>=0.8.0'} @@ -11343,12 +11569,46 @@ packages: /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: true /symbol-tree/3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true + /tailwindcss/3.3.1_postcss@8.4.21: + resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==} + engines: {node: '>=12.13.0'} + hasBin: true + peerDependencies: + postcss: ^8.0.9 + dependencies: + arg: 5.0.2 + chokidar: 3.5.3 + color-name: 1.1.4 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.2.12 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.18.2 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.21 + postcss-import: 14.1.0_postcss@8.4.21 + postcss-js: 4.0.1_postcss@8.4.21 + postcss-load-config: 3.1.4_postcss@8.4.21 + postcss-nested: 6.0.0_postcss@8.4.21 + postcss-selector-parser: 6.0.11 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.1 + sucrase: 3.32.0 + transitivePeerDependencies: + - ts-node + dev: false + /tapable/2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -11415,6 +11675,25 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /thenify-all/1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: false + + /thenify/3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: false + + /thread-stream/2.3.0: + resolution: {integrity: sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==} + dependencies: + real-require: 0.2.0 + dev: false + /throat/6.0.1: resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==} dev: true @@ -11465,14 +11744,12 @@ packages: /to-fast-properties/2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - dev: true /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - dev: true /toidentifier/1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} @@ -11537,6 +11814,10 @@ packages: engines: {node: '>=6.10'} dev: false + /ts-interface-checker/0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: false + /ts-node/10.9.1_cbe7ovvae6zqfnmtgctpgpys54: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true @@ -11599,6 +11880,10 @@ packages: yn: 3.1.1 dev: true + /ts-toolbelt/6.15.5: + resolution: {integrity: sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==} + dev: false + /tslib/1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true @@ -11844,7 +12129,6 @@ packages: /util-deprecate/1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: true /utils-merge/1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} @@ -12193,7 +12477,15 @@ packages: '@vue/runtime-dom': 3.2.47 '@vue/server-renderer': 3.2.47_vue@3.2.47 '@vue/shared': 3.2.47 - dev: true + + /vuex/4.1.0_vue@3.2.47: + resolution: {integrity: sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.5.0 + vue: 3.2.47 + dev: false /w3c-hr-time/1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} @@ -12551,7 +12843,6 @@ packages: /wrappy/1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true /write-file-atomic/3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} @@ -12661,7 +12952,6 @@ packages: /yaml/1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - dev: true /yaml/2.1.1: resolution: {integrity: sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==} From b9e7ba023f3a9969166c54db577c0e4f9ad85633 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 26 Apr 2023 00:12:39 +0530 Subject: [PATCH 040/255] Update ZenUML --- packages/mermaid-zenuml/package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/mermaid-zenuml/package.json b/packages/mermaid-zenuml/package.json index d4a2e9438..67e6a6e38 100644 --- a/packages/mermaid-zenuml/package.json +++ b/packages/mermaid-zenuml/package.json @@ -36,7 +36,7 @@ ] }, "dependencies": { - "@zenuml/core": "^2.0.36" + "@zenuml/core": "^3.0.0" }, "devDependencies": { "mermaid": "workspace:*" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 33317d133..31b3ed24e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -258,10 +258,10 @@ importers: packages/mermaid-zenuml: specifiers: - '@zenuml/core': ^2.0.36 + '@zenuml/core': ^3.0.0 mermaid: workspace:* dependencies: - '@zenuml/core': 2.0.36 + '@zenuml/core': 3.0.0 devDependencies: mermaid: link:../mermaid @@ -3931,8 +3931,8 @@ packages: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} dev: true - /@zenuml/core/2.0.36: - resolution: {integrity: sha512-JcvSa3ZYlpQZGnt9pwv0veSoSay3raKis9Y9rvbvSY31qE2sZvAjjbfHC0oj6R5PVN9GKHf/7ETfNZ7oASakQg==} + /@zenuml/core/3.0.0: + resolution: {integrity: sha512-DLX3vFfrV66X0b2kv8MPy3//l4jSoEGuf/zK2m+4t4CvaQ3rArQgXOc5aywi8pRyF1GmCiqgnG9NMRZ6RfqboA==} engines: {node: '>=12.0.0'} dependencies: '@types/assert': 1.5.6 From 8b18fd93f409aa1499d0a228949dd05c7603478d Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 26 Apr 2023 00:20:00 +0530 Subject: [PATCH 041/255] Add test --- cypress/integration/rendering/zenuml.spec.js | 19 +++++++++++++++++++ cypress/platform/viewer.js | 3 ++- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 cypress/integration/rendering/zenuml.spec.js diff --git a/cypress/integration/rendering/zenuml.spec.js b/cypress/integration/rendering/zenuml.spec.js new file mode 100644 index 000000000..f317fbe82 --- /dev/null +++ b/cypress/integration/rendering/zenuml.spec.js @@ -0,0 +1,19 @@ +import { imgSnapshotTest } from '../../helpers/util.js'; + +describe('Zen UML', () => { + it('Basic Zen UML diagram', () => { + imgSnapshotTest( + ` + zenuml + A.method() { + if(x) { + B.method() { + selfCall() { return X } + } + } + } + `, + {} + ); + }); +}); diff --git a/cypress/platform/viewer.js b/cypress/platform/viewer.js index a99c150f1..0b566e329 100644 --- a/cypress/platform/viewer.js +++ b/cypress/platform/viewer.js @@ -1,5 +1,6 @@ import mermaid2 from './mermaid.esm.mjs'; import externalExample from '../../packages/mermaid-example-diagram/dist/mermaid-example-diagram.core.mjs'; +import zenUml from '../../packages/mermaid-zenuml/dist/mermaid-zenuml.core.mjs'; function b64ToUtf8(str) { return decodeURIComponent(escape(window.atob(str))); @@ -44,7 +45,7 @@ const contentLoaded = async function () { document.getElementsByTagName('body')[0].appendChild(div); } - await mermaid2.registerExternalDiagrams([externalExample]); + await mermaid2.registerExternalDiagrams([externalExample, zenUml]); mermaid2.initialize(graphObj.mermaid); await mermaid2.run(); } From 8cd48bf405b894a82ae84162a3b8a17eb3f70571 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 26 Apr 2023 00:31:00 +0530 Subject: [PATCH 042/255] Add docs --- .../img/zenuml-participant-annotators.png | Bin 0 -> 261239 bytes docs/syntax/zenuml.md | 410 ++++++++++++++++++ .../mermaid/src/docs/.vitepress/config.ts | 1 + .../src/docs/.vitepress/theme/mermaid.ts | 4 + .../img/zenuml-participant-annotators.png | Bin 0 -> 261239 bytes packages/mermaid/src/docs/syntax/zenuml.md | 297 +++++++++++++ 6 files changed, 712 insertions(+) create mode 100644 docs/syntax/img/zenuml-participant-annotators.png create mode 100644 docs/syntax/zenuml.md create mode 100644 packages/mermaid/src/docs/syntax/img/zenuml-participant-annotators.png create mode 100644 packages/mermaid/src/docs/syntax/zenuml.md diff --git a/docs/syntax/img/zenuml-participant-annotators.png b/docs/syntax/img/zenuml-participant-annotators.png new file mode 100644 index 0000000000000000000000000000000000000000..13789371f62ef2b95ac2d83c3fbb554dc8bea1b5 GIT binary patch literal 261239 zcmaI71zZ$i+b;~Lbcys5qJXGKcf%qj4U$qW-5pD}N-QNQ(%m9mk}KWa-5t_=gNn~{ z-gDk>f4j`g&fam=|El4mysS7DIw?8=0s@w#gs36{!UJmH^A!~t_{K%xr6mFadX@gXYrK$uAL%@erKxf@p&8d8K=unviU9i3W;_k45#)?>`I`A7kd` z_V=}Z)dZCYMwlmYhj!`MFI;DmJRQ+5S!m%??aZH_b~f>$RynzGA-kE3h!j0^UGs`V z^3(QaWwkYQdZgsm(gjmr5$xsbF~6jT2i1zK#3infa`%!&C%~L723TfYLYG~bT6xyH z=3G`Xt5CX2nP}u|RrC8kGxyTZH`S-M;Fbt}?Zn?)Z9xg_wnJvLALq-WK|Z5zsr+;$ zqL9qx$uK);pr?alv)yjunG*xYFOq@boZyZ2X#7m-G@>`o^bfLIw4RBLR(yWZ-wO4n_d^&TnJS{X4NpG7k@7P$xp(A zg@r*A%q0UG6KR1-XSD9Ap(!%2I42$_tQnM^dO?YL_r@5-kax4NpRQw7b3xA$lW8as z{4X#B3hp7uA0Qa-=mz?~G6*ASb!&NFa-gP_k2Qh;@|O8g*hr}N3zAU0T2eRmaO*yHpi&FT0-5zS7a;?A z3~Vxp*M~Q7vpHlzV4h~r)Y+~UMF6iCzPj*c|M=9=jq;k?#EZ&WfxE-~36`4r@=M&WUJ?kd_QxLT*QI zH*6PZ=fp>PozRq=pSmP3_52xK1zk}Fsv?hKp(1_Gu_A$DRt9ngZFTr4guZ&`>8#IosfX@@^|WLjpbC^0ID8A-OBrZAvc{c(YC-XvHCY z5yl4J-+Z@mFmPaW2tTJfwmg20r4@o3@-BonL_A(prrI#y@S|biN@a9>bkc}M0dm2` z#C?lu$J!H$ZP{%}a;-$B#8*78co^*o?BlArtFfwaj(qVhWHL%njh!udtm&*~UTj?EY-VEIUdE^E zGWyAM*{G~Fw|OI>ETpWjx*ysl)=4{InAH7PE1E)xF;%Cmb*y^KvX~!oG2S!5FuhYb zopd60^6}*OgfV)9VVR*on`a?;{)a8s64R1|U9jWjxXn+=>5t3G>qjl>gK>*)V`tpp zr0^eHP0ow&H=fvYFSD$hu2%OP*Md5_2Mc}_Olr09x71Btl>`Qee-ZbES7v=)CG9=b zCT658O4Rn1CZJ7Fhm-v(-`8GsZx390w4}6i*fRPHr@CWS=bm>o{@JImNAAXQ0f})!E%T>Er=lv?4GT>y zZFT~?^%5ozln*#oLN4ddz~FlQdL~cnpsQ$K!Bo$stFgM__nR{Xvlv_tMlobC-e5Ek zmIM{v=$|N!%MDJxuW+!cnDNj>aYXTi|B%f}ENdNT)H!wDXT`krU5;C8mCTVH^-&ngG{a z&`)u|Sj#{Q7Mzg8JKZ67(DA4h{mIOA*bt7WIZSG(j+R@a%^n&DhCBb z`JRH1F9NE3u6Aa#ynEijiKUK{NbU&Qf#Mx4HKMvM4G(_L(h)!W8lLo7K-E?ISJP!{ z95bxsYs^dS(0aVucxd8H;1T7;%vv4yS=M2a*5dqPnw7s*)+|Ats+-PX;{g~h`lDqL z)=rs4iy`pbBlk-BX6lS)tMf3YtEjTbVD_k?%>CEdwKb0mRO1KUH$zQCe3rQ}HH4XA z1ffs_uTMvVZi5h z%%9`EhyVl>;0h1;I42|B{rUlQ^1XlOUx9lF!b)ICN#Ljiu{AKTv@^D{H;\EIVE zmQc4tKp>>K{UAyzQttutkC`Z|*{jJ&^FXXD81(e5-WxDDTUg)DgTUv^1DskI*y}xZ zwlKG}<8kJH^7|J&!1?Xhj87i_{)xRA{}VMC`Nv=@TZ6|O3``76PXy2(KYq+-t8d7o zC@S`MIB>=P#Ms{6nun3m$;pYqiIu_1)`$^^Zn+tmSQuGYUID*&W#?jPujl;A((dV> zN$%zmHL!!&npoSLSXn;4omcO@m4iM1lP9+e{d@h{r-8G{e^#=z`%4x;Ami;FMrH;k z#(#4IL-}sM<&igWHZWHgHL(DA2CN~#%*M*a_j|zqb?ZM%{?|~o{~F55%<SJej9HMgh(3U4(|T+|Fe*>gyKDFA*BE9?fz5<{LLy`{UKTy!vFThk~IC_36V&) zx_|y&V#4ZRXA-d_)f^2I3(G)r&g)GYA<7iu^SmqyB_#b5X*79Q+=9N|bKv+Kk;OIh zen%!;dcK(HAL&$KK~(Dr0@oaIM3G*e3hP!x^TuvhXOpjuc_+udcohkI*0^jGi@0N* zPwJIL6iABv7)@?SOb-^$IA&k7!pY^&=j2D!@x69Dk2qv(yuIhyolnJxRF8bMUAqCP z`p1CQCt*2MIYePFB#%_LqH<;Bz{6yUH=`N;0*^OJ`leN@+mv7#n*$=0@(M?4#y`#Z{_-9_Oo%oh z-3p;Um_8XDkBx+OiLNUab0{jE@R7YCT7)8uW~~K}9O+mswTHejMgGsF$QqRXp(zFW z-5dczreH;^)cVpw23hk*jI6v*qR!H-4 zu?GcEm&H2B5vB2Mln`Gje^yb1yLqvx@^iZujT<5w;?QGg9^?DoN;p_p}nxx@8gM{2JQ_%!bJ z5(E$z!8*{i(dSW)Ocdp;!Rx0U@r8W6_bW~*!v=GgM~-P;Haz#lEfy}rA281N*5a)M zG~bkRukvmS_mOh2+PUpk#+<|#+})|juqXTEkao0$nhlTE`tNy~g96eA7s7_0w2sM< z`zaC~6HCbzlRp;XS45!#gb3ciDyO05|Hk>x=8(l7f2R649)1A6F|y|8nv35LnT)0S zm?X?FwD5R6P>J)HSXQT)#?gG~RD$Hbs23D7n{_Now@uvf!JWnZm_t1>ml&BDH$fMggvF<=xJZbhFsdV@$>jSYeQD+XW_M=f z-H4k^#ZA1Ek;CqXAw?RI5w5gxFNH$ssXihJUNQx%Uwf+JqvXHWsKPK33hbaKclfjB zeXBULlcV72E=44ylaP>oUTS6xW85Ip2!NEez_-tiiB&w6>)3}N!vwe^`${mqWAS0l zM?MsJGbnr>e>XwQ2A~p}tL{Pzq-!Wgse9cv!b(aG2O)4PAYoq{wdqjL{4xoHv-2zR=UtAZ{?z{0P|Mn&n`nau9op zDcWT{^t#!h!KPrs1i9B>#C`$F}ezfCyj1ALoA;OWwF|Ea51RV5wF< zVfsdLxZT*CjUi80D!^J;68z2g!%KV_ewFM}4D0M62uI>lQec^Atly(Hxu4q~?|#By{9Sv(xVM|;vK*1T^C$AR?xXE}OY{utJS}Q~ zenrsA%MF<~74VPtRPW>m!lVZv%d&6yqiZ~a9PNi7)f9tv&!yH+z>W6o<-OY#SszxN zHcH%YSjrm!MTU67V#~ts+z{KXR3%y_;b{}j%Jl0YVFKFGLqCsl8M+KniK5u3F`mXu zfu#6XLSqT20qdmo8m2ZGc!nR3AMO(NbymT;|Emw6@GHqBoHTqrjMHUHD@bMP$}dd`t9(pg!JCCa_y!T4CoWXXiz zf8ttNXTyCyJqt8cf~_a#Qhl`BD|z&6gdnOa&Ew75sznn%j4QcG!+VWE8^oZr=|R2EX0ixtS=0y zLt)B`IIBxJN?D{tHr04jKsrFo@^pc5s8^ihi|*mL)q?$*8e;xtS`V!|Ge)<5(i~=t&H3 z+@rBKHF1G=A>CtMfJENnA$U=Ee&q8UL+XKmqk?2(Iqf&USK4$XinrjHMByCf@y*U( z!97+h@)zD+k44?qlg^(I;m_RMw+s;^Km5+omD)1EHK?%Yunh_!2Gu00k6YAy|0+K+ zv^WP9Df{3Q{=Tuk-Vvetu#Brx<)mT-*vITsLyLa_O$dM-9C#+*ia3WqC@P6tz0UQ}Fs2_M9YOgv zJ6qmVsO3#U%vJ9SRf}t&BZbUqZ zX(d=zU}X2kBUE2o0-#A{I&3I`f zF|Ge)35(PC$m#jPDRJ&Tk!cOj^Pok@Gm-JuO>U0%v$u!I1k+#OrDof@Qs@9Qa@&qb z-SHtA5X*~?er9#n`2$(w-MIeN!s<()9Ybk$OqjV7D_GGgbQrU#I^i{Y@OOiL=HoG$ zUZWT>_8}=(QW)vJO#8KmI@@R{?eSQs>?#-ehfe|g#e?C3yK#x- zNdG6UXQNIyBJ66D4f4=rHaramaTY2aJcQ9ZcFBj`|D!`)3z=$IC#k(^X%vT)T*@!i zr|gaN%vU^H>PCh5PkOMqhr|3v_WUKPbt&J>%#O`;`Lz&#w5C@Nu2Ymx@=$=C`HYk> z=i!_fORP-l&?nwui|*d7O|RdpLo>x2wv#91+~rsO3K5%`TSBRrj+t27`j(H`lHb`0 zle&n=fuFd2`_L-GDG=8Fek62*ArEv)AIjJXh}fR(_#NgVPIdDFD01wVAilYq>hpyf zts(uEisns}P!H`PR=vynIlWdfNwh~68_cs5ieQ$PX*`<;2mI$t8G*_0r2<3jf3YP! zT3?vCh?13CylAU1w0U6`vo&0XV_=Go{W(Ky@~zyNzy}z-Te{I|?>|<~TGj50*+pKp zcdV&EPzm%MSP3}GVW1(%buqIUN@-JRd?K=4V1T~ImCDk7N!)&5N$zKpHKmrSs)W}e zKMhUFFxj85%al5ry!&Yu3OhT&E+j8KFGhYfe8>WayIq9*M+GrM0h6Z~-+VTzP9nn3 z0ht?j_KnmbI%TES9FEAiKBBGp$tgGld6}V4gq^6LQ^O({Ey15Tm>4R#EkNCmgR6I6 z&%}tS+$#x%+6?lmS;GcnAb&9%X-bD$10V52_VW{j4-Q$i-^TP57OM;d`mW@Qb< zmnRx`10U3Z%yrv>Ngl02m*xYzpThVe)+_Ldj%j%V-g9P)CyAX*x=cMba(|R`rSMDp z$?+I3?~*htt%I3#?!&nB43mk^>0k2)fjIP00VCsPiF6U`B+0??E4mSFR46?mb9wY% z&FByZJR8hCm*|sv5B^5U^LyQd0J?@#N}7+l)Kj^177TWcl|UAkOflyTNm)q;8PsE9 z%K7V7vM5|>MzsWnC8JA?OY1-G?nsEh>N+igvb1VH{oZY5Aq&doQIDCQ8#@a;*ezkH4g&k%SyzKrmlX_7JbL3 zR%S0Oz@FFCdyV~0J{8ue3;`jlel^CZ&GYXh?^DY29=+Wtd6aUr-zP>$Ii@^M$_m7U zyEf7PDkEV5w@S4BcK&?{i0#(6hr^VyQj-R{e(rUmZMQXmu+B|x1t~C@8$`(<2lJC;|sm~6zj!IhSk9-n#=sVhfeQ;$=gl;90+X7xF zLhO>66+=mYJVn1M2d-ZWl_^+V);>-leYuIk-obvK-&C`b_AaR-#=K>q?I=cDm}L}{ zFG~5Ahxy;Aa#nD8m~#l`=^7>km=1WsRG7y_T#aJ8Hqy%$zk(n z1t+`42RR=B1s&$3E~7R^?ga8i6Zyi;w*7&k;DB_ww3_X2UyDF6f%QQD`koE}h8KCb zZQ>RfqyM5J-&a@;r!fGjP-P0P$D1{V)UhtlMpo|ThEFkLHidOSCkwdCmub#ScheBZxcV#7h* zAx0j%pJ~X4)xOly39U!|I9_U$z`Ik~jH&nRoZV!Av5O>__eBweGlUQ60^7 zCdew{O43N0g>%|DZCtk*%VJ9VTQsWb2NGV#d=hrkD2x~VySQy|y!oY+zx6mFDgbr2 zN+yq1ve7w*|L|`F^o2Sg{Um%t@t0=7aT`xw!l}yf5$_l17U%v1rdF{3b}&^B0$yP1 zF1hm3em^HQ!Mhq}Svc#BFY%Hu11RRXk{M+e+eNY1V48H)s#%SC4V(KPknO?f6|_=O z(>v>W8MlA%($M<>;m_JBVIpE53Y2cITz#d&%j9un2;!U=`(-tB1=>_Gz-Q<41AY0nQIbe&&o{(o zy1+)tk1BUA%l@kL1K^akiX2$3lX>akvR`5gpD?;(cTR1uks8NbxkDrgPPpnEa z>8Q-47(6z82L4uJzlIa!@i=YYGpj|i% zQL_7u(VwxB-|<#>`76O5Y<U@b*Jb zSWEDymqoR?d3*-a_)QOJu-aK(yvKt zX+c?{f`f#_xiHoem`RQRFMFvtu?)zZ*H(`u%^`tNwm8dMY@dM?x`hJ+H;$hNUy%2 z3Wg15^gey|2mHL5Zq*@`(yh5y!EC!k`WG&(y!Ob9^b5DvoGq7Xc%NoP-xt z8a1D)%2OL_{>w%}IMw$oL{+%fM#A_L58j?{`H1qDa3)#<1{ ztoTzz5nWyyG~8gOETk{v1a@mRb@?u2Rk=k5$jp2SScFHOCxqmAm zpB0w7q%}+k8xVK7_lBp7Oaut`1{uBeS^H!rx3CxxYh{GG zc*vYzmBPta-_pCpMTXF(D;s+HADvc~=S%`n`s#V+Cd%!`VT=0Y|2AH58^JYY?u(_5 zg2J@1x@l$5Ip}^D3L87pcCpeZE<(Q$lv4@umwOL_@q^oeguG3MewE1ENjen7DeJ>Q zUXhc}Tjzwg3jH4$xd_v42_RiAGj_bvO0@nsa)U$~ zlHY1f`=rnq$c_6$agK^};Fmm^iQI9o3!vBH>WRVK^c$PvBtsBEy3$ZfG$8S?ob0gw zM+>0!RO5bmfN6C7q$iA0jRwVwQ2@?#Ak2L0^Tv)6Y6s9i+W+^Am>N&q zEy#|?RHyRu?*TQ7dymC_eMb0ueaq#PkHP;u?$0>DM7|)#)cvVHMr#>NQ&Jv}@xRRM zN=oN z7qM3|AeH1-$;`vBNe0pt+~hHdzeDMm0aK#cnergh_-%?8{e!L9zEFBG!M7Qoff_ut zniww0PnedJJJ12t1_?&^WdDvt{S53^-Zk^__8*%QZW#zPRD`*Eb-k#j72lMb1H?ZG(Y=-S2fRI2Mgj4r!X$6t%L9 z!;KPdq5$jwgkvt^o%}LxfY#sF0Ig(Q;iW2ff<>ee0xL>dPe1bhz3$17Lq?Y>WcV+evf{X?t&#bN7cJFWkDmFaw2iNHRSG0dOP`FzksHqJwsw7ORon4Hpst`2Gk9azN@We_PQX zIZyA<9D;my6|9A1{hypjS!3p7F~4hODhC0)Gd*_76bE(O`b_DXvSNP)nE!UQBF7gf zy+H-xNpd#4$x-V$h~g8)8?+ddJ3sf}wyGhNNT8tvt^zcZB%TF%kYdAzX-eJ94&aa- z1132p;@x%1T8Yah@xQ`PA0x2ci`UhD$9}fA#e2Vnjrp)_I7Kq^8%qGVr~1ClQ2@S{ zUkDOCh3c0IpTZ7%@Sk$ZYaqc>jg8GF`9mwmX5t30<>Af4Fjy=Uv&t!Vlw+d=>P~U+ zFfbJ!MpAND2b6yRteV%?$xRNSyDg8~ZOr))yx}LzZASk>Gl14-BEh@Q0JZ*e4bZB@OY*NG z6UGP_;@QC~hxL?OhPiVos|er4 z5`DKR7l$?R@K>SVTb}%-^!9xYJom_+IW+SBL@ts~6hXp41=N2X`vK4!P@k#qzWOP0 zE1o!4Riad+jS}2x`3Sq!iRo$8lc)k!1;3X7AJpS<9?#JfcE7F-{GV#@Ni7T(=euFO{CwP+A4>4 zB!)uioo)!X*MR==v0BySU7rNtvGLT{UHU|K+vGRc>=&Sr`^}|`v2{e%*Zjy++yv&N z$7+qTIHzGba4+609~q3-FaptD@Ez7A-(p=Z@2BC|-}@ze!|7561Uy0Xo!kBZ)?u)( zv_H?z(C3G{yK=K5@o0 zUF5*tVJFL^3_(C#4?gl7AL+!EKD+6;T=Ro;1qxQ$2y0B&#{J)xmBC7_6TknBdzX_a zZoOjG#Iowx@$iVXH-0%bLzC69^Fghp4 zvO~vtpT_PN|F1ZILQ=?xmaF+BG>DL-@nfL1TvMC0o0TM5j2-tZ6-Mk7a_= z1>RZ9nTmebZX$siccsXk2F@vSf$A&Sr`0xb88IxNS|_d2UTqzg1h+N!rwd@r(~0Xq z(%6V+6rSJDI(B#i##$a)yeOp*Co_-q8ZTXyNSd}kWV72m;_a&Y#jhK!Z7NwhAhpYs zG-hdbxGraDM5trlPs^><*DK50dAYZw)SXvUPnhNH*ie5%VK`gYKo+=M#k^h4+r3%T zU^(&*QdVxUU5151!J^%R11Gnu95?Enc72tZ=VmYhVbn-qH40T<*)|K&tr!^_?ykhC z(`g%mS=RW+SOX*-Sa%L>^GMtvx&(8tjd&C@8LdmuCM~65*pr zKLmkp?EYW>m(Av_ND`s?&LM<*F8OJ9X)nLkh-WX4A=nJ*)%QM;m4?w-^XscwP)1rs zDJP%NSH}o-UGE3+j(iNrs@isorIv~)U6UrRwz~9 z4ah_{rK2tTu)G1|U3s39tj4B=o~0Z$SK>72e7_&LRDCmLyi<8-i6*%5!MB?edn~W8 zD7ggY-eK~9b6ic^%_hKQp*?HCp6Gf7v$R#5wYC%;qWv~ zIS;ax4t(0hT_oEyshHNgc9=e9`KovGEvT2>>ZXA}4BvI7$io7g|NVP1?CDvj8*quE z(`8du7fg<)a50eE29e*=O?MF1iNZy635^)HJ+$GE9^law#L8j`g*~3k8(}JExCo7> zs@iM9XkAs`F6nh&SzP&^bea5&b-!v=hbgb%O8EIkN{tm$5JU9`!pY<6r1Q0E1ri$i zJc_}E_2cS(!C7!;ceMCUU5>i-WU(WUSfc7X_Exv!H@vNjl^$N#$5+4D#3@}QCcl9{ zVZMe@G3#mmeUc$L;{H~*om?mIphw_#aNv9#tIl4X41k#3QC`nm4Zijp-lINxE844NP)7SbrFJwD5*C!0CFRK4PT?o~Z0JHF~v* zj8?(f>TtFtT{e#;SQ*l?UA0T)V3V@5RX1CaUe~~P!I{EgBU;mu4S$F-PCa*xLJ?ix za}B9?8rU-{s-qB3vYXjmsC;=NK!e?Dws^HD zKzqFWb`%kX^7-d=c7z1a{F z+VNsa(Kdsw*nQiGe47c6ji-g*sLLt&u18U9IAg=5)R!Fqx+pzfvPc{C zetoslufBSz!Z5RiS)9v-XHL0&iYjhhxDNAl~{vKw+s z1Br=o$5fZ7zy@yOiprcrB3=l1<7SiKhPbVJKx5PDMf?LnH)5|7ZPsHR!A_=Ym4~58 z+TDKN)=RMEgUAigU(I;HwQODlV|6@q$K;>2UMv_eTEj6`BVr#*K}@%JHkKOJ=YAc`BItr|2Bj)YTa*RGLPAqtCSRXpfBslB5h$RVYAWv_$nL~k4 zoxFXP*!IKnCiL8d>$42Zq%1&S;QB3ifC!_i>gz-Bn|GEz| z{;F;_%!csX<=UT!Mv~LuaY_+vR@*u!ShH_4=H&8x&%m=BRxY(A0+YUtGY!tHW;$h-X<{%QXpDoK{qiS#5hv<~I#)LeB8Ihqj76{vOQ=iPV%)v=? z7-m~HOGB*7P?}!5f^yDo9(?{xZsZl3yOOemTrz$DH74%6FuhD1!YSv)Oie4<(67!u z=FPz^K0)p+{KrGA--;TT%oGoG9j6{Xs(*F?Puf$Gd15v-m1pzu2rB%+V(4OQQBH#A z9qzdelZ`Iny3e?@hR))IKzv$zz;M?A3~fE3doGCeSnnwis7;xt$_@04w00w&zX{Qf zZJ6-XE#k~`y56Oz3KylELsp7$UoVs1Uu9vx;z_G>b|zd^vEz8hL4Nnts7bZ38Ye=~HQ_tEWPbq*!;WOMRuL z8}?*pGf+Cr{mOunB-%O_yN4TDTvzG{bFHH z_yYrR4DN`j$`iva-4(82Q!UGyD^G{3U9WLM%QfE%n>Ond%W#Viq1l1&UAEO@zJWHWihhgo+@+E^dI$AsvP zmFw}DZyd z1q9X_BUY=*_fMhYIIm%K-xFQ_J^1$RsXRIuFA06Ki?s`VAc&2x$!FXW+Ml)Z>FNL( zt!85*$AS8IpPU`**yj-^a{b49hp#)87yIg;$qOWkRmR_=s~vti>1?jp`NLd#DqoMV zB}JU<>3n4h^st*V!yU>Tbad)RCPqymOnHO{1Zac-OF#+q#nf@hv)G9_tXGN79VQN( z;V1kNKH4FiORcF;VSy>NITX%VC*5kjI!0i5AlZZXo3rq!CkdYg6W> zw3W;t*Gp9vwln|wQD#C`lN6I!npkq+|1G4o*{L6fHarNnVUlrQY%LNo3S*B?+iv?o z?J2Ioh$Wc>b(%CO8wsI8OB8v@gS`kA2~Ilge}i}~ni}Bb?_Y@=s9hafQ z1o!pbu7A+?v%R_1g<3!t&R1QHGxp&(eQ?SK>(J&|q;s|2<9g<4DL5D5Y}gQF5Qpa2 zO04;iZ`73BWCX~xyP267?|hjM6v>~H`j}SS=-vE7!6`Pki=Q8v$rHP?1JY-rSR3<0PfZ@$-0_)w z>EN_@S;5o(xaG=d;}Z|FSK^x^&$!v%g-CghWVF$!tJ=7kw~Cj=u2h!{o&o<)^j)}U z{>azPf=D1ZAoR-S)k`qTEsP8PzhHbXfZC9D!DmNY@XWujPh9Yd(W#HoP~PqV=YyYV zu=dAkf=Z~nr^2L{YgjCX3>&F1JNBO9A!pC&jxayHPaJF>xgoWt!A(p}sYIofdT4(I zbPzFnBY6%EF=AKQqrnE)9K6QLPQ7pZ;$(jfpYR5G+0$v7H<*%`u@52GDBa)jh(9a$ z=`5EhH?-96$Qg$^S{t(+g%T=yu)&zqBpPO?#UZm7Tz4m9TDNtx&wxIVNS#-B zv+Sh-kEVv~J{ofFI(QAOl|sarDe}LPrS)5}Dr1PG&?JXIxF`@?YA8#x!$WYS?Y%vI zs9;HU9kta9ya*W|8H4wx!KzecjAvBLVvi(do$W%7&Lz06Rf@Bz&{*4abUjS#uJc%x zl|nop{jp8c^S-bnSD^d&UE>g5rV@}IT0;EP-kapZsL>DSHeS-Qh7?NAE@Pu5d(D82 z<|3WR6iDg~6um1Qj>7oCH^&bLMS1i*^vxH_OO8b=#FZxk!~;(6(y#@w)HY$!fmgqc zQKj}lSCd`ppc#j9|6{P;gKuj^I&}w&Ktm5XSJJTnxa~GnIIc z>}U0T4eJwSrn_%~O(J)inDa~Wd1vLo(*@jHV+%ok6#OzOFCe`hvT^!ob2j|b`H=EZ z1Bu_dG+PuRAydzBIIG`!s*4^QhvpF1AjrIS7Wd47!?cud+V3-fs$`4<$#QS4oXtUG z$Dbd4fCs)rRRSyO5O_O24@`Rn*fiNrc zko{{*m^lYB?HTWYO$^W{75%mOU1PH?Y=~I}PG?LiM#<(+8SHzC#5Ap%I8UcR!Y$b$ z@6OhvA%4bFI1iSi=V>OhXdJ^9;EAT{;!J14AZFdT+Q&1|)!*2pSB9Uuwsgr|H3kaK z`RsFcE4J>J5ERiDf+iDpL7Ns1SXrawE+i2yiDn>JQOwoK{zQ=WNneQ<@|Z5?QSCM+z=c-s;jO(JbpFn%L)GB@)~7R}TTE1%e4Z!FDM=GL=}U zbG;t0#2jkyw!970a?<9F z>-5-;+pL;Z-hN&r)%qr}0c|4HM?RM?W(t-QG(eEckG=A@b%=;3Ar1t&=`;5?Yc7u- z%1@2Wp_EP!_4PBk;}f3RkKis`I$b{3aIYohtXJFfU`uZe3A~XRg@SE3nk6a{J=E-B?mMN0T!|Tm_+ZMg@e2;x(ymcbm$Ff+4vuXzps|kZVlZtTeORcjvc_a}` z{0c;vZ#@<2*b=C6Y^E>CbLK_C16h;Pjv57L)%{tIm;!Y9T3)L5?VdJPVz>j(pq6Cm z5z7th?}vbEdzCxo2boMra&e*#V;ZzxS^QvRUw#;Rt|zoHwwyJX#TW*-Up{wl=KXXf zSy*SY&7u|3`jOS^S;=6?VF+EV2eK#p{I#+T6&hzQmq0l<>ZH14_^e(%kw=U@RHqxW zU4=)isvA?%?c)=Bzwz>J!UE0X_|~d&b$-capcFOW$jbjOR4KnNr6=*e9Eag26G#F} zgsW`Rub>&`_;#C zne&+`&K7ff+Fp~{hgy9Zzog+REecj7mAF3eO@$05=sB-8$vM>*jG6aw^P|!-FOt><> zDrhS*44^(>8)R-uAc^2<6MTir?buCNwC^093D&CqA==DKUFPvl zenIR3>;C0yBmMU)5)yB2Jt0YiZXVHPW&dl+XX@8>S2Ft{SuqaZ&RLo+^Zxf4aVZXv} z6r?-pDN4q9Qjhl0Vm5Z5`sm?Y5TnI4wxkS7B!z3nnKA5sH~ z1z25#Iw)(Pt;Gab!ZFVI=#4Higt2}OY($*am0(pTb53k??bDzh1*1$P4|X=+ge-p; zbV73^y;pO^JD{!*QZ%_Y89nUyyUNv_eH+KULZsDrjQuApl>obs! z3z9EfFlpmLvgQ?#Z8SWn4Fykr#4)ulR7oS>_Fb{h2lHGO%ysr3fyvpa!wD(<7OaFi zn@KYt)xT@i*;C_b)4p-G;R`7O$`AH6T4MZ;u3H5I8GlO37iyap>>gz-)SByRNlp6= z-yg;w88u$${K!5waxWaV9n1%sH}MeNyH3bs@1y$x@_y@j!W@@sO5I&RKaxKx%!2Uy zas|=l%vb^{gwln%lfEu$+wL4o!m#%%WT$Euv2-&ui4|n^-6NAAZRS}Lbb`L* zbiuIk0g5W|zUbac@CoaC{3G0JJsAT!V2Di-sL9Tv| zYg*3ng~&F6_vZBuef2AQU>xbF2K5C%3&w3YFlw#?G`mI{xP_fX5-8nn#0(d)MmaG; z)qn7vj71s_J2iB=nT(Rh8x&x;ZWdH@-NO-hpHE^na~68TdRwLDxz^HDnj9O~GK@2b z&VBi^8~cdasK=c3=JN2_i_FP}G*SPP*vfopmz0@g$%N|bpWKe&uL*Zz3C`nq`J7tR z{y*N{GOVqwYa6X18z@DJOMzg;io3M9OIs+eMT$EF0&SsCiUfi~aV_rd6nB>(#Whe| zLf~8M{j}Hlp7-qc{5!vx>q=O2&9R2fdEa9sArt$x3693mXfSubQy<${nTjyhOvCYL zU%Kx%EI3;YU#U#Cw(-TKNcnVna1~40PE8qr4Bk=3|8(@Uh&+)e%Sw%f zl3&p#RNgcNKZ28B%Cv6Pv1p>~|LwIan94o-3cyRP)7tu-KJ~!aeM3SZmCtMT?Wwn@ z`E{U3o^Pi}R5Q{k33iJm)_iYKjR8(yWRZhBrp>9{N{K#!rNwt1M|u@jYVvO+xxUXf zH|n)xdhIqxp?`(!8(1uA=$zJ896j~2Yi5tG{eGvnKvuNV&D#6tLE;eyC;yyBaJ*fY zm?a5T|FPerxjyfua(H#$U`+^Sls0r+r_*Fh(h-1LbiCg+*!3UjCC2a{0`7=4?DM-n zWwpmDsV)I#`%H1%%(u|)(Q{B_nbGAQ#sqO%#>1CmH@$DZBHjI$ddL=JE zCxJfp?OZ|C>@)L&jxtXQJOF!M-c0?AEsF|(i8};kwo3&d(b9^y_Z(?bJC5rpEy4ax zSNOPa%kWFmUvm!l8^b=-AiOh9=lU2Q!00muwqO04gB6p*n1Zn_n4~Pzw{0|cR`Ia2ypiiXY z_YVRc#(*}1zwH=)tnE$*AkPsPXXx@Dz!V_J|{qx&~H zsz{%oj2i&nC8gwE2f*0=yU&7m;{mXfTgbfs<1MjZY4|PZPbP2=kQ_ma$td_AP_|${ zHg8WI`UY|F9GVEmE;r1ZeYRbiCrZ8U2)xbbTP43KU}}`NVEfoqJhj!|vvTjxz9f

    !3jnsW8Bvk^XHLRfI>#rM*Ix#(*KP@JU$!@W6M#}&uO~ z127+G#D?=j0ga#yPLHRR+@mT+q#lx`xXI3ZAla5k-y?(s_M9HQRxQ{sQ~bQ{dspk( zU0tC3PjvFFgY_@qk^i}VoIqvGwnFshk(+OsBgPqiObGGDt@4DM&F+m5=A^?os=mT)Of3E$ryYO(#e%JPdODtk!a)AzV3kH=E zd9A|$FZ!{G_uCVkusdS&K0Af+=B3iaUkBtw%0#rjADt&>3UTa37MF@Wh$9{pS} z0z~Y$HZ;3~>7Q#fi#GVX7eLn~krVWfJ*7O*AcwtwFp$6t?@#8QVl|;&TGKGNH`M&R z-H2#;c{1dieUm5p^|c&5qFENE^ZMDE;mSH1P+@R^tizB6)F3T3ZwxRmA&9;|9nQ&R zDaP)!%x~rr%g5INpwwKNpm-Q}q55Zznlxr@mDXo}|e<;`p=7#q01FX%17Z;5|UeM%sy zVUaTs&)wCZEZWs@y{^RFoFp3fc|8+a?*Wg)!OS2P-?Y$E8sr|bYfBneZEx zp7>MUxP$Xu3M3PMtO-7eC^*X7@6sEHqf;3>=F)9nuscFt*Nvycm^Ko?tQO5gC%FLS z;Z#o$t}Gf;ZWs)HEj?zcE?7SQAFEa~yBALayYrL$MIDZ_#)_F=^Ix(OII@s&MP)ht zKo5yLabIP&fazB~a4As+i%yCQpf3B!v=0^ulr~3ln}%Is5CWw&BSt-cyu<*8nYmoL z1BpbPCb!(Z27&nvA@6%&&Y&0*U0)aRRk~Cn$-Sh7S)ekoGqm;)AV99SM`xYN0Bnv> za_2S4)NXKpAco=}1jJJ2DR3acqQ;GZysqkW)@QvJN*p8ozOh)`w_dKRrD_s*kR4A4 z`;uF`IJ7{V0Dr+$bL6ZaX?Gk;R^JN$=WV_AlVA@pqZ1-~5i0eyeBV%sC}*NjSAng{ z{FOh+b}2^V>m)u6=)~3zEd}$*TYrN*74p99uI*zAXw-kS^-?yKBf#wDQ6TRhqVJ!G z^Jn0%1TcKM8{4b?^*a(h09OQX(T5IyPWS(N@YD?Od6IjSRiVEP<$pAVP>=!U=@E+h zV zR~L-o|1GXR-%K?F=7}kg^c46bg#R8q<^m`_G-r?CGQX)&f28qyKz|z|%_w`@Y5sM| z;Xud+2x8NG|0*{oQeYnX9W|;)|GMP=|5OEVQ-?u0$tUxpZ>Raf6EZ`SPWSI(ixtv+`q~>>$Yr!N5AL(zsvd8t(=>o z(=Y#B&N#q4Sz8KJ82>KkThiS*eA2uDmOK&I+#hTG zZIYt^VOu+)X!YZNuk^RMg-e{@n&hIa4b8vGE$WstIO;-=>;JEs@E`8B3DzI-`F{%# zP!*tM%_CggShTkjkIXDBb6*E4u@Th^fA2CmGn~-@8od|;08qRq55U-arGK#^_Exn#Z^I4;-#ivArF*_ja8-VBX#XIkK#T zBmV?6d1wl~6G_M0K#l%GsEqytChRf&x_qxt0_Ti<8iVMw3B5+5w7yJwPKX>3ox;I> zwrT&V0--rUgTEBjxc|G|$!BmT+DqE!mZIk7a-E&fxQNdFtRn*0AeU7iQ~u=Jk}}Hm zmAP>fhIvYFnsL)#`mevE0VK@ry`Q*150|FkXA=_Jr5f{;SFIY*R(JI*GC5Jrym~+J z=@*-v1d^ltAJ&~@%znL89Frh{spLLqoL5aaEF07Rt=V24N1sj3N*Y0nK?>wvH%*hUlYVC8yJyC-8snx z)jawru>jtk2`^|YAA$tQVU$b#FS^@sA}7f;9LAwgen@1=PXRP!k^D|( z1!&s;GYua%<-M$Bk_BohvU2i9RJKdWP zKm#2`r~j`8I)G~H-!-Nb|G&HIY!r5llEZKde8as7D!gbIo1V-jn4fbPcHT0}Wi#;I&qq1w@lYzR;)Dps(;e>{VvugTd^R%QeS;$q9 z9NnhxM56wbtt9$h(l-@Vbs=SfLWIJoy!>!Tr|e}=AGDnw^adrIER64ZD!Y|e&?_TgldsPvOXo3YxkHAyf)~ zA>7~yZj>l>ntnJZW+d-HLH(J3H+c0|ANzS{pN?ncG5%h(`ypdd%yHWF@_Af=MY5oi zyi5IN7xqjsfvb~cJ%{|$SOG|sYMYubO6>B771oob=FaM3+_m~+x6cYIm+z6~OB@hLBj2=~P9W_KP`0-*n)w z0FTU#3o=3>j%Y5>$97CilRV5EhD;`J|6h;UYZI~hh=%nX*s0$iKKzzR$pd=jH98`EJ3Emc@bn`_2X7k|8FFoq=w(3WjxYQyT{s6PB5i(uFg4^*>H^VA6g2w& zT@V%dDQ}bh<@!`g=M~WIj!}?E0Xjrc`#O{OOJ?+oxAwoz1H#6vA>ISw1suiXek0N7 zsL9!}q9$#__?c31wD=EG(4Ng#&>jzZWo1zYy3Qk4E(7^j{}{$u^Ttk0ZGCHt{Fwe7 z6Y5s=8XHNwXfS#W*0&3u?(ECuVo9U!vpK*!tYv^P;i&wjKtdJl6Y*0lGKf8$V>Mivh>w>NrlXX3hG&a$>&tRoVe%*Zs{vS)nX64%3%cLX@5|Cf^pI_6ATkwMSBLg5oSYp7Ay0ygCK7@QFvn;1so}r%k4?y4Lu>aE`Eo zZ-bOt`N61s`#a0%g`_}zAMr+EU)d$~3m@JP0tGsS~3N%@h`Lq@!^9VacM$U7-z_BuGEE+2cigfrXKrP*QHdYh0mM8b9u>NzXs``w5;}#}yTTcT#=+@juVWo+E4kET=OZu8>S@Grazl9^?+!BRrso zdWnY8qbpUD;Vv6$>Ns_zN$l3uTcOJMPdaFnD~g3iAdIBDf~ZZO>I3=S3>xM*`1Law zRf?Fm6-z?*Cc)harRF^x84TPTh+k)@?r?exM~4@3+GX|#Cr5|0aNGS|-KF_{D=DmH z+U|Q9m1$v%OEuPsfQ<}voeqw;Hnyr z1()hPs!45SEeyp)4~5%H#6(p_2RYr>DvO60I(@$z!dDJy+KO?N_(wsOQ8$D*^V9ZQq->fRbMZ!ey>REYhf z_|OK6mA8y4;zhp3KLk+IhqMD}X1?A|;L#E$YP8o^u?IMHis9nDTKSB<(3tV)onF}` zXO23I9zXruE;Ie|iH#fLlgckN3o+NS>JjWCXXgj5>eOgUGazMig*uUL!?6gKMKrk! zn4_7u9^f}If@%#nfAq`4Z%oQj7pNBXaH=Ya+F^64n6H5oOS!BQ9 z;L}Zt2zt&-lu@~fh4{WGOD%{QN^KQ(em{(sAcC!15H*kY6I}oktbjES0 z!WZdX>5*B91X6@rA6!sDd0GvmCfR z+3G5E^_BABNE&z?jUy^^k>N299g{lHDO$CRU1W&!8tGtSn5N$+@Zd)`0Eyb&c6EB; zv)jtsl#eGAy7F!ep;(jis{hMtN}9%XXKQAXW*L8Lp+d>CcWg6Pm%QQ$t8G?tI&zdT zv|D)m0xFC}(5yshehir#MH>)tH8k7|EsI6>q?A){#G;`v&XSPobx&&W^Id6c zOD%uh=Hi2N1ksjflbaB0BaP>o5W2^w)`xVfBTOXzibhE-;iZGWN|6bRnB8lBAbOFn z?$Wi-m7%=b!xeOGc+{0xnDnA#mx1<6?j=~NKYQxdf7#mmeObPCMeUyA8RS&UY4J_V z)RMwn511HL?w?2$kA&6`7g?n?CD`G8b+Ufv^6F-}79LM;KC zGz-vUy#0C)<>Jc`$fj%;TLEuF40~^JU2tFM_S6;5k_MrVG~%d_vS}4&hCa7(>;8V~ zLMEF=+c446AB%QaGd)c>utewDo#@K9`(~uqkeE)i;anHxuc4Z>6m*#Gq<>-gNfBNn zlUQO2);DwrAw{3F24Alfevhs_;lxxRkGiOv^WFjv=wso$2IxMMqNoY0TA?6Hrfxe` z6=)=pFxvG*9@;ZFMS|;i9Xi-b^rVV2xA)ns`wOnwiBVeR*aMZZ`K;p0i#m+}Gi8#; zdLW@(HX=LhLJk@J7nJUTmnKYQ#wz0H0ae=nN zqN7yD%a@CJX*AfExuRfO_vH!|S#_{tM{`=t>rgA{MW0JcxMFOk4;johizxzd^^%j} z;{^GetYpEfKUgnc-f>~reu=*;g{(s?M?5}&Y2wQ)kr8!tT~rp-Br`Qz!RI=TyIt z+sTpiW@BB5vFTpRIjIh<{Ym0uWO}z!|F10Bp>U~Y;drSX%f&58lbz+eFS=N@WsxeA z!|D)`(|Pm&b&tq%&9#d)YjX94AxpV?l0dQz_C6ebS0Io;{vn--G>k_qD9tn&VQfxT zf$dC~&`!JK;cJF!=K)dX@-=^##rWt}`lB87 z%9E;jvCVVjFu`e>G(Vo)N`?dZ&=GI$yXvTg@CNHbR3b)i&|{J}A!S6ZLU-#Rp<1nz zKX$s{FZBd**3wKyoC#A3#I6M2wi>$S7D%ExRBIwn`m3wsiL4%>^6L&xRolM$ zaRKUF_+nqRg8w*I+Y0fp|LbX&Ayw@P+fg?q_dtgGEOq_q2^-w!!f{5!R8O`1vYE$< zsyX3j70^OQ|L~^}`Rqbq$gVw-E?*A!i^MrTa`zq4qQ#Ke!yF}1=R;34@zJ7Oh)Oln zG>T0Q$==BGPWi$-hbr=5{*b$R>ZEuqb1b{LuTz8UC zoh|448PV!gYZ+9+^6JaMnO$tYH31d1Zespa zbG3NsGpKg-xOp*4(X@bf_0*wH)Q#p2$NDzl>en^>H6msa;DZi7uOv!v^1 zV?!0S8Q!@p3P9p$RG!0{TNs$dL<^MGU^3!=c=Cd!3m)|7UcfL91oRY-cKQ9wyexDn z2uO3xx{hcm_x`&|=GXu;3r8a9U;%s**jqC+vrIaKFHiNTlffb$rEzRN5^`Bd;8fhJ zcV8Tk6TL?QD`&VN8wk3g8h%UZ9AUS4#siAh%6E|zrKqT<#*`2J&5m^AeaQPOP5 zSwUs^4C+WR{-l$AdixhVz!#ZG+<)91C)FX;J{oN=saAZJfh?2pY7ofGpqU}6mLige z>Q0kWFyW#K^li_!PZ0*Xl82^15=r2m!3An2+-}Q&Xo)E}Z|y2<3pOiCYK$QfSv1=0 zqC)pE>OS~vJ8oRvF$b0=bBCqiExNHhmak+VKs52=dwo;w(G=$MiVt2clm z&YAR<1N-A}7Hwmuy~ul-ThR82zS=LiG{<`$-CtkhE{=jQn#bbuRuri|+s&h7@<{Fj z3QYm)C-5jszL=b>mY`Ijb`u@_5H&3)uI?S>6Py&wnYiEZT5n0Ry3v@bXnngFJ7$JL+;jOcGuYTWr zeG#I??KSIi)X9%4?Y!MP;lei_a@oEgN$HUC3fRGZus`^|wTZy%d|HtS9zB6J)u;1< z5dGbjwI_r8{k6o+KSy8ip57eS@19#86;(4}E7nu(m@5}mcV3y#Pi*kR_YVAj)E|~^ zk)|04zdxXZe*^;=lD_`2Xc$!8y+ZHF7MjJ;iWUKcCz08hZke3;M#kbYV=7USV@^NJ zu=7ns$V3IsL6_`&ai|5m!5J?V>B;?LOt>FUDECY%v4x_n?4L42YQ z`OBF>ua@0)0l@j8PlAg@K@)fQ(#Q(T)VSWuiGAT{4rXgFbktuK(==z5Qm!G`huKi`za;Ea59{t$9; zNF2*s@7ucY4ZijbD}{eU?^vX42D|bA_u*!UtQNy^M%ngcXF+}Ez1+bLx|AsT=6>6= z8SOQ`)FL)m3tIhmd&jHKz{yi7LIWh~^Med#cU7iOvGwwdUTT%c3?OJK4}$lnr*oON zMrFWduX&0KG9Va3i|(WTr`u!HPvRqPytWz2*AEAy<|fEs2?pcOgewm%<^JldY6eaL zx*lmyo}S4`GLnT!VV$6bEAA|3c&GC}{f^-9>d$Z6tleiNj5g*qTS?+eW30C&X3mjE z1ygKOb@(8DT+rJVidJ%Eijl$EO6QB8Z8=7;L7!vUJ9>nyRQh@k{mfB^DpDe_kF*9W z&sGwtjHwr?7(M4~dQ1nt$>#Jn6|0iIklwjo#5y5q-*d{41Mj*tX#zfK%tXPUq&~zN zd_C^W^J}xp*Ju3#?D9kUx~=ZDx_gg;z1%|Sx>)!dkU-=2T*&h71LDtK_w>Mvh<**E z_iLsm#}&wWhv5~D5KkOwkO-IQ=pIMa)Fccod$rF(Z^osQoU2Z?Cc|y|is^oEzPOH} zu&ux~U1(^^nQCRL4%dUzU^KO|M}lVgiCKpFH$s#GIH}bc5F2TN~n44qoE^>k>``lzTrF(LVXek)c7^v-1Tx`O9aM(Gsk-(3@%`>>7){?)Dt)8yS9?FG$ zQBw|U+Qkjp*|I>}<|IW7RCfuxW%(Vj@Lj!5`SRnGH@1lFA+^hKI~q3~Jrzv^dsaA; zZGkQ!MPM5Krbm=utB*6Axnh-0_M&hf#q~;TgwQiXuHGVRtxR9tQ|U!}eU!wM+{?uoyz6%s?aO^tt9(UZx}q<)E%VP8{AuF ze5m?Nn&dR(VvupLgqx0^$6d@bGX8v{aap#_O%Q&gQKkd7-QO}iCnlrVeF+F9q3e;s zq$7`*YJF z-tTwk)5;@F=0o zWSx2!5h_$yAGk1&;{rIoiK{;UQMkE!-jzgLxj29R*@G7}RQprV`Sjt??9*7;siKeo z?~!x#Bpt@lYm#z!4iR^~x6?>f=r(^0gmzEYan|Br|>y>tqp#coN zf!%skHt!+oZyOA`J%~j6Nka$2#~Ug=3Vp|Y>??M@e(XB%PAb5HZK~rOc2o(?v6f93 zJ4!#Nn+SKgq~zn3bTS@EA%hLU-4!mu{>-&446>c?8c#ToB-N-Ff;!ZliW4a;%~h(R zotrv#gjU{vyFMppYq@0#&%?02_V%7BRKL>XQN})TL|VzjG$&_@ulSjFpI<-Du80 zdHGZdpLFiz!lp!U-3eL5Qm=G@2riq9hjsaEFA0f;ezp7Ij{nNZ2PxKLwjVXOQ?L#V zRm{43l@6TLw>4TfpqJr?O8Am^T{*t5tS@*m-hMb8KrO}Tx|WvSdGP8i_Iip}**d=T zLKA;)_Q@I)ZY^F?dj(ZK`uq*ws8kX6q+R?8voZdY=_&iX2bDV%`6)q^aPIp2` z?9OUwU5D46qhGaT7nvsP5(0VLoa4TmX$*ESiSJxoK;=Zd=e}e?=kLC@^eeN;p zda=R%oLDEdmlYp*zec&f&L02ZP~Y4hfQ-Yk7ZME<_r>LRhUApLH&n>JKpl9E5*JHz zwz31eK-U4f#TGg^A1)6*x!*8OFHo3c{cQH(QWNJ&g*x|NTIbg+u)VDVtiC$)2eljo z+Uxau^AI6!wxas9rjAGMD|;;Bz`y5CPkzMDxYS36kV1f8v%NbH>{vUyKwv$a#P$Ib z-Kmgnt)iYT<)0zJCt#M@qYB8x*S!@A?>6E=&YiY!o3g9Z%Q0Hh(HP?~1?}^9#Pjwd zhCr-~bx{Xz>YnBMG_g0*2+oti!ax1hfq9=c4^w_6!eIs_ZWmK(4vMLt5|kJQxa)Y4`fDVx0#VFun~QaV)q(p;1#czj4Bf8Aio_BM?G#Y|C>ha3Fw^D+#vd0YT8J7mV%G zZOgV!)$Q;oXw}0C0{UxX8$ifxv? z9Bo){SZ^Vc2dA{WkBUez#MG_^e0``ABZV974TI_jlJmO^FQ4QK>q1c+8}G_JHPKp8aYE07^S~HG?P8>GUkrDER_XV5#2VT$_GR|{v!|x2Xf>SPeZyxJNooAErrcpyHgL9xG_K^ z%wa25Hm2bk+G^9oyaDGZ4my4kOC5c%L`lR;eSMEzDikG!VfgjF=%mj#F?ya!#6q)E zO6JrX!r@0JaRuCa+7QtmwH^0eA)M)G?Ug+%eBWY71-ai7GsdqD+>_OiDEP4>MyRgHQR=oBN8m2N-&DGl{e!NT~3w!%=dmMIFPgU7rT}mWIV%2?gRircD&&P>T-4Xz%*|)f=g>Gk0jBY3Q&0%KYfbt@3JLZpDyFWicbU!wPQ|YRR`a~1 zm#qoYyN&$)P({wTTv)aZ37+SQ;(W!64#kXm;^O{V9H3neOX~T~%fiHY;zbD$kLFcc zFB>a!9d7(=Gw!ZA%!L@}jqBPhmzCT-Q{WW&J_EKqE5IzEOdCQ#w~gTQi{@1`kcZAU z6>$!v(1${Hp9!9-8!#bf;AFW@<2-1~Uu+fJq0*69uINXXT=Ka=I$e z$?%3Qeo&HK#EWC{wfk7}h6kEC`?8DHIP%4M%p5BAN3t?u0r@l+-+*=;lXKxA+f#hA z;0+`-3K&B{D4ldp!w{!?HOW)Up+l#+E0MxdIzEzlZo?O`(cUFL7`grRF z+QD0R2iiBUo?!E{A$BV_)bXb}* zl{pUhaB$=UYv=d>2EpDA4~2gK_Sg|m+IE)dD`O4DP27;f*XC2WdmPY!Bnu0@r?_^O zY780$7WOVBodrFV{BFfJwSZF|P>)^0YOAoTr$4EM5H45C!WrpllR}FxaUQ*O(E&E& zfz3?~2sd65M8u2x$xDG^U9{Hr3?!$J`o?gy_|4rp|!`jEjyVX%Ib0rseK zHStv;=Y^V?($`KrY0)!>xj<*&O=$!JxDs(O-WoFm^Ujgt)K!IVgqo)vK< zOIon=xzNo!*-OJ{}Vn#tZJKNd^Zn@Z&h^p+7iVCGB}qsQO4UAD)XQO)8}T!t5GZ`R)+ zS04PuEAuks7RfHn?~3EpQVMTKyKd`HOJ1xSA8;hLY7ucLzmd{$5*l|G%3~Pb7rzc9 z|EVH+ZXhf?I**-C_5Ly+f;?SZORP=_cKzJy>?~~RR8AR7=)E{^V6m>i=6X_Gar((T z$22C!Mf~b2GGgy_;K_c4RPdQ#4vJX9Wz5hs8(@u$G+Ix%a$?IjcdbO=d>GudFJEsQ z%WA1VD3Y(A*v8vKpK?urOdXShP;@)Zs)ve#>Yf_3y`iVJ^brdo+Ix$y=oibW7nHU~ z+!dNiwutcA>!!S!w0leU_fdT*AhGdVgf4l;MmIl2j<}LnXl_7n++E;$_597iQ<&55RbeO_d z9oq9#%%#OC9rw7D%&!b5^hYPiMJ;$rRuk`VFmgMzyQ{e|SDAdEq~f56b-s9@Vch*Z z4VyJ|KT6M}fg5DuJwyhx4AyG4_a8*!kio)?b{3`UQnoaq`gqhNjt0WJ33F0E{Wbpjrs@~9G9BArf9%S5S7 z`~lo>;BRgIXzp&UknDvR>aU$b5w^!Ee-%*|v-c%N&OU*7!#9GaihlN>337C8WjLin z2=x-rS9&Lp0TtHz5$^Ko!((YZoR_7g=AZA28~>`QVt)>zp@?l_P>z%BN7fmIdT+i0{frJ`YS8_C(<+FS(*Gm~wI+qQX_3aRx z9$edipXW(1ju1Enrk+pFCk=fn|FQ6j=R&N~qozqTR?t5FD=F^bP?YC>U2q(=@8W<# z`%((zn)~I_q_81>^@81EAbHjp@8Q#KB1_+p8I-eP{JdDX|7t6TH|bz?STSkhKodmQ zTyd78=EYr|B3*zasQ*$DUjWW7JxXWi@LHI}^IO5(?ADzTb&o_32w?$R97Du&P@2~F z_RcQXptzkg>4n)CrlxIv0p;*8jN5!v$ml{2R{-0BL_w>4^+mX)G>-J$*5t&-6g0aZi4&5t#Lm+ld7@kmE+B=S zeuGOvJ&Hk1t1>Hdzn*Mq@`Sog>~mbNHIpQc9;YL31a=MXmUiH3xi6`UxPg+Q0&T0CkC2GKK(`3{g(~A%gni0nY2W$z8?cq>6-! zer3>kYzc8wswD8M8rRU(P?I@I^Fsu15u^wOjUtb|M$TvLgS;5P^xV?+} za~+xA)NaikyzZM{KxuuCl4B*}w0UA~8aXF_S`;8#KVS0@CGkW>w!8VzmS5pM6?mvq zy@qg7t!R>9t@`u%Nje3@Uw4stt4lHI{2c-Nd9}DAB<&j5>Ywyy!+%oNyIFbo>ztsq zrtLJB^}+jN-E~^$oZ$IfugbL9&L?dxe;8(?_Hmr|q&Xx$9F`+DVhBy04zoCBNP+A^ zw^9UT=;0?@UHVhEW~dx$k33+~fv+74nz5tsEW(iuiMGUBXd8Zul>wRh!_6vOZj=b? zn;jnz^A9jU)48(D=`n9~ZyFkGIFDbIjX(dC=<$MvZ=L@}^yFry{?Q%guLb(w@UWTg zeZ_px>OspCcXE9+=&`*f?0l!(sFT|ZyzY?8^z|#|%0tzmZ_W?yKBW63$oSl(2DNyW zXW;I--*0oaH@N$HD1SbFFAsc@x7}!;SJzy$Cu8NDS5I$K&ndp40wuKCHw(>+$G$+!H8dsG0?2D2_pV*VOw| ztP6kDo^mq!IkET(PiV7~qjoLw029m6Gv<|u<|nPahVWn0vln2s6xV@TVHG3z)m6n^ zyDMksyhQtVVI4*+?qYZB8fvUHoFrV4V|1GB7DqaR4|U=HjkM!SO?|NBF_ z6UTdqU{`w3cB(V)dLWzhwb>UUqlE6_7c?u5h6lvAT$V0w?1Q_J7+czKyEJX{DD zc3H7dFv-d^N(q$K^4*^x<`GVw9>a%8DSX8yBjI4H9*UZ~c~-ZU9_E+)bJh6~hWt-| zh>A3u-7b-U&PkO-f<3aP+}< zUM<6EQSmaD##dGk*8n#8%J%d1CTqmAzIGK)sHXg2Rvs(6`}M%GlpNR$ga=a>X8rK} zUa*%qD!X~-Vd7{E^p#{n@f6+5(K`4tZ8GkXm&Cn{#Cemhwyx#2^^C=&xNyBlj2_A2 z#rR~ptz^oevVzI6hwnhX@Q-eD^D!9m<97tT>Fs$X@tqJv!afx5$WRZ^CvBMh{kyc$ zkJI;l_&@UACGZLP$Yh8i`Sa7)=(q8wr%be;!lQdtJ0tBE+20seuk8NSGo-q=T*;v= zj=@L|>Jee{r(G`Hzi`0||3nWmZRqe{HSupP@HY$b^+WnOs%mDO$L#VSYO@5)@zAY7&zCvhyOXBtd*&#?Gxxl!@Y9XEIymuzYJ-TeinFL{e{Qg zy)udT)GkF~(n4*v8}mxfo2Rhp4vlBGt1x*(>sVV(!xaL3#?hTzi0ZN4?BxpA^V0DS z_-l#_t-Y5Id@0c>sgDFL)_q*m6F5IRadO@lk^go^^NQAR!42EW|G1YYUsxXWsatP* zmBaS#8EWJJYa}^Z5~4_9kJ&S%(#8gFp?{EAZQm;C`Z<%^ct%-n#Z*(|l-v}vN1M*E z&n*PEbtN%y7R$3GR8=XaJ)?t|k`XXTe2)hU($&kQtPM^UfW0&vos^_dT1v>#QV1B! zcH(x+_fL4XRjTTD+pl&8Z@Q)G)~@x@d|6+;;@vF~&nRy438Jnt z-Yo>u zZLv~vKAu}1MU1qdd2Y0y_J4W-(3{S|?gc7Vyus}G3(ZxVCKQ@@^$A1%F#ntcZb{vv z^xBOJy1)w>ah$6YeMcr{co5hpp-yT-a8Zx?m`o=>1Z&tfOgT)fMlTxe*gdT8pyN9H z^-BEtE5l^+seK0vxJ8#%{$glkRI$HV8yh_x&5|P}Er{&_=d*i%wPeiAv<&~`0nxR$ z5qL=S+cIkeh5I|`7+~}m;?eYYhBIsX>Y?kj5QEgKBeh=QYksGA*|yS;viuA}5<}jr zoNE`T5v{0VB*Ym-RZ|8_F9?OOr`AMAw!}`b9hP2asboJ{HaOor|IBQDq`raQrJH_G z9%=d6to$@c%#=ukN8SefY{x_kN_|vI!$O4&z3_iBL?*w1`^aAIvB;(UV$79-$Ak3` z&2izcMcQa5FaX&MY*?3Je57wGzpLIKkNwoSwP-5gMdK82thiHh?bXuJmv0nSZqE7i z#(gZ*!YPJMezEhrW!HC~3?Q%ILveIBjlw$yrZY6_tBcbUu;wNQoMNA(ViwZUU;eAy z5VxFb-8=XEoKibKWcsHS>kcb9Rl6~2#=S_k(7L%(5xM2O)>`qhtoh=+4Zh`!zD3wr zMaBLyD9WY|QT{Lzwx|Lg@GhzL%D(fC_3Su)H`aYh^xkIz1U@9UaR61W%K=Ys0G&cW^bb_lOl`?{u9I?jP0_Z+}y)hagp z+U1=bKWXviu(X3_<@3eX^o@AZ$vu{DRHD}SBLd=`1T3X>8W+L)^|9JEi=x^?)dVTL z&Yk+bLhCBvN!FTEonulnq8VqBjg_4-luW`tqw12tu`UJIGi~uEfg})7(;0hA{(oF- z!`8~3j3bVVWD=^&?27X?oI~n*FD4c$-vKXkDCHKYQR&VL=KsUqcSbeUb=^`#K#*QU znlwRa0@5KUAYBkdib0SrNRb{OH0d>=cTfQl={5A;dy(D~dWX;naF6f%-8=5{j`4l} z?-=*@NzNX7owe4UYp%KXHXazK6~t%04N5+06)m{Eq1Qzg$f-k9x24vn%*CSC)tFp+ z@gwSf@iwyrYH@S$D)6e?gEaW3O1?jZ20DKgI<5vq$j}8NDd|5_m6V>xL1paFbi!-( z=|uvcPYr|Z@Mn9}yePTZc@1|u$2y*Eo9#)pN7aEd!-*6`n5o};OFv;=SM_9HOv-ol zs{P6-0a69-^#nm|jU*?qMP=t+__x>HZV`;xZfg$2B^V_uAbJ(J`xyK-H%%L;_FaB+ zu*-@3O;F*hAX4p`eF!AaM{i#%d)^e^t%19e2R=d;}5KBSTV{y z5|x@Znu(%mI>c;uxfc~bGwKuKfHhhrCExG?XYQ}9egfeyxSvLCSs!220&Y9j;O6$i z7sZRU(`@Ni(tAIvpLM&)#&CLB4c!rYL_yA}_;r(e5JKq&yGE=fF4ULK)(CX_YUeKE z@D~+Na$F_jO}>vNR4xcJ__FK$bA8I|Q{c+yHPrP+f-S!G?@E2I5Bs;=+l7<-(%<^m zlf6Ve9&nX{5_zu{k?U}@j|zX)rnLgI*nEEygUk^5gXx$Iwi;yftNyUhd?tIWf=6}* z3G(`vZDBn|d-Z02l2oH0{yM5i+j1F!HVyDXL5Tvb&`mdDvuejaWgG^sa=Vz-iUXSV zYt=Bl;El?uirrUrq}sBAWezpz@W%)2ESsIu!HSQLa*I6!*ntz|D=IZV%JtUR27Io4 zRKB=CPIu9A;AItmULK*l6z0m{z3Up?5JWCegTL+N(-0XwaM5T`>&?MFZ9v^5+sZ~6 z^CBde^xOa>BK??MbjE~reVIcP-eNoBzwwsOz#Y}K7Dg{)a(#B&X85Z`)z0;M;_M@X zll`IdwiC#%66KFk5-UywY{edAMA+k4m3Rz42%%&MICl7UF3tUNlQQNl0}EYCii1M@ z8=PFtIZpN`Z4}Xlpp{2y>|D|E60BaG2899abGib+B0G87@oF<^*q8xwh;1svH$BP2 zJ%$0B^EM*mBOBDy+dO2%f-=Up$2o@%EaoZ*qcH(p^A`Z2U` z;eaCToI>U-9bCCNOp4oB`oqTVYy;nPrh2F4vnPb^bG`Rvk0e>SP?y7?iO$tGi%8P6 z?u(PloB%V>&`v{(+(eh&p&UzSpSne=al=6IsUEN|SbV--&|PFTHm&VWNH5*n(Cl_* zUsOd~bg+)^X>q)4Y$b4Sz=G7SA+RbMffnpih_)G24{3g=XT@OdV zB*mb|-cATxBLkT&sf`&XrJ~tykpA_Qb7L~bWS!-6s(I0auGK~QD&XqiWaR>c_C=8=si;vzUB7eFIZk==d;jyAn9N}n zWjozJ8P3w_{j6v606%)7dYCjMM1Q?#N?*1t8qJ@lM3@1VE4A?_10R(iq; zEA$$<|0a~UZ77P$VE-mJ!(vj#72&>jrNa8y;Y#HAs=CTWvVN9L<#$)q;*X);2TpxS z*@N4p0%a(h-9K4$vL>smj1cyY&qneRq`*;P{WZA;rDuflwez@Rpx$O1)RWs0%jau zFsqFirH(0)&jHSd`a{8l=ZV|--e7R5DYe7;9;^ppPt?d5#jub^z@aBqW*EkI6rR=J zn#$C(hOwJqTieE07g=n$35kxcW6m7r(9EppO3;-mTYi6jkMJ)**kTZ;cY1n&+k|e! z^L5`UE_T`{t+w`LeVi!>W3;?Tiqz=*5PUdi-7!Xc*Yrcr#Y{q7Bn>r-jT4Bej`gHV zBHD5mSw&?Jq*nogp6){$VyqMn$B50^g{Kzr^ifzMNpLeQ!5G8~zk00P#qr<+B3r{n zmx_z6WL<_~B($4F4{PSKmUz>iP}$>f;A+8kw$YG#e+w7F=u7K!AU^@D%^ok3hlD)s z4<4lv%j+{=U1eLRE_)@x>vxY3{kEvhQ!9R-m74qm`syK>b8~O+Y{rkN+ZU^Ydc4!I znNLDz5z2U8JB5qG!FQT&sI>yv%^z=_n8(9yrWaXWFAec)n$D z937@ru{C7R(LBjiu#VE6If!0z5DGe_ASg4SFnWG>EZmMJXFQsD-wW$QcCt-^dyvwT zdzm}oV8mf7{VXV3A5(j&Ji>a$%|ckGeGfp8S-0Uvm#+q+FpT@NhudGvb%p)!@>xHY z5$%c)!E|=f9IXu2EJX zTBLdq;;7v}2lbAML5AuIvwYtu;1TELPD?JRXn@m{b)Hz&JQrq+sW7gyv# zXUl-@&mNWMMXk{dVutb*X!rSYJ8W)*Am?Qa_C1)hlC-lJz3fqGvg zSd`B1FI^wcB66g|6h$q<1f56+fVvXy!jAlW%JCB^E<<^hZ9Tb)9 z~Mp`g;a zB9f3V^)8KgI>Z61BsZ1%K_H4R+ambkj0@?dW7EXL-jpQ5M8!hQ{WGikYx%j1EIl6B zXAkOWz7&CajU0ME4Q2|T!^?JkUwCwY5y9$6MAd!) zFeW?M_wE(M{M_Y+dBb#-!$6}6zcPOuCk%6pRMg%Fz-f`Yow!GoVe%mnM;Ej zzw!~?!GX$3oI5}1JQ-GPVyX__{`Ft5w7Q3lgc~co4IH4M@^S8gkPTvWpyb02eVJz4 zIpMzJD~uz(2U_IGcQKZJzL((#!OkByTT*o_-Jy)o)>Mn9(z-GJZ5)Y-9u2Na?t{5F zoAEISgJ0a;g)DtO!OmaHCr0`t^|0>vQY-M*bwo9^wd5pr(_RQTe|}I5Pb=|H#sql< zvFDXN!&NUF8&tGT4}hktYRJ1*UI0;_;G z2sqfmWllhSuL_}pcFNZ@n9m~H9=KnfB8oxQpgOd((3!9SJmL_E3Rae13S+04-%)zc z=$?IHx5l;>t6F7}<}!6`JRm}WPIv+`LqD-Vt!7Y2{&-ny^D(# z_|b0_YYq9JAVG3P)FRox$~0Na=ln|Hg-!2mWxU@c1=G9NN028cH6xkb3SR` z@vm@sFP#PKnfTxrbD*eXjySkk-Mh0@hJ#n@SQK603 zvslDm9LS`X8gIY78n}pp%X>g&C70Zc378wd5ZTU5ZF>utEoJ8i!y zo*i8AxRctPH_m^)XGT(ENT|G+kaH^6iqd9fH}8LGw9`1x+K7zQO%0r+w+21%^1Fb8 zy7BpV6slkJ9DSIeGf8MTqCgJ_Q4UDf?ar$e|0!R|p&b!&!A}*ZHL|c6>$8J5K8lW> z4~Bjvuu zVE9D;Hw`?N;@f=>QV9#1Z6>eLduc8QhxU%O0;sn*L08B!Z=Q%R$f--{sZrRT;o;_UIvHj6oD~ zzDlB%r)rg)dN*begIst!ka(8f+cV4^V43pb>ATE$e3oPbtK_1rER=-NI{Jkw#H@*O z!9=#q69<-#Z}X96(J^jw&PT53e3lNDG8C8;aj^SE&4DaB{N{*1RN-qJ=ICau->sZU zB;3X$PJd(ll*W!=+4dl;E1^0=(_0XhbaZ^*x znsPxz#Zk`sXK_O^FAwa$!udQtz89$YOWP~bTHxT*#h zvAV9r3UW$xvbj*=_w681+t_W~*ZDcy2u{-AuN{NB9)5UZyZVXq<@pnY3I^NM&p>Kn6dp&wWXo9rc_c!nJA+vlPKg^3NDW&jmsFYLWMP=nw2 zLY_lfHKw%xJ%b&?OS&9-r!{HZ8ox93bNKdkAoz*Inwl0O85M^;=?~mB=RIyG&~5X z=Qp}n8MLt;Hs3Xc&(>Biu?EG{cZn_bB9|}xtvEW*gEwD=9E+|FaL%jr=&gTS-K_bQ zZ8mvdA<3_gR9IIA6eOd?DVS9|5)^aNB^YO0#0(-#t-UV+T5}rcYYT<5o7^1?zIERw z7tJ@YChSQ(i?W}t5+tkQ9`a=YgAAWM89LY&x^yB)5hdO2on0Nu7??#U^1d$v<@XhS zV(a;3J6Bx|O31pT1!?IjmA&MK20jPjz+}}DTeFr}3~TBF+IWb`P+4f-`>JHIxzp6K z*^pA+8#=J@NQMF`uUU131ooA~-rK-Wo&EX-)eXdl;*?^<52^Yd4{zr$`L_c{_D z48j=7(|`m13kfI$WaCBQ`Z?8;QoU%S@FjUf!bKy-#fXa!aI;U91Ck{(<%Xi6!o6K2 z+c}KPpKvoIVXLX+F>y0mlC?69f{FjTus7abz}Fk;0yz=iDB|22Z=dqJn^5ZXXS0*X zD#-wy09A^Z?B;m%p_xkpE4$_BEQ0^45B!tA!QJyggCG5}qX+KU_Hlx3-lCnYq?Z9V zOV1jRKt}I?%#*QwVe4*NDNFFt(#35!dEsM@Chrsgh1POz2lLgh{6v$fD)CkAXV`R| zZSKxGWg+ZmB?95lU;^c*7JWj4AHdN{#-+hP_LtNC3-A-**@M-GBYYQSD0*LC2SSJ! z@@3r*ocYF`--v^ z3I_Zd9}3f7*xEM(-t44{0p2Xu656F${qR8r*m)H8RN_mGI82w zedRY}{l*%|hhakxdb&F8k)1QD8 zkWrX|zph2q{ssFX^QHlupf3Z(XBKnB<}q?#*PNbaSG6Hr2I`ZY&*Vl0bgjx-f=C^) z!};&(1*8+$2Ly65m*ulUcZWuIXWxFRWYRKzUX-$Ln zG<*zP-6RMsW5M<-5(W}WHB~PvKh%UC|0-nn-WL1tGUJ(bsFD(=818KukLjyU5jwZ? zJ71SWHT$A`rlKi{j24EvaF5BE50pa zJI3mYgnY9-b0xV&@MBv8YZ-Q_#^(__*_tIck-93ZBtIO-`+&w~;wihVAS+2>eY*hX zt0`G=MPlXm5=?!f#jtIcUGnQ;uH9u+FRRNnOYO{-WZll^ zy4Q4V3_SG66vyTCs#HWA&<#9;2MexAdZbW8*z8i$8?|jHHIX$OTP%OaRXe+`LSl-os5!co1MC4L zxKGTCItE{udG(y0Xv@az>TGfY$6W=mi!Y*^$ihzVOlAyEVRq*VXN%P`Y!9S*jCM<* z$9L`EG3@3i^5+r7#|QV+f>8r*o3GkYvOgD_12+d|nE{&pOaj+zMb=`%$!N@4xuDs` z(8uYzGop5ciA?uMQE}}FcHGdVvTRK6JrS$$H`etLW(M9;-VR^6$9f7dz1qK?6&KV$ z&J8sH7$f?*+WW}EYvZeuh(EaV;Ui!~-JbMZKb;$$kC{RI(VwS^A0K7~u%{Lyb(K)4 zyYy0I#&5pdZ89~&MD50sf@P1&xEGO@N+gD33nqFaWE_H}CKU23c0OBHB{15#M_4e2 zYgd_8=2ZvKmu^R{k6ju7?Fs!$duI83WxGLq3D{>;|Aly~?v;8~KOt}^#Cdjk(Xuv* zujo`8VPBs^)e_0<2AAVoS4}gqcwHOl`Ba*Hv9&O^1`Vgx+n+c#u zI>t5NF-U9+Y#f?`iYo#XJEPll6XQicYLyX5i&FT7_RJ1FTWpl&FT*CGbDE;YJbyKm zu#z~RO`uT2m=-=VNkIox@aMWxRXh6t<}E;1`n+_oPs!zX_g%AUB|CK(DG^?NTAQ`} zyK9J37+{7Zy=P4CYG6IR}SGL9&g_MFf_dx zo$Q174hi~oB8katPFKZmHw#4mBEnCOzsql7=zZ$sKZ_t`EDyqdDekf2Ty)O4C$Hz+ z38{qaY1q$tN7{{4ZPHj?rA-eVGgiY}3TGiL18S@s*N)!Tp{JUiz`xSAZ%%=YDz%#E>E}!}ZcY}7Rd-gFTrcH(&fV&e_?Y#KxkSPq|0vINmoE*&HZTV9 z`?WdJuHj}@^tQ?uwuxK!92eJsl1idQ-<0ZuuPJTp{<3kWFS?F4(<8;pta&MGhj$^7 zxM`%Ivem;P^Uz0dsPTsV8?M!Yf`kD>=w^H*EA04#DA3uPUcxdIc0a#g_l15>;`kNU zbMTGVxE`nViwN*w<|M_t~M8HaTTi;@t?V+Cs z@1dy+mdHTnlg({K!gep#?yaYaX7@_X`o1?7b#2^Jo+{NMu!7nU!jz$UQhFwiamp02 zxvBOcNfqa;+gO(50(7WcDyBNS8(NQ%foQ^5llT?dvsy5MjrHwe(lf12B_PRJHG1Df zxYbO4X0qCcR+|m^BvoD&S)SHLtZnLRh+%3_QZW?}XS4{*D6+T^UAf`!eOJO>z+3bZ zI{zSm9k_XOX%)$bNFo9E#9RQxBIiLj{iF@KBec9_a^VIU95m2CRV+AOKgKs9kj0Y z{&(gH?-#`uDbnn1&2QH3S@(7~(zn5fa>V^4y|dM9V! zoU@>YG=TK4Nudi;lJPq85c3~ie4U@T)AvgdS0t(<|oJLLUmO=;`=cE zJ(AX0POMZcwoYn-rg1jeGEQ$Rk@-IS8>oA@VsiDbEu>ph-Q~1HB(isLHNYDMRw?F9H z4eqwpvEwL03lCxK;tJ;G z0L8JK>R$7Q$QO6MERzCfvvuJ)D+N~%Sd#NICpSv}MxcJhcLb(x;H*I^5U zuB-5s?k6~ZHT1~IuAqMCDQ%pYzKnV2M$h4URAZLN;)cT%5SxTmakHi!%+Ktjv-bs| zrDfe_-80+S6b}zJG1?Dl8Y4;yiAxhWArf-h(zPi6kbp!!;^GHE6Fvw3c~|4T@k;E- z=#)c@A+PPPkSABopsct9&Ug-4M239vlOfVcRsU^n(@KM)6e0JX2fcq}B~3avk zAEQzb=e(*<8tIZ~)X!hDya?Oz{93ssq0YjdR0rBEc?$t=IV<9#KfqzsQG0H>AT>jN9k^@d8_yZ+4l zfu$$t_rYH}rupeX$dodLuwG5|CADkd3XvxnOY$Q=?AUAo#wqIaJRGy{&$Y?ZXQPFU zA}_fJKf0V;adU__M0m%+F&$CwWGPO6QH22uEwzgd#{Mui!ZgP$CJ7oBqFfvA8T3Km z3BhYH`+Kg#OYqosT5ZBiVm5jY)niNTply-hp$rrNPYD390{zN z=ghkq$(aP;hgeC?U^Q(V8wRI~BQ@pHyLR&m&1iO`biv@o<^e8_iyMC$Verlj=Cq}* z*n4r#X&gVIrv5|@K@nqeeKZR{AdsaHQ;IN6()JT~9x*0$pbsn z!ny|df}@e)MZ|&^vJq`UrkY2P&kjsElrQY*0l|*hA3;e#^di>sa_MlGe)3Lmn)-#T zl59dxx9V-TSOPTK{vrUs19SM`Axc13M}?Kz*ol?B5IU#OP4qG^AiMHy&OZF$6QS~X ziih@BEX*b~^B3LR{ZjTG0_@GI2qQC2l(Os*C7;Y^Gepc~jbY5e_WI8_D_A^i8@w|$ zr0)X=R-oxaLcGi5H~7yF#wnQU3gp{YCbHBl&mwy4H*DuJ=N%-Z6&-OWN~aQ@u*MiV z;|j)%OI{n0{+7!jzZrArV58?n0r1sS6@B8YsPtnyDL0ssF7)G2n;&KWPuFn9^x|o$ z5#7qJuD>2~d|r;1oK832h&9BtVSIe#N1zGvWtVsKpmJN)Iyy+;$5(Q4*NqYhjgLXj zYjh$->{x#3g^r_+m+?#cV=Y4k_EqZ(C%7~E!}scY z^Q{e|OC8D3_HvH$pt>UH(42DS+8wURy@MIYYsK3-jftm{^6EfGc4z2V&+p(Gi_qSEKIqDShInd)48{#oWNqxocnMO8pm11eJ zG?RDp_$g%C)LV#%iR-EhB>HWm#u~KhGnf8qh z;xFcRC7Vs!+^3L3;Z9-UGLV&gj&0?^$sc{2-zg$NMxsD750~TaL$+RQQs0mkJof48 z*K!x5#I@YCJ+qEgje5-E?Ux6qyMY_}vC@EA0MfVu_Dt*A?794v7OQwEr~#Cwl0ZxH zev)M2D|=JRf|j9X0#C{KyY=k4Dq%c{E~_t;kV3xd-Q;FhTPxzwRFTmyb*B+ejNV^U z!L}6W-)lAj;&SU%G76^5$FdY;5e^Sb?=-A9C)yvjhLR}S$;7Y`cHb*vZ73aNVmk|b z9vyo%oRCp|bu5qOEly|;>rt+fDj|GD^>jkx0>D?Zr9Y|k(Nq%|UxvOPAzZM@$oUd+y32@t76)`H?)06p8#iTAL89?^BvMr%>w`3p? zslIl~9S1KUQ0OHlgxwI5T;f6XxIV^F);~ZM*ZZb1#{{q+tQOaYxUkCUh&VD*byac5 zYL$f0yt0);am{51WDCm&0--NvOY0F{r}(0E@kXU2$J;Y$^J2U0>2cL+!O({5v_|MT zHjAKGv0gD!SX z$82iuooh@ex^OXp?-~$Muq>D6TwMANkcwW}x_&BW@`uZR0yR1PSoPT{iZ#YcOe_AL zMaANNf-)rrVF`S>cfSfmpZlq8XflwKeSbSDIQ|mf8izfc;O?FEtHbAS-YkqQ`GW8qXas6QS?8@uBL|vY?r>Bf4;%GXc>;`2Qi&-_Bo=Dfm(z zBIXeeiF-%9B3Sg{cz?`F*H?TQzvjftu_z z!oJbD&;zWHLHXXy@hJbPBrYMAgWfm!dpSBPf;!Stugt%NIJDuV8|pA^n_YJYd;jhe zl;vCe*>#Dk`tr~me67RjJm+9;pFLp5Yqb6p}Ap zA{^Rb%2Av+ICfE6@u4@z6$2f>eQeC=RMjSZExWVdmQz#R4UZd~9Q=M?Rte_;4I?qm zR=uy^7~Z3L>PHvNvJbrs#CN73JfBaVPl7L-{}fi+OprWbp3Du%ma`6gtwbqCpnT`? zJxVbX=aJ_2P^Ja5oNVcr8e|LPhP;N~&NxAu(>#k^jGMNvuDcfg(2oDH9VV2@{G0^O zW|i_5mwFQsN~gf?-yW&@CemTp%ZAE97c`18`vK`Zie}1V%cDK{a!oQ>A)unvN(8V? zC{*p|MJq3x^Z`BpOvbTYBn@)}-d*M+{axkoAS2^* zF`=iqiz|=A^F&CXj9Oby_nV+QRkCh{(4D&RSu;=-=)u~sd3m(^6z%Gye z*m)1!yMz0#+z#i9NS0(0GnNlWnpqtQsv4_ZM^@s&ZH_0B3^TvK<+xwuWO&Do{g;+$ zo465I-SylN;;5IE#KvG%+%LpIDR07VUz*ZcX+%ny(VSQSkK>(;B+k#G11<$vS#&?S zcOhY5`j^%4FLoY|@l8*~$Hx6QX7{~kFq1DGxe1j~?+`Qk@(JZYHxup*o|+b;ptHz> zc7xAr90!0cqUP=BPZs|M_EHEoyXl{T%^&3%bRORe6q6U=qa{z4eXb>FnGkh#^6HB4 z!t5F(kX!&WTyy_H5yR^)m5ok*&cq9ffskPYFuwG`P4AaWp-1YTL;l%y&h`Dj9gB!3xfkQ(OSIz zWtx)>u)tIu?4_Db~FneI+_+FrZ z9-)XKv1|@hJSPNUJ?%8D$hoOI91(cVafA}obm!~*_9{>_8M0W3OU=gIT;BhNoqM;$ z91w?&*M6-ReAp(@LiZvd+eOAR^P11$_-*I2g<6Odhy$(K=fncWC+mDu4t|;*l7**# z#M17V{T_hu4FH6PLhZU1R%Xv9K807R+<_xzMhcxP9(;XmATC)SA1Rli%t&QCt#Tr+ z-(6ZCZ_cQlNfGl*Wpy|NVrKA!DHU68$TB54+eG$iX!3c~$P)F?zP8s>zAmf>htCF; z(@a7kHPC$0nty*3&%;Gr8e$5_98MqpJ&jZm>1bF;cO5S-c@usw1Gtkb;Vi}J0)yyxdw@}8S(!T-SlBvgFzgr>pvgeav$D{W1=;!Ub zjUCZT!IU*=D_LB}&$*d%x+L`bm!D5?pM3jJ(6NQ?qZ9~eG8~c$vId$bOz0YmjYl4v ziFi0K;K!2wFGqd(DV~&S#gtn5p?d2Chx@9RzhdbK%8bIG8@Y~AWR()O9tARX;T?4X zZiZRh-90MQa!Q{{<~;PKO5cj;%Z0-yTb-$a&u?_gQ@(xkgF4in*Mf8wKNs4c@03o zNByl^KTI(qc=a$3Vng_HHg zyG%tT;<%U~1NttK+;S)nuI1xCRsCoLn8I;&?5OiN*;)M|r3-bj$cu7kk!)tvNgI5ED2cNP>77Mv)a)+y@NGKTL~eH|w+1#Vs$_Hv%&ZYz3?X6$i#h3x>%ZKHLk z`v+XywqOlNY}mu4Qtc}$81I!NaHj@vH^ucdO{g^t_7_v_TuP=8U*igAXxcvPd^sow z`uRGvjyE#Km9_H1)x@RNCWza96?LS1AvQmmTFA&Pb>&7?Jp0Dh*J2Z*guBK(SsnVq z*C&{KX=s;iJmXij)Rq+L?U8Z<`h!6)cG#omupY_Fp;0wB9bpk6=Z`{s$EN1+ATAJH-G-!=O6K6p36)46s> zg~k&TVB2Tg+YV(w$)NprKk5_{Brd-8j*xFsXO37oCCHzP+V@-~ z9{JKnq693Ve)riPlKh!#d03?sI=Ty5SCt@*g3HlCz5LnklNVBfppGxHl_0ws&8%e?Eaz^}QGGb#_p8 z19xM^6~vyFu8%^cH9@OSSoG<_yYCai9jx5hEq)ssRFo;-o^uW6SA827dptaV`e`swIXFk&;t*q69+y&30B4;>3;05#PY_iM zVTo)aya_hRpEAS0#})T2D!LfbbrZ5|jRJoh;RgP=k-79uHzx{RuuVurwIjAx#m9$Y zV8>uoj!s)yS5Sf#>q|SGW?{MLYq8a*z>!f1GGI$loXiSF;Z+R_5g^7y92`t?4>bP3S@oPE_h7yMrxwH|GlyT5f{^c_mf{DO!4r7Q2KDNawT?3hoefA zWvP~FHy0Cq+tBx8t-}Xlxev3_!@4>ToVXgarGk)oou6`%r2-fR6@F^icgSyn8GT!+ zr!3PC#D2f$|I1q3*Oe6vkAEnqa5(kAnA;0F{QYf+RI8 za(VrYM;?T@<89=~pfyU9u&1+GbKFB82wtmdiWvQZKMw@|$8mvFO)L{Us@h@7m0=y> zszVP`Q4+Zu^?Rbv8uz(sTRgnqB&QRu`9F=T-eGEbE*@w2lu7PT+q9y52BIxnCh$eO z(ol!~oBqS105ckH;h>0r&i6mYefm#Rjdx~I#6Haz2{}}f_K2d(8A_qG?uHw6GbHFunmQ|E2{@-(5sUaD6g^%_SZOt0)?BymWAnFsu{|SH z?l7SVr+%w&sHfHxG{fCt`YVImqK+EYas2sLgO*g#R*gv&_@56y`vEo&4^2-w{!IgT z5Ba~m=NyOwKqdpXHp5RKXPYIp> za-NPvO(~kiE|!xwhYw;9VT(E)riWe(TBOu47We#f+jswXIPrc72u398m$h^O9^gBM ze|_g^BM=4WAdwlX1f7qq68HmJ=E+D7q5dk@+{%=mvh5{k*-%tHN>{5sa1R@UzNGWaav7W1< z{*_XYeO&+3)c@_CR6C*kH#bqUw?+Ei zycCbsQ><^$i;@Fd`GsaTm|&yHAHA-{sGq6!qOp%lXeeK^4E6Xs~Qc$=Qda z16Fp#o%-qR8*Lk}E%;DQBd=(!CRTq1Ed7LTfR^)yiiRkajgj!q{4$tybY7b3t=bQAnEqX5Q)OQh# z72Df89VQ9A&Q(wUtp}df=4P6;kl~$g1dvBnvGn$QTX}&e94=2Yv*bjNWoJUaa5)LTIOxzxSHoOhmiS} zv(S1tzuNw4qVP5`oz2a8o$bIdi+``gX=So~k{nEIK?<`GOPCxfYA~7RdAg_vGn+dv z2KR&TBLu-Vr#@>l++8Y;uMw0**SU1=8v+(}wpGs(Vf3~?r9|g3P$$)>#+xIdPR`$Z zo=fEDV8+vx(}uH7C&HMM1n|CK-LCt$%@Hp`^bs0nzSl-7gZY$^{5*LzxJbJD@5+?tcwMstyA$Tio+0AfMlGs%1$DzouSE6%Ww5knJf zSDn*hhFQyxt=`JbaG$WL*(EVg9VxbF25y;mOBg72?fkQD^vyq{c;G2FDc3fB)BW$L zk$u&S>#C&(ClPd#3uz96cx!$9O<}(~&YhO9+XlQn_nC6W+Xe@mM=Z}8NRU741$P~8 z8eab}FvP-ofu$_}Qkyk~mb-F8bpz5KNY#%&^xCsUEkkesda$f$(UT#)@ng1k4bikP zV^cFdG*FLzyq@f6+8eY@D!g4R*TBuaT zDov^gTb%dRx^%xksq{j@TytiTwaCIJX>?+nLeik~_q-f32`2ECkuVzU!~@<#EFs=T z;oo>Kh&hest)J`H!^9!GEw~q~NXI_D^zKaY?bqe&-oc~x=nMJFV#NGt1PI;UE?_D9 zO`SEYYeEwFJ(yYaZ0*Z^n&+ZPD0-y9lmD~#Av$t^*}E=M|NGFMru}VWTpYH>r4aXw=+DR?V_tJYn$6-Bwf`KzG zmFSvg&TISr-Kl7JFy#w6h9M?d1{^U08RGZoTxWqR;&PKFYRpRQET9fs;3yR5?Dg;A zDdT_b_2+nJI$e_d(jZd(4-V`d3p;jDIA6^ugBy}=hd9mmBNIrWxvOE!NAqI#O3)||CEDnlFYTYq|hm5EbBPIwFJkmc`MuFSO_;zRI_OT4~ovY`pJ}b13Gz1yw#`8X#6ZJ#d8hA*lXxq!FA6!j%Qw{ffaAr7T{c%IlQb36sq#AX zq*0ZV_jOoVZEm}a#_+zyrjl!D`aRrVl5I{3?@V1y1P65~<$?HhvJHe0EU3dhPv+-r zB%l-x9s##vX~_NZVOgT&+zjuDk8>}k!n(^eSVoYv4L$7;|IOdkl~?A4P&vA8v)9qTqL|HPyPhv%l+UEmKYGIj12 zH(fktEqZANI$iQfjh;2AR&NA)IE>gw>q#gL;mL(Bl>G0T?U^Ah^Y>v=r`pf$7oAb7 z7L>Jm%lJMF*cPM9Q*5LHo_nRHacO5$FKFJrXc-dGU*suw=65=iCOu;KN|aVzz02Pp z^7MBsV~44?V#TT0_dfGjg9dQ=DZX2doXq!UUl$T0X*9WCwy-AlV zZHQ#->#Lmn!qjSHsY}tPU2#n&HH+x<vjrJ zud{i#fnH|8t@EE9iSP3^-F%oPju(KB(3jhiW7Rc(YMR`X0d=KxR{pj+{(2VUYB|XE zwJ@|>wa4T`)7&L2?F`N9&78A%FqA58d-dTIxJ$Lc=|uQ;No07d^Ve3on~d+6x{Rk< zTu{1;=t9bvan{(NgiQ2VxzSA!x~T5(r@V(Mc`Ym5W}398x+;Xy0f<|@xweAcn_=D4RQ)=ip8Mk>fRv(tX^FbzDe77H+b%dC6 zb)$S1ey}@N^BSMg)h6z2(=yXZB3)13Ds33sXao14YA(z_YX(?>>D1+zw*|WQS2C`c zdjHhFIZVoP;s}@tL*X-f@U*Um=BCZdBPiu74aAp&xcKw0vsxKTVu2L<$>bLVGx-`( zwvS(k4*wY%`}4UFb!SbvqEWlx?6vpgV~J*%nM&l7=5aZg)JQ-LxhWawSJnv58sVl) z^v#@C_6VD0in=tao@>9P2_tO$aO%P8V}r9|E=G}tr5}fybP@!xqu$+sur9~zyjLFJ zD09_on%>Hbf)Uf{MCV)$b{reB9;%D;--MzH?qWahJpRHEfwCfO#$JQ0EI;^};SUhV zZqN35rQG@nbA`RGb`b+qOJbxb5sc3)_Zf zoQqGKAxshw#2Z@mImqVKlo;&7scpG3z4qCInX z*X7*>LIr4;#S^$EXIT5kH^96HA>&eo_g0m@b!9+O(&Z5`&x{FIzdZlYVmf+n)%$!I zpS7&fzO{vxK?M=`%Jv(zby|=!@zc#0`2#;NR%1rU9mfE6>CZn1SE7kuJW?8BbW*02 zR%QL}dW(D8itp;YZO3}u8qUA&+~h^p?8j6HM}@k!W!ld=U%ZhW-L<6C@X?)Exg?s_e|f|L1(BQsfyqfGoD%-6XTQ1&*#$1wbHfsrguJ?DgJ z??U02{arWoJ{Bb}3A+Q%@yb{%G`;};=FTAI1-JP0P%x9j*UY&9@0Q8td(KQgqscoy z6?wq^Id8d7xL@QE{bfuW@h@OppDz0Ze8La#=rDZOzPPv>Sem35h4TD;&fF2AxS})>f)kl?+}R1L}&zIGZg$K!g}S$u>DPiB&=ui_o^8KDw4VE{Nd4q zv#t*!-w7|5EhCJZdAe!ODW?)2o&T`>E&?2^N^rsaYzt==fw)<;*0ou1B zr=f}k8Lcy;*wiEL)EJ`X=k8WicOD`@avpmzz^VB(`q=}yWl>DgGWbr5L*An3mb?T= zP{gu>(AmGD4Ns${J2>_NmsGln(CgTLqrGFO;Y>zqOJ?oGomyPB6eAY!R=Y%>{f`{n z1*gFVv4?1jK@b1!&P2>0unA?eBsU^jzdM)gFvQzc`_p!*P0pfhtws)ka&+`!gbxlc z=SJ2LGpET&!rt7cuQm-vN?KA1e0>%EsMnZ<;_AyFB_>*bGw=4&C!H1yeZ3dH8l7?U zimc`f>IEEI@FAyAMuqg2UkMF5k+#_c`b8 zbH20RpZCYT|7OivtEIa7>8e^!b>B?D-*Sl!+~^Cp8L$1>ItOB|5W`n0R5u#jFH$9& zTD%%*uu{2*rl1^>n#jdM8z3V|K?5&In>T~O+1kk@C=ZPcLMqXdCR3FfK*p8562G=4 zC~E~J($b4(iN5-hn5{M!;Hz8?8YIIVqko9IAP6!UzYz3+pIep|kF7!X?2R6XYe7T^5&?_lZ> zGK58gQD>0aJuBBE+AEAE&TGo+=TC`r^vHXfb#1M0a|g0en{1hY)3j1(WGD2(RK2 z1(O78NwQAvUbj1<+gQJnQqt?^#i{6Y2X<47JMY7-EguR^wS8C?;gD*7q@lyx*6*W0 z*@^x&o*IPldCiao5rNEx2IE1Z4%0GcBV4h0{%U+(Hz)uD=G+YDBJ@86^$0Dh${O zLPvA}J{>ouo`==~O|(QvGb;&#RK&a?`C*L)o{9gl^o=*98|IUm_ri z8XqA-?TH3KSKK)$D6Zs7@K>jxXF^Xp$1ZhtumFj zxH1Y8k)i@A0p|kV%0)?)N=lQ8AmH*{4e2@h7`s>gqDyB;z>Gd3wk`n`&UT-Mz@(h3^5ICA2H2%K{XI_KhcY+~|^!bY$6$w^UxNi??u<+sp zx1l}}0oswL^SvbNpIwi!5H^uax0mjyH|t|qm~~&kN%Mpc9Ff(zN~4T(8!JEvtek8y|uNk^zJ*aSkh1mG!i zelFOHrFziNLDdVT_u=kLN1%?&YJ*;P-VtD#r&qMq(8`i~q7^lY`FwGgc!CE4Dg3Hq zZk^BXI8v6;IS#KSV@r|M1Z!WDPDb7cgaEm^hYT_0$2BD(y`je4+^z7sf*jHmV99op zuzIz%zSKZD!~DvK`Vu?4;Y!JdOw+>@_Z#TvjrCVNZ%j&$x~j`YXeLWMZ?j^Q`7O39`pI}t&vWlY!m0c(-GlR;k*?!iD}dNj;x5{uHJ;J!x;M*jFZnkj@6UpU%z031 zHw7i#P{qa#sq0*fGXS?-4G7h}Z7uvf{Ymifyw7VPefY%zXFhnyYN9riV57rAsmkT* z+d0j71KGnrP%d#ko;w?a3R+#(q-Dhkfh4l}y3ALV;C2m4R)xI;?U<}85rlW@+#wq4 zNNFYqN{dmhgPx=;6k2DIc3ghZFzwWD5C_whE%gzqboUVbf*;3ZI;25!K4xKkNwbwz z4Xkka!;eXtHillTA$k7k>=q$#Dp#dMa4L0`S|T_gG((Iu=Jj4by10l*^c^-|t0XgLJ(?RuCF6_m!v>SRiDy8%aj3Q)$-^Q8@)_swN9bqyQ83-ZO4 zht{9!I!7}aVFtAU%Jb9M|4lcTl}W<|qxk;)1j&ogq~WXPo2c=0pjO zrFVQSNS?prfz2&ScApq-Mp zXPm4lm7k)Z)bq6FJUqV8WJy^H3xm4d*^;KfYHI&!3lLrgP%u~Ls8rw(bNLmItMMPQ*)^8D#WmPvr!h8~HaoDbE@Tcv}C#_K6?NcQ4o zm;-<%NTfhhy*Vqf3t{ItM8$rn)H&UA2G-2Yq)Wj+h(%$Qce1_wevwSI{RnO3lk+N14(?IXfe1fkAuwXc@n4! zMhursI{Mi^(qd1Qr*jRwovzu3)D|L0(Lb%U<{*RhvJcmiZ zGp#Tmm5)GzkwA_2DGLG0J@BEJ->eHVhUkXH^;zZQqwE!H^yiojLG%-jzlpN)?sPB$ z6z5;qpW!CZ&>=fkIL>9Qq3jex`c9?bBXfzY6eCJUEYQx=;U835 z22iQ`M1v!0bp;(h1a!O_r*WE!2coa!!RL{xsCoI_bV{mdxe<3*3T}wVV2n zVP#sX@T<>D4?;uQq=HCoqj)i zTm5dJ0$Q=I)8N;PAsQ@QH)q-y-{uwB&h?^+oM6rdVRp~iAejULtOcD=8YW~Ha{gze z@h9a{(nPw7>P(DQXe8T^%`6%^HPxtN9}FZjC6OfONHzItKb zsT)_*x#UPY+$B$C91Hl#`9TyY1tE~F5H#VF6ScW)6cT(NGAeK=T z{FaT{8WOI-se=OZ`#{br5vg|06stDCZh!0IjL6!zz816mOh_R)n$**Wo!If%`_$y| ze4x0T+c<#KznML}yg4K<4uGnF<*UnC9K1LZoDGCfBjsR6F2}Wo$Tg-Rk9NfSXdWJF z9kMrEVy1o}*hO7+KTBLL)T}3DswT6j!p8;UwFyahH}snel{hY|i9u;w0%PNnB}VO% z)Ruly>6T(FvhoA6s{TfDX__Dzk>p)D_VGDDoyLJMAPT9iFM@)_dKuOV0vItf(9vhy zF-DHmv#Z2EhP83m=8x%(C6tmdwafEl?$f2HNBR_iM{(CrX$Wpj3sHnc^!4!rij~+E z$`B)KEq9C1*f+VS16WJEfVE_8!*OmnPNr&leggyhbW_If1T-IXBn=7{q}({fd~8AF({=rWp3K6olVkAM~3_FqzP)LbT7- zUz&wvG*CLR#ye!` z0yq#jDM!$^vcZ4N5! zik77sE>q~}o%d;odrz7m(SE1oNILgcNIYurt?b6y$hA2`@_y=?{I z^}7R|@y&CPM7oSduAGO|Mr+zKQS9yV`3F=W0nXj}sJexpxn5ai``)1T8@$^?TkBdvN zpqSVgEh|0*yG06H@ol~;rUe7@K*0VfqN+#;n^dd66H75C1p5?CX&8t$Ktfc7Zo)(& zSax9c9t-60aArz^eiT8w@i?v(O z4mB%a=+YNvLYW+_(09AK4O5H0N090fZ$H=VT3Oe=54FFoTLISKF-(0@OysOt#Xo_D zi-JhF?Z%5(@0`okD;mc@Ia1|E7niRokmo^Cx2psP<0$@y(eM-Hv$dMLvJq2mKZr}AT z>Fk(Apv5GX<{E_|>pu3#^bMpUWSNVcLuESPRWp>3o72=SDlVumXipOWpt2Ytk{Zt{ zh-YG@%lGldOR(0RUJmicjdre2v_Hn|Kj)6eMYDdjiRxn^lJa;>%+sT@WB6NxvoWCaB)Z7Nvjd8FMY&70Ks<`7uF*i@00|2f#U6bR(GN`eBvl?&Is^d2w%pGwRLtlG@mpP&1l)G`K%?f`SasHoxG&z!3~2yVF%x0 zAnfoJBGVOG(xD)sG};{KQxpI%tIEUmtq%nW!vW(smIKxA?` zqVD;+DRx!;DH|tMM@J5|)5dQmW#=0C%nhv%<2_T#Hf>Kd{$nh4RfFtX39;-B^SyBF z8z4GXrir?{pp}b$B>$SIz;i0$l8RF@UFp^A-eF$%zF2dE1FgW|^0JKZ zpn>11odR~-dKJ*z%Kzr~I zj@U@gla0@+1it4fn`8;2w8*F5ihuA+zG>c^`~{UIN7vEwy4fu>p6?OjmVm8pPRVhu zh3+zr`IOw5xowNaL^81Iq`*i-Ax`_WKJi@Xs_LHc7h}=ja!?*L zRB?#h1y6S_%)SUllL+mhHab4hExg?rzx%7P2ECRgABHRK8kU2OymzAgtwOWnU})9w zu3o|`K`)MX2FT$ht45XaUeGmJ8Gz5$Lm=f(3rx zj4%1aHHpBEvOnDoV+jU^L&e<3>kPM6k$w?mc=VryloOkO_t!OOHJ(v5I7wZew*T|Z zRl$URFtqL0)(3D75qLi&N|_ZQYE?Qf3gA-Q;FGo9Y#K_}>5~bgZJhi0-leMW8;q8` zG?nG`9-)wCO4_`4RprOvY*x=PDngC_5cZ7dAFPiepREy$Wc=dPOMoEo1&E9PVq3Ij znJ9WwP*t@(*mUG;n!H_GzcZfisxQ?4Eq~=bz~kV@;7Dy#$)VdL`j~wb%~s_UE&FTv ziSJ=_DC-mheY|w>UjIW;Ci||9!ph>6IKOD}_J_?hE2>&shWXmOV)mP)3O&`MiBV;K z6e{i)Hb5zcG}NMW|nzew?^`Ld{ydt zh@($W_kZz94f~vpD1i;~%(#Ilydm6cL-efCOld#v?|V7Xwe)iiH!`i{w6-d7R7%z9 zsw+28YJV;awh9T^uOL{Z8T5rkEpcq%a@xjF& z)6HPRp>Yh%LSpxG93B0|1LKS5#R@uw;F3t^0j=>&XqDv;YgeAl8&cl)X*a~Fqa~AV zCeddW>8y54$WhSyusrSc&4}Em_uFarM&PfY;Nix-63b+LFP5`M6zWs3@7!{1e|f!B zBoJ!QQrE512N1Aqrw|s>oB_AE+684>9)4IlKWdXw84W+xf5}n`R-U7?Eom8vteQ@d zHy7c z=c6sE!uG@A-O+H(%+tIGuXB~B!(6m-A{}M-O$Xf-kN^E*ZNvxEZiH-DWzG9CIf~#! zW6zZ^pP=d`VcT?efu{!e9o1r^;XTLZp0oDzew=jAt*-?&i)D8%*?@t?y?AT49g8GA z%4*TJO1n0|T53Had;tF0yIWivjUyrRxF=rsrRmV~*RL0n(>DXvP?al&#+qn9Z8LU& zm+@*m&WmmSarzIJ;X4WIQOnais`P@kYo5`cdQO$Y(`_#cGTq$v2nC!Jdd&ASOp0M4 z(={9mngA2yu8e9l(qK9LmRTP|LtdwU}PvS(+q%~*D zFwOTh#XIBl8?T&qz*Y=R+Y}R2#nl8+du%y?XNB8Xx_qv0BTw(Ms7;(U?0@ra# za^#~=%#6m;M+-pCZG*!Q?T8XoaBt*3GN5RYIy z?DZ@_;_Vn*J=ZuPi7h9~&X0n=K6VlG1qhO`;@8$Te~}02Xo?g8EdYp^Z~wEd|DT8n zaJ&CMO2n)j4q1PCyb?caV>I8)a$H*TmhmRhH$C)NP9L@Mf0wN1qjB~*>%QA?H5Q$ODY_#R8=Hu{|%7G&5NpCCuHJtQ*-kePCb-^;qguiKhHw$S&x~V zK^tsON5s7ury98um_U{6ZsjocZ{U3}wKawrkbq!rxNQtI1m@9+*e{}PU}p8!{%VP> zlPEo&blQ>OoyabWUbs$(6Dfcx1`^6z;*WPVUy!vwThc~07#(iVUN z=$whInt{YgYIS(8@H9dcG`6N~I`dC{g$=MLO9}FaNGLx+f)tYP(*w?CIQ5eiQMMtN z@A(V@9Ftfy9;wjN{n^LsGrFGfM_2l`T*4;t@n99gXtS?t4&pa%wH-h7dd!^x8uqB0 z&p$}ivHwDW{_i~CPf%bxI;U{l1U(isT2#(@4cfv~iKNf=3qRN`@|u5rr}D~Zr^Q=; zdZSrIwV+wUk4n|#W*k68T4}miGM$9YO4Wn^sZ#r&=@2VGrj@#g&b~W3km$xy3uI<| z{nyNl-*{jxvMK6|Y_@{Oe6&vN(H2`gdMgsHa&hH^@<+wMWTAV&b1!-S*XtDm6fzc0R`Co zt;4rf2Pi<>aJ9?@+c$7YroFbSAE4j=?GXt%Smh$Bf*U0g#4Z$b4T)22t+CV}166QL zbAM27?P3A3$4u0_;G_K;k=hXlgCD}cjL?CW{iyl)XVLlFe+p6liuJw6!ZXMk#&j0}?!*{ssI#tGxzT^DH>0NF3k)xyWrddx}uJ|yY@3s}#@yYn|E zBw<-(`ANV6cH&0zux~9g9Rk7ZBAipK2{4dg|3;*aQHVT=@B#jRUVfV+QkSZlBhq>J zzuo4@f^oIs4V$t4R$zAgCJllG~~OtH%9Tkskv40O`N} z{)_T&)#U#rHN6-2o`E-&v#+*9Z6U4LF;&KC(Vb8}>Ib4%A7XZ9B?_NO;fQ8mVSf)< zvJ*~SDz-(a8P(_ul-owKNF< zLiBVRv!Q=my}Bb>s&v&7KL6vt6VhMBO3(w6dYw~&@we4~TlypZ76!X}m47RHpx8ip z1T1Iy+L{_!!a3Pi`d_(naXx(YindtM+DMb@zr&!6y6Vw{$D!;#sUo-C7zb_xIr(QIi#1g`azGK zd*46g@iBfzlEMs|NlSGjaE|CWZcP7TKIICivkSL2HPfV2hAOb(MUyUb*S&%%11qo{-zNbNf2_FS(kva@ zud9_)FP9b`4je?>)1-M^?jb0r0j@@pHcE#s(Pyp?+s#u1>7`L1 zLUb76gEHYOAsLvgjOmjsHhRj1#m9JE=BwHn#n@z2uK8u10@KHOV8X2*!9dYP#mArc zM2L)g8g{>}a_jEC@G&R<1XX=SKLvkI?n!%-#SSEeK+NpdE!NYJOiyMoL6NfaFTRnw zjYsfvJu9N^GN;S4|ETpjV72l~2wPh`K9>l;=A4c$9~uc&u|nS|ISV}SNWT3??f-hj znx3ku8+0@8*mhzZfBC_V?%jCH#~qiYe#Z2YB8r5tp2Hqlk0}T6K1V;0{7-KRW@8{! z+T#F9Y*ISaaby90C@J)eH!2~7K@Ss}rwkQ=ADWt#)rScZxyQ3C;TH9@!x{05$VrFA z#5DHF+BQIuU6Ma1?Z9?KDtfPI;Jb2Hzoh{M+cDbf8DhqT1-?%JI*?ZV&YoL@?AaFu zgir0}1(XT3w54e@6SK8&-@t}Vq&f{eHu0C27rgqdkvEZP{UZ z;Et^gGe-Y|3FX8w_KOxnSA^4tVm-;a;oo3%$F%hLt^|XVg@aIVNe}83D=9ZCGdWQG|$q{ zxQv8Nh#kk|%L+bp^~+3;iJ4lgXe=%8XI;yGozi8imHmX1X2ZN9wW*!y%}xIe52nfE zfO1^mUV5MHV*N6>b;RyB$eSd42}tLctFf02cqsb2LGIUoe|gdSXFwVqO>7IhywZ~4 z4rWOX{+z3`h&Krg%0BjvfG$wN=D1vOUGMSiE~<6eBRN&N5_RbkS(kY+-M5BYK&TwP z)n2xMP-6o&cl}#V^uXckujiXLj#;eTlVz>wJ3Pa%TGtnXN97Aza9I>~b`bC)b7g{z zPea7?Ir_z!iBDlaq#w1^g4$eX9$+(@QWih>E}mKcXiOLr5u$Gs^wB|(ChtQ3ibtYI z;e^X((<<(rI#!S?(!#j~>qL}Q+A7%Fle};hJ=i_-$-S)Ex*8m5`=&MVtjnB#%Fewv zAqLq;5)0lPBgL%ElnU=;hv8J(%W1_WZMy-I`tFDPUN0$Ow9q;5x7z%gBrd-_m&p4! zDzKC7N|gYDdrj{h;YU$xvDdYHdE?OfA9FRkj5Cp7KYHpenp# zzF}^6lY%3Xk|QM?XCQp@&>TDTer4Kn2aE z;zU~K1gZmLS94g<%Fu+TSmKL~v?+@fX16a{n@1CY(vyk#kM<)qH<+wBoglT#u}xmW z=f9El-&6lY8#_)_G1f2I`vhHkMgMfkh?7e4(sF-&mEZl|xe@b+hFJay7DJffQDI(r zZN;JB+p~sLLE2FNI~T>Qz8RNp4N8dLCi{g;YxRz}+_ay8EgXE)ZJL9t~SA2Tt?L z%u~2%-YuAvE;A2hLK?I7Qi?RU+UN$|T)k0_$XxtNxxg1ql&D~}?&!I*EINC*@Yxrk z3s@_Yq+>P02-*iH13j8I{YkNbX9*OcL6)O+Idq?QL%2xa>+edZ@n5w`is!mbgn5w< z83<=Gi8x4MD{#N6kZs4w4IU+%@#(-Ei^m18jZ1p5FLV0^l+CJCk5VK|;n{%C>o39D z_aCuZvEruiQuF!4`C6k~%3fsu}k~-FX;Gmv@4e~mcFykoL2>k&A*HPVy|NGf19ENieJ zIu+f_uSNdzXWN-SBZC*k-@n0r6;OyO8HT;cn>akXSpP&5Bu9iv&Dioz?M=UT~F|}aR za_0Je!<}=Ddn%Wo52N{X3fF;t@z5A8L=P%c1gRlj_ZF~^ybYv8V7yUgu}jfBF*xg} zaQ9QDoEg53w&$Kvh=|!$-N6UxZm_kg*P##)#vxf>_n-GVz{2RGYzJ}Z}MM)SPLpM4&YSuKY=TZo~*0O!xY~+a+ zU21fdiGLaYA~*||sUnnxeISe5&r^Y*q(GsYkBWs5crDbe_TuAtAk=lmNh50*0NJbV%IQ;Kr z)7v!ec(n5CXKyG{J56>jVm|mT<_{nrXgmr~NS~`v{8^A2GYiNE)NpoWX_&W;3G{lE zT7tDdV+O|x)7zHDos%p7<#=P^x9{hCjOd`Rs5n@<34HdkqqQ~gxff3Vbv-KSKH5)H0f053yuJ|I2VM2CH@ys#?~jz6 zxZ&2d#saZ_L^oYCWaZY1_#0nF#6d&t?j|%GZ^GIyk!Wo1UIxtK?}TJ8;x84{ohGMc zyxqRM$qO;qfE3&)vx8$!-hoR>ZY~=xYU9{fAU>Z;aTQ)}F~ z)W9K#sM(2h__HhGe$AHI7;%M=9MfM$kBW`x$#}h>KBp{wvU8P}@*xaft;__| zFI_`dJVuW7@S-x(m_(|i6AVgk3B8GC#mcYpz7ots`%w33gh$;B7~54;HZ<6;$HX5; zo8PG5AU98wV5(8;;c6gp##2Cav__;3?iE~-bzl>OM z(aO;zt9I*R8kd02jwLTU_dx}K05Zp~Tqksl5 zmJ;p-zj709Vf3!mr%EMa@1Z;oCH8xHe-9iHcb4(wo%cn!k#89=nN9?#smA=?-XNwI zg4Z#CRr-SG4;;_t>saK6yMJ1d5DZYk$BghjosmZ|6C9mquhn%K-VtlF^Bm2JXB^6F zjVLeABFC?0Slio^dn~O}|8Vx~XWVZ$UN@MA7Mz}D#zzM=xmDN=w^{(sbtL5%n=d1i z;ww4JmU~XYe*hS%?2NQS*>{Wg#0TlRd-U7%twc1BqT^W_o59EgxD-4T7H2?w3|{zs zZ_rCkpPTp+2qTH(iWW~Rz1yNadf%Qz> zhKCZx^!){onf7w6#J%tJR45m}I0_{G?rwWzS%=WGRV>0cGv_!dYH= zNR^xnijqDVP$Aj)nJxQxLHrL!MtR$go#t6n>gQj-#awfbrJj@|JzNkM#V4|9v<2jx zq}7$XRxmm6c5+hNE>s)kKlTCuuX{ygnWZ`J!-C|VnL^^`0N9qQffSrHCP?EySQz2T zn>9x~AaMoYs$ShhF|ae4vu>-06`m}oz)rP7G!S_q-vu>ga% zXcN~(KFUja;TnZ8ia->R^Bbc?M2i+hk0q(cWQcqD2VU$@DkHNdGQk(Vq6gP^ZYx}G zpHzWZ(~o13-_W=>XQY*){Wmgm&VpUH;f*^pud07gNE{E&$}PslWv)C59BM?NnG_+; zj^AKNiwvmESe=o|SHVD|V0s9|^GA$a4@NwK7QC;J55viO@V;Q}I79RifRoaWh0UZ7V@ceC*~%H@l%>sg5P zetsdz@eyQbqpaobv0S3PB>v5x6&a!hjn08_XCBSnHgQv!0aUiFt12m*<6@ap4C0%W>fLS0_rpnjDZale7F>#Wowd)Te-;5;aA^0$Q+Q)Yag7bZPMsBpTqWd&!ziS5f{E7+?6mJXbzLXtQ! zTAcpL$F(dDtB!lvv?QK!Je-))NDJ*l>3VXiE3(JX@gnmWY;ucr>AC;LX%h7|Fr8j+ zK>k`xp5rX8;jVG^A_l-JyS^!`$qz^}wl)`RJRki$cy}K`tlQtM>EGBq%@Ue#zW{t9 z`8o_jVs1p073l`a^(1Am@FigjJ8K>Kj5n7ZX-+ie)`DNjN?WF84SC?2 zFBK}4Kcw;a{N4w~5IhjoxP3U}rB-jdW0HA%Jr?+Ti}z=Ow95+@dB2bS-w(I0tjjv< zyFd-KvV3(Bt+yJ+t&e|%cxJQ7FW#`CSc!6b2Nz{ilZ6YE+l1v3j%v92P+0n%B#Q4BWBoHsqQqV_r2vjZ)?bc9BNIEqwyZlkzdWpcr7zpjS=WU0 zs>JYpYZ7Hf0?OMqbN$ew*IQxupoO|h8I)SD>cGZ#W88Oem(L!)It1bfH6ICja zr4L0UvE2hn-xvN=U%>kM04@p1(gc%Navp$GR*wzc-E+l(!<_|Ij*>;4{Z|&UIE^@Z zNqQQndJEQ6xKTeCL7ltkEHu6QKKuGuoovtWN zh#Z|vYe^h9wT0mmX?nY78*5%Z53Rn52aIhn_l$qmjwk>g+cW0Qt5+9EHtuJ>{1HCC zv3@fP^1R8WZmi5@LMx*c@y^5(>v+S>fUUC8C4@IpP2ptF@F+}6f@0kVlE1s;K znkGSds7VQS|7-`dQ#7TpD9TcoDve+OW5S!N$snwIg!+uEWv4`cqD-8s;QC*84Ul0g znzE?uZLrK1-4;zCqWSpw9`!T%u^ejs`!^aAVrNk3R(Y#$4!JwD z&d4vk^u61>BeyT@(-%B(!F%{hkFWF5XZ*|I*T@I)gb9i3x@JpmIan)bpyY`40n# z>Lbmd64Rnc*!x;l`0Bv1i?+a`C@JAv`K6+5U)ITb;K%b#V!4q%|D~3u2~mc+HZz80 z#!NC#ku~j?ldrM++ft?R6AGW7T2L3SR#Nz_Pj%7zrDR$$c#LP2JLQV|j8MAojhMBe zI${b@FjHKGD=j9tmTo(MSEW2)XT)67-OpH;63z|yA6sw<6km!|3EB#;qs8q)LSoIm zk(K3rraQdr)2?!+Y8G+*8b74o-TWwScwf!b$vzh*i0mp~Me>5`G(=929vH_AEQ-)X z4#DFaF^+n|M&#tQ5iDUFv8$zR>V=JPzjf#R6HL?_fu=Rx8os!ZfvgeAQvYB1Z*(VR zJ*?&)%=xi=W&?pWLp1CRz5j&RzL%B$V`~RdG< zJ+BD)*uS*FL7iJq<)RX=HgM~1FuOImfyje9QXEK(YgF~f@%EvQ08Z$Ot@!Sv+?l;h zfKrIfG-EhJPr>$2BIuJ`G1%X0p*$7nwQ>~&`VnNm4cXZF+tZG2VM~{q<2qG?JxlU@ zqrVqcciBQ_!k*(D_LjKQFapCy^VkTr%WX@_@Eacg3DLHd%Y~1bC5iKPeY!Go(k(;Q zg&!Q)W&+(8d=ju$7?4TnHvymI_(~I7;V1$LU;ZIGP{!v+=xxK&xfb5)Jc=rP_&Qnu z=7TQEcTPEHcjYo~L2+&6vP7937sUD{IItK?xb^vYgrGA2EJXsuA|F^5%6vOJV}xcY z!>EAMkEc4$`rbLZ>fU83$10&0IJ)w^Vh9)YjP0UMk;Z#bcP_%pTb{r5HqEBvsL^WF z$`9mUhJb=D4=w)bB;R`3e|9*F*Tma$$kMR5;UtevxebeiR9|(riN&se$Kvnk|ASAM zC(lNr!Y#K9L&aO&F5YY?PW2m_bfktzpZ+p@#&}!`UU=Snut!XH}fzlb_I`y3~;cL~9x2=_-GhvW%`L*OzU=&edn87j}|+!&505ez?>a+vk;pg$L>d- zaWgSab(gQr8ijKg^+?uE;LnO*Hs#0qm?^9V`zUu@cy{14hLacOdFg=@&zsQAu{k>W zS*g1q!=GJ%Pl#!X`vztXZOWp0r8119-6ASh<)Lzr=7#sNP}n z_Bx5KIXjuMBT`dO^A_Kz0qEt4x_desqggwJ1tF zjOJ3elbOZ)@OH~PeBBhVJlc^rA}{eaRG8-Bup6||Z+KFFzR^txV|QcYA?TAxy6J86HW-QOu?4Gi=_1w%)%3YN zz`vsKnoxBZk~=5#ptV@gXkBw;F_86K&`HUO@VDWH5;&yU8cy1R_%qonZHSB!BaDr1M#o;wCb3#T$W~4l&gRL%ytxr<~m2m4CY* z!V!ma5y%!7qW68v{nn^Jh+bcr5C<@Y00t|L7OLt!DV+Q)-|*EA`94>Zq3O=fLa?rX zKPw%v-g|?(K?NR@4#ob;Tz@wl6S-K0U*VPtA9f3szuWq{lp9jtDw zuqtMYF`OkSHqo|c8WE!;CL=0Mm#YrDHP}{S;_+`zq0kd_5BzfOmeqJFjag0)8_qx-zr?@OZj}vmC0&hms(M|`m80-1z+dY@0hxiBxK#1*uy(_ z)Q8{S)}22Rf3_xAqNaXe;x3w6>AiSx=*zRCbm00E)Nh{=Hr^*uBblYB(x&$TA+$i9 zRn1lyD0!}^nePsBHZ`h+555$Pm|Nk>*S)pmbojL$m+2Y~tNG1yFKqDCR+~`eIDJBsmYE*^Kxu4L_#AXJ;8PYIlHU z3o{N)BROW>Cg^N4XAry(hrC4P)r8u@dHbv-Pz+WNs|~E!v;%cNkMqJS@&1vnGzHrYVh*x>hY8YH&#kQ&Pn<< zj;p%}o{G^GgZ)*@{KF*jLQ`(52Qjq>Q9eE^Lk%(xa1bk(?{#CjuV+t^IHDCz`xE8` zB5XnRMg9DS6EmM9@U3Y=r4$G+#0&|n+^0E9J3r>x-lf%M-|i-;i1ae2tWIyf2M)_N zus-SPV){ib+MObP%Sc_k2FKDa*bXb49GXO_*ognEBeUCz~Va>pDuVH$Z)*q(c?qm2zbbe zOG`KJNa8io|Y1&^Viq9`~ zEdq*l8jZnkUXZt5Lv3yKO$FQ~${-o8ogf@R7yBvOioyv;3E$*dx{Rtq9)_BhexqnM z=wVSzT;cu-`zMESspV4t^XVT3ka*B|wL1ZB1* z;+XAx}*)ZPlL$6KBNz#Yz+CQ7i%+H=y-Q*gn|Dlw;$_$F_jkF4I3qKs6{t50Ag? zJtkls=YpP3kuYoMvMK5T^P%wbd6X46=~P-!+^ z21<`_rMwW|h*;Hl7zV$CedI6QpE0S;HEm|**ru4TY1h~}BQ|n>R)-=)kHA*t#&P}N|_Gau;t~k=<)njTFNiN*?>8B1`ak@IQ2j=bry2iy}Q2%L( z8_-jV6lXC+a>5a&&TAtk6^qK48SR9KO02}v!t>H{&bZ7GSjD-IEI7w{=f1)(eYB#F zl`1Mm&iMFeN=!V#k$Ata(nudJHAoD8Q4<{UIYXS5e5Ev(mBElQ?vGs_q+2ul<3y;n zGB+urJ;g&yOxQ<1w!CG^`q|qxLWdXS-int`d*sX;3FS_orN@t0`pcaN9v*ZDSn+m5 z88!$Hsm{@_D2%cWS&Hn}FY)}}a(fQ8eYa|SFFFeh^l)>V8asCXwZihgll=IL{?Sp+ z14zb~OS80(0>4c(4Nouf(~m!s3yM@~o_gQz@{{XCsr?`J-ZL7`whbF4Y7nAD)QR2+ z65WVM^e$0C^b#a`8H_=6!7zF!A|%8p(R;7aMen_LX4LQYyzl#c``c^p_s9OT*V=3U zynndYZLagYuJb(3<2Ww)OJz0L-X7oVKOT+sN?@-XY50W9)Z8NHs?G77&mYDg&U_yI zBN%i0RXFvVi;D?G%V7dqqeeY}FPA=3T@>pAxEaPT1=)!O<1eO#YH{-7J^WJqK87pm zx=(u4x^vfz!jQMeGw8jG^#evyW0G8}A0QRJ*)zqpv43q6Bh->#zeCK_M8BhaV5fX( zhzVoCHY%`}OUv#1{s)p*6*7BoodGMBF8t+iho^j}-Wc_Zq+0oOKqWt~XJIoFDL|a% zv4DwrZe8_mM^*p*CEM=vZm~ELgpIDz&>uIkUFmmBDo^rQZe9#rRYe@gn#RGmh9uP@ zM!cnj5n{ge{ay<#Cr=iSNR6j_FN#*`F{y07226H-?3wVGwXQ45{y4!X4Q~#A4X1sg zc#sp-!eF06zwQWeqh0hbkj@*gY|JVU1tDGei%)*r-{gMJMLJr~vu(xwlK!P9Jr(e1 z->IGG!^?k-*e%irLL<4P8V9AWij~OJ6gTc=ks6x6o|?T9h;iVXpSa%lxu{ZDz%Xk7 z7o9l4HZKOXQwQFRdjRvRLf|Tb)3!@BXYxJeqKH5XY-Mo}{804TD`dz}9ERo8LP>l4 z8Pt*8$+I>&f*P-6Ps2$4N$lKeE;d>oCrgIK6uIDffF+zQ?|^R}!ZK^3L&X}K| zkrp+KCJB!nH<_A2=r}pwv9q`c&(B~!Yhp$GMrQyZqL6nz$$mWS_A&o4*Eg5|RLDVa z^v~}h#u+pT@y4c;j3)&Kw`BL`Yfx=+ctdd{zk~W@CCGPl?J`8ob$-OEZZ+ei&ujF& z4@<2ZsP6hi1k)Nao`BmMv=XSFEj9x{ASVv-6YPwqklNNkv)a{>-W3u(Z90UmR5qxJ z^g`>ZB4^C@;zIc7xryZzX(h>)#&vP*9axkg4WM@JxNvcME*Pe1T}!=`DG4`(B)gu) z%`D&ZEafEn2nI z0o301F~9SCnuoxu*bR-xfRy`cJR)n&J+?hdH49=(w-k zueeaOk9Za%C-rLHy88gY>U*ov2}uNnGn@v#WMi!-4MdOw>9kE?e9co79wNDTcQ-1i+y7?x60=ph4lqO zNQ$&?<)j`VWU!t&WH^_&xK{~X>1eF^1mPj9X^~(VpHw(A#MFBFM9}Q3-K%yb;6|k* zo^Rz9S-OrKoQDLJ{8aJmO7Hcla|P5b6zEfmt_pTJ!<^sYJ{Y7#RAva9>#shS4Hok& zwOOoZbcuHFCF$}bX)(N<0g6l3wVBJya~5bI*3(rDXoj{0#w~? zsJ67En_sN)S5fr+&Kx+vleF<~SJz|p6!?X(fOPhEB;&Oguqw$m9%{^ichpIP`xWU$t;T{BgmSw!=XE&*^apGVmOSi;OptVoSi| znhD3CL$UMf*2T>SEh6V>J8U!FWajuH%A5X%jl{v2SL+@i51~R|j&vLI4P~3BcvwZs zcsErIoSQ$0Kksp(rR!Rxcwj-Py*R;dr$tuhKLL?f1VkRh@cJ>(e#$-Ob&XWSI|$

    W`(D%#QH{bum&8CVJ;Shvq)IJYPKhR9Ew04_Z_LD_QS<-%u~c!u=wq zEIhPR#%_Pz-N+8)fi}0U=H5_0)F5aC>iCJ>;tP|6_B(>cWlBcfDJ7ls$(ny%}e*Z1->(d#ZB{g1Z(nuO8p?sZ(uH@8=Mqz`zA9bXPth@4Za&P5u@2C2+kGvSmJj8%KB2Xl-&hs zlcWVjSoXyw850`0-tdTa(0N~+e#lUrxJp@@tm@dFE_L=WU!+`cN?^7mC0QG9jPicg zQTPWry;uY=ZpuZz>C)i?77o#PDp`HEiZj)n`$jQAWq;TB1$?duJe<|L-N_0O8rvC& zDPp%*T(%Aptr;9Tq$Rzv%}|g19^!5rs?GJasdHkH&0n3f?A8v8rd#weFW89QA6VdE z0az%JoA!_q0^d<(>Gad%-UC&&TMzsd-?--yi@se5dl9 z%a=oe+{v~8FJ!3wY5yQ|P5SuU_ya>1P(oAha)y&{qr3Na!t=OSYsKsXhnHvfLEnO| zTBNR`$77^ekrRtH6rZL{xcN$deAkiODnjlgUY(|EqYpAM0`F^1^?vCw=g2>^x-6$=PItYxka zoJl2Ie;4ICq2SAl`5+slVtJ}-$;S4HN$Ne{9k~(ChJ_?5QJ)<_?qhxQQ+rO!IVx@- zz;q10Y-j9t%U4|`+7;0rhHd2qZ|$3;cw4gKkw0I&WBlb38PS5AjxWZ9I5V7HiEZT@ zT2v>`JaksFtvdgyK2xs?+uCIua?vmMMs1y))H#zuFNVR0I9_W@jaBGUCfI`Dm+?W~ z>4!_Ns^(TNoyF05fExbs2nlq3s`nC5JL}{_wn9BE1m(%XG(GV!#|0IYac}sdWai>q z#7f*Kn%EV~NH0AYhjQL9*ynPgSmj8)Ge>v=%9iRZqIu zvirVex7q+LS24q=y0?JEMp`k|SU1G@5CExAQo4RT7t8(zNJdbj*3qFiz$OrKR?vd& zMANk&7J4gz9shjh@o`r`1l8UC1k=rbSitM!ug_zVUl@T4{;tH49V2P0>cEI%kA(aTz)VGJ^hoBZW#zbl zNaA&`WN&u2mH)zZt4?J_<{#wbMalR`R>@UyiejTo2<%Nz%V<$Ojn29WYR%S8^XMPhZ9@7jtadRSAKXr_eEuF8S>{a*96l1}PNv!K5XE-<7 zz7M}&E>RjHW%ik}VaaZXnOdB62z^;}5odX@m%mScqrujq-xi?tIX<#$T#7YFB78w< zr2!%V>-k7MNq$SSMe#3QGQc*-NP}Z}>EK+WeUM zk#W0h#!k*s2^oWHZjp&_n7rDTgP+GPCaJGpp@toVUxAFwBs;y8Zk`@tpG#eHO7&~^ zHL~$vG>g!FguN%VWiiY8g~iDKT<^}WiZlEN@IvRE$F0y}*?virdFkDvacnO!g6sImFi6&@IFzrhj0)GW zaVh2`^_gEkFLVyFx7lgk!bmMaSMnR$&*Z5f#hei(LWY(;Xvj3?1`2C6wY~u<7wzc@2H9TzQT4r*BurD?ievaU!b>gZh z8p|TlEczSoisB1Zkh4U)8buBkYdU|)%0d$cSTE}LfrZdsFudy>PkF7jVRw|KU zv?zyat=9X5ZLl%@+QyXb#Fia76~iF<-05y`v})15d~}R_B*t1c_C~@jK}rpvey*ml zU!rX1+f6^V-Dr%D?iEWh^_H)ABb`HxTa98VPAKi8Mjasz$?>6I4ni0y8s5PtUW6-p znUJhQQgm=N2X(8+cf&Wlsy6o;^MZ9;L193XSUPW~T8MuP(J9TR`<(l>UpNN{K--2=O}o<5bI(k=aR7DwlN%9EQi_{;{_n|?My<<<$SjLA{) zE(&b)k~Ja5ddxbCOnnvXK83M#v5s;u&qXUgro)7z!67>Ku9i?F|8$@i|3Bkp~b<9ox3Yb{&egurK}Whw%}1HxabNxs{|OmMSfp3`T=h6}B zG4s-{b?fZVh3GV!Jns*yEETV(lO{O9lmkvazoPCa(&Nk_EYu($%6IlN7BAL`_Vb}j zV9y|{KdJz1wJ}O7Dfg&-#9QfSfc7yt^hW~#r#=?_F7>X9F-%5k^`R;NTCB=+yDH7M z&blW6{ZXe9qb{z?K(#`*ZK#=iHcd~^09D9}M1XZJU%_IFy#3z7_1ogSZ#&h)@J8Y@ zF&}y&tWPV^l1aF(10du1j;tuZ+|`NYmoUN%ho;8yp`{O3TY8@F<);ILjF(kTv_T)Z zS@g3gi2<~kOTK?!Kt?#^0$YMbT%Lzoz9&|`zH{^XruxZ<^cmbkw4p!DY`^8Gha~Vq zsbFpX`h2`r zf0fmGoc&mgW&d@dO#smQ{IF7YRv<{Ai2a=Ej#Lr?ves{eayfP9nTRevp5;ZW@Z>wh zH}DNy??X1~^iz%(^}fvYrD5dd)Y=0eWNJL~dZ4(%_`wka%}}hv25VS*ylU0CMM|Ct zs2ldXX^BOod7t$MP?$%zUE#=}%7={5ju_os-40!x`r*E!z68fXcqx`Z(AdWR6Epy{ zQ0|VNWjyf-g2q>|pTpizE89GWWi>c;?c% z@np!c$dvw>ky9-CLh{#v$KF}lCk$(ux1sAr{l9!Z7virwM}Xp@&JUE2Ypri@ zoo~Kd^N^1DF5SN0OZa+yP2A{aErM%2%NG8u@oChRsf1K76qpo{r+rM>#AncKwS;GE z@_DcH;Wq-8(1KfBr-WO{A}0@wzr1Z5cb`!5yLm|5nYaM>en0e8AXyHUSNP_2he!(D z?*EW=p6@cZGNCffN?_o2-+Aj*PJ6gPx%c`*yogfxAw}AYXB_I(g!LCpW_z=_I&qRL zS`WR%bh)J0h2VEXOX>t|u!-0;*7^Tz9vQATa`4~0qS6aZKSq6{E0K4`U7yetOE!R1 zQ;Yg8(;sT2JylTaE+Xi>Hs!HJ>Pa6|?LV)t`Pox*AOLiSc7W0%_4#mZQYFN{ohOxH zsrV(C=?+Y4cJu^yg3g;{9aV*8!LR6c@A`!J7osiv8NoshH~qTgqJi4wh1NUPuzD74 z;sIx;MgOnDnWmUJVk8r&c|1zsPE>kEax^pIp&w8aK(PaeI(bz_o{= z-hbcknRSXCBz1W2n_Dywpv;x{QJNPznZ}iVvRcCaxGzuE9tM;cZHu`pfbo*bdv!xt za-O!z&>=n>5>3=tTY9N?pY4+4t?sS^lE##(W6P(TRvHU0p2lLPXkebY)QvyFtJN2l zc+9f5TW=ljN+W7Lse*d|vN2YaRD9KRYP~)b;=tkCFw!Q|O|00{I`Xgo*BGgspJ z^wTer^$e_icSoh0gM<6_!_1vR4)iB6BsYG1MR{Th_V<$V|6OqHV0>jV!&_CcT@&4A z2zhdIGGs0WM*aLWtGqA0n{n5ZL>Y%3VuIfpJtgmyg`G1z6lIaRUA&AkoioU&e=~V8 za)lHI_^^clANEZ1AoP$biv!*{dvOaG>j>i~BAChgyPQu<+{ArI87|Wr1o!mMd+-L1 z-0xisu^yNh=5Ap%?&{1+OwGTMu6YwScYwe7=57N`0t2m_Dpn}|Lq;_}5;uh?eGC#E zuQuZD17;CJ;&va;8pDn9CdT`6D0TF4BLdoVv`A2ZcJ96yAyzbHyo#qvk-QFAiw<1* z=eUQ%;2OFVA+BnMSX|E>OhntCec_Raowit*A@){EAb?oXGR|p}jY~u3;$*HmqHajp zJ2=QzJTwfhHEDm$G>oUnl9d)w00m*?dFZ;(P@2EE{Pzgr3${l~hjjO%ns5eUa2`RH zw^M7??|qx03)o+&{uAh3LOG^r&y}*?SCJ>mS;D1yjtJaolD?Wc6geqhw(wcq2AW0| zJ#PTDrzA0}%x|PT;DAsX2B9$cNITPLLB>m;us1FrG?{miAf1=(rst(xzg}iMx(P%j z;z)axjigasWpOs|GZrF&A$E|5LQyrbl;T-v+mo%B;XTSNcF;FkX#%^C3L=58*nd~8 zwCt7CCahl-hMeA!q$J%B2~*W@oT3I*xl_D>wkOk#-(L3x}~UgA?K2 z`PD|LpdG8+Mnwm(3^%L#8oxa=32+bs4dmml#)kD*{)Fw9X?(o9@~x5rcTlx z-L2LK#x%x^u!QZha0!=MyDG*@eSf<hHk+69sb@S{V9{5 zB14$3*_@i+omWv@^VdMtD<_*gZ7eNzLZREMVZ_8;mBu#-0|I=S8O6)zMb?s>Q5$s& zf+LLDTWhX1B8hn?=bcTaoTqZu>gwGsiQ!k*HIt=oRn4QoX?+iA3C2n$qrk^*^5-dP zB2WzUIFI4&j+TDz)92FPyyOSXoV&WWyW`#65*~KG93V0`grzf=Ei@ih`r@9kWK=^{ zdOk@x%eH*@Z$N(${rVs7Ff(8?Pe}q*YsY-wZa)x7>^7k+7%6`}@du?W>;{mn^79g% zwNH1~z4jtR9)euRi}25*U)2jY21B0z_LC)3wzJH#7{zq@`1m^ZRn)oTR`i?Z4Sk@B z30Zk(P)9^Do{=OkdoNZbukS6nSve}ETpyt^nTu%FcE;*mCPpqP5} z5ep(*URO@LyC^Fcx+wb^M~)^@Xn1Y*)*a?%Pz@j^7Z!*0J|$uh6{K;&h!nro=fxS5 z{736T8BbwuC6bdviByx??*WB#ZWcW)&waFt}4X>k=mW%?oKNuHi3U%z<-Ogshlg7B8sqAdh;BmrQp z_7@mYqH*!|lf_V7@I9k3@a^Gq)Wxqvwwl@^RCIc@+4zza>m;V)8$#YMcwwb?$~;TBt*BlonN`sf`NOXlD!@cyaqR{1o(2rF+@6GN9-uT-NZg=XSNe5m?!7}YLhGKsTxS$)yo}eRGsDf* zl07`TPwD--4Ti7F_#k7lE2`NuyW{>r8&|gt0K)8WhK*MWnDDz6)omT@fwN^xuQL!F zNblkoRuDJurEA!0R_Z~q>)6*joap*_T`l^wsbHv2U;xd#kW@WYPcD*i#+S`5DM zt9#Db%el6I(1vsCooB@%sq3CowCOFK+~?fJ83cXLjxfL5{d=2pD-XdS=)j@BrdBL% zdPyH|uqW6!4P8gig!Y0RnfY%0HZ@`adK*wU&{V<}g41H+?-{NB^%ECEk&o@nfuy>n zptIvuEH_<)?&vZH{vP@RkP}1@&L#0 zNIE5a?0`}4=-3%Swj}gPa`aE&TLc4q6X~$M^*()IptN^(C;DowG;;ZEU0dhc_^#}tZPda$~bbN^eV zg|;`Je4(px_xX7qd~UF*=<2I(WdPDaHX#M>a(RJ3XD_C~@+I%zgIf{Zfot537>t4B zR?Ptz0VCRIMjxQHb;rcj67$N)_hZE*z5$ZG>v8~tng!H?MdtHKM+5Xt{VZl@cw-P1;UZGgq13h#6bq7bT`k@!6 z-GSmAx?RWwAe8>i!QwuSmMx_x#>wo`+iM*LCL&r73EUNiS(gQW;!z`J{llpLAkwvR_HT!8dZ}&22K`jParu>R=saDy~4Xc#Mh*~ZH zvS7s<)L@tH??e`n+?U<}U!E%;t?^3oo^+YL(?fn#^2wu5k-|*XTDk|UqS~EiadMCc zjgwCYejLe6Y8lVt@>yrYXP-b}Z6^%-idQrY<{WpzMY+Zh{Yz(acB}$D9-2Y(UP>`C za$?zss7Cg^_hGpeYv1_?lZU%wLVXcH=TU+_;8lKlU1QM8AiIS>=ALEvM%tK=zaNg0 z@K_HzdliGDzZlIPfbQVC6W(sjNe~BMQg7xGWerMH7W>X-r-^plq@NkxN98p({DFSH zvOT?DFD`1syeSL(R%&M{fTo$xdqa|epQx^nIN3VNGqbjSO2CJD%&qY4$`k;FcP^e*WYej%5Ys67LuXXtT z?=|pFTwAAok=N13IpHQigJ`Y)1HfyIQ@l+-KiC^<0}H?;qcHMUr4jWC#vMknETLj& zpe3t$hy9dSf;VY|bT=lVvWA~yMwho$#?@!meGYAkmUH5D^2+!@<=lMp$1!+zw#pu) z$$&H*EmP3aTzH`~v!Q=NEXiAOk3r?!(V^j)|3K5oTEN<}6ssmP04IYHSMvP|gK|kZ zcAi1BS8U7I%v6R}7jI-WTdEtB)q6MP?Qb4+He;O%@vr`{R+2ur5YvXHaN7bRO!&Js zp)JSF`rMsJIL+Kt>>P?LUqfY`>ZByK%qEvN==?0Vp7pw5vT1Thk5v)rZ2opC@Nz|! z{}0J|7k_yO$dy2^0yzNGQf~j$Qja9>ku<&Jg;>l)`(aCe&Upxz9>TLfkrgpEROolK zz&)vV&mAxC=KSHnB#8R}&h(9}^RKhQJ&qctp-gHS?61FNWAJpcLN?R9mm1=gLy=y? zHNM}G-DFCw{_lvGqYJJ$=f`91L&R7LdPUW7k56S*FpjWzy&lojxEelS|IjuVCey|} zLpFXCW#m#7fD^>;5F(?iwl!YKJuc5$%_r@b_%uz3&WgBOqanBGIIz<)WLTK;WAMfc ze|EA6%&1ck55jgZ4$@!6O;~^28Cs>Uh=(iBWiYE*ZCIz0`Ap@Q- ziR%xfVatb0PRvQoT#Y-61~z~eqd)d#(Dd`GXy&0;RkBAcWm z&#+_lof0vjO9t8OdeFw@-TBp*SJKp+V+()3j$i%Yi7Y%D9A^Ek1CFfxn6N#%rm3H*%#_C7R|eHqb@u zFjT1F9=y?UwJ6Ch)i_a(raPfYZf|Ml4uUt2j2W)({(!@b(_qT{yNlXMf3izq*p;X- zCP3pMs_nV}KQp4!?e-+)$zyy=9oJBloy4~&4(Sh_2VZu>%$~=r<9ylZ+?Hs?{D!NT zMcNsQTbw4V<#^9t;QF(5?;JuwH3ZbH0du;sN+WvQajJN|DaHTzXBHvKMJ#*(QU$Pg zqyND_1w%~KwI>+GH8U-~GCR2nq@esdIz5aXd_9J`M#PGYC2&9eb-V-DP1Vy{Db4vC zHCONnwy_$Y7M&8_(PmZcId?RdzkRrXgkEQLHU>Dvi3FCO);QhuXQf4MV4-Op zypfw2Jb_~o_kA3p*NhpBPl~2BeV~66>O#J)ZC_asH!2++A9tYx;9(jj;AfdFMhHix z@2z_Jlmg1W_@Qw8^I0KM%>Hymb>eu<#x3%>ZqDd0hi#7)0bqx=4bcy*5qYnPM z#AX+*%gI*HVDGRh7PymE84|#k`RCr83FltKd5GQo3xC&5RL%0IV0cBXi4o)rB=~{H4Tlp*4!yg(0 z`iB6tv9kh~%5YS(^WpGGiBoG64a|o&SmyyKlap@(dyWJCxy`2rzTIS81Ab_Vk$5fG zltUdbt6??LGYn+zEG7eF7-Lo5X3}jLdepamug|Be1oM z5!{v@5KD*pO5q`pwn{PSHhWE{qil51mAof-LAY5>H#^_Mh0Lm3%R7T5VC`%=#1f1U{jxWjeo55c!Bzm z25Hxxvjtk8TZwLiA@EDJ$WRo00`JXk=$4%TkUXjZm;VYIE@ThMPj$j_(pfSuMajb2 zVz)>y9^caZt39i}u$_<%8C=Lz@U|EXBV8K!{7@Ckr|zXz#xpSbiB#D4;*Q_}!IZ#9 ziEZpl{F0I@~@(1e@pmS6ov(;I+k+g(J&}4hN#j9aE9IC zrRnqtJ>Kf``00miv1p9H00y93z@qDP`Mylbbf3Ce>UlNY+)u#Ty0B;;kWN#r=|xMh zKrs9cjQ3a53^qqRL~mbD*&$pwKraZLS}dbGsJhNplPSg#I^~k&g7K-hlrgL+1uSO7_?)TGy2+&SQQ5I@ zp035}mnn{<@0phtP6{yR$8-oM0}SW3a(jT|Ji*Oy^vo#lkmEuP@JZ^J&Snj)5#ng8`6Pgxtf@6;jC1vPW2s}79fmp=ENm9%+R&$B5Q1d`B z1X1d^?`n7!A5(Zay%MC4R}^KzEPf-FZN4IK8z_r-{QWo{3E16GavOssM3%I?zv_`y z%a{S&c(vn>j{80)q7@*>IS1>^G^G@N5GW0Kjja%@NbjuLxIhj4uPQ^a^Omh|YbBQHjF_*nLH-PcFQjW#5JnlFosE<8}a<1LQlw_`WB z_RR)ax58oM@zF}Cq#Yib;9Q)&C40r`?Y%~*uyezIyZ|o3JyIGMW7-oofzJsB1fWsv z=Pp~(eJp-_EDV)&Vl3^0xMw<3AuIZskSapEZ7-cF_GIW$w`JWzl&cT@m?*%S!qTb1 zlT+%D85W&p-ZC)@GOGowTiibhdMuLLl`6;?p83-{q48pN!orbZ22cAtxcPIg+^_7A zz8k7b_`kl#?)8XBTE$-3J@2zlsJarex@f1*tKr||m&){K#^+{1_fAtbxJRIgbQJpq z^mG(qYHEs)r9{0)T@R9%Vq}jr-eK+>o07zy0A^6Hr-A;od_nWD$q|D?5?q|?C(g=V zj}D|&*SjkDu3KfP-u>f|VSscUb_4l-;&>G$+y=^I4+;E+$Oh&cV;=@6^|&)aA7Z<% zny;YDEl^NDmKklqultJ`G}YqD_K~NX+rbSgZMwarLE>B>`UaknJDR-GD^l<)>ow9r zJF(nlD3|lN<^Sruw)}X2Uv;tTAdD{jo{XF5J>!ehT@TzuKrJuNav=BH){k*m>u|$H zE$qUJ!3Iz^{L%uPa1uow)mkuiKwg1i_-bUGs|B|g6x4JX-sg&yy{{eRJ_ml_c)Rmf zun5iZt#0IGl}@ro3&H)ZRqpo2=Z!HZOk^KjiV$9%WD^AvuPsMB%UqHmg95pFmI8?RwsSI0oP3W{<5A)f84kos{<+tAYBpy5m;LHe# zB8W(w%3wg$>v`t~pMXluGi_@iD;DRG!S1k#myb6pcbNtB+eA)A8r-@n%a8^-*f+Tj znVkvQw)qL`{=R|d-> z@YMBWFg}w+M4)IiX^J`X%^yBeZsNv5Ycu0y?Y`C%v)uh9*Y1{04_nPSP_JyS3_yrw zZpa$~HYz=2Y-KOzEnDW1jW^+pg*2X(YmMS2VB2ish#Q_Qw)BE*i_^qNZwNM8vGpgG z$g5^Y_?GNz6!K(pd)sqGWR|PZHa^FpV(Dv2+!9pO&oA^Fv(~3f7bFgGcNK*XQ5(Q< zAg6LXI7580<>G@_F5G|51%iUWC%kD>IHD}1z=70g(8oBbX0;gz92+bQ^>g<#1s{3i zWy8xpVeLtR9f#gRcveHPZ?&RMiUAJ_8lT-|z&=4NgvC6P_~X7-6_y?~5^U_$WBC}# zktO_KW5`a7Ikq<-VbiB3VX@^M+rlb3@bnyZM7lO#h)0Vov#|=H+`lJ|O~nBEOr>_Z z*(6t2D$v7z5zznsFE23BINxv1*>Kyvufpy~0O9iWWn)_0K5Tz(LzB*Y^DfHiT@4IC zkO8T|4)dCj_muRlHF z1A%$zHMAFSv&c;nk#ujr@~U|~?pQV$uIQ$slZaTpW@)TWJd=(*usz;>xAJJ10)Sn( zcB{W)*}AfIncxzqZt_y5Pne;FhHYNp_|wf4Nt`Ja7349*7PEo1NsVMk$wTl zzxOk??rM!p9R;HycIEg7dF8Y{ADKX9IVK7wthmaK`1$cdCgAr^dT`aB;w&uq3K}~+ z>=6^yG}e>$(%@vEg{)hFdjMguZf*d!8x2Ex!2l8QuHE`<$wlJJ z2r1Thqh3O`_M*@5wH(98{I72T*>K1X`hx2szw0SbmyQr;8=QOPzOS}Yx*I0Y0=5xq z-jae*p{&bselZ=g;?fb;&CH3+H-;o*d5s~_Aiw0I`F|^V2hK7;ACxEfPc#lN{T%HB zJ6Y_pJL5P3v%o}|6pAR%*U%to7q%PAUZE`IQP9{(>z}jH916R+JHs{m3S&%TGU7v) zV~P@G1jDL))t60vpYPJTRoh$er#CImUVn;-=u!Y@B9kKWQxME<{(s5~3;tNIp&B7U z7GnLLz#Rk9ZrKn{KHqj`0EHM{sPyn^njip9o@cjKfh( zJ%V<3zM)$(f9I^y!ucbr+s1X(;fxuf;soeyl5hFFm( z3ugJXp~kN{UUO-H4$slzhlcATnrJrq@R#b6amWNhG^Ze^>SpYfl-6@;@fD+bf+TfhkUZ4khnXBe?K zrZy>>f!_a2ax7yD`0nI7Kb7>F0f@{yo<8g2fP}2*N$QI-)}@kU5(-NIvE-VySaJOJ zL?l5_FZP6!FG_)Pe?*|~Co@9+{o?%;RLAJ?ag-9xP_tB5qTsvCgY#2)z?iBQnF9J_ zJEh^^_jmXZDA$LkTY({pC{UC*HocmUJv>r(PAakrn7kRo;mj;jUvj#fn&Ii3An3MD z0(g~FmzO(*76R7A>Y+W!MRk)$n-TIQrUFKv1;Lr&_u-*NOVO!EYc4O0`xhUp2j*wI z@jR$aHphEqRi`+n;5=r1BL-=*f_HQZj)O>f6=Yj4~W}0cem(W~1>p{D; z-dGtO?@r4>T+@jBLHSeE(Jo3{Vfc z63y3joSMhIL%O{r=ww;4;e5LAFY<7Sdk7QNL-s>w)aTzs@Muz)O(Y=ZHs6U3OnYUu zyGzp@bL*YFByPGc$uP3YEN;wTS*P|As#KppH$IRkL;b^W>lHc_3D{hg+XC&^jJw#B z1b-0L%h%t$o8e2ZMl@MA^C_TC-BmpImFVNs$j4$=q8Z)!{WNq>T8P{XxuNh^8( z<*fz$o=f{ZXqCDHe?~PtX@1PF8}D{#rl|ULqv=*k(1gdIz_F@1yLb3=Eg3vqy5a-$ zspQ{j@EsiA)+rnLC^w zo{g^?!O+89kBB*ZwAi1R`x7URMm=4In}JmkB{_=r{EZT>V>&)-E{ZNSU$z9ca1 zU2LfWgg3khVadNtxk+r?4E3JO5+5KDxq3H0=O72*LkmWE90CJveN|!~#qa;BM)7_1|mJJh#h(X_Bgra-XI@`IzAWJe;Hq z&J{M*ul@(n?Fc~quVXJ|)&5>e38#b$b<1Ox+nKbmw5SaGfZyG#3C*x+o=xmz9fqbM z$(@YBU(Zjqq5bQ9KnmwS2DDd;(byVGPQs29S~Uw@>z7pvY~Qh97FQHrPrf)Q1xkXx z()?qz@*~ifeM@>PDu{dQYwg`BFyaSzUjD~&_g{Nf%^ZXWVDYb7hQ#*SJXICL7vRt? zB`U6}mX-XP(@Wt4ZRPMrI-*03(4AL-jq9{TCsR=@w^eC#8u-5Jd-Z<-&B*1@%4YCU z{3j(bmRRDZDSCur2y;Y`2@T})C<48@Wa@Jyq)@@`4iO)}%mmhfjDcz@Ps9|*onSCV zh)HnZY!k4gHG34#Ao|7TN#fJ~M{gf1dvP_A)r-@~!m{A(W^ef0L-r+byH#nor2NK# zy&d4UK;B4xJLGWcVrzphk~S_}*ee-5lLSw?7~%7pHgb@)uf97nuTyMD_%d?me)*!5 z9!o7g!#TOJV>%vL4&xFXKUV(=`ImzA$}M@i%5UPiT(}7-im|B+mB0D95?|dE{4~%P ziu?Yr6l-~*^tj%wfCnGqKQgka|I6R8LDrcX@C+Yp_Y1p)Ev!CcVWER}S%1w^(TMs@ zB}S3V&aPo*$fwCLrFJmxu0Wqpu)9#9&~}{YdQj5|6me$l(RugJxu^ToeSYk4w84#@ zt`59;xu7|x`FM@H&`jR!*J(D>l`dc$nk(1sqZ$34GTEAB}haU*y+*}*-4+L8ZqnL)cniipN zM_j?J7ehpJ!bKKfT4|a=bYDnUOg>iCL0%oU@2emqlpT2Zx@mv2{HlI@lABmV_8)k8 zcz$giQ`;m9tFVd1{R!Lh3!zW##zid{e-32bh(^wKQ+FW-jQaP# zbOBBPRCL3HQ&v8$!eKY7JPzEM&)awBaL&QC`XWr#^mX?ikSPp~g^JO3B2%pno4G)LN(h5qaw;+f~6VufCC9<=HgImty=@wcKL^mv0! zx>gJmihQc8GKz_ufjX`6o#&FoIib2!wH45D0}a!5u07^Qe324afr^;VvJVwf^31&! zxZ^>KeBZ3ijEzRFsZRh(zen+nc?f^Pf1(+3*B>=9qVAu4MH3!Gp8X5}+8-RW%4e6A z!IM=Epq|*e=pVT@XFkBEWfU%6hEVWScG?vzmjIZ@mb6IDMg;apjQxm{!jHPjfD8T@ z*>hNW3}F2)G+b8to);K%=_-$++~k1!1o{;QdfdygiQw;fHJ8V!fjb8zn5DR<$H?+U z82&I$j?vf&zyR}i-le_~^0aps=FjL8f%hzzmLcBr1MeB{9Tjyq1l|+X+ppwafA=1K z?d1ulyZ7)(a8I5B7bUpYt3;Z2vT8U;0`tP!bcZ3;f*iO{LLapg4UtLx(6=`0@M$ za1%lHdfmzJK@yc}xtzp<|N6KcDet0Cfg82;w-*SKgy8=-gXHe^j&{`jU)c|~EhX-s zWVo@3pjTpR8Kk@pj3qwfvIG()tr#4KCBkFfWvI{x5)@_ z7fk*M+g|BnNm%^IXI0?hh^*n%s$Srd2SCr1mt+>s_9*-LFC#J(YJ~s&T@+2rhI}(E zc@#z&+i{?$QomNN3;go7z|CsHl8>~Jp1bjj0>~6@tJ(+f_E9?{Z%asD!CLs_p4P#}s9-O}UdPP)jZ?(+p7wi z|MpdO%m+YzFD>WWOMS!!GNSIEj5xF*g13)5Wq5sn^u<<$&+Gixulj@y>|FX#AR$5` zF+T7{{*w?~U|^s5KmNnE|MjaPn}F>80tfP;m=wr|!+-LjJx}0&|A&EP_`mb6%J4_kt4TYE^}|_W$aA$_-{(URDRYN$g0r z@m9S6c`SPTYo}BBVjgT?+RdgsILdtVCopW!I4^Vm zd(x7}UVbY{zC2~oUFa{q-;IWD#tZDN8OT@7^VdXA+owv84F~e&U>dnk9%Gy@%7bc6 z6El{rGV47O5BZpKG<3I%YAd#-wpHv;l5T4Zy4bE@LqW7f(p^s?2QZO!8Rvl52VpB=}o zaIh1|=PE1}R zcY@16Ab|vTA0T+}Bv^0;f(Q3O2MIw2m!Jun;O_43PO!m!aOX_+Z=dhxJbQoV`kepO zJhN6!Pj~g(Rc}?V)z!U1dS&w@0s~(S3zGaXY$R}S9u}6*r=CtYOO&VcnV|L9DgQE? zUhCe7w~(?|_ftrknXY1>YNl^M2?At63yH_%RT1`g1=_mkV^;ES3s}2heqZW}mCi9}4bC$47A_^O3u+#z zpHlo92a79wsm;Li3A5D+*3M*U{0KDQTSQkcrD6^>RgHXXx;MO zDC)v8wWwWYZCD)-@UJ4!!`FtN_>kQ1K`G1Yd2jj5WX-uf1}yO;yR8gX3DP? z`j$P8hC&p##;Y?}v1|P4UYj}yGc+eJ(|0ELa6!^=mjysFdJbs&{lgGj{ZR-s5q0_V z!NeZ~kDnZ|yBm$H4eqz&Y~g!jEiqtMHgB|mM0LpfN;lKzQue2^wj33=unn5zBv1X- zV~kxL5rk%q2_-R#A>FoOx+cbU?K*?+_3p_tGR;e&e0b1xI45*#uff_usa8Cq)3f+6 zh0DY=c{&7f9tjjnZpMEl`Lx@ft&3(taM?7qh;9E}=^^B-g^^(jQ5cz(Cf2^`M&Ri) z1FsOn6$RK~Q87Q`4>~h{+0R`7_}cO3yspE{*A>f`Y3-Ew-ib%jKc&rIOdnJ(^uNC> zue_upsCW)5Lq>I9gu3QfoyRvS7m8-;f1zRN)`idg#_u1Ac#7UelvF2un90(c<4qrW z5w*g=RrG_Xm3eBK@~+74Fv=MbA!YL%@96m7x`=UXD|Go3EwC@u#$&hDO|&g1;QWAD zg$6(dWB66P5Rx0s2k@sai!OzSFMN_3k~GC~Xk*vXU=fv^-_G@|aie$|*M9O|(O%eo zL2#*TH}S!@=(e5sa!?-5P#T#i^^YtM%`b?AhfjjUT*OSfLq(>>w!MPolt-wL$JBv>DY~s zoPE}E8-?xnM~%k|k3K!mlp$el?khe3(ovqTZqut|nuhB?W3vm;Jcku?UrDa`JxMRt zlk4|5wc8&K*Dn7`F>1z29cKv3ZxKOetFCy4{|YxJtKFWGwT&-G2qK;P-m=TS%1~&~ zG;@+?C!!fWQBzRx5098BUOm9A3o9)&RQv*4wrQ8I5qHzWg{her_OxvT z?zjISIqUKDZK;jCN}C>bgEh~TE2FQP2BVY5_#R?O4T$iPWwpGAmDiwNwOS9J-)~-* z@`;KRqQ0}TRElNcY#N(R&f*O z+5n{(aV$1yw!>Q=@uEbpZt=@+QN1NK0o4QitOnXbOw_{myF>TCV{NGddK-k9GClTm zTjo1#s*~Fo+oDZ)0;rMhO?IzFC7wD8p$;Uj7uABYr+qwY?72uMt*3kYH&%@3*8bR~ zzeO_!bn;p4QFMjr6BoJ7U|wt+nr^MkF$sF+d}x{ zhCC5>_=cH&kLK|ui?mA{`4Q}6 zGh0|PW^_Twn&5jJ8yWb~s2PN>)ry=@GM#=9Ax$?pW=FZTQ(~oCW{GbsIGmwJsC++X zgkhIXzSaK0D>_L3X@o(y(AV(pIF-%b7~ifZ2Tf$w;Zauml@=!GJsxi4)1J*MWbySi zCK}4x6;FbFj5?HKDenV7@!rSf%~z6Rf@XmdLX#axMKDsmJ~Hr?=n1B;3R_OQEBiz5 z2kk0ak{9?Xfh2seZEY00!tZ)AB(H_szQ|#T3TD*@N@0NY84wt=OdAhshr=>h> zE%NeOSXjg*6jFR-q}>myaP(cI^;7v~m(x^N+}CT($~4Zf`Y2B+Pv`yaz1$^|7lZZ@030^YX_nYU89>k1sHu78Z-Kd{W`Efw#t3qQ(JDp;c^a+yD z6G=4Bic(=v?lUbqY3reh3Xp2@i^(hmyxu0q$lV) zz4#>H9kzR9)FO(&A`gD?Nl-QG`nnzPc7i~XLkQ^)^iW3qNu{NEn!GpNB@ak}T)Jay zEIkjEfY-{b1U`-JI_RwR3t~oJHtgGvpDaIS*`8DxY?1!K`v|ftJ&$M{z8xBL14|CehWKc(HZiVHG**jNU ztd^e=y(qZ{9z0u&TUZnX4D58)El-aaw>=E5uj{`16!K(X7>^UsjnGS6M>vx9Zf_7D zl~#^67rgkB?!J-_<38c^HK+FAw^qu!|9pKo)cbkA&C3HKI1i^15`(8zJ(Rzp73-b} zR0uDpq3y9;MeC_bCSRk`m&+V3w^DO^5f#e7T$ovTMwYnP=L3Pi*~6h#)wc2NzFxj9 zUIn#MGI9S1e47dc}d)MrXbMK95K09ra?Mx)3JZ849!?_-&zAXxfyehdV!*C&l}2LBHs|uz(kyQ7Dz^ovt<8(O4@{mZGr)3Ysn<4vo<|y*|+uI zeT(u+$A9!*y&J-#xY=13H&GS2IQWt-I@#V!2WcW(eHSXQ?)t}Zwwa1%#i)4~gUfQ$ z^@nl|9-^RMer6tlzfQijS4s$0-j7iXv!)O+;NFZi#LVc<&$M6rsnCG)oPtgP?i+PX zn+NUmHy6q<4J5`KN|-Fke@_M^gKIl9B)&^ka97`etCj-f5w;!C^F7k3XGD11TU1+o?ptLHiy@(X;Xtkuv6@`5JC*g4^6$X09mUBH;3kh|}-yC0#TCy}}DK z<^f)Nsrtxe!8#1}D-X88a%WotSoL|g{WHK_H+>j06;fCn7KMOA)W|cEd5_Zw%@+`u{fz{3Vkd5;O}~EQCBq$qA~sS#gXfmQeW1*I-4%_AW)znj=7qZPtS2}S1Z=O z`0aYh#1U_neKf^8q6r@3KC@D7S`)^|QeSWKJgPsIA|+rIM`y&$XLy8{}RES+));Kj>-}P#&^8>#) zK)p+B@v6;eW>XgoC61FTO)ZU(o^@#bSOn}9UWk|5_7WRZ#T}bzDlL0YB|_4GSy~MH z4$?2k3?OiEyd)56)0~8Eyj?Qk!PQ5vT{C7gt1ovXkFyJbY&RadW>LkhE5>6-11|aF zUKtH#ab^j|0A>fgE~^3b1R8*rj;E9O-dy&XiHZ%IEybH6(QC{MWKfaYXCdGm#LJ`_ z>yDVh$b0{jU9_#-lUj3hKEdJOL%e)%MS4Nz*?A_-wj{b%N8o<*JZqhxewHsE#0<1^ zQOzm&`oJ3&3dHPfY2F|@B0rB48}%&;Luc9fbSVY*L4J^G9`<1xrpJn>b}pWQy7pF> zIG*L@`Qt71d^0DbXPWm^ee)f?hm@K15AAUUrbFZA^vbU!#R*_QWz1tS3(uMwd zA`WyHR|sFHafm>d-4o6!{Tv-sPJD|+({c*+Q}qZIrZ-?0C0ail(xYm&_kbo#RgC<` zQJuJPL~f!BmD|!r`(Z2O|5J*X#4%^hEQ-W1_VvDz2i(3tplgmu%^|LD$Dfscy`72~ zOiygoA5p;+TKzTg@Syy8nrkjMA5rWXl8{LolIN1(*FsJc^>EsFAuSuCGY_W_PKog~ ze%=|VAWMRvXdsW;eI#&iBe0O)zVRdkvtln zgb8Na`sr@f^-W(0ynMO$?H=Vf9l;s`ytn02Bo~tM-=K0o{y6$Lq#B`+y;SpMtFm1&LXbJ*Z1qKXNQ?B>jYsBA1j^q z;B2DYU-4LViyQy}76rWeYPTsp?M1#ahBb;srTv0MbCI-@JtSVrT3OIv)F80qXwUu6 zkzOCEUSw`?L(3&<5wmu+B*(RfBG=YiiShClkC%|6OVMM+bDm@KuJYrYBhalF@EU?; zQD``ycVuqVWn)?O1ic&cNDwHYjKkY0zlJXD{Dbj_0_tB7s$B_Tcn8U?mgt^5uYy1b z*ys)=zT+{O#=QT2j?smS7Vyr@NIvHWCc2_nGV;@UXf)U%vRJDumK=@%GNTKBf- z0UOE80IVm;I@L9h(FK)oga8PToZq}2>Ng}0>^b`+X35OyKrjZ+SQDaMJAlMwgkvRV zgku|n{5v~Mav=EKb6@e#UPrz5Jm%)uch;ZJ^r|tqQF!E&#+a#4={l6fk16yB2AHhM z9+WMlx&5+6?^i0lmQEA9iT=D)J6l1*0Lt)Gl9gJ^S?~d&_amt`E8-XTmdSKF1{1$( za-ji_)Au7&CAM@pc7*4%ctrBvkyCpMQARM=alP{Ys3Q*XQ50H3BjWz`Lz;@13>g1> zU@J}}uTZwiI$eD5Tckw%htb{*91>DoQ}_Ti21)@ru82eYaDrd;Mt5AL&h88G1dcs? zc}A*%_7DEo(7Ca;EXoeG!soBF{D0EX6o9HpMsC`P^jAE8(9XxSDM0wZ&ywE}n)GEN zEIb3k!YA@82uuL4-wO_`0wQ#EPBYVWW_h1;bCR-XzjY#|+t(f5M#Jp+bWj;0abVQ0 z9nL_V{+b3O8Z&&6rnd-HOMi^tfQ} z{nq`b!Rq=nxljmW>#q+)Gqb+*UvOsp<_cWn?l4VUnqD=1QSMc=NJA`6G33hS1}`61 zd-IvW*@(wX)Xsy)6vs>jn)(DuqoaH=k;KjS65D@a9k^^=o&7JP-3K!~P%`p=KL_ZI zBMbUqRb@5GIj6wI{A^*yj+3;zyk6{)f>MxfcB zZ!DDWMNisSqJkNWI9_i*kpNJ89b^({32N!3Z$rN!zU>rR)&yMY-A)A}A1W+teWi zeH4m#$slMGAy0F`e=Ht^AoY?9pBvmZLA+8Pk z=qcK=V6IEX?Y)axa}^`TGw(rH?CUHHpnr|$ssL%d)(rS0Q#dmpcaqF9>*Rq=A%V5= zfjU0i%b1?VeIiZF`7Iepw>aWc9BuwgBJ_jqK)vic z{GOWTm94|JqhF}k(*}|nB11rFIEE^>;5SJ#JtUU6F z4dOE7H2-)u|Kl^Wq=M3Bus13`L?e;3Rv4r1#HzsV{I>or4;@<;TNTlubr=2oKg@g@ zH@5CGE}NHA-El!^mc0752S0YC8zNdOjtTMT6@vwpYo$ydjmwo%^OO@4s`+qZGS-~5 zBe$S`f?CXnA(uy#)@uEso*tb(XS~1z&^zXG>}6~+ETEKbb?LqNSV-cK565>paeOIa z$V^9Q^6b^R31MGD%Q@=QU;$_88pbKwCH2bkX*kiu?BN@No*i}I<9ev|q1j(v0lg!n z2(YN8nLI&O`Ujwg@(;>D#xy&%Op^lyP6zJFD#*}1JAMI%>E|h|eGYNd-&H>*i^Pci z-s&Y7vqbpTST8CNuGo~M@8$02Xxkz?*vE@49><2yG*^6yvXp$uQ&fo9)Y4tdLC$FO z1|JtV?}&fX99$FL>3Q75YCx z={&}aH31u@sh%k?=rXdma7a5GI<#0I#p8>YR&jIrviG1-?K)-V*FrD5E&+l@*kQ3% zQu;QYA{aNI~e(h#z9M#LNgd6!XN3bxf(=Vn^`pw8=>UlzAGc zlP_t~Y!XcCq}=E-dgJ$Vf9%j{OZsObN=2(Cq2XLj>*(1SQSj%%CF59}6Bg9|a;VD0 zu-U7VY2ElZeuWBUT;&ru68;NVm?s^C>8rn!L#6RkQ&Bj^^CiwmwIL1pk|ShYE2dnj zSh;sO;k1U(?twSB>Z`w1Mw00+-ac4H2c32cC#mxqsQI#D4u}}H$!O$eQT z9+dVtFC}w{WSvRV8Dl2plWh7+2q*|F0E;+%Type%AR_D4NOg1SUDIYmoi;yEHus9z z?AuAIgdf`sgq#HF4m3D6{XaN(Q219=^hoDHALL3~Ytj4XuAxrU?3`a%Pq_sYOdC;_ zrN>Cbg^$L&r_;U;J77}WQH$FG}8eULY__o4Nn)E+^hGjKqCaK)~W zVU85>73vYrJ={csdF*pElXc|X*wxs0@xsKYp`6qia zkD=ALd@W6vOg`2PP&LzG2gXiDQZfA?sRU_LMP0voc8CPO$G`B$UtLPRt*Wg-Gt@Tv zOLzTt+CJ&TNpHL%UpMBEzr#80DU}giq))L}j@@qIhL~AiWW>J`A-VtI93aiCXxi3m zgQZS~I|!V&ap}OBpU2_=-Xqu3i|=8DDiSA!J5L~kUd9tYuID>&iP1|KUgW{F>$%z@ z45~-yNK_1|(PPRrh*^K@5FFf~V#xNL!&$BMH$xl7==(J#6#%Vr!&ux}*d3awX;wk^ z>bn#4{nNrMq28J=*ax~=g6q(ae#ldv=>6iV4-EE>Fnt?(drDyRO5YuJ%)E^W#d{m+ z_Oq^Jt}pmZ><}U#yFH-Y9RpZ06|XOSak&GcF#Huo+xbiK<{L@}_gWTAh9d6E6j8|n z8m6PAw(7`D4p$G8fblv%Ulod-vt=0}t~C;YG#IBqRCjXEefZ$2<0aj&^PiosZM;pUvZ3Db5RVeu;=gF6 zFYy+`@~2y^b~2tT@GZ#$RNhiuZ2LbaC@-kg0N9!!4{>t^!8%#1uv~x2^{LrLZ(?h7 zttHzj09Yk{EvxE%YR}TMOai3R6?Oi>e<;AB=gUApdHJo)^&oRa^E=%()+hm zI}$=vS(ec1Q4jpL;(PZ21DDW7M5<(IQX48h;p2K%%w7_OfA=!7^esAaF( zBdrfu_9?XsCgVigKg&9N|wThzR&5Li+-U4`;gkKaQu^6u({3i&cG$g@&B`fND6m;IquP{?VvYAr5 zQExv)Px+}SUp4J+(!{t+e7NlA&hNsf*rHc~u>k={tTYwqoT?sD_%2QJ5(iR>N$IPn z)nXgL8pOx9j1pmr5T;XSQ-}wJ3aHbn>3LEJSzj9yri?#=4KUIa&gjsA2_@*v{O|RH zgU|JEzE*Kjm=M!#Z*Nem^;&gFiJ||3M+Vu14yumuaorQ*P%#k=k!HpBCm0DqTLtI_ zt#UgyE|9#bOv`Wg_iXIPG>bERZ+}twwu@4@Ru)>Xt3DrK8Dvg#Rum8wq^fclMzDm- zT;s-o>^Yh=k4ZuW+<7cU@rBel?5%thSucvu6!;^jg>9JOkzr{_3^Z0J@|%PA_X{)| zC=wx^NKo(K-F9AOvQ?^P-(_aFG4jn1P94?z0Rh8qbD<*wDvN)cW1DE18@MrKQHEY@ z{{-oo2&(J4ynNeB7Z&$rpG^GZ7<5$H_=lOrrvk#5P>T(|fuA<#4X^+*!}fOih}&o2 z?2+K5Pk)mb(TM;B$#mnksGH}lWRedwp$vXAi0p-~Po&tYh-au%c`ydv4kBs5>(G{T z2oVX)UbUssI@HAdvfC#1hV6FOMuKqPe2VbQmO(0_O^Ay z_%0kfG}>*Tb_i%s9a2su}_LFk2Z_5<^A_d!?q>{ur70+dhb?-g$KH;z+!=m%2y zVBV0Fju_LzFciSo3aB4#qjL;{*_2Oqhv*fVsII)f5At#RDvzJ~Fx^u@u?>6dg6w|+ z>7F7#fM*;{P;TitD(JP>&#TYX5&k^e$2l7mdr$|_gZU47WQB4&i#@F_F?$ye1CRfe z*q-U5Aa~{++7-@2z2eG)nbPb@)|jvZc?`1A`|FzO*oHPOL2VBs_BxWlo|H6cUI~QV zx5a8o{Cx8_alI>91*l7S=xp+jqWRWqbG^#dxeLOVqPv`-@4w+R>v8)jc9tmim)%OU z3QmMo!UB-F4A&%oPMtv|`j5@uR+v3_ILO&}-&65s5C-N9VFY*O)50e~6am+p)_K8B z>)5Ynh-RrJ61G_Jz=x#f=Cqe08#&)A)<9#?-KZCmv?=)Ch)8(e4Agy)Gn^7`0a74} zqe_d{)e>%))1Hlcgn2BXaf$U@$kG~f{nU8Fnm>&lCkXiB!d9AR6BJ$tG}RjnC8CT{ zBLsE2W*?$%E2$~yJ2p%)?HGEI3Z?naE-bQ9S zB24K%C;g&rLr8SIw+5Rp`h@`^5uKl8nLYO-Qir+8Ni7uSaT10>=I~GM&Ev)%kS&8;$}Yg%2PLgnZgKh*T>n%2GG8VbT4vd&u~2L zfJ$?VYaMkFh_}f%Z9xLqXfK@a+W|e@zW>_ZVI(*w$3Sa(wR7Vkp^yWCbNV`TRTXUO z#&O8Reu;_`%IV&_FG4-?*~OqIU}ZPS%Jr4i&DL5}&{A576)Tq)nW;66rUjxWG}~W$ z5ou2{`WeoC^&MiZj5+t&eR>VJGQB?uo(sr?qw?n*?>|fxL>1>{I<5##_*FnlYeb@E zmyCcHj3p##6fA=3;Dh0d%Un)L&jaW$P`!_m82a!`I6w!x z6f7SK5NVSnbQUd9^P_Pm2HgFerJ{s6ML>l=+fsCK*N#b1Pfo8h-gzIjN1TH@;CRP-cOIU zaZwZLPWPotMU^A(`TclN%zxFTdTymG*;WpJ(oQ4nZ@!sXjCK1gxJ^?zs~ql9F&mNU z*h6Wct*t%m5+Qj@ZU~k&Yu()X?yOpSZ7TgIsfCX=yYa@9#qsHOw)Icb*~npDYKfbO z8QNoMD?D$Yn_pnCpLOf#Y!o;vGS%2KyL=s*>V70#m7$=`X~(-4vfq6EO+sYeW~%=k zir}%Bb7S@Fr|C!?Ut#9-91_OdMYsLoKku^T1+wdY^PE;e#a@1-X+2HwEF3UheR{k~ zxw{V^{e#PY#F&>2y+js7^a~%IzZ)a($@j@eaHZ*NX2UXLfAqs^?*t#C6jD5Mrewi+x!$PB9^IuqAagNfH`x!m#f%&cHCE87=w3`JociK`u|1O?& z5I@bCZoar&{Ic@`XSO)M347PZ;nSb8Qk0K9GL4AJhNy5u( zU5}KE#uj-*8H||Eh^{27%Mbe2Cs-kFbsMMizAKHhC!Xgde|a`Cv%(=1BIzU7al$j34by|o_qKG#3}uK;+K~ zk5j$Km#~4Cg;KHP7@gT-?GC5oXo9W_F#HfIinv4rx7Y6D_4)Pf5R1?6&y<2BSusE1 z;j`d-25y=KN5nM~b+6u4P(>zwa^iMh(r9%VCeT>|KRvB1Cfa-f!a&FH13RO!JK{x&eE2xx;Vgkf1Fv7*f6C?Q)@|7q8}715 zZY;fuUGE3<-Xpf5X2312E?Gq%U6crnq{;P)8ctcRA|q#=Pu=3;YR{$;krt<5&?Sx8 z==56lMFt<%>p5bGnJ8a~fwVi?C#kWcTsH#B9W3`ND&0OwdSfsR=2W;r9$2}jKS`-N zHr2MOM09@&9uaFfTGS$?6xqok1tT^nFo=H7CoNzH3cR;K+F!FA*xI`V%cn<`j-^(1l0E$5Q&$FkcXONhLBkM}SEIxI_L(GH-+E zMRUjq&m}5KPp>c1w9F+HqC2HOY*-i#(-VDq{|s`ruIFW%c-5Z2SE}P2<+qUb6y?@n zy|zT}S2fd$E2$?%v&;F7$Wx%@UaEn>wod{alcZFD!KqJ&M%pmYU9DqE$=J0{-i-BA z0~KJgHFD4;xTlw=TI+7M`d?$XJ1bZzDf`>X>Hlfv|GRoQsFXTA84er2N+1iikbgyTVpxa!0oT@hxABgLts(bF5quMn!;dp);? z#xl1_4ZxY9r!}O7fkH{LjFaraY&sAZ57!7Nt*U>Zfp6jUoDGEOtXy7}9U$L!Ep%dM%&$Pi1?VXCmKi_+LN38aF^nbz2af_#f zU2QL}%hk{o`Ec-Jbza|uQJ|j$Q1ia4VKz}zZThVOVv?}@fT*#^LH2|6lQzbw3 zKq3(@>E~(=gqDfJMouE3>Ek2j_3uu{Z}%&zbi8Ndz*Ub8&5QMH+7@6oB_&rm@qdd9 z1gwHS;Ku5wU(Q=();~QQ^Il~lo}uO)*b^4wRZR@`o!$?dw&3D}5gbOeZy=aXdg_;k z-B?Z=g7f`_B4JO=l{$rw3xk5d8g1{y2kQu^xqbWP?^bwu^Frl;HVDk-jZ>rj5D7h; z&MAkd_tuRc0mlv_mW?TpWYb+WQ zFMcC>VOM`ybR~IK{u-f16tq1$;JDvk+fJYtmj*ysa^E2~`6mWr@PUM_ijyzG*xzth(maIv!^@w_`1@~&C@g^j zh5dYNcRe`*l%bh(CidCI!lW`WRcmMC^sP5((V=Cy9UmI-1@Xy&nx*lnV_P zS-OqzKYau|%C+IfA|9~l7yMrY(U5r+Ua8Lo{MYUoW1b75e2zY_4^nCQUj&&D1K|ni z!2hq^Lzd2JCE|jZ`7zp_;{CUAAWPFrAqIl=-0i<<@9({bNPkMEJ8F|S`~RZmzk*nZ zfhcE{q5c=`{q50?J=zfc{0e3&_pAVdrVC7AX~HC{zQY~Eza4+z{%fg$Sk*(Q z-z10HuRSDLr;XRRF<>zCO1%n{7lh7SKn`QgM$Ok-#^5FPAJ5{^1Ck+dM@kNQ#0CA3 z20hwB#=k-(84Wr={{GH%dcrym<6lB_l&A>;2r)7Bi*l#CsK4#k9mlE!GN^N)eYcLz z2@ERr3w%Z<&(oworeha?M5gdo(KJ2h)}-5PoRnEuyI=NXVxf8n;W-AEybiV95wS+K zRZ1y>ac#}mv^G!!7E4tI!Lo>0qt@_ly158!+nQL$`UV9>1z}D@0Q_B<@bWU1$rw^zpqp7G`Q^_@Xt3S)s3OE=#?h;;F? z-LQFqH6LsepFTxEH|;y!8c<*$(dy4PrQO#$j{>&&tX%)T{cWW8l+jjO-3;v(k-gIVzMZTEoUR^SBt%E~}1HeRhVbp+z1l_;EB)b_Km>%J% z@zM6QKC>h4R7aPe1W0BTAi`3%qM?zuS+CLi5zqPSUu{*+R*8m+sedzpW<+GX`}^@3(B?Pw#Q#odeV3K5LB90(*^{Df%iKU|O`y3uLvA+y0erwss7GQmi# zK1UpQgW^?C4F7Npyg`up`MJsaTPi>*^q1m+_+PRBvJg)F+wx8F_pW6|1V<5fORT&> zOz6KwWYrGj6Cy90tF-hep zFs_-g(e}6x-;6jhL20mYH!t-|o6%y3)I{A}08<3V{53^@NhoR*A}VN0ZF@tAU{euo zWu3@>qk>fxW74k(Rm&OAt@$&mGXe31D6|5iB(o6A_fIM3!Tcnz+Kp%%AGi%~`Tk0GtIb+E46=$VdPz z#kqK`GZwNtW=#nYty;tJLWBx|0?MIUg_z(2^_{~C3?zhi!bjRU{Afn>JdcuTF-*g! zkqib}IjLM4Mub9h`eG`d5S|Noi6=4mM<3C_;qJ+t3p|8E{}IW;1lt~wrtnE;38450 zC^)UOEXe98i!u@(GlXfzqOMsYf*^df+wM1$*E&U)JLe0CASfNVyTKO*DqqN+v_aH5 zazTH-e;WzywuY*fsvyYXuATAhiU``mGJQQfQBCyb^c&da<$)t+HYKp<{TgFmC?iK$ zlAE#6!#58Vs{H(jqZ_a~ zP7@JIdn1SjpM!sFrX^(^Ioc-!{gIWH9FuD?@D!@@+2Ph zYO^|mUGo5E{KL+S%q$onLwb6knkR7wDpWl-Z}L1V33@zINtlttOh8l;kgyr-@-<>V zW&m$3_G)rPC3>pcwWk+s_kjZVCTaidIk<>M5P@Q=L!OJ-Y*o>&efqr@EJZtW`x0om zXAvKn(VLlfF-&$7oZjqkh?74CHLo@zD!s_I2JmM?3h&c>OVZY`f*>Z`d7uAiDA%kDdHfF5f-&J z{!ziv)N_6QOtqbxoF*JkA`TAjJ!jjkH2^StOaSKOk zvyO>{xides^xPMXl@bS>4R|ReF9W`w!yol=9G`e0IqRCo`93#0!p}@Mwn3}!<&3BR z``o{T9nIH4w$bOe%v9R}qGQ_a+D9_IRzk5kH-twwduO~xS0_g|$pV*!Nw95U^3rlo zXR6}N97O42K$$>hf2j8IlKSwzoEI;$45s#(e@8}Pusn>DZTMrTbC&=GsW)n0%b zC#ftsg%p+p^!bjlZB^I9D7ndKliOa-BeDL{?nNdlb|!&F(!)BA@aq!Re{`2+58T}i z7Dz&WWpplteYPE-{ij2EnUEu+4<2&*#R;6lsbm?CE5n#FATjk4yHN9SCZ8JM-9SCq z)oV}FimMRt^y9&CZ&aLf!g&;W-lPS7!>NLk;t+4p&bi5%qun$6uGAIpRP}zOSV2q2 z;+ETJQcTp;e(ZN_xX`2=!98INHo3?0tG&J$M1M?d{$bX#el@I7?2 zWJ!LL^rH7Vxzs!!n&L)A#!?!ezpC>JxQ5|D(|sih&@e1W&38>g%QfzQd4WPztXWBYLwR~cJ|RrC!uOTXQ!h0E~MqLY3_GQ-ZdR3^V6aBHK3~ugw|C_ zCsoo*kYpg6{8#!Ged?f1Rm+{|w)!NjgqroA2&@S!Op%;-Z>_qjh8C0QXPc>8g$w++hVw_1Aoi5S+}Cy!+aTzBko?zsayX=xB_#YqC_PNi1K z{pPecpZ|kxL_;S7sSDT11m!Wzv}o1YUd-bXQ_}5foiR}%a`r+I7qrlr7Ne{9phw)Z z)WMl~o|R{{Le+3?!0P|gJh%i&y>E~n(s|C9?jb{4d))N$jo9uPNn91G3e5F6eSSF< z9Ible^pPDHGFq2L6eW{)p4%_n*cA`uMS(TSYly@>&fyWXog_%s zPfUA37Ilb8>>Z8?L;Aa)GUyxx{iz&U5MA}67{-t-GDUDsCE}MpjvnDF5555{SMPT!Tb(!)tGlrp`)|PZV;vksgs*@a!giZA*TdC?1E!RcUEXHtSq&Fl0 zzt3kWzPYvt(ojln*?|{;8E`46;A>j&2g+7uvf_jtpr$?d2a0TTW}mZ5mK2xQb)p+}%H8 zvhkq03(m-C8W{>4oAO>I`p7A7#YSQ0kDde`!3WFoQPv?0c^YACIKX#fee{fJvr2vg zS6@PtJ49fhmb{zAGV%BLuUFzdu=3;eaG7UwFr8FyNY?vP)T8gl;8L$b_r zbMmg7HU!g;``%)!JV` zuU5O}HDe+)Hqa!)^DMD7oswx^LjyL@)jLOz_2T8y$4@uTXx1LDTC}`26E{N7dWVij z+qFj}dO}Z_e9Xbk=lS2I-aD3DeRu`zLC<=(oV)bg%>(#`b5rQ#)h5=uG! z6Q5vVljOl(n)@c;B5bAMHoPdqck6A`qv98x!YDB3O+tk?@J{ki{p_t{mSM+Eon#b; zn@ajl2hy=Cy++<#!oKSlp)`*&5#D=v@NSKo?Ozh|U~mcICA#>>s^gU(+p-Vbz%84U z{KP*7o*MHMb(2(!VLEsgNPCSkV)bygl2cKENS{?5@~PrLEk(@zek>{+Qv zBpVEG2NgYbjzhm7*fl2LJpUo4xNHPLS**Sf_a>_qgh@az*!sviSl8QC^DMw!^8G=2 zT`S~Pb#M)n!n+T7aM)=t?N>Scrgjs1ywKf_Z}AXAjtyqkm%51@RnZtL<0#mQ#WK&8738pEt`PPLlz;psq^e2wq<%|^(iz_yN2KcM)z6Lr^HE) zt5aBJ8)_%Y)rA5yp_GbpJvzJnCVtrBYt2na8)8?90bP-Wg|>K2GU2;X|IU(~Hiup% zDPmqJGYNz{2IPlJ#fy{V>zBzjq=;UzzRYd187=q{Ez`d89Vs~6c6n@Lv$8}LH}*5q zd;h)rcq_?zM4nvSXCfenhxi_Cv`y`if$2!6u{*SiffmiiFfSXhf!y)Y@OWV5(H6$& zP_&I$EEnDMyEn|*Ok(ge{F65hSS_c0_1uMn`&F^FshaME?l<)?qO?wWAab3!?kU&T8x@T=0wtDLZStEY11kESKUt-890vfxX*Nr*zKo;` zPL#>{Ju=EEQm{z)Yy{H__K_pAV8|dC{2I-vE&(snMT8skDfeb%#mlu{1k9~%haXp7 zZ^qBQ-iCR=K%@FLOtOfTbWn#%Y=9b^6C&-9H;}n4&o_c&#pD=yj*9`91S=e0yn!{Z zh&Oq+*ft|_#Jr3Mj@&Y2F|+7J$1REPCe6rb#_nRA+_Zms#p)4Wg{Z&~oE%JzvMHT) zh!?x>=l;Fwn@bir;gg8A%apay^QRgKwxp_s_}(YjrSQ4AAIC17Af4lJto(M;HaU$k z7ZDV=IA#oh;ya1dtNqBU=yEg!GlFUjtp zJlf8Lj~4T-3C8V%1!!nG?h9qx&SdFPBh$zx2i#G_{!vl`uN!*ZgRV|VGWY5^nG@LM zS*DVvC2vHPd4MP@UM0$?0~b-xAvy1nY&G66HA!Qx*XV)NY7h4+oY-M`&EQt=^J$Fe zclURjJn*;XOt36m2c(7Rh1E_j$uxm=da@a)L7Bnj#SlpDh2Hi=L4VYyzHW=FE^rmeIwzu zqnmJcTxmZA)}h4e=PhPoeJM+(tvn*)=A&|T`TcbKtB$|`iM(|Fw#g^Mmz<4DF4};s z-SFH0i>I>=Yx)h_zDi4q5(+Y6NJ)y)n;0-cQUN6MKacg6UsJ?7zW$vj-N~)a@bFTyAY~5DdhbG&xawW6Lg_H9=f!jjg9+A|x&qaq{ zkV**BJcA694%(pZ3Ahz10UrmDMV;Hekn*M*Tk8DaCAZpb+r8%elT`msU2cMZs9N`5 z>#iahiKO+?&NfN^w!;BdkL4~?3ojvluJE)egI+3m^w6CAr z9{(Vun)eJl;w|8}D(o;xdkGi8JfD6-o%<7>p8`aURj`I$EmK3dpBD>@XWfiiU_nGX zQ?BPpwqNMszWtc*N9zOqnjA-4w}_Xm`YrOPBmV ze*e|8?bz`9G^h!yPxly4N7PqAG34kwS-4ZTxP-R0(*bSw{8xrDiTBgUE71oB zl-dchiV|?^zD%`C1R;y&E1G@!f(N2o_kms z@ixh54=;9=u-@Dn`CFOboIR$km^)d$+pRjWD)f&cZ;lIqM-D4j$0XtzA(D!(`lb-; zyTxfE`#ueO)f$@{A`U6p;)?nQah?atAmUBl3qtHEY=ziO%)(-BmpBl_PgFFbmpL?- zv=D19$4h-Gd;1dKBM(d0YVx;sr=1gP@Je0i#s&Dw`!GxOws>}Nd_)$ zO8og=UhdD$r~sJ_gE>BRgmL6hk_UF(?@MW1od3MURS3N6w#URtaH)2wQ}#;AyVjd( z%0-%XL=>9b;qr(uunn8r(q7+2AG=@*qnH5K>}$U@B*fgquGb&MmUd)VR=8xC@8nbJ zp<}s(|AVt?lj(q_4b_s3e@YRpW_adO^4n84hB}R_Um!2M3LxPJ;qu;t4J=HAybySv z&CAbskX`A2Sml;~f2}LM1dblOjjdn2qV=lQNf6A4zl#~d)WQ+b;3Y2^skvalb^F?%MeXXrv8DQVU0q*@J(+b&f=(xd z6z4R4)^An{*O{TS);_ZIS2vgu{(| zv{IEdN{U|$>dBPz+OonK-Z9{kh_o~cvgInpJ<3jzSV!n)o`wZ~-ZKAm+Ib>)9`ou{ zQGX29`?3frw zP5q+qAi&P38QR;TTo2vzPn_bsSp2y9^KQOV~Gi- zQM~9*JdN*9@TKmYGJUE*=Wpy$`%fs3dTBzrRpgLUsta&leb{EjqH1e);R z?P2IeaI)`bACoJPg?GJIZy+sHfL5;e-eKQ8^_jc9oE!K3&NR0nlghcs{?)^2-dA)w zuKFtI&#`~gA(`7%0*k>_|JH~oBr;btYI|Mtzsrj^($ERcjOp$DHF?>R(~>rFyzVHX zZ^3YR-BLg2WE@?+g+7dT2fbRQ$ft%oW9|}!J>m9u8sf<$m@t$G znf7_wRp`}Nqd_oui^sj^7kyB0Ts;kPW)x=l(qjzBhoE7!LWTQ5YY!rx!Ww_@n-hmo zW@AqHiFzyg+K8s6sITPe%oM-fEC36>dc0{v%eAY?!>cVvV)F~uy|^+7E%yA0j2AWD ztyn($l6dAAz!Tv4B}X!fu;<$8R<827KwNmKiX3*$#wZaKCpL)GaB)v+T>yP@5>VuD_FZ|9q8$(pCrE@CR< z@dBR(k7?csdIx7!?1(vAgtCCR2N;i3#(V7)Vz=K~@7wys2Ef89f1S{$@^^~oKz1%a zYMXXe6V~(2EBUuq3LDA+ZcYoLC7wK+Gn8={BFstZ_*IKwiULovvnH4n^zj#|52}PP zCM)lETBE&x<4!%fj5VCcVNafbl)V_H+w0e7Ve0K~?4Fq-);SUP>3!=cHhTc(1{%A~ zmNaLfd1N9l(*<1zA-+Xm1A5#CEkm#D7hJAZ@pFSBeH0B#zih791&BH%Q{&gAq!f9m zR&c#N+&x4e5)fQRfT>IAd3xjT?hCgT#jPT3%IXo^WSzxYlW9o;c^duTkm{#4wHt+9 zwuU3{D9oq;$o=)#GV04mE^c}sk%ms6&Dba+z*E4~N26u}XTILfyT*nIk)l@dC$- zHK{|``oo>fLdF(Cg(acohW<6@EYu>S(m7@{mBG>sL~7wpu`DA_e`k&J>U4%YZ@Kk2 zQPYqO!}VS;;-&nzIl;|;okA$L-mgZl3$bBj*myzzuXG7N zJnfL03`~S~g+8=+WEPh+4XZrox7XFEN|PefCubrrh&D;89mY>7P*182&lS zHi&^p497siXx*%_Mpqv5-QpsLt=FH!q z`22I?%4^H8I1TsVlFzr^2>?MJE>m~^sEg*!?Gc>KrRJsNyH-E3>yW5P?n$0ZNnamH zn0Rd5@#JSGNYngnB+ z#eF$k*>#-8FAFAm&;aMz{OPmID&yMWqxtO@#RU?^NC+&>pI%!NzIY61o8n@@JjVB9 zzYm5mxtf&h2**?c`pWbNG{ku4pnIF|1fTyzdL{uVJo)!Yj(vB7p#(=fR!)ULs~_U0 z<}&5@lCwQ+t!lsqGgAHSF^xR$f zJDIPoP_BQM%o|@2I-$=hzkJ2Lp*(OVl{7Ir{Vv}hAP~+L3VonRlA3H$?_Yn_+_dD5 zmxTY;ax5mlsolMcJ5*MGop}7H;U_yEHu3&cL^wbCZx?j*&m9KZzdBor9nX#_zcZtF~LXioCuXbSR+f(fIMG&T{|e{!{s>a!#=3OYI8+aat=3{;Br zkmpka-o3%r%l`Nmioc4`Hsfk7re6+G3dK;=rIk#czx`74&5S$7;Kv7nnu)9H`*1vC zFMIV7YU@+hK~+MMS_hd3d!pG9##Wl*l(8%Z=?-RY zlxaoS!GZhH+LTYRQ@5n6f|0Ho34x}N0B;SVeXy(&SS%1Op-d#XhXs=cMkGbtK~1Z8=UUZm+zKO?#RY(!>5o4UXEb94NL zl}xy1C*;)5i219NFV0WKHMbbIN>Y2)pB5u2vZ+~KkkZH~MaYf52|)cB#Aus6s%@T$ zG$>J^KdbnQj+pd{kk4n=^)6izma`S~ut-wR_n^g}1)2mLpVpgFZXcs{{Yn`g7P|iY z@hS3tbrO8X`~44jb))7EOL(al7ZJgVSU1jEBQRXp9s#sqgv%>Pc}D`@smTeQanu9W z*V>e^$BAG#S8fk_yCftOAGo1d&=S0m8k%cclZbCK-qE7u^R!}wsNkyZr`&@8wa4%G zA7RjQWun~pN4n*m_vPE_9WqxM0<^rSV-vg94rrWQ)n3#0q99n{oc*Y!*Edw~VaRlS z{;YZKKK7tR9C-(L=XPyx!OJ|C*1i@<$kKc0*q{+9WE`~YxCg8aj!=3a^#w_PcPII~ z^PLztg6LV!u4%A5_)C35edd1jU+>AlkG4UPFcAA?L@V3Vr>qTvhymu*$`hT0fCJbk zb{z7ql4y13KMzq}HoGNow(LZmUli`QEk@)cT&CefGS^3@10Q-(18(XV6Ayo?R&`R# z553MFya3!3g<{YZMm<;bx6_)xqWAn!BTW<@E6*24`nzh5*@F9i-Gml#@EhHDyf@)9 zADSp`IreX&7_ z4PzbW%~?mw9-pmBHk)drHlK-(L>zu}P&+7TX=;AFpK>)LH38v{e*MXM<<{c8PsQ6w zH}_Hu{icYe$Ca8M(%-HDHOli+MlbSqTvFCc6}0Gn1nZQCijCx!Ba5CN8wUeKI@d!m z+$HhMO&=e8ydpo{LS)0k$O~gIou$yi;jM)qNX%#PM@R+%ZYS=Fcps^QD1#>9C z9MIRWuesr`3r};~vq6_sVr!FHXfj3SLWg~8K|m*WTQ_Jtwey+x>}?fH(;vy`x|Z~J z7o~e$507dlHn4{y)hd72?@re#c~sBVZ7+4-MF&jVf)Dj>C4FI~JOr_iNK;d@o+NH7 z3?0f2y!Pt#S!W0evp}_#`hK2~IBv4EYn2J3{o1O|(vhY=bXUGd>pJhUaF>nJ3A!SE zyA@Wmo(AVdKS3NipLikK;V%=zZl;ZyQ!|b5ilJbWV)B1kN^~&=$&6CPD#JqZAyb73 z6iLqO$(C8O*-GNhCWYEM7odi_DVnPqq?=AEp#|Wr9kV~F#M~E*dTk|B#(+B<#Sbou z?OUIk;r29aR~g3})U?SRMB7pF4agx*c+OJb?b5q~d$bsP=#3;U0dUgq6%DFn6u-D< zm%LkY=Z1KyG2f>52K$r5IK@(58zTrN^cg}Z5Tu!>oypiyWgPmR_Gp&LLCbjm`aYuP z7YZ}Nur6$2p@dJbCS9sJ2d-7Yy)$i+;cv4~S>0XseHW0}_*?gM5tHQ=h@9ts4vTxr zL#t|GaO}xV$x8tic21sEYwPTA_jF`!$@d0p}w+~XzAsapCV1ypCsN#t{eemkyiK9 zG=8<(@%gZiJ6>4mi4UTlU##Q&Gl&NrJ>}rq#?`PFamFQ^D{j}TtaTTzd1UwAWIV=g z73ChIw2x-k8|sb#SNIdf^TI_+(#XQKn*-S*CT#yzwOyUP;%2ip3H;aobR8~+@CQkS zf(@6bgues@{*EyhTh@xD|_= z3SM~mxsY(!!r~&dAd7J~zOeP<_xg*I2jl!}B`1ATb8{RI=B4LqCs?XV@|JcdJ-!g= z?$U}+2(h`_rvpLP7Pd1HiNC{=WSF z_IaV#F*)(65iJ9i^@DE&zsHQvH-DYDPwlTP=zo<{7_hJvTrTR^dP}BOv6w7ZlwG?x zH9&}+*iTGOU-M6Jr1t|YMRY{E$M3JJabP`9=Dw8Kzs~%9t)Ar1oF124b&d`l{0}Uc z*R1=zs(58BbNO23b*s4q()7wWhYWaWN^|Fut(00Z66UnXaDF0kZ~nnpva7 zIN=yD1ty@qKc|kaA)V-n>_LluZ_qB=DEyEgC-lyJq|KdvoaU~xAGLgHaqqFYJ<#9) z>M})Vf6*sv5kgB&erRdeA0&x=5qgfmNW0rJE<z28L%ccnEQvDRh#1+}8F z=4ED-`N-Ti1idK}p|ky7A)09{{=aqeOr}#iPF0M)4}@9g*UMPK4mLALpugx;5rgW< zk%>`zAMnJHyp~L$-hpFwu1G|ODJ#2AKHv7Z*~ZHFyro_58*7)#V9)b_RlOUE029SE z&r>x@zkL$W@M6CgncFdNy!@$dGbW3Y_L2d-i3$#1-0Z^Rp=bp1pRES4H$U`&p1$75 z?zgO>gYRBf%HCwr`QuL$uNUT!qVI5nIlU!~J9Ql186_=4@lSX6=*NIV8sQ} zMgiKiyF)$f!NIrl=-4oO{^E;)n|WM!#dQMpr*_g!|DH+EJZKnSDeS!kw^&GeJ$}5% zjv>J}D+|`V#$6%C{m;#FH$c27Iu}Xn_fA zpYBmRRBQKm^vB+C!gzKduEUM;PC|SWR`6UV`M6qEt_0{5lIPP|D4Nh8^l9Qsgg)0A zN~v4ypIR`ZUa!h0PDbfry?&V!B2DueY?vr23WQRTt-=`|@-9y|`nH^o>l^1Ac;kS* zE_;aU$1|69hFld5<@g}4w&oIyQ?zI~o76MzjGfXI483D?9h2o^5}(QJxjpPbZy7s+ zCIvOzR~HiHFSpn~xU{;`5(*oQxt=fzhksc&*4QlLpH`@iNk0A4iu-mg#ML>2z)Y=?&t zXymXu@M!zm&&-p@eB7GC@F~bvgZ0F1Y{Tnkvjf5^D5B3~ z^`8~tzgpXWS>0$ud;vMZFaCh~$*NxWs#>CkuCIx?H>~b9Y@TIiL3V#4dyN1weA$kZlw>XVv#&|7C zP_!D&gIu;Uo{v6yE23cXpA~kyB<~zg!DST=^V?kNJ!Ru^i@u{zP>A(5Y;6Z$Al-Xu z9p8Nnj-t2h=;tft`Z<+0ea-vzGbx*!_+u-^>BcvpY15vZ4( zQg26u$f3@NJPgtZ1Ys1;O?gf}POLiuGv$LNBVKuETEP8D6Pwm{gb4X;z_M79`$DEkN8B1Z}fPlm2!fb(^ zI`r3*H_2FEZ0GdL;;Tg7^pPrP^$B^sMiHmcpmg{?yK&!9F(=exZe}ZW46&0s)(Fe< zjy2vqkGPjYrS6TX{6ri7{L>A_cJ(CJDan9%StuTPNVYoM=1Uc7!Y!veJPU(B5HIBb z`LvcpIp+#FnVRMmqgI`7>Wx=3vRo4VwI#NXxp923i*^Q?S2yLSC0bVU0k7Ske2_sr zj0bblc8VqK!8qPC9)OSE0eH0ccqmP}?xZ4C*8jf?;IZxz(hkT8AM6zZ&e>hgF?M$A zBEBDAkLn^0C}W{VXE(*smn%PRgl!;`<|TGD^c64q(t7XYkYcC10D6aEeRjmokk`w}5<=lw&)H3>TMw)qc8v{=R|a}ShJei8Y+uqBX^#Y-b*663 zlZwUyjt7)*kJiJ~#`*Y%gR(zqSM{9TYW6|vX|dCujtP(2*;BuMzH+kqAT`pmx@`0e zN3rCrSnTRlCaA57wk-loPa7Hxia@RF+fTvy4y7gCC8EiP}LCZ?fQFR-5+ zQfLZyENw#x*0tG75dU_lmCZ&&{&n(7vC!x56)5gG>cwRlVi&3$h%!H`L)Thy3}p_M zmB8vh7l3~)VnNeE!$P;#j_;{pUkbdI_h_u66Iy>&Q-h#J96PgPT#jEQnAcUl(Gs71 zoYHD>CMUF7J1*hut)5(^P0!E#;0HVr3|wy`3)bXuvzj+x0YV?Kequ-G5B-BGCpMw? zC=y=aDUgN=>f=tULQSPW(1N|NWmQGj?NCA{pJ1#LB|VLg1aLvU1b_<)1Wq1`^gN&` zuw-reK0Q3_@@$iyxN(>*UcMC+)S}Rh*lKgH&5}Qej1VJ@<~t>YUjoDRAj8pHYp9*; z_j*+t12T=rkUF#9LAUdOIteh$Uw6uuyuK`YtZF=4yFTfHlbzS$NPmOa3&hW+y7IFn z`$@w(ym3PSJs-&)x^lp3h8eiGQJ;-cO9kB|?(>+@Zu|-iHJz^+w~|%jN)1DfqW}yo1;i zZvpqi2UVjR4=3O7H4xpJ(^pcaAtwjpT@qN$u6$!&cOa1cIAuSwUvI{Fx+r~YUb)Qx4Cu`Xt<@38bF-jbR2{}Ms$!YM{(WPQI0Bw{|;?V2_{?5ZtOQ+ zxg;&@9BeD%XHsN}3QjiidBcZeexM^WRDpz~%(dfE?KCZWo7zSQ?i~hu<`78vn-WZl zEJFk|DDC&wyn(`7pql|^qMK?r2wFbw9SCQ*9=~|_~Co+0mt1)lulpAtifVs?GDGxi%t_8(7gP;b*((%TY7YenlpBR(~S9I85}t#_?7 z9|wQ7657G;>B_3!x0^&MCWRKr$SDkJ(E={{_KxO$sk`2D{&pdlzkn_j77voFUO|5g zBny0DPy;9_x|%|2*AquR-{}dI2x5(3Iq`$kar{AVx>T2itdM)!eKbMHJ3rSQR9zOw z+9Z)^)W7;_Q1oDUq=qR*n^JZHOUXqbte>5J`2H$ks}5%>Db@;%HNXR{pWn`d{uhu2 zBx#%ZWLm;Zy!P|8DHE}F-Xy#IFA-(lypu$poPC6i)~)f=0Bm*rk4HdH#kLGPraj>m zM(kCeq&d_>4C@N_8)}@qONms-1?fGw&IFw6FXq4y!p#w?6d`KUGXjTKuwuzP2aeg=fCh#V z$808 zTg#ji?3){&b3+cyy{(*ZD~NCTvYQ(gv43x%mex9A>Y`Pw+TyXrFU27A9+79F6?gT;qk)bQ)ZveK75>Kv)vq|e6Wcn zf2p(CjULzrsuXZ1H}s#PZw_*ubK^MN`4dFzD_>u;?WHW;hHPk+@_l*9s3&SME-wM{ z)cVuP>nblIQ?L3^ew%E4d48&K&z*8mIX!=Yk)qOi6C&!ENW%+dbqt@L9!!|3yHI%{ zPn(ijR;XI{o88D$<}^R}DTZ?j={i@sE;c)3J>Sb^C%3+!VQ%p_CeSC9j{68WqcE=% zKs_tKn(aA}8^)G*@aIT;n&{*7B5m#^YRnG)Hg9?mSj7n9QNCKnbdx1O>&kIyvD<6& zF-wX?pKbg{!JPqRX1~W1O>X@yh-J{eekfttA#rRV zpS3AVy2ooqe^*%E-)a>L)~4Rg)jU7;7W`xt>6ZBHX)W ziEn|X7(fTLF=I$Z;kVc5&xZVmf!OS=_mzFAG;b?7t>m4?r6x!?4%m|ZD+qiQ1*zz5 z&Kw~FyvE7u8|VvkU}hKVzjW7j8F}qt`jUh?5tm z9KAkMnCf4uK4eiKW#xmy4+bY#ANjgEPHRW(GMb->lveNI;+V<~s3k4ht>C{XQmb0q z$0pry@=H1I4uVBPf%LN1=*Yyv@KYdGc=hSDUw>yhQrBk1azltBo3Rherm%AdO6Jl< z*2@<)bSUGcLV)|H!GhnXPqcqGhlxPfE7Gxb>x!g?&ALURylbxaxSm`8n#93|JCm`WL+A0p5F1D-2u+-E@&YqIR` z1Z9}+T%diFhyLo8D+b%23OFJ_)c}a`La+ni7PB&Tr!dvxyc;05*}6KrgioI$Y`xi&!(W`URhxsnCiy4 zz|3Z?@B2m+R+L{)0P3exf_ceA(4lgp8DC(Q!;V}--5aQa;Xq_vsC}Ylph~L1iARF@ zykngH@x0O-5Z^IX73=*uP!!~39s~~an>9H(^`xw2m;Us1LHJa|v#b=|al3#|fiuo0 z!Qh3!RS8|`*PXfhTf#E!Y^>6WZYd@4nkyRP&(%vX6FZr)6ZINLHocZv$O00!2Md

    Q8~+p_Hli4(}^UG>H*R1w^cXK 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�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 UU **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/zenuml.md](../../packages/mermaid/src/docs/syntax/zenuml.md). + +# ZenUML + +> A Sequence diagram is an interaction diagram that shows how processes operate with one another and in what order. + +Mermaid can render sequence diagrams with ZenUML. Note that ZenUML uses a different +syntax than the original Sequence Diagram in mermaid. + +```mermaid-example +zenuml + title Demo + Alice->John: Hello John, how are you? + John->Alice: Great! + Alice->John: See you later! +``` + +```mermaid +zenuml + title Demo + Alice->John: Hello John, how are you? + John->Alice: Great! + Alice->John: See you later! +``` + +## Syntax + +### Participants + +The participants can be defined implicitly as in the first example on this page. The participants or actors are +rendered in order of appearance in the diagram source text. Sometimes you might want to show the participants in a +different order than how they appear in the first message. It is possible to specify the actor's order of +appearance by doing the following: + +```mermaid-example +zenuml + title Declare participant (optional) + Bob + Alice + Alice->Bob: Hi Bob + Bob->Alice: Hi Alice +``` + +```mermaid +zenuml + title Declare participant (optional) + Bob + Alice + Alice->Bob: Hi Bob + Bob->Alice: Hi Alice +``` + +### Annotators + +If you specifically want to use symbols instead of just rectangles with text you can do so by using the annotator syntax to declare participants as per below. + +```mermaid-example +zenuml + title Annotators + @Actor Alice + @Database Bob + Alice->Bob: Hi Bob + Bob->Alice: Hi Alice +``` + +```mermaid +zenuml + title Annotators + @Actor Alice + @Database Bob + Alice->Bob: Hi Bob + Bob->Alice: Hi Alice +``` + +Here are the available annotators: +![img.png](img/zenuml-participant-annotators.png) + +### Aliases + +The participants can have a convenient identifier and a descriptive label. + +```mermaid-example +zenuml + title Aliases + A as Alice + J as John + A->J: Hello John, how are you? + J->A: Great! +``` + +```mermaid +zenuml + title Aliases + A as Alice + J as John + A->J: Hello John, how are you? + J->A: Great! +``` + +## Messages + +Messages can be one of: + +1. Sync message +2. Async message +3. Creation message +4. Reply message + +### Sync message + +You can think of a sync (blocking) method in a programming language. + +```mermaid-example +zenuml + title Sync message + A.SyncMessage + A.SyncMessage(with, parameters) { + B.nestedSyncMessage() + } +``` + +```mermaid +zenuml + title Sync message + A.SyncMessage + A.SyncMessage(with, parameters) { + B.nestedSyncMessage() + } +``` + +### Async message + +You can think of an async (non-blocking) method in a programming language. +Fire an event and forget about it. + +```mermaid-example +zenuml + title Async message + Alice->Bob: How are you? +``` + +```mermaid +zenuml + title Async message + Alice->Bob: How are you? +``` + +### Creation message + +We use `new` keyword to create an object. + + new A1 + new A2(with, parameters) + +### Reply message + +There are three ways to express a reply message: + + // 1. assign a variable from a sync message. + a = A.SyncMessage() + + // 1.1. optionally give the variable a type + SomeType a = A.SyncMessage() + + // 2. use return keyword + A.SyncMessage() { + return result + } + + // 3. use @return or @reply annotator on an async message + @return + A->B: result + +The third way `@return` is rarely used, but it is useful when you want to return to one level up. + +```mermaid-example +zenuml + title Reply message + Client->A.method() { + B.method() { + if(condition) { + return x1 + // return early + @return + A->Client: x11 + } + } + return x2 + } +``` + +```mermaid +zenuml + title Reply message + Client->A.method() { + B.method() { + if(condition) { + return x1 + // return early + @return + A->Client: x11 + } + } + return x2 + } +``` + +## Nesting + +Sync messages and Creation messages are naturally nestable with `{}`. + +```mermaid-example +zenuml + A.method() { + B.nested_sync_method() + B->C: nested async message + } +``` + +```mermaid +zenuml + A.method() { + B.nested_sync_method() + B->C: nested async message + } +``` + +## Comments + +It is possible to add comments to a sequence diagram with `// comment` syntax. +Comments will be rendered above the messages or fragments. Comments on other places +are ignored. Markdown is supported. + +See the example below: + + // a comment on a participent will not be rendered + BookService + // a comment on a message. + // **Markdown** is supported. + BookService.getBook() + +## Loops + +It is possible to express loops in a ZenUML diagram. This is done by any of the +following notations: + +1. while +2. for +3. forEach, foreach +4. loop + + + + while(condition) { + ...statements... + } + +See the example below: + +```mermaid-example +zenuml + Alice->John: Hello John, how are you? + while(true) { + John->Alice: Great! + } +``` + +```mermaid +zenuml + Alice->John: Hello John, how are you? + while(true) { + John->Alice: Great! + } +``` + +## Alt + +It is possible to express alternative paths in a sequence diagram. This is done by the notation + + if(condition1) { + ...statements... + } else if(condition2) { + ...statements... + } else { + ...statements... + } + +See the example below: + +```mermaid-example +zenuml + Alice->Bob: Hello Bob, how are you? + if(is_sick) { + Bob->Alice: Not so good :( + } else { + Bob->Alice: Feeling fresh like a daisy + } +``` + +```mermaid +zenuml + Alice->Bob: Hello Bob, how are you? + if(is_sick) { + Bob->Alice: Not so good :( + } else { + Bob->Alice: Feeling fresh like a daisy + } +``` + +## Opt + +It is possible to render an `opt` fragment. This is done by the notation + + opt { + ...statements... + } + +See the example below: + +```mermaid-example +zenuml + Alice->Bob: Hello Bob, how are you? + Bob->Alice: Not so good :( + opt { + Bob->Alice: Thanks for asking + } +``` + +```mermaid +zenuml + Alice->Bob: Hello Bob, how are you? + Bob->Alice: Not so good :( + opt { + Bob->Alice: Thanks for asking + } +``` + +## Parallel + +It is possible to show actions that are happening in parallel. + +This is done by the notation + + par { + statement1 + statement2 + statement3 + } + +See the example below: + +```mermaid-example +zenuml + par { + Alice->Bob: Hello guys! + Alice->John: Hello guys! + } +``` + +```mermaid +zenuml + par { + Alice->Bob: Hello guys! + Alice->John: Hello guys! + } +``` + +## Try/Catch/Finally (Break) + +It is possible to indicate a stop of the sequence within the flow (usually used to model exceptions). + +This is done by the notation + + try { + ...statements... + } catch { + ...statements... + } finally { + ...statements... + } + +See the example below: + +```mermaid-example +zenuml + try { + Consumer->API: Book something + API->BookingService: Start booking process + } catch { + API->Consumer: show failure + } finally { + API->BookingService: rollback status + } +``` + +```mermaid +zenuml + try { + Consumer->API: Book something + API->BookingService: Start booking process + } catch { + API->Consumer: show failure + } finally { + API->BookingService: rollback status + } +``` diff --git a/packages/mermaid/src/docs/.vitepress/config.ts b/packages/mermaid/src/docs/.vitepress/config.ts index 2ca53b348..1076a51f2 100644 --- a/packages/mermaid/src/docs/.vitepress/config.ts +++ b/packages/mermaid/src/docs/.vitepress/config.ts @@ -120,6 +120,7 @@ function sidebarSyntax() { { text: 'C4C Diagram (Context) Diagram 🦺⚠️', link: '/syntax/c4c' }, { text: 'Mindmaps 🔥', link: '/syntax/mindmap' }, { text: 'Timeline 🔥', link: '/syntax/timeline' }, + { text: 'Zenuml 🔥', link: '/syntax/zenuml' }, { text: 'Other Examples', link: '/syntax/examples' }, ], }, diff --git a/packages/mermaid/src/docs/.vitepress/theme/mermaid.ts b/packages/mermaid/src/docs/.vitepress/theme/mermaid.ts index 4752a1c01..47e238692 100644 --- a/packages/mermaid/src/docs/.vitepress/theme/mermaid.ts +++ b/packages/mermaid/src/docs/.vitepress/theme/mermaid.ts @@ -1,6 +1,10 @@ import mermaid, { type MermaidConfig } from 'mermaid'; +import zenuml from '../../../../../mermaid-zenuml/dist/mermaid-zenuml.core.mjs'; + +const init = mermaid.registerExternalDiagrams([zenuml]); export const render = async (id: string, code: string, config: MermaidConfig): Promise => { + await init; mermaid.initialize(config); const { svg } = await mermaid.render(id, code); return svg; diff --git a/packages/mermaid/src/docs/syntax/img/zenuml-participant-annotators.png b/packages/mermaid/src/docs/syntax/img/zenuml-participant-annotators.png new file mode 100644 index 0000000000000000000000000000000000000000..13789371f62ef2b95ac2d83c3fbb554dc8bea1b5 GIT binary patch literal 261239 zcmaI71zZ$i+b;~Lbcys5qJXGKcf%qj4U$qW-5pD}N-QNQ(%m9mk}KWa-5t_=gNn~{ z-gDk>f4j`g&fam=|El4mysS7DIw?8=0s@w#gs36{!UJmH^A!~t_{K%xr6mFadX@gXYrK$uAL%@erKxf@p&8d8K=unviU9i3W;_k45#)?>`I`A7kd` z_V=}Z)dZCYMwlmYhj!`MFI;DmJRQ+5S!m%??aZH_b~f>$RynzGA-kE3h!j0^UGs`V z^3(QaWwkYQdZgsm(gjmr5$xsbF~6jT2i1zK#3infa`%!&C%~L723TfYLYG~bT6xyH z=3G`Xt5CX2nP}u|RrC8kGxyTZH`S-M;Fbt}?Zn?)Z9xg_wnJvLALq-WK|Z5zsr+;$ zqL9qx$uK);pr?alv)yjunG*xYFOq@boZyZ2X#7m-G@>`o^bfLIw4RBLR(yWZ-wO4n_d^&TnJS{X4NpG7k@7P$xp(A zg@r*A%q0UG6KR1-XSD9Ap(!%2I42$_tQnM^dO?YL_r@5-kax4NpRQw7b3xA$lW8as z{4X#B3hp7uA0Qa-=mz?~G6*ASb!&NFa-gP_k2Qh;@|O8g*hr}N3zAU0T2eRmaO*yHpi&FT0-5zS7a;?A z3~Vxp*M~Q7vpHlzV4h~r)Y+~UMF6iCzPj*c|M=9=jq;k?#EZ&WfxE-~36`4r@=M&WUJ?kd_QxLT*QI zH*6PZ=fp>PozRq=pSmP3_52xK1zk}Fsv?hKp(1_Gu_A$DRt9ngZFTr4guZ&`>8#IosfX@@^|WLjpbC^0ID8A-OBrZAvc{c(YC-XvHCY z5yl4J-+Z@mFmPaW2tTJfwmg20r4@o3@-BonL_A(prrI#y@S|biN@a9>bkc}M0dm2` z#C?lu$J!H$ZP{%}a;-$B#8*78co^*o?BlArtFfwaj(qVhWHL%njh!udtm&*~UTj?EY-VEIUdE^E zGWyAM*{G~Fw|OI>ETpWjx*ysl)=4{InAH7PE1E)xF;%Cmb*y^KvX~!oG2S!5FuhYb zopd60^6}*OgfV)9VVR*on`a?;{)a8s64R1|U9jWjxXn+=>5t3G>qjl>gK>*)V`tpp zr0^eHP0ow&H=fvYFSD$hu2%OP*Md5_2Mc}_Olr09x71Btl>`Qee-ZbES7v=)CG9=b zCT658O4Rn1CZJ7Fhm-v(-`8GsZx390w4}6i*fRPHr@CWS=bm>o{@JImNAAXQ0f})!E%T>Er=lv?4GT>y zZFT~?^%5ozln*#oLN4ddz~FlQdL~cnpsQ$K!Bo$stFgM__nR{Xvlv_tMlobC-e5Ek zmIM{v=$|N!%MDJxuW+!cnDNj>aYXTi|B%f}ENdNT)H!wDXT`krU5;C8mCTVH^-&ngG{a z&`)u|Sj#{Q7Mzg8JKZ67(DA4h{mIOA*bt7WIZSG(j+R@a%^n&DhCBb z`JRH1F9NE3u6Aa#ynEijiKUK{NbU&Qf#Mx4HKMvM4G(_L(h)!W8lLo7K-E?ISJP!{ z95bxsYs^dS(0aVucxd8H;1T7;%vv4yS=M2a*5dqPnw7s*)+|Ats+-PX;{g~h`lDqL z)=rs4iy`pbBlk-BX6lS)tMf3YtEjTbVD_k?%>CEdwKb0mRO1KUH$zQCe3rQ}HH4XA z1ffs_uTMvVZi5h z%%9`EhyVl>;0h1;I42|B{rUlQ^1XlOUx9lF!b)ICN#Ljiu{AKTv@^D{H;\EIVE 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

    Q8~+p_Hli4(}^UG>H*R1w^cXK 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�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 UU A Sequence diagram is an interaction diagram that shows how processes operate with one another and in what order. + +Mermaid can render sequence diagrams with ZenUML. Note that ZenUML uses a different +syntax than the original Sequence Diagram in mermaid. + +```mermaid-example +zenuml + title Demo + Alice->John: Hello John, how are you? + John->Alice: Great! + Alice->John: See you later! +``` + +## Syntax + +### Participants + +The participants can be defined implicitly as in the first example on this page. The participants or actors are +rendered in order of appearance in the diagram source text. Sometimes you might want to show the participants in a +different order than how they appear in the first message. It is possible to specify the actor's order of +appearance by doing the following: + +```mermaid-example +zenuml + title Declare participant (optional) + Bob + Alice + Alice->Bob: Hi Bob + Bob->Alice: Hi Alice +``` + +### Annotators + +If you specifically want to use symbols instead of just rectangles with text you can do so by using the annotator syntax to declare participants as per below. + +```mermaid-example +zenuml + title Annotators + @Actor Alice + @Database Bob + Alice->Bob: Hi Bob + Bob->Alice: Hi Alice +``` + +Here are the available annotators: +![img.png](img/zenuml-participant-annotators.png) + +### Aliases + +The participants can have a convenient identifier and a descriptive label. + +```mermaid-example +zenuml + title Aliases + A as Alice + J as John + A->J: Hello John, how are you? + J->A: Great! +``` + +## Messages + +Messages can be one of: + +1. Sync message +2. Async message +3. Creation message +4. Reply message + +### Sync message + +You can think of a sync (blocking) method in a programming language. + +```mermaid-example +zenuml + title Sync message + A.SyncMessage + A.SyncMessage(with, parameters) { + B.nestedSyncMessage() + } +``` + +### Async message + +You can think of an async (non-blocking) method in a programming language. +Fire an event and forget about it. + +```mermaid-example +zenuml + title Async message + Alice->Bob: How are you? +``` + +### Creation message + +We use `new` keyword to create an object. + +``` +new A1 +new A2(with, parameters) +``` + +### Reply message + +There are three ways to express a reply message: + +``` +// 1. assign a variable from a sync message. +a = A.SyncMessage() + +// 1.1. optionally give the variable a type +SomeType a = A.SyncMessage() + +// 2. use return keyword +A.SyncMessage() { + return result +} + +// 3. use @return or @reply annotator on an async message +@return +A->B: result +``` + +The third way `@return` is rarely used, but it is useful when you want to return to one level up. + +```mermaid-example +zenuml + title Reply message + Client->A.method() { + B.method() { + if(condition) { + return x1 + // return early + @return + A->Client: x11 + } + } + return x2 + } +``` + +## Nesting + +Sync messages and Creation messages are naturally nestable with `{}`. + +```mermaid-example +zenuml + A.method() { + B.nested_sync_method() + B->C: nested async message + } +``` + +## Comments + +It is possible to add comments to a sequence diagram with `// comment` syntax. +Comments will be rendered above the messages or fragments. Comments on other places +are ignored. Markdown is supported. + +See the example below: + +``` +// a comment on a participent will not be rendered +BookService +// a comment on a message. +// **Markdown** is supported. +BookService.getBook() +``` + +## Loops + +It is possible to express loops in a ZenUML diagram. This is done by any of the +following notations: + +1. while +2. for +3. forEach, foreach +4. loop + +``` +while(condition) { + ...statements... +} +``` + +See the example below: + +```mermaid-example +zenuml + Alice->John: Hello John, how are you? + while(true) { + John->Alice: Great! + } +``` + +## Alt + +It is possible to express alternative paths in a sequence diagram. This is done by the notation + +``` +if(condition1) { + ...statements... +} else if(condition2) { + ...statements... +} else { + ...statements... +} +``` + +See the example below: + +```mermaid-example +zenuml + Alice->Bob: Hello Bob, how are you? + if(is_sick) { + Bob->Alice: Not so good :( + } else { + Bob->Alice: Feeling fresh like a daisy + } +``` + +## Opt + +It is possible to render an `opt` fragment. This is done by the notation + +``` +opt { + ...statements... +} +``` + +See the example below: + +```mermaid-example +zenuml + Alice->Bob: Hello Bob, how are you? + Bob->Alice: Not so good :( + opt { + Bob->Alice: Thanks for asking + } +``` + +## Parallel + +It is possible to show actions that are happening in parallel. + +This is done by the notation + +``` +par { + statement1 + statement2 + statement3 +} +``` + +See the example below: + +```mermaid-example +zenuml + par { + Alice->Bob: Hello guys! + Alice->John: Hello guys! + } +``` + +## Try/Catch/Finally (Break) + +It is possible to indicate a stop of the sequence within the flow (usually used to model exceptions). + +This is done by the notation + +``` +try { + ...statements... +} catch { + ...statements... +} finally { + ...statements... +} +``` + +See the example below: + +```mermaid-example +zenuml + try { + Consumer->API: Book something + API->BookingService: Start booking process + } catch { + API->Consumer: show failure + } finally { + API->BookingService: rollback status + } +``` From c6fbabc70e800f9f89d99bc25dd2ba65c63f4923 Mon Sep 17 00:00:00 2001 From: Daniel Compton Date: Wed, 26 Apr 2023 09:39:17 +1200 Subject: [PATCH 043/255] Indent subgraph sections The two subgraph paragraphs below "Subgraphs" should be indented below it. --- packages/mermaid/src/docs/syntax/flowchart.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/docs/syntax/flowchart.md b/packages/mermaid/src/docs/syntax/flowchart.md index bdc4a2fa0..afbbf37d3 100644 --- a/packages/mermaid/src/docs/syntax/flowchart.md +++ b/packages/mermaid/src/docs/syntax/flowchart.md @@ -404,7 +404,7 @@ flowchart TB end ``` -## flowcharts +### flowcharts With the graphtype flowchart it is also possible to set edges to and from subgraphs as in the flowchart below. @@ -425,7 +425,7 @@ flowchart TB two --> c2 ``` -## Direction in subgraphs +### Direction in subgraphs With the graphtype flowcharts you can use the direction statement to set the direction which the subgraph will render like in this example. From 9b912c4a5949ba444cdd2390f6d5072c6e5d049b Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 26 Apr 2023 10:11:19 +0530 Subject: [PATCH 044/255] handleMarkdown JS -> TS --- ...{handle-markdown-text.spec.js => handle-markdown-text.spec.ts} | 0 .../{handle-markdown-text.js => handle-markdown-text.ts} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename packages/mermaid/src/rendering-util/{handle-markdown-text.spec.js => handle-markdown-text.spec.ts} (100%) rename packages/mermaid/src/rendering-util/{handle-markdown-text.js => handle-markdown-text.ts} (100%) diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.spec.js b/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts similarity index 100% rename from packages/mermaid/src/rendering-util/handle-markdown-text.spec.js rename to packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.js b/packages/mermaid/src/rendering-util/handle-markdown-text.ts similarity index 100% rename from packages/mermaid/src/rendering-util/handle-markdown-text.js rename to packages/mermaid/src/rendering-util/handle-markdown-text.ts From 4d3e5e42e1f663c616568fac6ff8fd6b986a65e5 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 26 Apr 2023 10:30:13 +0530 Subject: [PATCH 045/255] Use mdast-util-from-markdown instead of simple-markdown --- docs/config/setup/modules/mermaidAPI.md | 16 +- docs/syntax/flowchart.md | 52 +- packages/mermaid/src/docs/syntax/flowchart.md | 37 +- packages/mermaid/src/mermaidAPI.ts | 8 +- .../mermaid/src/rendering-util/createText.js | 14 - .../handle-markdown-text.spec.ts | 566 +++++++++++------- .../rendering-util/handle-markdown-text.ts | 81 +-- pnpm-lock.yaml | 147 +++-- 8 files changed, 533 insertions(+), 388 deletions(-) diff --git a/docs/config/setup/modules/mermaidAPI.md b/docs/config/setup/modules/mermaidAPI.md index 683850fd3..ef04c10c3 100644 --- a/docs/config/setup/modules/mermaidAPI.md +++ b/docs/config/setup/modules/mermaidAPI.md @@ -96,7 +96,7 @@ mermaid.initialize(config); #### Defined in -[mermaidAPI.ts:673](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L673) +[mermaidAPI.ts:667](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L667) ## Functions @@ -127,7 +127,7 @@ Return the last node appended #### Defined in -[mermaidAPI.ts:312](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L312) +[mermaidAPI.ts:306](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L306) --- @@ -153,7 +153,7 @@ the cleaned up svgCode #### Defined in -[mermaidAPI.ts:263](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L263) +[mermaidAPI.ts:257](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L257) --- @@ -179,7 +179,7 @@ the string with all the user styles #### Defined in -[mermaidAPI.ts:192](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L192) +[mermaidAPI.ts:186](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L186) --- @@ -202,7 +202,7 @@ the string with all the user styles #### Defined in -[mermaidAPI.ts:240](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L240) +[mermaidAPI.ts:234](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L234) --- @@ -229,7 +229,7 @@ with an enclosing block that has each of the cssClasses followed by !important; #### Defined in -[mermaidAPI.ts:176](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L176) +[mermaidAPI.ts:170](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L170) --- @@ -295,7 +295,7 @@ Put the svgCode into an iFrame. Return the iFrame code #### Defined in -[mermaidAPI.ts:291](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L291) +[mermaidAPI.ts:285](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L285) --- @@ -320,4 +320,4 @@ Remove any existing elements from the given document #### Defined in -[mermaidAPI.ts:362](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L362) +[mermaidAPI.ts:356](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L356) diff --git a/docs/syntax/flowchart.md b/docs/syntax/flowchart.md index d10b2c6c5..a923e7c7c 100644 --- a/docs/syntax/flowchart.md +++ b/docs/syntax/flowchart.md @@ -55,7 +55,45 @@ flowchart LR id1[This is the text in the box] ``` -## Graph +#### Unicode text + +Use `"` to enclose the unicode text. + +```mermaid-example +flowchart LR + id["This ❤ Unicode"] +``` + +```mermaid +flowchart LR + id["This ❤ Unicode"] +``` + +#### Markdown formatting + +Use double quotes and backticks "\` text \`" to enclose the markdown text. + +```mermaid-example +%%{init: {"flowchart": {"htmlLabels": false}} }%% +flowchart LR + markdown["`This **is** _Markdown_`"] + newLines["`Line1 + Line 2 + Line 3`"] + markdown --> newLines +``` + +```mermaid +%%{init: {"flowchart": {"htmlLabels": false}} }%% +flowchart LR + markdown["`This **is** _Markdown_`"] + newLines["`Line1 + Line 2 + Line 3`"] + markdown --> newLines +``` + +### Direction This statement declares the direction of the Flowchart. @@ -83,15 +121,13 @@ flowchart LR Start --> Stop ``` -## Flowchart Orientation - Possible FlowChart orientations are: -- TB - top to bottom -- TD - top-down/ same as top to bottom -- BT - bottom to top -- RL - right to left -- LR - left to right +- TB - Top to bottom +- TD - Top-down/ same as top to bottom +- BT - Bottom to top +- RL - Right to left +- LR - Left to right ## Node shapes diff --git a/packages/mermaid/src/docs/syntax/flowchart.md b/packages/mermaid/src/docs/syntax/flowchart.md index bdc4a2fa0..0e048a942 100644 --- a/packages/mermaid/src/docs/syntax/flowchart.md +++ b/packages/mermaid/src/docs/syntax/flowchart.md @@ -39,7 +39,30 @@ flowchart LR id1[This is the text in the box] ``` -## Graph +#### Unicode text + +Use `"` to enclose the unicode text. + +```mermaid-example +flowchart LR + id["This ❤ Unicode"] +``` + +#### Markdown formatting + +Use double quotes and backticks "\` text \`" to enclose the markdown text. + +```mermaid-example +%%{init: {"flowchart": {"htmlLabels": false}} }%% +flowchart LR + markdown["`This **is** _Markdown_`"] + newLines["`Line1 + Line 2 + Line 3`"] + markdown --> newLines +``` + +### Direction This statement declares the direction of the Flowchart. @@ -57,15 +80,13 @@ flowchart LR Start --> Stop ``` -## Flowchart Orientation - Possible FlowChart orientations are: -- TB - top to bottom -- TD - top-down/ same as top to bottom -- BT - bottom to top -- RL - right to left -- LR - left to right +- TB - Top to bottom +- TD - Top-down/ same as top to bottom +- BT - Bottom to top +- RL - Right to left +- LR - Left to right ## Node shapes diff --git a/packages/mermaid/src/mermaidAPI.ts b/packages/mermaid/src/mermaidAPI.ts index 5e9d0ead6..e96407638 100644 --- a/packages/mermaid/src/mermaidAPI.ts +++ b/packages/mermaid/src/mermaidAPI.ts @@ -154,13 +154,7 @@ export const encodeEntities = function (text: string): string { * @returns */ export const decodeEntities = function (text: string): string { - let txt = text; - - txt = txt.replace(/fl°°/g, '&#'); - txt = txt.replace(/fl°/g, '&'); - txt = txt.replace(/¶ß/g, ';'); - - return txt; + return text.replace(/fl°°/g, '&#').replace(/fl°/g, '&').replace(/¶ß/g, ';'); }; // append !important; to each cssClass followed by a final !important, all enclosed in { } diff --git a/packages/mermaid/src/rendering-util/createText.js b/packages/mermaid/src/rendering-util/createText.js index a5438b562..d9ba1b9cd 100644 --- a/packages/mermaid/src/rendering-util/createText.js +++ b/packages/mermaid/src/rendering-util/createText.js @@ -1,7 +1,4 @@ -import { select } from 'd3'; import { log } from '../logger.js'; -import { getConfig } from '../config.js'; -import { evaluate } from '../diagrams/common/common.js'; import { decodeEntities } from '../mermaidAPI.js'; import { markdownToHTML, markdownToLines } from '../rendering-util/handle-markdown-text.js'; /** @@ -207,17 +204,6 @@ export const createText = ( return vertexNode; } else { const structuredText = markdownToLines(text); - const special = ['"', "'", '.', ',', ':', ';', '!', '?', '(', ')', '[', ']', '{', '}']; - let lastWord; - structuredText.forEach((line) => { - line.forEach((word) => { - if (special.includes(word.content) && lastWord) { - lastWord.content += word.content; - word.content = ''; - } - lastWord = word; - }); - }); const svgLabel = createFormattedText(width, el, structuredText, addSvgBackground); return svgLabel; } diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts b/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts index 5e74a9956..877ea9b25 100644 --- a/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts +++ b/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts @@ -1,253 +1,391 @@ -// import { test } from 'vitest'; -import { markdownToLines, markdownToHTML } from './handle-markdown-text'; -import { test } from 'vitest'; +import { markdownToLines, markdownToHTML } from './handle-markdown-text.js'; +import { test, expect } from 'vitest'; -test('markdownToLines - Basic test', () => { - const input = `This is regular text +describe('markdownToLines', () => { + test('Basic test', () => { + const input = `This is regular text Here is a new line There is some words **with a bold** section Here is a line *with an italic* section`; - const expectedOutput = [ + const output = markdownToLines(input); + expect(output).toMatchInlineSnapshot(` [ - { content: 'This', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'regular', type: 'normal' }, - { content: 'text', type: 'normal' }, - ], - [ - { content: 'Here', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'a', type: 'normal' }, - { content: 'new', type: 'normal' }, - { content: 'line', type: 'normal' }, - ], - [ - { content: 'There', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'some', type: 'normal' }, - { content: 'words', type: 'normal' }, - { content: 'with', type: 'strong' }, - { content: 'a', type: 'strong' }, - { content: 'bold', type: 'strong' }, - { content: 'section', type: 'normal' }, - ], - [ - { content: 'Here', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'a', type: 'normal' }, - { content: 'line', type: 'normal' }, - { content: 'with', type: 'em' }, - { content: 'an', type: 'em' }, - { content: 'italic', type: 'em' }, - { content: 'section', type: 'normal' }, - ], - ]; + [ + { + "content": "This", + "type": "normal", + }, + { + "content": "is", + "type": "normal", + }, + { + "content": "regular", + "type": "normal", + }, + { + "content": "text", + "type": "normal", + }, + ], + [ + { + "content": "Here", + "type": "normal", + }, + { + "content": "is", + "type": "normal", + }, + { + "content": "a", + "type": "normal", + }, + { + "content": "new", + "type": "normal", + }, + { + "content": "line", + "type": "normal", + }, + ], + [ + { + "content": "There", + "type": "normal", + }, + { + "content": "is", + "type": "normal", + }, + { + "content": "some", + "type": "normal", + }, + { + "content": "words", + "type": "normal", + }, + { + "content": "with", + "type": "strong", + }, + { + "content": "a", + "type": "strong", + }, + { + "content": "bold", + "type": "strong", + }, + { + "content": "section", + "type": "normal", + }, + ], + [ + { + "content": "Here", + "type": "normal", + }, + { + "content": "is", + "type": "normal", + }, + { + "content": "a", + "type": "normal", + }, + { + "content": "line", + "type": "normal", + }, + { + "content": "with", + "type": "emphasis", + }, + { + "content": "an", + "type": "emphasis", + }, + { + "content": "italic", + "type": "emphasis", + }, + { + "content": "section", + "type": "normal", + }, + ], + ] + `); + }); - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); + test('Empty input', () => { + const input = ''; + const expectedOutput = [[]]; + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); + }); -test('markdownToLines - Empty input', () => { - const input = ''; - const expectedOutput = [[]]; - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToLines - No formatting', () => { - const input = `This is a simple test + test('No formatting', () => { + const input = `This is a simple test with no formatting`; - const expectedOutput = [ - [ - { content: 'This', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'a', type: 'normal' }, - { content: 'simple', type: 'normal' }, - { content: 'test', type: 'normal' }, - ], - [ - { content: 'with', type: 'normal' }, - { content: 'no', type: 'normal' }, - { content: 'formatting', type: 'normal' }, - ], - ]; + const expectedOutput = [ + [ + { content: 'This', type: 'normal' }, + { content: 'is', type: 'normal' }, + { content: 'a', type: 'normal' }, + { content: 'simple', type: 'normal' }, + { content: 'test', type: 'normal' }, + ], + [ + { content: 'with', type: 'normal' }, + { content: 'no', type: 'normal' }, + { content: 'formatting', type: 'normal' }, + ], + ]; - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); + }); -test('markdownToLines - Only bold formatting', () => { - const input = `This is a **bold** test`; + test('Only bold formatting', () => { + const input = `This is a **bold** test`; - const expectedOutput = [ - [ - { content: 'This', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'a', type: 'normal' }, - { content: 'bold', type: 'strong' }, - { content: 'test', type: 'normal' }, - ], - ]; + const expectedOutput = [ + [ + { content: 'This', type: 'normal' }, + { content: 'is', type: 'normal' }, + { content: 'a', type: 'normal' }, + { content: 'bold', type: 'strong' }, + { content: 'test', type: 'normal' }, + ], + ]; - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); + }); -test('markdownToLines - paragraph 1', () => { - const input = `**Start** with + test('paragraph 1', () => { + const input = `**Start** with a second line`; - const expectedOutput = [ - [ - { content: 'Start', type: 'strong' }, - { content: 'with', type: 'normal' }, - ], - [ - { content: 'a', type: 'normal' }, - { content: 'second', type: 'normal' }, - { content: 'line', type: 'normal' }, - ], - ]; + const expectedOutput = [ + [ + { content: 'Start', type: 'strong' }, + { content: 'with', type: 'normal' }, + ], + [ + { content: 'a', type: 'normal' }, + { content: 'second', type: 'normal' }, + { content: 'line', type: 'normal' }, + ], + ]; - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); + }); -test('markdownToLines - paragraph', () => { - const input = `**Start** with + test('paragraph', () => { + const input = `**Start** with a second line`; - const expectedOutput = [ + const expectedOutput = [ + [ + { content: 'Start', type: 'strong' }, + { content: 'with', type: 'normal' }, + ], + [ + { content: 'a', type: 'normal' }, + { content: 'second', type: 'normal' }, + { content: 'line', type: 'normal' }, + ], + ]; + + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); + }); + + test('Only italic formatting', () => { + const input = `This is an *italic* test`; + const output = markdownToLines(input); + expect(output).toMatchInlineSnapshot(` [ - { content: 'Start', type: 'strong' }, - { content: 'with', type: 'normal' }, - ], + [ + { + "content": "This", + "type": "normal", + }, + { + "content": "is", + "type": "normal", + }, + { + "content": "an", + "type": "normal", + }, + { + "content": "italic", + "type": "emphasis", + }, + { + "content": "test", + "type": "normal", + }, + ], + ] + `); + }); + + test('Mixed formatting', () => { + const input = `*Italic* and **bold** formatting`; + const output = markdownToLines(input); + expect(output).toMatchInlineSnapshot(` [ - { content: 'a', type: 'normal' }, - { content: 'second', type: 'normal' }, - { content: 'line', type: 'normal' }, - ], - ]; + [ + { + "content": "Italic", + "type": "emphasis", + }, + { + "content": "and", + "type": "normal", + }, + { + "content": "bold", + "type": "strong", + }, + { + "content": "formatting", + "type": "normal", + }, + ], + ] + `); + }); - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToLines - Only italic formatting', () => { - const input = `This is an *italic* test`; - - const expectedOutput = [ - [ - { content: 'This', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'an', type: 'normal' }, - { content: 'italic', type: 'em' }, - { content: 'test', type: 'normal' }, - ], - ]; - - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); - -it('markdownToLines - Mixed formatting', () => { - const input = `*Italic* and **bold** formatting`; - - const expectedOutput = [ - [ - { content: 'Italic', type: 'em' }, - { content: 'and', type: 'normal' }, - { content: 'bold', type: 'strong' }, - { content: 'formatting', type: 'normal' }, - ], - ]; - - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); - -it('markdownToLines - Mixed formatting', () => { - const input = `The dog in **the** hog... a *very long text* about it + test('Mixed formatting with newline', () => { + const input = `The dog in **the** hog... a *very long text* about it Word!`; - const expectedOutput = [ + const output = markdownToLines(input); + expect(output).toMatchInlineSnapshot(` [ - { content: 'The', type: 'normal' }, - { content: 'dog', type: 'normal' }, - { content: 'in', type: 'normal' }, - { content: 'the', type: 'strong' }, - { content: 'hog', type: 'normal' }, - { content: '.', type: 'normal' }, - { content: '.', type: 'normal' }, - { content: '.', type: 'normal' }, - { content: 'a', type: 'normal' }, - { content: 'very', type: 'em' }, - { content: 'long', type: 'em' }, - { content: 'text', type: 'em' }, - { content: 'about', type: 'normal' }, - { content: 'it', type: 'normal' }, - ], - [ - { content: 'Word', type: 'normal' }, - { content: '!', type: 'normal' }, - ], - ]; - - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); + [ + { + "content": "The", + "type": "normal", + }, + { + "content": "dog", + "type": "normal", + }, + { + "content": "in", + "type": "normal", + }, + { + "content": "the", + "type": "strong", + }, + { + "content": "hog...", + "type": "normal", + }, + { + "content": "a", + "type": "normal", + }, + { + "content": "very", + "type": "emphasis", + }, + { + "content": "long", + "type": "emphasis", + }, + { + "content": "text", + "type": "emphasis", + }, + { + "content": "about", + "type": "normal", + }, + { + "content": "it", + "type": "normal", + }, + ], + [ + { + "content": "Word!", + "type": "normal", + }, + ], + ] + `); + }); }); -test('markdownToHTML - Basic test', () => { - const input = `This is regular text +describe('markdownToHTML', () => { + test('Basic test', () => { + const input = `This is regular text Here is a new line There is some words **with a bold** section Here is a line *with an italic* section`; - const expectedOutput = `

    This is regular text
    Here is a new line
    There is some words with a bold section
    Here is a line with an italic section

    `; + const output = markdownToHTML(input); + expect(output).toMatchInlineSnapshot( + '"

    This is regular text
    Here is a new line
    There is some words with a bold section
    Here is a line with an italic section

    "' + ); + }); - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); -}); + test('Empty input', () => { + const input = ''; + const expectedOutput = ''; + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); + }); -test('markdownToHTML - Empty input', () => { - const input = ''; - const expectedOutput = ''; - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToHTML - No formatting', () => { - const input = `This is a simple test + test('No formatting', () => { + const input = `This is a simple test with no formatting`; - const expectedOutput = `

    This is a simple test
    with no formatting

    `; - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToHTML - Only bold formatting', () => { - const input = `This is a **bold** test`; - - const expectedOutput = `

    This is a bold test

    `; - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToHTML - Only italic formatting', () => { - const input = `This is an *italic* test`; - - const expectedOutput = `

    This is an italic test

    `; - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToHTML - Mixed formatting', () => { - const input = `*Italic* and **bold** formatting`; - - const expectedOutput = `

    Italic and bold formatting

    `; - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); + const expectedOutput = `

    This is a simple test
    with no formatting

    `; + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); + }); + + test('Only bold formatting', () => { + const input = `This is a **bold** test`; + + const expectedOutput = `

    This is a bold test

    `; + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); + }); + + test('Only italic formatting', () => { + const input = `This is an *italic* test`; + + const expectedOutput = `

    This is an italic test

    `; + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); + }); + + test('Mixed formatting', () => { + const input = `*Italic* and **bold** formatting`; + const expectedOutput = `

    Italic and bold formatting

    `; + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); + // const expectedOutput = 'this text has some special characters: `<p>hi</p>`'; + expect( + markdownToHTML('this text has some special characters: `

    hi

    `') + ).toMatchInlineSnapshot('"

    this text has some special characters:

    "'); + }); }); diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.ts b/packages/mermaid/src/rendering-util/handle-markdown-text.ts index 93704b2fe..3a7319922 100644 --- a/packages/mermaid/src/rendering-util/handle-markdown-text.ts +++ b/packages/mermaid/src/rendering-util/handle-markdown-text.ts @@ -1,61 +1,52 @@ -import SimpleMarkdown from '@khanacademy/simple-markdown'; +import { fromMarkdown } from 'mdast-util-from-markdown'; +import type { Content } from 'mdast'; +import { dedent } from 'ts-dedent'; -/** - * - * @param markdown - */ -function preprocessMarkdown(markdown) { +function preprocessMarkdown(markdown: string): string { // Replace multiple newlines with a single newline const withoutMultipleNewlines = markdown.replace(/\n{2,}/g, '\n'); // Remove extra spaces at the beginning of each line - const withoutExtraSpaces = withoutMultipleNewlines.replace(/^\s+/gm, ''); + const withoutExtraSpaces = dedent(withoutMultipleNewlines); return withoutExtraSpaces; } -/** - * - * @param markdown - */ -export function markdownToLines(markdown) { - const preprocessedMarkdown = preprocessMarkdown(markdown); - const mdParse = SimpleMarkdown.defaultBlockParse; - const syntaxTree = mdParse(preprocessedMarkdown); +interface Word { + content: string; + type: string; +} - let lines = [[]]; +type Line = Word[]; + +export function markdownToLines(markdown: string): Line[] { + const preprocessedMarkdown = preprocessMarkdown(markdown); + const { children } = fromMarkdown(preprocessedMarkdown); + const lines: Line[] = [[]]; let currentLine = 0; - /** - * - * @param node - * @param parentType - */ - function processNode(node, parentType) { + function processNode(node: Content, parentType?: string) { if (node.type === 'text') { - const textLines = node.content.split('\n'); - + const textLines = node.value.split('\n'); textLines.forEach((textLine, index) => { if (index !== 0) { currentLine++; lines.push([]); } - - // textLine.split(/ (?=[^!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]+)/).forEach((word) => { textLine.split(' ').forEach((word) => { if (word) { lines[currentLine].push({ content: word, type: parentType || 'normal' }); } }); }); - } else if (node.type === 'strong' || node.type === 'em') { - node.content.forEach((contentNode) => { + } else if (node.type === 'strong' || node.type === 'emphasis') { + node.children.forEach((contentNode) => { processNode(contentNode, node.type); }); } } - syntaxTree.forEach((treeNode) => { + children.forEach((treeNode) => { if (treeNode.type === 'paragraph') { - treeNode.content.forEach((contentNode) => { + treeNode.children.forEach((contentNode) => { processNode(contentNode); }); } @@ -64,31 +55,21 @@ export function markdownToLines(markdown) { return lines; } -/** - * - * @param markdown - */ -export function markdownToHTML(markdown) { - const mdParse = SimpleMarkdown.defaultBlockParse; - const syntaxTree = mdParse(markdown); +export function markdownToHTML(markdown: string): string { + const { children } = fromMarkdown(markdown); - /** - * - * @param node - */ - function output(node) { + function output(node: Content): string { if (node.type === 'text') { - return node.content.replace(/\n/g, '
    '); + return node.value.replace(/\n/g, '
    '); } else if (node.type === 'strong') { - return `${node.content.map(output).join('')}`; - } else if (node.type === 'em') { - return `${node.content.map(output).join('')}`; + return `${node.children.map(output).join('')}`; + } else if (node.type === 'emphasis') { + return `${node.children.map(output).join('')}`; } else if (node.type === 'paragraph') { - return `

    ${node.content.map(output).join('')}

    `; - } else { - return ''; + return `

    ${node.children.map(output).join('')}

    `; } + return ''; } - return syntaxTree.map(output).join(''); + return children.map(output).join(''); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 51762eb2d..12ea827e9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -214,6 +214,9 @@ importers: lodash-es: specifier: ^4.17.21 version: 4.17.21 + mdast-util-from-markdown: + specifier: ^1.3.0 + version: 1.3.0 non-layered-tidy-tree-layout: specifier: ^2.0.2 version: 2.0.2 @@ -331,7 +334,7 @@ importers: version: 1.0.0 vitepress: specifier: ^1.0.0-alpha.72 - version: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0) + version: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0) vitepress-plugin-search: specifier: ^1.0.4-alpha.20 version: 1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-alpha.72)(vue@3.2.47) @@ -733,6 +736,7 @@ packages: dependencies: '@applitools/eg-frpc': 1.0.2 '@applitools/eg-socks5-proxy-server': 0.5.4 + '@applitools/execution-grid-tunnel': 1.0.24 '@applitools/logger': 1.1.48 dotenv: 16.0.3 encoding: 0.1.13 @@ -1097,7 +1101,7 @@ packages: '@babel/traverse': 7.19.1 '@babel/types': 7.19.0 convert-source-map: 1.8.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.1 lodash: 4.17.21 @@ -1374,7 +1378,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.19.1 '@babel/types': 7.19.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2162,7 +2166,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 espree: 9.5.1 globals: 13.19.0 ignore: 5.2.0 @@ -2204,7 +2208,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -2935,7 +2939,6 @@ packages: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: '@types/ms': 0.7.31 - dev: true /@types/dompurify@3.0.2: resolution: {integrity: sha512-YBL4ziFebbbfQfH5mlC+QTJsvh0oJUrWbmxKMyEdL7emlHJqGR2Qb34TEFKj+VCayBvjKy3xczMFNhugThUsfQ==} @@ -3088,7 +3091,6 @@ packages: resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} dependencies: '@types/unist': 2.0.6 - dev: true /@types/mdurl@1.0.2: resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} @@ -3110,7 +3112,6 @@ packages: /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - dev: true /@types/node-fetch@2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} @@ -3225,7 +3226,6 @@ packages: /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} - dev: true /@types/uuid@9.0.1: resolution: {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==} @@ -3281,7 +3281,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.0 '@typescript-eslint/type-utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.39.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 @@ -3306,7 +3306,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.0 '@typescript-eslint/types': 5.59.0 '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.0.4) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.39.0 typescript: 5.0.4 transitivePeerDependencies: @@ -3333,7 +3333,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.0.4) '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.39.0 tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 @@ -3357,7 +3357,7 @@ packages: dependencies: '@typescript-eslint/types': 5.59.0 '@typescript-eslint/visitor-keys': 5.59.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.0 @@ -3402,7 +3402,7 @@ packages: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.2.2(@types/node@18.16.0) + vite: 4.2.2 vue: 3.2.47 dev: true @@ -3881,7 +3881,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -4171,7 +4171,7 @@ packages: resolution: {integrity: sha512-AOhBxyLVdpOad3TujtC9kL/9r3HnTkxwQ5ggOsYrvvZP1cCFvzHWJd5XxZDFuTn+IN8vkKSG5SEJrd27vCSbeA==} dependencies: archy: 1.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 fastq: 1.13.0 queue-microtask: 1.2.3 transitivePeerDependencies: @@ -4619,7 +4619,6 @@ packages: /character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dev: true /character-reference-invalid@1.1.4: resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} @@ -5182,7 +5181,7 @@ packages: engines: {node: '>=14'} dependencies: '@cspell/cspell-service-bus': 6.31.1 - node-fetch: 2.6.9(encoding@0.1.13) + node-fetch: 2.6.9 transitivePeerDependencies: - encoding dev: true @@ -5731,6 +5730,17 @@ packages: ms: 2.1.2 dev: true + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -5770,7 +5780,6 @@ packages: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: character-entities: 2.0.2 - dev: true /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} @@ -5850,7 +5859,6 @@ packages: /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - dev: true /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} @@ -5879,7 +5887,6 @@ packages: /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} - dev: true /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} @@ -6210,7 +6217,7 @@ packages: '@es-joy/jsdoccomment': 0.37.1 are-docs-informative: 0.0.2 comment-parser: 1.3.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 escape-string-regexp: 4.0.0 eslint: 8.39.0 esquery: 1.5.0 @@ -6328,7 +6335,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 @@ -6792,7 +6799,7 @@ packages: dependencies: chalk: 4.1.2 commander: 5.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -6849,7 +6856,7 @@ packages: debug: optional: true dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 dev: true /foreground-child@2.0.0: @@ -7050,7 +7057,7 @@ packages: dependencies: '@tootallnate/once': 1.1.2 data-uri-to-buffer: 3.0.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 file-uri-to-path: 2.0.0 fs-extra: 8.1.0 ftp: 0.3.10 @@ -7378,7 +7385,7 @@ packages: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -7389,7 +7396,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -7455,7 +7462,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -7828,7 +7835,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -8551,7 +8558,6 @@ packages: /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - dev: true /ky@0.30.0: resolution: {integrity: sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==} @@ -8633,7 +8639,7 @@ packages: chalk: 5.2.0 cli-truncate: 3.1.0 commander: 10.0.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 execa: 7.1.1 lilconfig: 2.1.0 listr2: 5.0.8 @@ -8941,8 +8947,8 @@ packages: - supports-color dev: true - /mdast-util-from-markdown@1.2.0: - resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==} + /mdast-util-from-markdown@1.3.0: + resolution: {integrity: sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==} dependencies: '@types/mdast': 3.0.11 '@types/unist': 2.0.6 @@ -8958,7 +8964,6 @@ packages: uvu: 0.5.6 transitivePeerDependencies: - supports-color - dev: true /mdast-util-frontmatter@1.0.0: resolution: {integrity: sha512-7itKvp0arEVNpCktOET/eLFAYaZ+0cNjVtFtIPxgQ5tV+3i+D4SDDTjTzPWl44LT59PC+xdx+glNTawBdF98Mw==} @@ -8995,7 +9000,7 @@ packages: dependencies: '@types/mdast': 3.0.11 markdown-table: 3.0.3 - mdast-util-from-markdown: 1.2.0 + mdast-util-from-markdown: 1.3.0 mdast-util-to-markdown: 1.3.0 transitivePeerDependencies: - supports-color @@ -9011,7 +9016,7 @@ packages: /mdast-util-gfm@2.0.1: resolution: {integrity: sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==} dependencies: - mdast-util-from-markdown: 1.2.0 + mdast-util-from-markdown: 1.3.0 mdast-util-gfm-autolink-literal: 1.0.2 mdast-util-gfm-footnote: 1.0.1 mdast-util-gfm-strikethrough: 1.0.2 @@ -9040,7 +9045,6 @@ packages: /mdast-util-to-string@3.1.0: resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} - dev: true /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} @@ -9134,7 +9138,6 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 - dev: true /micromark-extension-frontmatter@1.0.0: resolution: {integrity: sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==} @@ -9223,7 +9226,6 @@ packages: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - dev: true /micromark-factory-label@1.0.2: resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} @@ -9232,14 +9234,12 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 - dev: true /micromark-factory-space@1.0.0: resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} dependencies: micromark-util-character: 1.1.0 micromark-util-types: 1.0.2 - dev: true /micromark-factory-title@1.0.2: resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} @@ -9249,7 +9249,6 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 - dev: true /micromark-factory-whitespace@1.0.0: resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} @@ -9258,20 +9257,17 @@ packages: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - dev: true /micromark-util-character@1.1.0: resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} dependencies: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - dev: true /micromark-util-chunked@1.0.0: resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} dependencies: micromark-util-symbol: 1.0.1 - dev: true /micromark-util-classify-character@1.0.0: resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} @@ -9279,20 +9275,17 @@ packages: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - dev: true /micromark-util-combine-extensions@1.0.0: resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} dependencies: micromark-util-chunked: 1.0.0 micromark-util-types: 1.0.2 - dev: true /micromark-util-decode-numeric-character-reference@1.0.0: resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} dependencies: micromark-util-symbol: 1.0.1 - dev: true /micromark-util-decode-string@1.0.2: resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} @@ -9301,27 +9294,22 @@ packages: micromark-util-character: 1.1.0 micromark-util-decode-numeric-character-reference: 1.0.0 micromark-util-symbol: 1.0.1 - dev: true /micromark-util-encode@1.0.1: resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} - dev: true /micromark-util-html-tag-name@1.1.0: resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} - dev: true /micromark-util-normalize-identifier@1.0.0: resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} dependencies: micromark-util-symbol: 1.0.1 - dev: true /micromark-util-resolve-all@1.0.0: resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} dependencies: micromark-util-types: 1.0.2 - dev: true /micromark-util-sanitize-uri@1.0.0: resolution: {integrity: sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==} @@ -9329,7 +9317,6 @@ packages: micromark-util-character: 1.1.0 micromark-util-encode: 1.0.1 micromark-util-symbol: 1.0.1 - dev: true /micromark-util-subtokenize@1.0.2: resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} @@ -9338,20 +9325,17 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 - dev: true /micromark-util-symbol@1.0.1: resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} - dev: true /micromark-util-types@1.0.2: resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} - dev: true /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 parse-entities: 2.0.0 transitivePeerDependencies: - supports-color @@ -9361,7 +9345,7 @@ packages: resolution: {integrity: sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==} dependencies: '@types/debug': 4.1.7 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.0.6 micromark-factory-space: 1.0.0 @@ -9379,7 +9363,6 @@ packages: uvu: 0.5.6 transitivePeerDependencies: - supports-color - dev: true /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -9501,7 +9484,6 @@ packages: /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - dev: true /mrmime@1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} @@ -9514,7 +9496,6 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -9580,6 +9561,18 @@ packages: whatwg-url: 5.0.0 dev: true + /node-fetch@2.6.9: + resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + /node-fetch@2.6.9(encoding@0.1.13): resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} engines: {node: 4.x || >=6.0.0} @@ -9872,7 +9865,7 @@ packages: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 get-uri: 3.0.2 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 @@ -10168,7 +10161,7 @@ packages: dependencies: binary-searching: 2.0.5 comment-parser: 1.3.1 - mdast-util-from-markdown: 1.2.0 + mdast-util-from-markdown: 1.3.0 prettier: 2.8.8 transitivePeerDependencies: - supports-color @@ -10239,7 +10232,7 @@ packages: engines: {node: '>= 8'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 lru-cache: 5.1.1 @@ -10519,7 +10512,7 @@ packages: resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} dependencies: '@types/mdast': 3.0.11 - mdast-util-from-markdown: 1.2.0 + mdast-util-from-markdown: 1.3.0 unified: 10.1.2 transitivePeerDependencies: - supports-color @@ -10761,7 +10754,6 @@ packages: engines: {node: '>=6'} dependencies: mri: 1.2.0 - dev: true /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -11076,7 +11068,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 socks: 2.7.0 transitivePeerDependencies: - supports-color @@ -11252,7 +11244,7 @@ packages: arg: 5.0.2 bluebird: 3.7.2 check-more-types: 2.24.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 execa: 5.1.1 lazy-ass: 1.6.0 ps-tree: 1.2.0 @@ -11899,7 +11891,6 @@ packages: resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} dependencies: '@types/unist': 2.0.6 - dev: true /unist-util-visit-parents@5.1.1: resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} @@ -11999,7 +11990,6 @@ packages: diff: 5.1.0 kleur: 4.1.5 sade: 1.8.1 - dev: true /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -12057,7 +12047,7 @@ packages: hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 @@ -12072,7 +12062,7 @@ packages: - terser dev: true - /vite@4.2.2(@types/node@18.16.0): + /vite@4.2.2: resolution: {integrity: sha512-PcNtT5HeDxb3QaSqFYkEum8f5sCVe0R3WK20qxgIvNBZPXU/Obxs/+ubBMeE7nLWeCo2LDzv+8hRYSlcaSehig==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -12097,7 +12087,6 @@ packages: terser: optional: true dependencies: - '@types/node': 18.16.0 esbuild: 0.17.18 postcss: 8.4.21 resolve: 1.22.1 @@ -12152,11 +12141,11 @@ packages: flexsearch: 0.7.31 glob-to-regexp: 0.4.1 markdown-it: 13.0.1 - vitepress: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0) + vitepress: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0) vue: 3.2.47 dev: true - /vitepress@1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0): + /vitepress@1.0.0-alpha.72(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0): resolution: {integrity: sha512-Ou7fNE/OVYLrKGQMHSTVG6AcNsdv7tm4ACrdhx93SPMzEDj8UgIb4RFa5CTTowaYf3jeDGi2EAJlzXVC+IE3dg==} hasBin: true dependencies: @@ -12169,7 +12158,7 @@ packages: mark.js: 8.11.1 minisearch: 6.0.1 shiki: 0.14.1 - vite: 4.2.2(@types/node@18.16.0) + vite: 4.2.2 vue: 3.2.47 transitivePeerDependencies: - '@algolia/client-search' @@ -12230,7 +12219,7 @@ packages: cac: 6.7.14 chai: 4.3.7 concordance: 5.0.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 jsdom: 21.1.1 local-pkg: 0.4.3 magic-string: 0.30.0 From 1f2af83a0c13db67770eebe483a32ce97d1fd582 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 26 Apr 2023 10:35:24 +0530 Subject: [PATCH 046/255] Fix lockfile --- pnpm-lock.yaml | 72 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 52 insertions(+), 20 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 12ea827e9..94918dac1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -214,9 +214,6 @@ importers: lodash-es: specifier: ^4.17.21 version: 4.17.21 - mdast-util-from-markdown: - specifier: ^1.3.0 - version: 1.3.0 non-layered-tidy-tree-layout: specifier: ^2.0.2 version: 2.0.2 @@ -387,7 +384,7 @@ importers: devDependencies: webpack: specifier: ^5.74.0 - version: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + version: 5.75.0(webpack-cli@4.10.0) webpack-cli: specifier: ^4.10.0 version: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) @@ -2939,6 +2936,7 @@ packages: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: '@types/ms': 0.7.31 + dev: true /@types/dompurify@3.0.2: resolution: {integrity: sha512-YBL4ziFebbbfQfH5mlC+QTJsvh0oJUrWbmxKMyEdL7emlHJqGR2Qb34TEFKj+VCayBvjKy3xczMFNhugThUsfQ==} @@ -3091,6 +3089,7 @@ packages: resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} dependencies: '@types/unist': 2.0.6 + dev: true /@types/mdurl@1.0.2: resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} @@ -3112,6 +3111,7 @@ packages: /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + dev: true /@types/node-fetch@2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} @@ -3226,6 +3226,7 @@ packages: /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + dev: true /@types/uuid@9.0.1: resolution: {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==} @@ -3745,7 +3746,7 @@ packages: webpack: 4.x.x || 5.x.x webpack-cli: 4.x.x dependencies: - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(webpack-cli@4.10.0) webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) dev: true @@ -4189,7 +4190,7 @@ packages: /axios@0.27.2(debug@4.3.4): resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} dependencies: - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.2 form-data: 4.0.0 transitivePeerDependencies: - debug @@ -4619,6 +4620,7 @@ packages: /character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + dev: true /character-reference-invalid@1.1.4: resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} @@ -5740,6 +5742,7 @@ packages: optional: true dependencies: ms: 2.1.2 + dev: true /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -5780,6 +5783,7 @@ packages: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: character-entities: 2.0.2 + dev: true /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} @@ -5859,6 +5863,7 @@ packages: /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + dev: true /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} @@ -5887,6 +5892,7 @@ packages: /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} + dev: true /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} @@ -6847,7 +6853,7 @@ packages: resolution: {integrity: sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==} dev: true - /follow-redirects@1.15.2(debug@4.3.4): + /follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} peerDependencies: @@ -6855,8 +6861,6 @@ packages: peerDependenciesMeta: debug: optional: true - dependencies: - debug: 4.3.4 dev: true /foreground-child@2.0.0: @@ -7425,7 +7429,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.2 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -8558,6 +8562,7 @@ packages: /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + dev: true /ky@0.30.0: resolution: {integrity: sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==} @@ -8964,6 +8969,7 @@ packages: uvu: 0.5.6 transitivePeerDependencies: - supports-color + dev: true /mdast-util-frontmatter@1.0.0: resolution: {integrity: sha512-7itKvp0arEVNpCktOET/eLFAYaZ+0cNjVtFtIPxgQ5tV+3i+D4SDDTjTzPWl44LT59PC+xdx+glNTawBdF98Mw==} @@ -9045,6 +9051,7 @@ packages: /mdast-util-to-string@3.1.0: resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} + dev: true /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} @@ -9138,6 +9145,7 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 + dev: true /micromark-extension-frontmatter@1.0.0: resolution: {integrity: sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==} @@ -9226,6 +9234,7 @@ packages: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 + dev: true /micromark-factory-label@1.0.2: resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} @@ -9234,12 +9243,14 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 + dev: true /micromark-factory-space@1.0.0: resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} dependencies: micromark-util-character: 1.1.0 micromark-util-types: 1.0.2 + dev: true /micromark-factory-title@1.0.2: resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} @@ -9249,6 +9260,7 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 + dev: true /micromark-factory-whitespace@1.0.0: resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} @@ -9257,17 +9269,20 @@ packages: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 + dev: true /micromark-util-character@1.1.0: resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} dependencies: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 + dev: true /micromark-util-chunked@1.0.0: resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} dependencies: micromark-util-symbol: 1.0.1 + dev: true /micromark-util-classify-character@1.0.0: resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} @@ -9275,17 +9290,20 @@ packages: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 + dev: true /micromark-util-combine-extensions@1.0.0: resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} dependencies: micromark-util-chunked: 1.0.0 micromark-util-types: 1.0.2 + dev: true /micromark-util-decode-numeric-character-reference@1.0.0: resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} dependencies: micromark-util-symbol: 1.0.1 + dev: true /micromark-util-decode-string@1.0.2: resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} @@ -9294,22 +9312,27 @@ packages: micromark-util-character: 1.1.0 micromark-util-decode-numeric-character-reference: 1.0.0 micromark-util-symbol: 1.0.1 + dev: true /micromark-util-encode@1.0.1: resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} + dev: true /micromark-util-html-tag-name@1.1.0: resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} + dev: true /micromark-util-normalize-identifier@1.0.0: resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} dependencies: micromark-util-symbol: 1.0.1 + dev: true /micromark-util-resolve-all@1.0.0: resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} dependencies: micromark-util-types: 1.0.2 + dev: true /micromark-util-sanitize-uri@1.0.0: resolution: {integrity: sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==} @@ -9317,6 +9340,7 @@ packages: micromark-util-character: 1.1.0 micromark-util-encode: 1.0.1 micromark-util-symbol: 1.0.1 + dev: true /micromark-util-subtokenize@1.0.2: resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} @@ -9325,12 +9349,15 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 + dev: true /micromark-util-symbol@1.0.1: resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} + dev: true /micromark-util-types@1.0.2: resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} + dev: true /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} @@ -9363,6 +9390,7 @@ packages: uvu: 0.5.6 transitivePeerDependencies: - supports-color + dev: true /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -9484,6 +9512,7 @@ packages: /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} + dev: true /mrmime@1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} @@ -9496,6 +9525,7 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -10754,6 +10784,7 @@ packages: engines: {node: '>=6'} dependencies: mri: 1.2.0 + dev: true /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -11166,7 +11197,7 @@ packages: /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -11180,7 +11211,7 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -11462,7 +11493,7 @@ packages: iterm2-version: 4.2.0 dev: true - /terser-webpack-plugin@5.3.6(esbuild@0.17.18)(webpack@5.75.0): + /terser-webpack-plugin@5.3.6(webpack@5.75.0): resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -11479,12 +11510,11 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.15 - esbuild: 0.17.18 jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.0 terser: 5.15.1 - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(webpack-cli@4.10.0) dev: true /terser@5.15.1: @@ -11891,6 +11921,7 @@ packages: resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} dependencies: '@types/unist': 2.0.6 + dev: true /unist-util-visit-parents@5.1.1: resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} @@ -11990,6 +12021,7 @@ packages: diff: 5.1.0 kleur: 4.1.5 sade: 1.8.1 + dev: true /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -12434,7 +12466,7 @@ packages: import-local: 3.1.0 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(webpack-cli@4.10.0) webpack-dev-server: 4.11.1(webpack-cli@4.10.0)(webpack@5.75.0) webpack-merge: 5.8.0 dev: true @@ -12450,7 +12482,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.0.0 - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(webpack-cli@4.10.0) dev: true /webpack-dev-server@4.11.1(webpack-cli@4.10.0)(webpack@5.75.0): @@ -12491,7 +12523,7 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(webpack-cli@4.10.0) webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) webpack-dev-middleware: 5.3.3(webpack@5.75.0) ws: 8.9.0 @@ -12515,7 +12547,7 @@ packages: engines: {node: '>=10.13.0'} dev: true - /webpack@5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0): + /webpack@5.75.0(webpack-cli@4.10.0): resolution: {integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==} engines: {node: '>=10.13.0'} hasBin: true @@ -12546,7 +12578,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.1.1 tapable: 2.2.1 - terser-webpack-plugin: 5.3.6(esbuild@0.17.18)(webpack@5.75.0) + terser-webpack-plugin: 5.3.6(webpack@5.75.0) watchpack: 2.4.0 webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) webpack-sources: 3.2.3 From 395a79475838410edea4a5962a1294a9138c6ce6 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 26 Apr 2023 10:37:03 +0530 Subject: [PATCH 047/255] Fix deps --- packages/mermaid/package.json | 2 +- pnpm-lock.yaml | 134 +++------------------------------- 2 files changed, 13 insertions(+), 123 deletions(-) diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index 244ebe453..f65ae6521 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -53,7 +53,6 @@ }, "dependencies": { "@braintree/sanitize-url": "^6.0.2", - "@khanacademy/simple-markdown": "^0.9.0", "cytoscape": "^3.23.0", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.1.0", @@ -64,6 +63,7 @@ "elkjs": "^0.8.2", "khroma": "^2.0.0", "lodash-es": "^4.17.21", + "mdast-util-from-markdown": "^1.3.0", "non-layered-tidy-tree-layout": "^2.0.2", "stylis": "^4.1.3", "ts-dedent": "^2.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94918dac1..699aa621d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -181,9 +181,6 @@ importers: '@braintree/sanitize-url': specifier: ^6.0.2 version: 6.0.2 - '@khanacademy/simple-markdown': - specifier: ^0.9.0 - version: 0.9.2(react-dom@16.14.0)(react@16.14.0) cytoscape: specifier: ^3.23.0 version: 3.23.0 @@ -214,6 +211,9 @@ importers: lodash-es: specifier: ^4.17.21 version: 4.17.21 + mdast-util-from-markdown: + specifier: ^1.3.0 + version: 1.3.0 non-layered-tidy-tree-layout: specifier: ^2.0.2 version: 2.0.2 @@ -331,7 +331,7 @@ importers: version: 1.0.0 vitepress: specifier: ^1.0.0-alpha.72 - version: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0) + version: 1.0.0-alpha.72(@algolia/client-search@4.14.2) vitepress-plugin-search: specifier: ^1.0.4-alpha.20 version: 1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-alpha.72)(vue@3.2.47) @@ -1900,10 +1900,10 @@ packages: resolution: {integrity: sha512-6SCwI7P8ao+se1TUsdZ7B4XzL+gqeQZnBc+2EONZlcVa0dVrk0NjETxozFKgMv0eEGH8QzP1fkN+A1rH61l4eg==} dev: true - /@docsearch/js@3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0): + /@docsearch/js@3.3.3(@algolia/client-search@4.14.2): resolution: {integrity: sha512-2xAv2GFuHzzmG0SSZgf8wHX0qZX8n9Y1ZirKUk5Wrdc+vH9CL837x2hZIUdwcPZI9caBA+/CzxsS68O4waYjUQ==} dependencies: - '@docsearch/react': 3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0) + '@docsearch/react': 3.3.3(@algolia/client-search@4.14.2) preact: 10.11.0 transitivePeerDependencies: - '@algolia/client-search' @@ -1912,7 +1912,7 @@ packages: - react-dom dev: true - /@docsearch/react@3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0): + /@docsearch/react@3.3.3(@algolia/client-search@4.14.2): resolution: {integrity: sha512-pLa0cxnl+G0FuIDuYlW+EBK6Rw2jwLw9B1RHIeS4N4s2VhsfJ/wzeCi3CWcs5yVfxLd5ZK50t//TMA5e79YT7Q==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -1930,8 +1930,6 @@ packages: '@algolia/autocomplete-preset-algolia': 1.7.4(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) '@docsearch/css': 3.3.3 algoliasearch: 4.14.2 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) transitivePeerDependencies: - '@algolia/client-search' dev: true @@ -2493,17 +2491,6 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@khanacademy/simple-markdown@0.9.2(react-dom@16.14.0)(react@16.14.0): - resolution: {integrity: sha512-iRkSaVuUT+ho8B0aY0uLGgfS1YU84l/mSwjJTh0N0k0WzjdJUJY4+Eh56kn8whwD8QX6uNblAT0lT5ICATLtZg==} - peerDependencies: - react: 16.14.0 - react-dom: 16.14.0 - dependencies: - '@types/react': 18.0.33 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - dev: false - /@leichtgewicht/ip-codec@2.0.4: resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} dev: true @@ -2936,7 +2923,6 @@ packages: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: '@types/ms': 0.7.31 - dev: true /@types/dompurify@3.0.2: resolution: {integrity: sha512-YBL4ziFebbbfQfH5mlC+QTJsvh0oJUrWbmxKMyEdL7emlHJqGR2Qb34TEFKj+VCayBvjKy3xczMFNhugThUsfQ==} @@ -3089,7 +3075,6 @@ packages: resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} dependencies: '@types/unist': 2.0.6 - dev: true /@types/mdurl@1.0.2: resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} @@ -3111,7 +3096,6 @@ packages: /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - dev: true /@types/node-fetch@2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} @@ -3136,10 +3120,6 @@ packages: resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} dev: true - /@types/prop-types@15.7.5: - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - dev: false - /@types/qs@6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: true @@ -3148,14 +3128,6 @@ packages: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true - /@types/react@18.0.33: - resolution: {integrity: sha512-sHxzVxeanvQyQ1lr8NSHaj0kDzcNiGpILEVt69g9S31/7PfMvNCKLKcsHw4lYKjs3cGNJjXSP4mYzX43QlnjNA==} - dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.3 - csstype: 3.1.2 - dev: false - /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: @@ -3173,10 +3145,6 @@ packages: rollup: 2.79.1 dev: true - /@types/scheduler@0.16.3: - resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - dev: false - /@types/semver@7.3.12: resolution: {integrity: sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==} dev: true @@ -3226,7 +3194,6 @@ packages: /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} - dev: true /@types/uuid@9.0.1: resolution: {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==} @@ -4620,7 +4587,6 @@ packages: /character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dev: true /character-reference-invalid@1.1.4: resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} @@ -5295,10 +5261,6 @@ packages: resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} dev: true - /csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - dev: false - /cypress-image-snapshot@4.0.1(cypress@12.10.0)(jest@29.5.0): resolution: {integrity: sha512-PBpnhX/XItlx3/DAk5ozsXQHUi72exybBNH5Mpqj1DVmjq+S5Jd9WE5CRa4q5q0zuMZb2V2VpXHth6MjFpgj9Q==} engines: {node: '>=8'} @@ -5742,7 +5704,6 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: true /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -5783,7 +5744,6 @@ packages: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: character-entities: 2.0.2 - dev: true /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} @@ -5863,7 +5823,6 @@ packages: /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - dev: true /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} @@ -5892,7 +5851,6 @@ packages: /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} - dev: true /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} @@ -8365,6 +8323,7 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} @@ -8562,7 +8521,6 @@ packages: /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - dev: true /ky@0.30.0: resolution: {integrity: sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==} @@ -8817,12 +8775,6 @@ packages: resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==} dev: true - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - dependencies: - js-tokens: 4.0.0 - /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: @@ -8969,7 +8921,6 @@ packages: uvu: 0.5.6 transitivePeerDependencies: - supports-color - dev: true /mdast-util-frontmatter@1.0.0: resolution: {integrity: sha512-7itKvp0arEVNpCktOET/eLFAYaZ+0cNjVtFtIPxgQ5tV+3i+D4SDDTjTzPWl44LT59PC+xdx+glNTawBdF98Mw==} @@ -9051,7 +9002,6 @@ packages: /mdast-util-to-string@3.1.0: resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} - dev: true /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} @@ -9145,7 +9095,6 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 - dev: true /micromark-extension-frontmatter@1.0.0: resolution: {integrity: sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==} @@ -9234,7 +9183,6 @@ packages: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - dev: true /micromark-factory-label@1.0.2: resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} @@ -9243,14 +9191,12 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 - dev: true /micromark-factory-space@1.0.0: resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} dependencies: micromark-util-character: 1.1.0 micromark-util-types: 1.0.2 - dev: true /micromark-factory-title@1.0.2: resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} @@ -9260,7 +9206,6 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 - dev: true /micromark-factory-whitespace@1.0.0: resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} @@ -9269,20 +9214,17 @@ packages: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - dev: true /micromark-util-character@1.1.0: resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} dependencies: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - dev: true /micromark-util-chunked@1.0.0: resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} dependencies: micromark-util-symbol: 1.0.1 - dev: true /micromark-util-classify-character@1.0.0: resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} @@ -9290,20 +9232,17 @@ packages: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - dev: true /micromark-util-combine-extensions@1.0.0: resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} dependencies: micromark-util-chunked: 1.0.0 micromark-util-types: 1.0.2 - dev: true /micromark-util-decode-numeric-character-reference@1.0.0: resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} dependencies: micromark-util-symbol: 1.0.1 - dev: true /micromark-util-decode-string@1.0.2: resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} @@ -9312,27 +9251,22 @@ packages: micromark-util-character: 1.1.0 micromark-util-decode-numeric-character-reference: 1.0.0 micromark-util-symbol: 1.0.1 - dev: true /micromark-util-encode@1.0.1: resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} - dev: true /micromark-util-html-tag-name@1.1.0: resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} - dev: true /micromark-util-normalize-identifier@1.0.0: resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} dependencies: micromark-util-symbol: 1.0.1 - dev: true /micromark-util-resolve-all@1.0.0: resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} dependencies: micromark-util-types: 1.0.2 - dev: true /micromark-util-sanitize-uri@1.0.0: resolution: {integrity: sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==} @@ -9340,7 +9274,6 @@ packages: micromark-util-character: 1.1.0 micromark-util-encode: 1.0.1 micromark-util-symbol: 1.0.1 - dev: true /micromark-util-subtokenize@1.0.2: resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} @@ -9349,15 +9282,12 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 - dev: true /micromark-util-symbol@1.0.1: resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} - dev: true /micromark-util-types@1.0.2: resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} - dev: true /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} @@ -9390,7 +9320,6 @@ packages: uvu: 0.5.6 transitivePeerDependencies: - supports-color - dev: true /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -9512,7 +9441,6 @@ packages: /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - dev: true /mrmime@1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} @@ -9525,7 +9453,6 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -9702,6 +9629,7 @@ packages: /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + dev: true /object-inspect@1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} @@ -10242,13 +10170,6 @@ packages: sisteransi: 1.0.5 dev: true - /prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -10374,20 +10295,6 @@ packages: unpipe: 1.0.0 dev: true - /react-dom@16.14.0(react@16.14.0): - resolution: {integrity: sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==} - peerDependencies: - react: ^16.14.0 - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - prop-types: 15.8.1 - react: 16.14.0 - scheduler: 0.19.1 - - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true @@ -10396,14 +10303,6 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react@16.14.0: - resolution: {integrity: sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - prop-types: 15.8.1 - /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -10784,7 +10683,6 @@ packages: engines: {node: '>=6'} dependencies: mri: 1.2.0 - dev: true /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -10823,12 +10721,6 @@ packages: xmlchars: 2.2.0 dev: true - /scheduler@0.19.1: - resolution: {integrity: sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - /schema-utils@3.1.1: resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} engines: {node: '>= 10.13.0'} @@ -11921,7 +11813,6 @@ packages: resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} dependencies: '@types/unist': 2.0.6 - dev: true /unist-util-visit-parents@5.1.1: resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} @@ -12021,7 +11912,6 @@ packages: diff: 5.1.0 kleur: 4.1.5 sade: 1.8.1 - dev: true /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -12173,16 +12063,16 @@ packages: flexsearch: 0.7.31 glob-to-regexp: 0.4.1 markdown-it: 13.0.1 - vitepress: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0) + vitepress: 1.0.0-alpha.72(@algolia/client-search@4.14.2) vue: 3.2.47 dev: true - /vitepress@1.0.0-alpha.72(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0): + /vitepress@1.0.0-alpha.72(@algolia/client-search@4.14.2): resolution: {integrity: sha512-Ou7fNE/OVYLrKGQMHSTVG6AcNsdv7tm4ACrdhx93SPMzEDj8UgIb4RFa5CTTowaYf3jeDGi2EAJlzXVC+IE3dg==} hasBin: true dependencies: '@docsearch/css': 3.3.3 - '@docsearch/js': 3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0) + '@docsearch/js': 3.3.3(@algolia/client-search@4.14.2) '@vitejs/plugin-vue': 4.1.0(vite@4.2.2)(vue@3.2.47) '@vue/devtools-api': 6.5.0 '@vueuse/core': 10.0.2(vue@3.2.47) From 5bbce45c56d31012f3b140c10afbafad3187b9b2 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 26 Apr 2023 10:51:54 +0530 Subject: [PATCH 048/255] Reduce changes in test --- .../handle-markdown-text.spec.ts | 555 +++++++----------- 1 file changed, 204 insertions(+), 351 deletions(-) diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts b/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts index 877ea9b25..c8e08eed2 100644 --- a/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts +++ b/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts @@ -1,391 +1,244 @@ import { markdownToLines, markdownToHTML } from './handle-markdown-text.js'; import { test, expect } from 'vitest'; -describe('markdownToLines', () => { - test('Basic test', () => { - const input = `This is regular text +test('markdownToLines - Basic test', () => { + const input = `This is regular text Here is a new line There is some words **with a bold** section Here is a line *with an italic* section`; - const output = markdownToLines(input); - expect(output).toMatchInlineSnapshot(` + const expectedOutput = [ [ - [ - { - "content": "This", - "type": "normal", - }, - { - "content": "is", - "type": "normal", - }, - { - "content": "regular", - "type": "normal", - }, - { - "content": "text", - "type": "normal", - }, - ], - [ - { - "content": "Here", - "type": "normal", - }, - { - "content": "is", - "type": "normal", - }, - { - "content": "a", - "type": "normal", - }, - { - "content": "new", - "type": "normal", - }, - { - "content": "line", - "type": "normal", - }, - ], - [ - { - "content": "There", - "type": "normal", - }, - { - "content": "is", - "type": "normal", - }, - { - "content": "some", - "type": "normal", - }, - { - "content": "words", - "type": "normal", - }, - { - "content": "with", - "type": "strong", - }, - { - "content": "a", - "type": "strong", - }, - { - "content": "bold", - "type": "strong", - }, - { - "content": "section", - "type": "normal", - }, - ], - [ - { - "content": "Here", - "type": "normal", - }, - { - "content": "is", - "type": "normal", - }, - { - "content": "a", - "type": "normal", - }, - { - "content": "line", - "type": "normal", - }, - { - "content": "with", - "type": "emphasis", - }, - { - "content": "an", - "type": "emphasis", - }, - { - "content": "italic", - "type": "emphasis", - }, - { - "content": "section", - "type": "normal", - }, - ], - ] - `); - }); + { content: 'This', type: 'normal' }, + { content: 'is', type: 'normal' }, + { content: 'regular', type: 'normal' }, + { content: 'text', type: 'normal' }, + ], + [ + { content: 'Here', type: 'normal' }, + { content: 'is', type: 'normal' }, + { content: 'a', type: 'normal' }, + { content: 'new', type: 'normal' }, + { content: 'line', type: 'normal' }, + ], + [ + { content: 'There', type: 'normal' }, + { content: 'is', type: 'normal' }, + { content: 'some', type: 'normal' }, + { content: 'words', type: 'normal' }, + { content: 'with', type: 'strong' }, + { content: 'a', type: 'strong' }, + { content: 'bold', type: 'strong' }, + { content: 'section', type: 'normal' }, + ], + [ + { content: 'Here', type: 'normal' }, + { content: 'is', type: 'normal' }, + { content: 'a', type: 'normal' }, + { content: 'line', type: 'normal' }, + { content: 'with', type: 'emphasis' }, + { content: 'an', type: 'emphasis' }, + { content: 'italic', type: 'emphasis' }, + { content: 'section', type: 'normal' }, + ], + ]; - test('Empty input', () => { - const input = ''; - const expectedOutput = [[]]; - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); - }); + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); +}); - test('No formatting', () => { - const input = `This is a simple test +test('markdownToLines - Empty input', () => { + const input = ''; + const expectedOutput = [[]]; + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); +}); + +test('markdownToLines - No formatting', () => { + const input = `This is a simple test with no formatting`; - const expectedOutput = [ - [ - { content: 'This', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'a', type: 'normal' }, - { content: 'simple', type: 'normal' }, - { content: 'test', type: 'normal' }, - ], - [ - { content: 'with', type: 'normal' }, - { content: 'no', type: 'normal' }, - { content: 'formatting', type: 'normal' }, - ], - ]; + const expectedOutput = [ + [ + { content: 'This', type: 'normal' }, + { content: 'is', type: 'normal' }, + { content: 'a', type: 'normal' }, + { content: 'simple', type: 'normal' }, + { content: 'test', type: 'normal' }, + ], + [ + { content: 'with', type: 'normal' }, + { content: 'no', type: 'normal' }, + { content: 'formatting', type: 'normal' }, + ], + ]; - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); - }); + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); +}); - test('Only bold formatting', () => { - const input = `This is a **bold** test`; +test('markdownToLines - Only bold formatting', () => { + const input = `This is a **bold** test`; - const expectedOutput = [ - [ - { content: 'This', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'a', type: 'normal' }, - { content: 'bold', type: 'strong' }, - { content: 'test', type: 'normal' }, - ], - ]; + const expectedOutput = [ + [ + { content: 'This', type: 'normal' }, + { content: 'is', type: 'normal' }, + { content: 'a', type: 'normal' }, + { content: 'bold', type: 'strong' }, + { content: 'test', type: 'normal' }, + ], + ]; - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); - }); + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); +}); - test('paragraph 1', () => { - const input = `**Start** with +test('markdownToLines - paragraph 1', () => { + const input = `**Start** with a second line`; - const expectedOutput = [ - [ - { content: 'Start', type: 'strong' }, - { content: 'with', type: 'normal' }, - ], - [ - { content: 'a', type: 'normal' }, - { content: 'second', type: 'normal' }, - { content: 'line', type: 'normal' }, - ], - ]; + const expectedOutput = [ + [ + { content: 'Start', type: 'strong' }, + { content: 'with', type: 'normal' }, + ], + [ + { content: 'a', type: 'normal' }, + { content: 'second', type: 'normal' }, + { content: 'line', type: 'normal' }, + ], + ]; - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); - }); - - test('paragraph', () => { - const input = `**Start** with + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); +}); +test('markdownToLines - paragraph', () => { + const input = `**Start** with a second line`; - const expectedOutput = [ - [ - { content: 'Start', type: 'strong' }, - { content: 'with', type: 'normal' }, - ], - [ - { content: 'a', type: 'normal' }, - { content: 'second', type: 'normal' }, - { content: 'line', type: 'normal' }, - ], - ]; - - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); - }); - - test('Only italic formatting', () => { - const input = `This is an *italic* test`; - const output = markdownToLines(input); - expect(output).toMatchInlineSnapshot(` + const expectedOutput = [ [ - [ - { - "content": "This", - "type": "normal", - }, - { - "content": "is", - "type": "normal", - }, - { - "content": "an", - "type": "normal", - }, - { - "content": "italic", - "type": "emphasis", - }, - { - "content": "test", - "type": "normal", - }, - ], - ] - `); - }); - - test('Mixed formatting', () => { - const input = `*Italic* and **bold** formatting`; - const output = markdownToLines(input); - expect(output).toMatchInlineSnapshot(` + { content: 'Start', type: 'strong' }, + { content: 'with', type: 'normal' }, + ], [ - [ - { - "content": "Italic", - "type": "emphasis", - }, - { - "content": "and", - "type": "normal", - }, - { - "content": "bold", - "type": "strong", - }, - { - "content": "formatting", - "type": "normal", - }, - ], - ] - `); - }); + { content: 'a', type: 'normal' }, + { content: 'second', type: 'normal' }, + { content: 'line', type: 'normal' }, + ], + ]; - test('Mixed formatting with newline', () => { - const input = `The dog in **the** hog... a *very long text* about it + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); +}); + +test('markdownToLines - Only italic formatting', () => { + const input = `This is an *italic* test`; + + const expectedOutput = [ + [ + { content: 'This', type: 'normal' }, + { content: 'is', type: 'normal' }, + { content: 'an', type: 'normal' }, + { content: 'italic', type: 'emphasis' }, + { content: 'test', type: 'normal' }, + ], + ]; + + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); +}); + +it('markdownToLines - Mixed formatting', () => { + const input = `*Italic* and **bold** formatting`; + + const expectedOutput = [ + [ + { content: 'Italic', type: 'emphasis' }, + { content: 'and', type: 'normal' }, + { content: 'bold', type: 'strong' }, + { content: 'formatting', type: 'normal' }, + ], + ]; + + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); +}); + +it('markdownToLines - Mixed formatting', () => { + const input = `The dog in **the** hog... a *very long text* about it Word!`; - const output = markdownToLines(input); - expect(output).toMatchInlineSnapshot(` + const expectedOutput = [ [ - [ - { - "content": "The", - "type": "normal", - }, - { - "content": "dog", - "type": "normal", - }, - { - "content": "in", - "type": "normal", - }, - { - "content": "the", - "type": "strong", - }, - { - "content": "hog...", - "type": "normal", - }, - { - "content": "a", - "type": "normal", - }, - { - "content": "very", - "type": "emphasis", - }, - { - "content": "long", - "type": "emphasis", - }, - { - "content": "text", - "type": "emphasis", - }, - { - "content": "about", - "type": "normal", - }, - { - "content": "it", - "type": "normal", - }, - ], - [ - { - "content": "Word!", - "type": "normal", - }, - ], - ] - `); - }); + { content: 'The', type: 'normal' }, + { content: 'dog', type: 'normal' }, + { content: 'in', type: 'normal' }, + { content: 'the', type: 'strong' }, + { content: 'hog...', type: 'normal' }, + { content: 'a', type: 'normal' }, + { content: 'very', type: 'emphasis' }, + { content: 'long', type: 'emphasis' }, + { content: 'text', type: 'emphasis' }, + { content: 'about', type: 'normal' }, + { content: 'it', type: 'normal' }, + ], + [{ content: 'Word!', type: 'normal' }], + ]; + + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); }); -describe('markdownToHTML', () => { - test('Basic test', () => { - const input = `This is regular text +test('markdownToHTML - Basic test', () => { + const input = `This is regular text Here is a new line There is some words **with a bold** section Here is a line *with an italic* section`; - const output = markdownToHTML(input); - expect(output).toMatchInlineSnapshot( - '"

    This is regular text
    Here is a new line
    There is some words with a bold section
    Here is a line with an italic section

    "' - ); - }); + const expectedOutput = `

    This is regular text
    Here is a new line
    There is some words with a bold section
    Here is a line with an italic section

    `; - test('Empty input', () => { - const input = ''; - const expectedOutput = ''; - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); - }); + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); +}); - test('No formatting', () => { - const input = `This is a simple test +test('markdownToHTML - Empty input', () => { + const input = ''; + const expectedOutput = ''; + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); +}); + +test('markdownToHTML - No formatting', () => { + const input = `This is a simple test with no formatting`; - const expectedOutput = `

    This is a simple test
    with no formatting

    `; - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); - }); - - test('Only bold formatting', () => { - const input = `This is a **bold** test`; - - const expectedOutput = `

    This is a bold test

    `; - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); - }); - - test('Only italic formatting', () => { - const input = `This is an *italic* test`; - - const expectedOutput = `

    This is an italic test

    `; - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); - }); - - test('Mixed formatting', () => { - const input = `*Italic* and **bold** formatting`; - const expectedOutput = `

    Italic and bold formatting

    `; - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); - // const expectedOutput = 'this text has some special characters: `<p>hi</p>`'; - expect( - markdownToHTML('this text has some special characters: `

    hi

    `') - ).toMatchInlineSnapshot('"

    this text has some special characters:

    "'); - }); + const expectedOutput = `

    This is a simple test
    with no formatting

    `; + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); +}); + +test('markdownToHTML - Only bold formatting', () => { + const input = `This is a **bold** test`; + + const expectedOutput = `

    This is a bold test

    `; + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); +}); + +test('markdownToHTML - Only italic formatting', () => { + const input = `This is an *italic* test`; + + const expectedOutput = `

    This is an italic test

    `; + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); +}); + +test('markdownToHTML - Mixed formatting', () => { + const input = `*Italic* and **bold** formatting`; + const expectedOutput = `

    Italic and bold formatting

    `; + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); }); From eba3a7bdcc83bba73a116b92fbc5f92aad5250ec Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 26 Apr 2023 10:55:37 +0530 Subject: [PATCH 049/255] Add unsupported text --- .../src/rendering-util/handle-markdown-text.spec.ts | 9 +++++++++ .../mermaid/src/rendering-util/handle-markdown-text.ts | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts b/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts index c8e08eed2..8ae519cfa 100644 --- a/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts +++ b/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts @@ -242,3 +242,12 @@ test('markdownToHTML - Mixed formatting', () => { const output = markdownToHTML(input); expect(output).toEqual(expectedOutput); }); + +test('markdownToHTML - Unsupported formatting', () => { + expect( + markdownToHTML(`Hello + - l1 + - l2 + - l3`) + ).toMatchInlineSnapshot('"

    Hello

    Unsupported markdown: list"'); +}); diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.ts b/packages/mermaid/src/rendering-util/handle-markdown-text.ts index 3a7319922..a8b73aec7 100644 --- a/packages/mermaid/src/rendering-util/handle-markdown-text.ts +++ b/packages/mermaid/src/rendering-util/handle-markdown-text.ts @@ -68,7 +68,7 @@ export function markdownToHTML(markdown: string): string { } else if (node.type === 'paragraph') { return `

    ${node.children.map(output).join('')}

    `; } - return ''; + return `Unsupported markdown: ${node.type}`; } return children.map(output).join(''); From 91f1ef9c42b6c70355d6172df2f4af7037b80880 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 26 Apr 2023 11:00:35 +0530 Subject: [PATCH 050/255] Back to JS with jsdoc types --- ...rkdown-text.ts => handle-markdown-text.js} | 40 ++++++++++++------- 1 file changed, 25 insertions(+), 15 deletions(-) rename packages/mermaid/src/rendering-util/{handle-markdown-text.ts => handle-markdown-text.js} (74%) diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.ts b/packages/mermaid/src/rendering-util/handle-markdown-text.js similarity index 74% rename from packages/mermaid/src/rendering-util/handle-markdown-text.ts rename to packages/mermaid/src/rendering-util/handle-markdown-text.js index a8b73aec7..5102429d3 100644 --- a/packages/mermaid/src/rendering-util/handle-markdown-text.ts +++ b/packages/mermaid/src/rendering-util/handle-markdown-text.js @@ -1,8 +1,11 @@ import { fromMarkdown } from 'mdast-util-from-markdown'; -import type { Content } from 'mdast'; import { dedent } from 'ts-dedent'; -function preprocessMarkdown(markdown: string): string { +/** + * @param {string} markdown markdown to process + * @returns {string} processed markdown + */ +function preprocessMarkdown(markdown) { // Replace multiple newlines with a single newline const withoutMultipleNewlines = markdown.replace(/\n{2,}/g, '\n'); // Remove extra spaces at the beginning of each line @@ -10,20 +13,20 @@ function preprocessMarkdown(markdown: string): string { return withoutExtraSpaces; } -interface Word { - content: string; - type: string; -} - -type Line = Word[]; - -export function markdownToLines(markdown: string): Line[] { +/** + * @param {string} markdown markdown to split into lines + */ +export function markdownToLines(markdown) { const preprocessedMarkdown = preprocessMarkdown(markdown); const { children } = fromMarkdown(preprocessedMarkdown); - const lines: Line[] = [[]]; + const lines = [[]]; let currentLine = 0; - function processNode(node: Content, parentType?: string) { + /** + * @param {import('mdast').Content} node + * @param {string} [parentType] + */ + function processNode(node, parentType = 'normal') { if (node.type === 'text') { const textLines = node.value.split('\n'); textLines.forEach((textLine, index) => { @@ -33,7 +36,7 @@ export function markdownToLines(markdown: string): Line[] { } textLine.split(' ').forEach((word) => { if (word) { - lines[currentLine].push({ content: word, type: parentType || 'normal' }); + lines[currentLine].push({ content: word, type: parentType }); } }); }); @@ -55,10 +58,17 @@ export function markdownToLines(markdown: string): Line[] { return lines; } -export function markdownToHTML(markdown: string): string { +/** + * @param {string} markdown markdown to convert to HTML + * @returns {string} HTML + */ +export function markdownToHTML(markdown) { const { children } = fromMarkdown(markdown); - function output(node: Content): string { + /** + * @param {import('mdast').Content} node + */ + function output(node) { if (node.type === 'text') { return node.value.replace(/\n/g, '
    '); } else if (node.type === 'strong') { From a01343bf1bd1da90f0a424756306de3fd9edf5a0 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Thu, 27 Apr 2023 10:37:35 +0530 Subject: [PATCH 051/255] Fix lockfile --- pnpm-lock.yaml | 4483 ++++++++++++++++++++++++------------------------ 1 file changed, 2285 insertions(+), 2198 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 613446d2f..c86e69b55 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,294 +1,416 @@ -lockfileVersion: 5.4 +lockfileVersion: '6.0' importers: .: - specifiers: - '@applitools/eyes-cypress': ^3.32.0 - '@commitlint/cli': ^17.6.1 - '@commitlint/config-conventional': ^17.6.1 - '@cspell/eslint-plugin': ^6.31.1 - '@rollup/plugin-typescript': ^11.1.0 - '@types/cors': ^2.8.13 - '@types/eslint': ^8.37.0 - '@types/express': ^4.17.17 - '@types/js-yaml': ^4.0.5 - '@types/jsdom': ^21.1.1 - '@types/lodash': ^4.14.194 - '@types/mdast': ^3.0.11 - '@types/node': ^18.16.0 - '@types/prettier': ^2.7.2 - '@types/rollup-plugin-visualizer': ^4.2.1 - '@typescript-eslint/eslint-plugin': ^5.59.0 - '@typescript-eslint/parser': ^5.59.0 - '@vitest/coverage-c8': ^0.30.1 - '@vitest/spy': ^0.30.1 - '@vitest/ui': ^0.30.1 - concurrently: ^8.0.1 - cors: ^2.8.5 - coveralls: ^3.1.1 - cypress: ^12.10.0 - cypress-image-snapshot: ^4.0.1 - esbuild: ^0.17.18 - eslint: ^8.39.0 - eslint-config-prettier: ^8.8.0 - eslint-plugin-cypress: ^2.13.2 - eslint-plugin-html: ^7.1.0 - eslint-plugin-jest: ^27.2.1 - eslint-plugin-jsdoc: ^43.0.7 - eslint-plugin-json: ^3.1.0 - eslint-plugin-lodash: ^7.4.0 - eslint-plugin-markdown: ^3.0.0 - eslint-plugin-no-only-tests: ^3.1.0 - eslint-plugin-tsdoc: ^0.2.17 - eslint-plugin-unicorn: ^46.0.0 - express: ^4.18.2 - globby: ^13.1.4 - husky: ^8.0.3 - jest: ^29.5.0 - jison: ^0.4.18 - js-yaml: ^4.1.0 - jsdom: ^21.1.1 - lint-staged: ^13.2.1 - path-browserify: ^1.0.1 - pnpm: ^8.3.1 - prettier: ^2.8.8 - prettier-plugin-jsdoc: ^0.4.2 - rimraf: ^5.0.0 - rollup-plugin-visualizer: ^5.9.0 - start-server-and-test: ^2.0.0 - ts-node: ^10.9.1 - typescript: ^5.0.4 - vite: ^4.3.1 - vitest: ^0.30.1 devDependencies: - '@applitools/eyes-cypress': 3.32.1_typescript@5.0.4 - '@commitlint/cli': 17.6.1 - '@commitlint/config-conventional': 17.6.1 - '@cspell/eslint-plugin': 6.31.1 - '@rollup/plugin-typescript': 11.1.0_typescript@5.0.4 - '@types/cors': 2.8.13 - '@types/eslint': 8.37.0 - '@types/express': 4.17.17 - '@types/js-yaml': 4.0.5 - '@types/jsdom': 21.1.1 - '@types/lodash': 4.14.194 - '@types/mdast': 3.0.11 - '@types/node': 18.16.0 - '@types/prettier': 2.7.2 - '@types/rollup-plugin-visualizer': 4.2.1 - '@typescript-eslint/eslint-plugin': 5.59.1_2utyh6gct5glvuz6qwradubqqa - '@typescript-eslint/parser': 5.59.1_iacogk7kkaymxepzhgcbytyi7q - '@vitest/coverage-c8': 0.30.1_vitest@0.30.1 - '@vitest/spy': 0.30.1 - '@vitest/ui': 0.30.1 - concurrently: 8.0.1 - cors: 2.8.5 - coveralls: 3.1.1 - cypress: 12.10.0 - cypress-image-snapshot: 4.0.1_gcodpydjfwpsuqvmhecw3qmmoa - esbuild: 0.17.18 - eslint: 8.39.0 - eslint-config-prettier: 8.8.0_eslint@8.39.0 - eslint-plugin-cypress: 2.13.2_eslint@8.39.0 - eslint-plugin-html: 7.1.0 - eslint-plugin-jest: 27.2.1_fy2a3wzracqbngneh76u25tbne - eslint-plugin-jsdoc: 43.1.1_eslint@8.39.0 - eslint-plugin-json: 3.1.0 - eslint-plugin-lodash: 7.4.0_eslint@8.39.0 - eslint-plugin-markdown: 3.0.0_eslint@8.39.0 - eslint-plugin-no-only-tests: 3.1.0 - eslint-plugin-tsdoc: 0.2.17 - eslint-plugin-unicorn: 46.0.0_eslint@8.39.0 - express: 4.18.2 - globby: 13.1.4 - husky: 8.0.3 - jest: 29.5.0_nos7cth4dsekhy4fgueg2u3gjm - jison: 0.4.18 - js-yaml: 4.1.0 - jsdom: 21.1.1 - lint-staged: 13.2.1 - path-browserify: 1.0.1 - pnpm: 8.3.1 - prettier: 2.8.8 - prettier-plugin-jsdoc: 0.4.2_prettier@2.8.8 - rimraf: 5.0.0 - rollup-plugin-visualizer: 5.9.0 - start-server-and-test: 2.0.0 - ts-node: 10.9.1_gfpyv5b3h2oguybx3lu7z4el7a - typescript: 5.0.4 - vite: 4.3.2_@types+node@18.16.0 - vitest: 0.30.1_6kqxyppp63ueahn2lmwmvatjp4 + '@applitools/eyes-cypress': + specifier: ^3.32.0 + version: 3.32.1(typescript@5.0.4) + '@commitlint/cli': + specifier: ^17.6.1 + version: 17.6.1 + '@commitlint/config-conventional': + specifier: ^17.6.1 + version: 17.6.1 + '@cspell/eslint-plugin': + specifier: ^6.31.1 + version: 6.31.1 + '@rollup/plugin-typescript': + specifier: ^11.1.0 + version: 11.1.0(typescript@5.0.4) + '@types/cors': + specifier: ^2.8.13 + version: 2.8.13 + '@types/eslint': + specifier: ^8.37.0 + version: 8.37.0 + '@types/express': + specifier: ^4.17.17 + version: 4.17.17 + '@types/js-yaml': + specifier: ^4.0.5 + version: 4.0.5 + '@types/jsdom': + specifier: ^21.1.1 + version: 21.1.1 + '@types/lodash': + specifier: ^4.14.194 + version: 4.14.194 + '@types/mdast': + specifier: ^3.0.11 + version: 3.0.11 + '@types/node': + specifier: ^18.16.0 + version: 18.16.0 + '@types/prettier': + specifier: ^2.7.2 + version: 2.7.2 + '@types/rollup-plugin-visualizer': + specifier: ^4.2.1 + version: 4.2.1 + '@typescript-eslint/eslint-plugin': + specifier: ^5.59.0 + version: 5.59.1(@typescript-eslint/parser@5.59.1)(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/parser': + specifier: ^5.59.0 + version: 5.59.1(eslint@8.39.0)(typescript@5.0.4) + '@vitest/coverage-c8': + specifier: ^0.30.1 + version: 0.30.1(vitest@0.30.1) + '@vitest/spy': + specifier: ^0.30.1 + version: 0.30.1 + '@vitest/ui': + specifier: ^0.30.1 + version: 0.30.1 + concurrently: + specifier: ^8.0.1 + version: 8.0.1 + cors: + specifier: ^2.8.5 + version: 2.8.5 + coveralls: + specifier: ^3.1.1 + version: 3.1.1 + cypress: + specifier: ^12.10.0 + version: 12.10.0 + cypress-image-snapshot: + specifier: ^4.0.1 + version: 4.0.1(cypress@12.10.0)(jest@29.5.0) + esbuild: + specifier: ^0.17.18 + version: 0.17.18 + eslint: + specifier: ^8.39.0 + version: 8.39.0 + eslint-config-prettier: + specifier: ^8.8.0 + version: 8.8.0(eslint@8.39.0) + eslint-plugin-cypress: + specifier: ^2.13.2 + version: 2.13.2(eslint@8.39.0) + eslint-plugin-html: + specifier: ^7.1.0 + version: 7.1.0 + eslint-plugin-jest: + specifier: ^27.2.1 + version: 27.2.1(@typescript-eslint/eslint-plugin@5.59.1)(eslint@8.39.0)(jest@29.5.0)(typescript@5.0.4) + eslint-plugin-jsdoc: + specifier: ^43.0.7 + version: 43.1.1(eslint@8.39.0) + eslint-plugin-json: + specifier: ^3.1.0 + version: 3.1.0 + eslint-plugin-lodash: + specifier: ^7.4.0 + version: 7.4.0(eslint@8.39.0) + eslint-plugin-markdown: + specifier: ^3.0.0 + version: 3.0.0(eslint@8.39.0) + eslint-plugin-no-only-tests: + specifier: ^3.1.0 + version: 3.1.0 + eslint-plugin-tsdoc: + specifier: ^0.2.17 + version: 0.2.17 + eslint-plugin-unicorn: + specifier: ^46.0.0 + version: 46.0.0(eslint@8.39.0) + express: + specifier: ^4.18.2 + version: 4.18.2 + globby: + specifier: ^13.1.4 + version: 13.1.4 + husky: + specifier: ^8.0.3 + version: 8.0.3 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.16.0)(ts-node@10.9.1) + jison: + specifier: ^0.4.18 + version: 0.4.18 + js-yaml: + specifier: ^4.1.0 + version: 4.1.0 + jsdom: + specifier: ^21.1.1 + version: 21.1.1 + lint-staged: + specifier: ^13.2.1 + version: 13.2.1 + path-browserify: + specifier: ^1.0.1 + version: 1.0.1 + pnpm: + specifier: ^8.3.1 + version: 8.3.1 + prettier: + specifier: ^2.8.8 + version: 2.8.8 + prettier-plugin-jsdoc: + specifier: ^0.4.2 + version: 0.4.2(prettier@2.8.8) + rimraf: + specifier: ^5.0.0 + version: 5.0.0 + rollup-plugin-visualizer: + specifier: ^5.9.0 + version: 5.9.0 + start-server-and-test: + specifier: ^2.0.0 + version: 2.0.0 + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) + typescript: + specifier: ^5.0.4 + version: 5.0.4 + vite: + specifier: ^4.3.1 + version: 4.3.2(@types/node@18.16.0) + vitest: + specifier: ^0.30.1 + version: 0.30.1(@vitest/ui@0.30.1)(jsdom@21.1.1) packages/mermaid: - specifiers: - '@braintree/sanitize-url': ^6.0.2 - '@khanacademy/simple-markdown': ^0.9.0 - '@types/cytoscape': ^3.19.9 - '@types/d3': ^7.4.0 - '@types/dompurify': ^3.0.2 - '@types/jsdom': ^21.1.1 - '@types/lodash-es': ^4.17.7 - '@types/micromatch': ^4.0.2 - '@types/prettier': ^2.7.2 - '@types/stylis': ^4.0.2 - '@types/uuid': ^9.0.1 - '@typescript-eslint/eslint-plugin': ^5.59.0 - '@typescript-eslint/parser': ^5.59.0 - chokidar: ^3.5.3 - concurrently: ^8.0.1 - coveralls: ^3.1.1 - cpy-cli: ^4.2.0 - cspell: ^6.31.1 - csstree-validator: ^3.0.0 - cytoscape: ^3.23.0 - cytoscape-cose-bilkent: ^4.1.0 - cytoscape-fcose: ^2.1.0 - d3: ^7.4.0 - dagre-d3-es: 7.0.10 - dayjs: ^1.11.7 - dompurify: 3.0.2 - elkjs: ^0.8.2 - globby: ^13.1.4 - jison: ^0.4.18 - js-base64: ^3.7.5 - jsdom: ^21.1.1 - khroma: ^2.0.0 - lodash-es: ^4.17.21 - micromatch: ^4.0.5 - non-layered-tidy-tree-layout: ^2.0.2 - path-browserify: ^1.0.1 - prettier: ^2.8.8 - remark: ^14.0.2 - remark-frontmatter: ^4.0.1 - remark-gfm: ^3.0.1 - rimraf: ^5.0.0 - start-server-and-test: ^2.0.0 - stylis: ^4.1.3 - ts-dedent: ^2.2.0 - typedoc: ^0.24.5 - typedoc-plugin-markdown: ^3.15.2 - typescript: ^5.0.4 - unist-util-flatmap: ^1.0.0 - uuid: ^9.0.0 - vitepress: ^1.0.0-alpha.72 - vitepress-plugin-search: ^1.0.4-alpha.20 - web-worker: ^1.2.0 dependencies: - '@braintree/sanitize-url': 6.0.2 - '@khanacademy/simple-markdown': 0.9.2_wcqkhtmu7mswc6yz4uyexck3ty - cytoscape: 3.23.0 - cytoscape-cose-bilkent: 4.1.0_cytoscape@3.23.0 - cytoscape-fcose: 2.1.0_cytoscape@3.23.0 - d3: 7.8.2 - dagre-d3-es: 7.0.10 - dayjs: 1.11.7 - dompurify: 3.0.2 - elkjs: 0.8.2 - khroma: 2.0.0 - lodash-es: 4.17.21 - non-layered-tidy-tree-layout: 2.0.2 - stylis: 4.1.3 - ts-dedent: 2.2.0 - uuid: 9.0.0 - web-worker: 1.2.0 + '@braintree/sanitize-url': + specifier: ^6.0.2 + version: 6.0.2 + '@khanacademy/simple-markdown': + specifier: ^0.9.0 + version: 0.9.2(react-dom@16.14.0)(react@16.14.0) + cytoscape: + specifier: ^3.23.0 + version: 3.23.0 + cytoscape-cose-bilkent: + specifier: ^4.1.0 + version: 4.1.0(cytoscape@3.23.0) + cytoscape-fcose: + specifier: ^2.1.0 + version: 2.1.0(cytoscape@3.23.0) + d3: + specifier: ^7.4.0 + version: 7.8.2 + dagre-d3-es: + specifier: 7.0.10 + version: 7.0.10 + dayjs: + specifier: ^1.11.7 + version: 1.11.7 + dompurify: + specifier: 3.0.2 + version: 3.0.2 + elkjs: + specifier: ^0.8.2 + version: 0.8.2 + khroma: + specifier: ^2.0.0 + version: 2.0.0 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + non-layered-tidy-tree-layout: + specifier: ^2.0.2 + version: 2.0.2 + stylis: + specifier: ^4.1.3 + version: 4.1.3 + ts-dedent: + specifier: ^2.2.0 + version: 2.2.0 + uuid: + specifier: ^9.0.0 + version: 9.0.0 + web-worker: + specifier: ^1.2.0 + version: 1.2.0 devDependencies: - '@types/cytoscape': 3.19.9 - '@types/d3': 7.4.0 - '@types/dompurify': 3.0.2 - '@types/jsdom': 21.1.1 - '@types/lodash-es': 4.17.7 - '@types/micromatch': 4.0.2 - '@types/prettier': 2.7.2 - '@types/stylis': 4.0.2 - '@types/uuid': 9.0.1 - '@typescript-eslint/eslint-plugin': 5.59.1_2utyh6gct5glvuz6qwradubqqa - '@typescript-eslint/parser': 5.59.1_iacogk7kkaymxepzhgcbytyi7q - chokidar: 3.5.3 - concurrently: 8.0.1 - coveralls: 3.1.1 - cpy-cli: 4.2.0 - cspell: 6.31.1 - csstree-validator: 3.0.0 - globby: 13.1.4 - jison: 0.4.18 - js-base64: 3.7.5 - jsdom: 21.1.1 - micromatch: 4.0.5 - path-browserify: 1.0.1 - prettier: 2.8.8 - remark: 14.0.2 - remark-frontmatter: 4.0.1 - remark-gfm: 3.0.1 - rimraf: 5.0.0 - start-server-and-test: 2.0.0 - typedoc: 0.24.6_typescript@5.0.4 - typedoc-plugin-markdown: 3.15.2_typedoc@0.24.6 - typescript: 5.0.4 - unist-util-flatmap: 1.0.0 - vitepress: 1.0.0-alpha.72_hoyvfk3ab7nzsjkhptt6ai7rzq - vitepress-plugin-search: 1.0.4-alpha.20_q7rm74uk55forjnjpr6bhftijq + '@types/cytoscape': + specifier: ^3.19.9 + version: 3.19.9 + '@types/d3': + specifier: ^7.4.0 + version: 7.4.0 + '@types/dompurify': + specifier: ^3.0.2 + version: 3.0.2 + '@types/jsdom': + specifier: ^21.1.1 + version: 21.1.1 + '@types/lodash-es': + specifier: ^4.17.7 + version: 4.17.7 + '@types/micromatch': + specifier: ^4.0.2 + version: 4.0.2 + '@types/prettier': + specifier: ^2.7.2 + version: 2.7.2 + '@types/stylis': + specifier: ^4.0.2 + version: 4.0.2 + '@types/uuid': + specifier: ^9.0.1 + version: 9.0.1 + '@typescript-eslint/eslint-plugin': + specifier: ^5.59.0 + version: 5.59.1(@typescript-eslint/parser@5.59.1)(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/parser': + specifier: ^5.59.0 + version: 5.59.1(eslint@8.39.0)(typescript@5.0.4) + chokidar: + specifier: ^3.5.3 + version: 3.5.3 + concurrently: + specifier: ^8.0.1 + version: 8.0.1 + coveralls: + specifier: ^3.1.1 + version: 3.1.1 + cpy-cli: + specifier: ^4.2.0 + version: 4.2.0 + cspell: + specifier: ^6.31.1 + version: 6.31.1 + csstree-validator: + specifier: ^3.0.0 + version: 3.0.0 + globby: + specifier: ^13.1.4 + version: 13.1.4 + jison: + specifier: ^0.4.18 + version: 0.4.18 + js-base64: + specifier: ^3.7.5 + version: 3.7.5 + jsdom: + specifier: ^21.1.1 + version: 21.1.1 + micromatch: + specifier: ^4.0.5 + version: 4.0.5 + path-browserify: + specifier: ^1.0.1 + version: 1.0.1 + prettier: + specifier: ^2.8.8 + version: 2.8.8 + remark: + specifier: ^14.0.2 + version: 14.0.2 + remark-frontmatter: + specifier: ^4.0.1 + version: 4.0.1 + remark-gfm: + specifier: ^3.0.1 + version: 3.0.1 + rimraf: + specifier: ^5.0.0 + version: 5.0.0 + start-server-and-test: + specifier: ^2.0.0 + version: 2.0.0 + typedoc: + specifier: ^0.24.5 + version: 0.24.6(typescript@5.0.4) + typedoc-plugin-markdown: + specifier: ^3.15.2 + version: 3.15.2(typedoc@0.24.6) + typescript: + specifier: ^5.0.4 + version: 5.0.4 + unist-util-flatmap: + specifier: ^1.0.0 + version: 1.0.0 + vitepress: + specifier: ^1.0.0-alpha.72 + version: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0) + vitepress-plugin-search: + specifier: ^1.0.4-alpha.20 + version: 1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-alpha.72)(vue@3.2.47) packages/mermaid-example-diagram: - specifiers: - '@braintree/sanitize-url': ^6.0.0 - '@types/cytoscape': ^3.19.9 - concurrently: ^8.0.0 - cytoscape: ^3.23.0 - cytoscape-cose-bilkent: ^4.1.0 - cytoscape-fcose: ^2.1.0 - d3: ^7.0.0 - khroma: ^2.0.0 - mermaid: workspace:* - non-layered-tidy-tree-layout: ^2.0.2 - rimraf: ^5.0.0 dependencies: - '@braintree/sanitize-url': 6.0.0 - cytoscape: 3.23.0 - cytoscape-cose-bilkent: 4.1.0_cytoscape@3.23.0 - cytoscape-fcose: 2.1.0_cytoscape@3.23.0 - d3: 7.8.2 - khroma: 2.0.0 - non-layered-tidy-tree-layout: 2.0.2 + '@braintree/sanitize-url': + specifier: ^6.0.0 + version: 6.0.0 + cytoscape: + specifier: ^3.23.0 + version: 3.23.0 + cytoscape-cose-bilkent: + specifier: ^4.1.0 + version: 4.1.0(cytoscape@3.23.0) + cytoscape-fcose: + specifier: ^2.1.0 + version: 2.1.0(cytoscape@3.23.0) + d3: + specifier: ^7.0.0 + version: 7.8.2 + khroma: + specifier: ^2.0.0 + version: 2.0.0 + non-layered-tidy-tree-layout: + specifier: ^2.0.2 + version: 2.0.2 devDependencies: - '@types/cytoscape': 3.19.9 - concurrently: 8.0.1 - mermaid: link:../mermaid - rimraf: 5.0.0 + '@types/cytoscape': + specifier: ^3.19.9 + version: 3.19.9 + concurrently: + specifier: ^8.0.0 + version: 8.0.1 + mermaid: + specifier: workspace:* + version: link:../mermaid + rimraf: + specifier: ^5.0.0 + version: 5.0.0 packages/mermaid-zenuml: - specifiers: - '@zenuml/core': ^3.0.0 - mermaid: workspace:* dependencies: - '@zenuml/core': 3.0.0 + '@zenuml/core': + specifier: ^3.0.0 + version: 3.0.0(ts-node@10.9.1) devDependencies: - mermaid: link:../mermaid + mermaid: + specifier: workspace:* + version: link:../mermaid tests/webpack: - specifiers: - '@mermaid-js/mermaid-example-diagram': workspace:* - mermaid: workspace:* - webpack: ^5.74.0 - webpack-cli: ^4.10.0 - webpack-dev-server: ^4.11.1 dependencies: - '@mermaid-js/mermaid-example-diagram': link:../../packages/mermaid-example-diagram - mermaid: link:../../packages/mermaid + '@mermaid-js/mermaid-example-diagram': + specifier: workspace:* + version: link:../../packages/mermaid-example-diagram + mermaid: + specifier: workspace:* + version: link:../../packages/mermaid devDependencies: - webpack: 5.75.0_webpack-cli@4.10.0 - webpack-cli: 4.10.0_uaydpeuxkjjcxdbyfgk36cjdxi - webpack-dev-server: 4.11.1_pda42hcaj7d62cr262fr632kue + webpack: + specifier: ^5.74.0 + version: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack-cli: + specifier: ^4.10.0 + version: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) + webpack-dev-server: + specifier: ^4.11.1 + version: 4.11.1(webpack-cli@4.10.0)(webpack@5.75.0) packages: - /@algolia/autocomplete-core/1.7.4: + /@algolia/autocomplete-core@1.7.4: resolution: {integrity: sha512-daoLpQ3ps/VTMRZDEBfU8ixXd+amZcNJ4QSP3IERGyzqnL5Ch8uSRFt/4G8pUvW9c3o6GA4vtVv4I4lmnkdXyg==} dependencies: '@algolia/autocomplete-shared': 1.7.4 dev: true - /@algolia/autocomplete-preset-algolia/1.7.4_qs6lk5nhygj2o3hj4sf6xnr724: + /@algolia/autocomplete-preset-algolia@1.7.4(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): resolution: {integrity: sha512-s37hrvLEIfcmKY8VU9LsAXgm2yfmkdHT3DnA3SgHaY93yjZ2qL57wzb5QweVkYuEBZkT2PIREvRoLXC2sxTbpQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' @@ -299,27 +421,27 @@ packages: algoliasearch: 4.14.2 dev: true - /@algolia/autocomplete-shared/1.7.4: + /@algolia/autocomplete-shared@1.7.4: resolution: {integrity: sha512-2VGCk7I9tA9Ge73Km99+Qg87w0wzW4tgUruvWAn/gfey1ZXgmxZtyIRBebk35R1O8TbK77wujVtCnpsGpRy1kg==} dev: true - /@algolia/cache-browser-local-storage/4.14.2: + /@algolia/cache-browser-local-storage@4.14.2: resolution: {integrity: sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA==} dependencies: '@algolia/cache-common': 4.14.2 dev: true - /@algolia/cache-common/4.14.2: + /@algolia/cache-common@4.14.2: resolution: {integrity: sha512-SbvAlG9VqNanCErr44q6lEKD2qoK4XtFNx9Qn8FK26ePCI8I9yU7pYB+eM/cZdS9SzQCRJBbHUumVr4bsQ4uxg==} dev: true - /@algolia/cache-in-memory/4.14.2: + /@algolia/cache-in-memory@4.14.2: resolution: {integrity: sha512-HrOukWoop9XB/VFojPv1R5SVXowgI56T9pmezd/djh2JnVN/vXswhXV51RKy4nCpqxyHt/aGFSq2qkDvj6KiuQ==} dependencies: '@algolia/cache-common': 4.14.2 dev: true - /@algolia/client-account/4.14.2: + /@algolia/client-account@4.14.2: resolution: {integrity: sha512-WHtriQqGyibbb/Rx71YY43T0cXqyelEU0lB2QMBRXvD2X0iyeGl4qMxocgEIcbHyK7uqE7hKgjT8aBrHqhgc1w==} dependencies: '@algolia/client-common': 4.14.2 @@ -327,7 +449,7 @@ packages: '@algolia/transporter': 4.14.2 dev: true - /@algolia/client-analytics/4.14.2: + /@algolia/client-analytics@4.14.2: resolution: {integrity: sha512-yBvBv2mw+HX5a+aeR0dkvUbFZsiC4FKSnfqk9rrfX+QrlNOKEhCG0tJzjiOggRW4EcNqRmaTULIYvIzQVL2KYQ==} dependencies: '@algolia/client-common': 4.14.2 @@ -336,14 +458,14 @@ packages: '@algolia/transporter': 4.14.2 dev: true - /@algolia/client-common/4.14.2: + /@algolia/client-common@4.14.2: resolution: {integrity: sha512-43o4fslNLcktgtDMVaT5XwlzsDPzlqvqesRi4MjQz2x4/Sxm7zYg5LRYFol1BIhG6EwxKvSUq8HcC/KxJu3J0Q==} dependencies: '@algolia/requester-common': 4.14.2 '@algolia/transporter': 4.14.2 dev: true - /@algolia/client-personalization/4.14.2: + /@algolia/client-personalization@4.14.2: resolution: {integrity: sha512-ACCoLi0cL8CBZ1W/2juehSltrw2iqsQBnfiu/Rbl9W2yE6o2ZUb97+sqN/jBqYNQBS+o0ekTMKNkQjHHAcEXNw==} dependencies: '@algolia/client-common': 4.14.2 @@ -351,7 +473,7 @@ packages: '@algolia/transporter': 4.14.2 dev: true - /@algolia/client-search/4.14.2: + /@algolia/client-search@4.14.2: resolution: {integrity: sha512-L5zScdOmcZ6NGiVbLKTvP02UbxZ0njd5Vq9nJAmPFtjffUSOGEp11BmD2oMJ5QvARgx2XbX4KzTTNS5ECYIMWw==} dependencies: '@algolia/client-common': 4.14.2 @@ -359,33 +481,33 @@ packages: '@algolia/transporter': 4.14.2 dev: true - /@algolia/logger-common/4.14.2: + /@algolia/logger-common@4.14.2: resolution: {integrity: sha512-/JGlYvdV++IcMHBnVFsqEisTiOeEr6cUJtpjz8zc0A9c31JrtLm318Njc72p14Pnkw3A/5lHHh+QxpJ6WFTmsA==} dev: true - /@algolia/logger-console/4.14.2: + /@algolia/logger-console@4.14.2: resolution: {integrity: sha512-8S2PlpdshbkwlLCSAB5f8c91xyc84VM9Ar9EdfE9UmX+NrKNYnWR1maXXVDQQoto07G1Ol/tYFnFVhUZq0xV/g==} dependencies: '@algolia/logger-common': 4.14.2 dev: true - /@algolia/requester-browser-xhr/4.14.2: + /@algolia/requester-browser-xhr@4.14.2: resolution: {integrity: sha512-CEh//xYz/WfxHFh7pcMjQNWgpl4wFB85lUMRyVwaDPibNzQRVcV33YS+63fShFWc2+42YEipFGH2iPzlpszmDw==} dependencies: '@algolia/requester-common': 4.14.2 dev: true - /@algolia/requester-common/4.14.2: + /@algolia/requester-common@4.14.2: resolution: {integrity: sha512-73YQsBOKa5fvVV3My7iZHu1sUqmjjfs9TteFWwPwDmnad7T0VTCopttcsM3OjLxZFtBnX61Xxl2T2gmG2O4ehg==} dev: true - /@algolia/requester-node-http/4.14.2: + /@algolia/requester-node-http@4.14.2: resolution: {integrity: sha512-oDbb02kd1o5GTEld4pETlPZLY0e+gOSWjWMJHWTgDXbv9rm/o2cF7japO6Vj1ENnrqWvLBmW1OzV9g6FUFhFXg==} dependencies: '@algolia/requester-common': 4.14.2 dev: true - /@algolia/transporter/4.14.2: + /@algolia/transporter@4.14.2: resolution: {integrity: sha512-t89dfQb2T9MFQHidjHcfhh6iGMNwvuKUvojAj+JsrHAGbuSy7yE4BylhLX6R0Q1xYRoC4Vvv+O5qIw/LdnQfsQ==} dependencies: '@algolia/cache-common': 4.14.2 @@ -393,7 +515,7 @@ packages: '@algolia/requester-common': 4.14.2 dev: true - /@applitools/core-base/1.1.39: + /@applitools/core-base@1.1.39: resolution: {integrity: sha512-dFAmK5AeUEfhc6uHyZJ1sZNR2RB92EXn4zj2Vq4CVl1msnfb/rTLJl2UTSZtmP7W7khss2+y/vRsnJpyKErDPg==} engines: {node: '>=12.13.0'} dependencies: @@ -406,7 +528,7 @@ packages: - supports-color dev: true - /@applitools/core-base/1.1.49: + /@applitools/core-base@1.1.49: resolution: {integrity: sha512-6LqwN4jKA8aosmiTKXO9ZxCx9LMGhOWWW3o7qif1BPASx/z8ato8YkJetT6690Q71nkyUCsBt/5s/nJ1SCS9Nw==} engines: {node: '>=12.13.0'} dependencies: @@ -421,7 +543,7 @@ packages: - supports-color dev: true - /@applitools/core/2.3.14_typescript@5.0.4: + /@applitools/core@2.3.14(typescript@5.0.4): resolution: {integrity: sha512-ubCQTGcoKKmgrt7QmIsrniDH8MqWgF66T+bEDRurNjpnC0RzjiCmEipr1pkMJGeXiUbe4Kr4uWP1+rg3QA8FBA==} engines: {node: '>=12.13.0'} hasBin: true @@ -437,7 +559,7 @@ packages: '@applitools/screenshoter': 3.7.29 '@applitools/snippets': 2.4.15 '@applitools/socket': 1.0.8 - '@applitools/spec-driver-webdriver': 1.0.15_webdriver@7.30.0 + '@applitools/spec-driver-webdriver': 1.0.15(webdriver@7.30.0) '@applitools/ufg-client': 1.2.1 '@applitools/utils': 1.3.30 '@types/ws': 8.5.4 @@ -445,7 +567,7 @@ packages: chalk: 4.1.2 node-fetch: 2.6.7 throat: 6.0.1 - webdriver: 7.30.0_typescript@5.0.4 + webdriver: 7.30.0(typescript@5.0.4) ws: 8.12.0 yargs: 17.6.2 transitivePeerDependencies: @@ -456,7 +578,7 @@ packages: - utf-8-validate dev: true - /@applitools/core/2.5.3_typescript@5.0.4: + /@applitools/core@2.5.3(typescript@5.0.4): resolution: {integrity: sha512-hYSwpH+uvLcsVt97ZHYjiXclKOzxGRzoWmykWuigRFoJGoczEyf6UnCrIS5OtaWaUgpY2hL7Ltl2vvDsCwkzSQ==} engines: {node: '>=12.13.0'} hasBin: true @@ -465,21 +587,21 @@ packages: '@applitools/dom-capture': 11.2.1 '@applitools/dom-snapshot': 4.7.9 '@applitools/driver': 1.11.43 - '@applitools/ec-client': 1.2.23_typescript@5.0.4 + '@applitools/ec-client': 1.2.23(typescript@5.0.4) '@applitools/logger': 1.1.48 '@applitools/nml-client': 1.3.47 '@applitools/req': 1.1.35 '@applitools/screenshoter': 3.7.38 '@applitools/snippets': 2.4.19 '@applitools/socket': 1.0.10 - '@applitools/spec-driver-webdriver': 1.0.24_webdriver@7.30.0 + '@applitools/spec-driver-webdriver': 1.0.24(webdriver@7.30.0) '@applitools/ufg-client': 1.2.10 '@applitools/utils': 1.3.32 '@types/ws': 8.5.4 abort-controller: 3.0.0 chalk: 4.1.2 node-fetch: 2.6.7 - webdriver: 7.30.0_typescript@5.0.4 + webdriver: 7.30.0(typescript@5.0.4) ws: 8.12.0 yargs: 17.6.2 transitivePeerDependencies: @@ -490,7 +612,7 @@ packages: - utf-8-validate dev: true - /@applitools/dom-capture/11.2.1: + /@applitools/dom-capture@11.2.1: resolution: {integrity: sha512-c3x87rgC+8wdyOHDd+jFkrJIfx1mWmSiN7pfOOZNVM1X69cF7qmLIlTrZ09ssU/eOXppRKqhAX6JiNmpD5uXKw==} engines: {node: '>=8.9.0'} dependencies: @@ -498,22 +620,22 @@ packages: '@applitools/functional-commons': 1.6.0 dev: true - /@applitools/dom-shared/1.0.10: + /@applitools/dom-shared@1.0.10: resolution: {integrity: sha512-1k0CUQRm+38n6aTg/8IIppndYPDJLc/dU8Regbi/miP3xZmOG4Wwd5fBiu/MI5lgQm6RZU+at18lpCLFwU+Nng==} engines: {node: '>=8.9.0'} dev: true - /@applitools/dom-shared/1.0.5: + /@applitools/dom-shared@1.0.5: resolution: {integrity: sha512-O2zgnnqVi3/Atq7EQjURLa73XNaDFJCj8wHht6WQtxIv1EWYnPutNTmnJSKwK7FnbJAg65OVjZylcz4EezyYZA==} engines: {node: '>=8.9.0'} dev: true - /@applitools/dom-shared/1.0.9: + /@applitools/dom-shared@1.0.9: resolution: {integrity: sha512-u6nRHBklRAaODILm0HRluE0IAwrnjs8AMNRBFxHThKGt4qpbkhnwazGMr4zDu3WCBjr/sA31kekUqNl0Jx3YeQ==} engines: {node: '>=8.9.0'} dev: true - /@applitools/dom-snapshot/4.7.5: + /@applitools/dom-snapshot@4.7.5: resolution: {integrity: sha512-qay8LQ7/qWIVzaaTCKgvNsmHhanppt58H9NsrpG7GXdCiQypa0zz6M9F9+XxEVSjcxMLtFal+O8OQQmCmLzEzQ==} engines: {node: '>=8.9.0'} dependencies: @@ -523,7 +645,7 @@ packages: pako: 1.0.11 dev: true - /@applitools/dom-snapshot/4.7.9: + /@applitools/dom-snapshot@4.7.9: resolution: {integrity: sha512-lY1tkNwNQUBM7snYUwVZ80EisgIYdNZxIBtbsRU0R60wKTQc8ccBPGo9e3TBbS4Z9XqQYVAupKQjZMlcMVEiwQ==} engines: {node: '>=8.9.0'} dependencies: @@ -533,7 +655,7 @@ packages: pako: 1.0.11 dev: true - /@applitools/driver/1.11.35: + /@applitools/driver@1.11.35: resolution: {integrity: sha512-E2FqVtBR8OO9+5g0p0+rDWCBVnYA2o6WTgJp+2gcliTHnoRbFBuACIRrLikEfvEcIok/XQmo7g1GzBPFrDEy8Q==} engines: {node: '>=12.13.0'} dependencies: @@ -545,7 +667,7 @@ packages: - supports-color dev: true - /@applitools/driver/1.11.43: + /@applitools/driver@1.11.43: resolution: {integrity: sha512-a+tRvFog/uyJ8HXdH/eo3Ahfo1Zrw8i0FIL0l5Q/YgRH6l4xP3fV/a5/S2xFteiGshCoh5btEPhkBM+dEUSS/Q==} engines: {node: '>=12.13.0'} dependencies: @@ -557,7 +679,7 @@ packages: - supports-color dev: true - /@applitools/ec-client/1.2.14: + /@applitools/ec-client@1.2.14: resolution: {integrity: sha512-qnAS7k5Y6MXLzOOZQ5Shl6crHFJ6hYnujGKqt2tJrLnIL8xwXPPhJNscb6NtLP4BTNvTxatdK8Rz4XJ4Tz+iow==} engines: {node: '>=12.13.0'} hasBin: true @@ -574,7 +696,7 @@ packages: - supports-color dev: true - /@applitools/ec-client/1.2.23_typescript@5.0.4: + /@applitools/ec-client@1.2.23(typescript@5.0.4): resolution: {integrity: sha512-YYamRWlclnOitpzNrDtcwAat+AL59mTIOlmUaki+dtfEf482e+Kxytpq5AdiTbIPRBA143D+b2PLtai+WJr7yA==} engines: {node: '>=12.13.0'} hasBin: true @@ -585,10 +707,10 @@ packages: '@applitools/logger': 1.1.48 '@applitools/req': 1.1.35 '@applitools/socket': 1.0.10 - '@applitools/spec-driver-webdriver': 1.0.24_webdriver@7.30.0 + '@applitools/spec-driver-webdriver': 1.0.24(webdriver@7.30.0) '@applitools/utils': 1.3.32 abort-controller: 3.0.0 - webdriver: 7.30.0_typescript@5.0.4 + webdriver: 7.30.0(typescript@5.0.4) yargs: 17.6.2 transitivePeerDependencies: - encoding @@ -596,17 +718,17 @@ packages: - typescript dev: true - /@applitools/eg-frpc/1.0.2: + /@applitools/eg-frpc@1.0.2: resolution: {integrity: sha512-qNY+u1se+PCmiLTqGg7ed4tYf0ScjNOSIZmtqwi+cGeJFuny/oZ7ChctQLD6x8GL1YO3CDjZiJc9Zrcbnx7u0w==} engines: {node: '>=12.13.0'} dev: true - /@applitools/eg-frpc/1.0.3: + /@applitools/eg-frpc@1.0.3: resolution: {integrity: sha512-16CrVdq2onkN5j6wpHxd8dfapJehHJq7GnYEg86QGFZPhTgZI5WukKrp9ryM0EblUJUjdTwEPymc5B8cffuZZQ==} engines: {node: '>=12.13.0'} dev: true - /@applitools/eg-socks5-proxy-server/0.5.4: + /@applitools/eg-socks5-proxy-server@0.5.4: resolution: {integrity: sha512-LEucOmy1MXft6c07CkqKPS1Ov9Zg9WyHV2vI1SbbHR3AG4cEM2M3N0qcWlytxjzef9t22+1tOpEJhrBS65bSQw==} engines: {node: '>=12'} dependencies: @@ -614,13 +736,14 @@ packages: is-localhost-ip: 2.0.0 dev: true - /@applitools/execution-grid-tunnel/1.0.19: + /@applitools/execution-grid-tunnel@1.0.19: resolution: {integrity: sha512-kTRSNcld6fyW+vEXwsxkrgg7AfqXaA/upgUFdiIAEDoTUGqowoRfjAnkZcAgWPeEdtGEAu5KttlFp9z64EvRPQ==} engines: {node: '>=12.13.0'} hasBin: true dependencies: '@applitools/eg-frpc': 1.0.2 '@applitools/eg-socks5-proxy-server': 0.5.4 + '@applitools/execution-grid-tunnel': 1.0.24 '@applitools/logger': 1.1.48 dotenv: 16.0.3 encoding: 0.1.13 @@ -629,14 +752,14 @@ packages: find-process: 1.4.7 ini: 3.0.1 node-cleanup: 2.1.2 - node-fetch: 2.6.9_encoding@0.1.13 + node-fetch: 2.6.9(encoding@0.1.13) p-retry: 4.6.2 teen_process: 1.16.0 transitivePeerDependencies: - supports-color dev: true - /@applitools/execution-grid-tunnel/1.0.24: + /@applitools/execution-grid-tunnel@1.0.24: resolution: {integrity: sha512-PVOHhTSqC5JCZh76GJCuShLjApogl5IzE5xaDOF0ptX1gvlEqN1MuONw/TTcT4P9j4Xs/XLU+T4o265R4Z+dbA==} engines: {node: '>=12.13.0'} hasBin: true @@ -651,18 +774,18 @@ packages: find-process: 1.4.7 ini: 3.0.1 node-cleanup: 2.1.2 - node-fetch: 2.6.9_encoding@0.1.13 + node-fetch: 2.6.9(encoding@0.1.13) p-retry: 4.6.2 teen_process: 1.16.0 transitivePeerDependencies: - supports-color dev: true - /@applitools/eyes-api/1.13.12_typescript@5.0.4: + /@applitools/eyes-api@1.13.12(typescript@5.0.4): resolution: {integrity: sha512-83pr95/6brMHnYmqFuoDezMzB5h6HtBz3NXPwJ6GtPj+37ksDVO6jwJz9fh/wmBx9KELd8FUGvWpYEUlhkJzuA==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/core': 2.3.14_typescript@5.0.4 + '@applitools/core': 2.3.14(typescript@5.0.4) '@applitools/logger': 1.1.46 '@applitools/utils': 1.3.30 transitivePeerDependencies: @@ -673,13 +796,13 @@ packages: - utf-8-validate dev: true - /@applitools/eyes-cypress/3.32.1_typescript@5.0.4: + /@applitools/eyes-cypress@3.32.1(typescript@5.0.4): resolution: {integrity: sha512-JZBxQGlk0Jzdt2uhrmmSfOMPALWD5PV12u1ycT8dX0A+WfGVGYu9q+Kg1lyDdyqwzD7AWwcIu9lHsEVjcoQqbg==} engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@applitools/core': 2.5.3_typescript@5.0.4 - '@applitools/eyes-api': 1.13.12_typescript@5.0.4 + '@applitools/core': 2.5.3(typescript@5.0.4) + '@applitools/eyes-api': 1.13.12(typescript@5.0.4) '@applitools/functional-commons': 1.6.0 '@applitools/logger': 1.1.48 '@applitools/utils': 1.3.32 @@ -697,12 +820,12 @@ packages: - utf-8-validate dev: true - /@applitools/functional-commons/1.6.0: + /@applitools/functional-commons@1.6.0: resolution: {integrity: sha512-fwiF0CbeYHDEOTD/NKaFgaI8LvRcGYG2GaJJiRwcedKko16sQ8F3TK5wXfj2Ytjf+8gjwHwsEEX550z3yvDWxA==} engines: {node: '>=8.0.0'} dev: true - /@applitools/image/1.0.26: + /@applitools/image@1.0.26: resolution: {integrity: sha512-eJ05q44JhNaZHnaUKOvAFiY2tgtk8xTf0oZqSRq9kxrCPHjHpdWGJhJt4BwZ+TzGJdA85/cLWDj/ZEXPyDCv6w==} engines: {node: '>=12.13.0'} dependencies: @@ -712,7 +835,7 @@ packages: png-async: 0.9.4 dev: true - /@applitools/image/1.0.28: + /@applitools/image@1.0.28: resolution: {integrity: sha512-Pm5ZRnbTijafkHYmOhwACRN79YtbtiE9nDHhJSFPiuY7qdiFQ7vhG3XJmX00fMZBjuZHiZ9jRuvgUzASQ09a+Q==} engines: {node: '>=12.13.0'} dependencies: @@ -722,7 +845,7 @@ packages: png-async: 0.9.4 dev: true - /@applitools/jsdom/1.0.4: + /@applitools/jsdom@1.0.4: resolution: {integrity: sha512-JtjNfTJtphJYHEkicW4xlwtYuRP3TRvjoszfkrcpxTNMCbGkbop8ed9MuUfR83dAZj5NY9begbmEqJohLJco6w==} engines: {node: '>=12'} dependencies: @@ -759,7 +882,7 @@ packages: - utf-8-validate dev: true - /@applitools/logger/1.1.46: + /@applitools/logger@1.1.46: resolution: {integrity: sha512-TMKy8sZT8k99a7QGTPYN0Iwxvi0evIv0apAJe37hQ792xUHVKjpLJ1U9LtLQqXqVzz5QCRw0jSx+1ssYWvMEKg==} engines: {node: '>=12.13.0'} dependencies: @@ -770,7 +893,7 @@ packages: - supports-color dev: true - /@applitools/logger/1.1.48: + /@applitools/logger@1.1.48: resolution: {integrity: sha512-A/8Q9p2INPDOMGE8Hqodpw5UxXLGdW4z2w8gOzEJ3zi0MyLOY3lBZiaPKEP0nmOs29q4r/yr0srYY5j9FVAmCg==} engines: {node: '>=12.13.0'} dependencies: @@ -781,7 +904,7 @@ packages: - supports-color dev: true - /@applitools/nml-client/1.3.38: + /@applitools/nml-client@1.3.38: resolution: {integrity: sha512-okIo+R5wM+xDP0sNBPLOXbDsatnce40oiiK04UUb+8JlHQB+4MpeUweyjGrEtGRTkylBgA5o8xf5yAcSMAcD4g==} engines: {node: '>=12.13.0'} dependencies: @@ -793,7 +916,7 @@ packages: - supports-color dev: true - /@applitools/nml-client/1.3.47: + /@applitools/nml-client@1.3.47: resolution: {integrity: sha512-PCKU0iwRbvwQCkUOTDwaYl/PCeed2QzEaHKRU1JcQtFzS/icIC1ECQu13OdmBJitZiWs9E1WtRhLM9DCQ2vLxQ==} engines: {node: '>=12.13.0'} dependencies: @@ -805,7 +928,7 @@ packages: - supports-color dev: true - /@applitools/req/1.1.30: + /@applitools/req@1.1.30: resolution: {integrity: sha512-W5gOrtxQRXcBzEJxBj2pHuT6npaL5M83MS8hl4UwyNKWkoWinbMpSiHTtjo/R7M2M0Nirq4qhAv8Wu2yIv2gsw==} engines: {node: '>=12.13.0'} dependencies: @@ -819,7 +942,7 @@ packages: - supports-color dev: true - /@applitools/req/1.1.35: + /@applitools/req@1.1.35: resolution: {integrity: sha512-JKDFy3Y+EAORLzQ6oUa4lnAOvCCUbVol7ouJhId3kyQMye0rlQYCUVkwsrhc14BpvJjKyxABcIcQG8vp7xnaHg==} engines: {node: '>=12.13.0'} dependencies: @@ -833,7 +956,7 @@ packages: - supports-color dev: true - /@applitools/screenshoter/3.7.29: + /@applitools/screenshoter@3.7.29: resolution: {integrity: sha512-k+fMilqPCUj5VES6I3Nvbg9/tn1c7I4mTJC57SR/E3sFtVHl/oeGxAriiUpsgRwlsAbpJ09EJUJd+4Ikce290Q==} engines: {node: '>=12.13.0'} dependencies: @@ -847,7 +970,7 @@ packages: - supports-color dev: true - /@applitools/screenshoter/3.7.38: + /@applitools/screenshoter@3.7.38: resolution: {integrity: sha512-QkgCTg8qEEyU0eif/Vspg6MeFLTnSos5BXMQpw0EfhuotPWtIpNT5Ky0bOwXfnU07bM/7WtzYVy44c109iV0/Q==} engines: {node: '>=12.13.0'} dependencies: @@ -861,17 +984,17 @@ packages: - supports-color dev: true - /@applitools/snippets/2.4.15: + /@applitools/snippets@2.4.15: resolution: {integrity: sha512-Yjta4HTmdcvK4w9u7uBQxKUDduRM1nwUb8Q/AHol/+dneJF+NVK2zBOw5c8fZn4+YEURsNx8sUTaqeN/5TZmzQ==} engines: {node: '>=12.13.0'} dev: true - /@applitools/snippets/2.4.19: + /@applitools/snippets@2.4.19: resolution: {integrity: sha512-cXIB5fuVGYFQzZK3tylgIRLh5dTWoCS2v2ZDGpSgdWuz0NH5LArGQpqPr8svqv3nEHCKMBHCMbwEF/CoblIblA==} engines: {node: '>=12.13.0'} dev: true - /@applitools/socket/1.0.10: + /@applitools/socket@1.0.10: resolution: {integrity: sha512-uQLwoTJPpKwdKUN+kY9L7AtHxvwkxPzHOvzrD7Gf3TEWOIESXtvwbWiAH+se3lut0hejk/qxsRGB1p5ljkrawA==} engines: {node: '>=12.13.0'} dependencies: @@ -881,7 +1004,7 @@ packages: - supports-color dev: true - /@applitools/socket/1.0.8: + /@applitools/socket@1.0.8: resolution: {integrity: sha512-TsuPeIByNsP18wTqrSwbTya+A2n0zjOPvt82A3BQUid/37R5K3wQv3UnKFIvOsPwPTuKEjGlv0YS0xSj5j+foA==} engines: {node: '>=12.13.0'} dependencies: @@ -891,7 +1014,7 @@ packages: - supports-color dev: true - /@applitools/spec-driver-webdriver/1.0.15_webdriver@7.30.0: + /@applitools/spec-driver-webdriver@1.0.15(webdriver@7.30.0): resolution: {integrity: sha512-L6Oph0KE7qDNFip4kLW+XnuimdezjCkVeNNEjxgnu5E7C85ZI5h4KvzSnPbCp69lIbTTi8f6Df6Nq6c+KbPrPg==} engines: {node: '>=12.13.0'} peerDependencies: @@ -900,12 +1023,12 @@ packages: '@applitools/driver': 1.11.35 '@applitools/utils': 1.3.30 proxy-agent: 5.0.0 - webdriver: 7.30.0_typescript@5.0.4 + webdriver: 7.30.0(typescript@5.0.4) transitivePeerDependencies: - supports-color dev: true - /@applitools/spec-driver-webdriver/1.0.24_webdriver@7.30.0: + /@applitools/spec-driver-webdriver@1.0.24(webdriver@7.30.0): resolution: {integrity: sha512-Lta6H7BjyWyOLzvvmfW/fZ8stXxG2QUxmaNU3krU9xiKyx598Yhz1pn847xTiP5UaUb8bdF2q/cyb+n7gu4VVQ==} engines: {node: '>=12.13.0'} peerDependencies: @@ -914,12 +1037,12 @@ packages: '@applitools/driver': 1.11.43 '@applitools/utils': 1.3.32 proxy-agent: 5.0.0 - webdriver: 7.30.0_typescript@5.0.4 + webdriver: 7.30.0(typescript@5.0.4) transitivePeerDependencies: - supports-color dev: true - /@applitools/ufg-client/1.2.1: + /@applitools/ufg-client@1.2.1: resolution: {integrity: sha512-LpfxjNqOeee/XgvKzzqVN+ytDe4MsQU4C7lwTv2GUMQXfEHIdqEAoeqzDkywTdn7o1tOeDGEXg1JFORrlMSosA==} engines: {node: '>=12.13.0'} dependencies: @@ -937,7 +1060,7 @@ packages: - utf-8-validate dev: true - /@applitools/ufg-client/1.2.10: + /@applitools/ufg-client@1.2.10: resolution: {integrity: sha512-AeHMhmIThcL6M3B+AFquTOlTT8UkPhf/5zQBQH6wuJmdYKzkvPHISPK8yM+JK9zg1nJtiC0HRPoNKoVkb++LfA==} engines: {node: '>=12.13.0'} dependencies: @@ -955,24 +1078,24 @@ packages: - utf-8-validate dev: true - /@applitools/utils/1.3.30: + /@applitools/utils@1.3.30: resolution: {integrity: sha512-plOtxdUYLqMAYwevUTUFNYqSJIH0BQXeqlBFtKwdTdFGn6pK3cGBg5aYp40BxPodBKrQ6Ze325WnwhIVAI3pYg==} engines: {node: '>=12.13.0'} dev: true - /@applitools/utils/1.3.32: + /@applitools/utils@1.3.32: resolution: {integrity: sha512-GSMSf1NNW6fEm0u1ANGrQY+ESs8UgDYAZnaVrgjpFJ8ONL8eVDXn3tiIDdhmj/HKthAHqiYOYdRESmpuru/zrQ==} engines: {node: '>=12.13.0'} dev: true - /@babel/code-frame/7.18.6: + /@babel/code-frame@7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 dev: true - /@babel/core/7.12.3: + /@babel/core@7.12.3: resolution: {integrity: sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==} engines: {node: '>=6.9.0'} dependencies: @@ -985,7 +1108,7 @@ packages: '@babel/traverse': 7.19.1 '@babel/types': 7.19.0 convert-source-map: 1.8.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.1 lodash: 4.17.21 @@ -996,7 +1119,7 @@ packages: - supports-color dev: true - /@babel/generator/7.19.0: + /@babel/generator@7.19.0: resolution: {integrity: sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==} engines: {node: '>=6.9.0'} dependencies: @@ -1005,12 +1128,12 @@ packages: jsesc: 2.5.2 dev: true - /@babel/helper-environment-visitor/7.18.9: + /@babel/helper-environment-visitor@7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-function-name/7.19.0: + /@babel/helper-function-name@7.19.0: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} dependencies: @@ -1018,21 +1141,21 @@ packages: '@babel/types': 7.19.0 dev: true - /@babel/helper-hoist-variables/7.18.6: + /@babel/helper-hoist-variables@7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.0 dev: true - /@babel/helper-module-imports/7.18.6: + /@babel/helper-module-imports@7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.0 dev: true - /@babel/helper-module-transforms/7.19.0: + /@babel/helper-module-transforms@7.19.0: resolution: {integrity: sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==} engines: {node: '>=6.9.0'} dependencies: @@ -1048,34 +1171,34 @@ packages: - supports-color dev: true - /@babel/helper-plugin-utils/7.19.0: + /@babel/helper-plugin-utils@7.19.0: resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-simple-access/7.18.6: + /@babel/helper-simple-access@7.18.6: resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.0 dev: true - /@babel/helper-split-export-declaration/7.18.6: + /@babel/helper-split-export-declaration@7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.0 dev: true - /@babel/helper-string-parser/7.18.10: + /@babel/helper-string-parser@7.18.10: resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier/7.19.1: + /@babel/helper-validator-identifier@7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} - /@babel/helpers/7.19.0: + /@babel/helpers@7.19.0: resolution: {integrity: sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==} engines: {node: '>=6.9.0'} dependencies: @@ -1086,7 +1209,7 @@ packages: - supports-color dev: true - /@babel/highlight/7.18.6: + /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: @@ -1095,14 +1218,14 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/parser/7.19.1: + /@babel/parser@7.19.1: resolution: {integrity: sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==} engines: {node: '>=6.0.0'} hasBin: true dependencies: '@babel/types': 7.19.0 - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.12.3: + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.12.3): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1111,7 +1234,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.12.3: + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.12.3): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1120,7 +1243,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.12.3: + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.12.3): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1129,7 +1252,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.12.3: + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.12.3): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1138,7 +1261,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.12.3: + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.12.3): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1147,7 +1270,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.12.3: + /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1157,7 +1280,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.12.3: + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.12.3): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1166,7 +1289,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.12.3: + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.12.3): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1175,7 +1298,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.12.3: + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.12.3): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1184,7 +1307,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.3: + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.12.3): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1193,7 +1316,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.12.3: + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.12.3): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1202,7 +1325,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.12.3: + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.12.3): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1211,7 +1334,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.12.3: + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.12.3): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1221,7 +1344,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.12.3: + /@babel/plugin-syntax-typescript@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1231,14 +1354,14 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/runtime/7.21.0: + /@babel/runtime@7.21.0: resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 dev: true - /@babel/template/7.18.10: + /@babel/template@7.18.10: resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} engines: {node: '>=6.9.0'} dependencies: @@ -1247,7 +1370,7 @@ packages: '@babel/types': 7.19.0 dev: true - /@babel/traverse/7.19.1: + /@babel/traverse@7.19.1: resolution: {integrity: sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==} engines: {node: '>=6.9.0'} dependencies: @@ -1259,13 +1382,13 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.19.1 '@babel/types': 7.19.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.19.0: + /@babel/types@7.19.0: resolution: {integrity: sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==} engines: {node: '>=6.9.0'} dependencies: @@ -1273,26 +1396,26 @@ packages: '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - /@bcoe/v8-coverage/0.2.3: + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@braintree/sanitize-url/6.0.0: + /@braintree/sanitize-url@6.0.0: resolution: {integrity: sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w==} dev: false - /@braintree/sanitize-url/6.0.2: + /@braintree/sanitize-url@6.0.2: resolution: {integrity: sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==} dev: false - /@colors/colors/1.5.0: + /@colors/colors@1.5.0: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} requiresBuild: true dev: true optional: true - /@commitlint/cli/17.6.1: + /@commitlint/cli@17.6.1: resolution: {integrity: sha512-kCnDD9LE2ySiTnj/VPaxy4/oRayRcdv4aCuVxtoum8SxIU7OADHc0nJPQfheE8bHcs3zZdWzDMWltRosuT13bg==} engines: {node: '>=v14'} hasBin: true @@ -1312,14 +1435,14 @@ packages: - '@swc/wasm' dev: true - /@commitlint/config-conventional/17.6.1: + /@commitlint/config-conventional@17.6.1: resolution: {integrity: sha512-ng/ybaSLuTCH9F+7uavSOnEQ9EFMl7lHEjfAEgRh1hwmEe8SpLKpQeMo2aT1IWvHaGMuTb+gjfbzoRf2IR23NQ==} engines: {node: '>=v14'} dependencies: conventional-changelog-conventionalcommits: 5.0.0 dev: true - /@commitlint/config-validator/17.4.4: + /@commitlint/config-validator@17.4.4: resolution: {integrity: sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==} engines: {node: '>=v14'} dependencies: @@ -1327,7 +1450,7 @@ packages: ajv: 8.11.0 dev: true - /@commitlint/ensure/17.4.4: + /@commitlint/ensure@17.4.4: resolution: {integrity: sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g==} engines: {node: '>=v14'} dependencies: @@ -1339,12 +1462,12 @@ packages: lodash.upperfirst: 4.3.1 dev: true - /@commitlint/execute-rule/17.4.0: + /@commitlint/execute-rule@17.4.0: resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==} engines: {node: '>=v14'} dev: true - /@commitlint/format/17.4.4: + /@commitlint/format@17.4.4: resolution: {integrity: sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==} engines: {node: '>=v14'} dependencies: @@ -1352,7 +1475,7 @@ packages: chalk: 4.1.2 dev: true - /@commitlint/is-ignored/17.4.4: + /@commitlint/is-ignored@17.4.4: resolution: {integrity: sha512-Y3eo1SFJ2JQDik4rWkBC4tlRIxlXEFrRWxcyrzb1PUT2k3kZ/XGNuCDfk/u0bU2/yS0tOA/mTjFsV+C4qyACHw==} engines: {node: '>=v14'} dependencies: @@ -1360,7 +1483,7 @@ packages: semver: 7.3.8 dev: true - /@commitlint/lint/17.6.1: + /@commitlint/lint@17.6.1: resolution: {integrity: sha512-VARJ9kxH64isgwVnC+ABPafCYzqxpsWJIpDaTuI0gh8aX4GQ0i7cn9tvxtFNfJj4ER2BAJeWJ0vURdNYjK2RQQ==} engines: {node: '>=v14'} dependencies: @@ -1370,7 +1493,7 @@ packages: '@commitlint/types': 17.4.4 dev: true - /@commitlint/load/17.5.0: + /@commitlint/load@17.5.0: resolution: {integrity: sha512-l+4W8Sx4CD5rYFsrhHH8HP01/8jEP7kKf33Xlx2Uk2out/UKoKPYMOIRcDH5ppT8UXLMV+x6Wm5osdRKKgaD1Q==} engines: {node: '>=v14'} dependencies: @@ -1381,24 +1504,24 @@ packages: '@types/node': 18.16.0 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.1.0_xwyayzgqs4yw5z7irzbqmvmbvy + cosmiconfig-typescript-loader: 4.1.0(@types/node@18.16.0)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@5.0.4) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1_gfpyv5b3h2oguybx3lu7z4el7a + ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true - /@commitlint/message/17.4.2: + /@commitlint/message@17.4.2: resolution: {integrity: sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==} engines: {node: '>=v14'} dev: true - /@commitlint/parse/17.4.4: + /@commitlint/parse@17.4.4: resolution: {integrity: sha512-EKzz4f49d3/OU0Fplog7nwz/lAfXMaDxtriidyGF9PtR+SRbgv4FhsfF310tKxs6EPj8Y+aWWuX3beN5s+yqGg==} engines: {node: '>=v14'} dependencies: @@ -1407,7 +1530,7 @@ packages: conventional-commits-parser: 3.2.4 dev: true - /@commitlint/read/17.5.1: + /@commitlint/read@17.5.1: resolution: {integrity: sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==} engines: {node: '>=v14'} dependencies: @@ -1418,7 +1541,7 @@ packages: minimist: 1.2.8 dev: true - /@commitlint/resolve-extends/17.4.4: + /@commitlint/resolve-extends@17.4.4: resolution: {integrity: sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==} engines: {node: '>=v14'} dependencies: @@ -1430,7 +1553,7 @@ packages: resolve-global: 1.0.0 dev: true - /@commitlint/rules/17.6.1: + /@commitlint/rules@17.6.1: resolution: {integrity: sha512-lUdHw6lYQ1RywExXDdLOKxhpp6857/4c95Dc/1BikrHgdysVUXz26yV0vp1GL7Gv+avx9WqZWTIVB7pNouxlfw==} engines: {node: '>=v14'} dependencies: @@ -1441,26 +1564,26 @@ packages: execa: 5.1.1 dev: true - /@commitlint/to-lines/17.4.0: + /@commitlint/to-lines@17.4.0: resolution: {integrity: sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==} engines: {node: '>=v14'} dev: true - /@commitlint/top-level/17.4.0: + /@commitlint/top-level@17.4.0: resolution: {integrity: sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==} engines: {node: '>=v14'} dependencies: find-up: 5.0.0 dev: true - /@commitlint/types/17.4.4: + /@commitlint/types@17.4.4: resolution: {integrity: sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==} engines: {node: '>=v14'} dependencies: chalk: 4.1.2 dev: true - /@cspell/cspell-bundled-dicts/6.31.1: + /@cspell/cspell-bundled-dicts@6.31.1: resolution: {integrity: sha512-rsIev+dk1Vd8H1OKZhNhXycIVsMfeWJaeW3QUi1l4oIoGwQfJVbs1ZPZPHE5cglzyHOW1jQNStXf34UKaC6siA==} engines: {node: '>=14'} dependencies: @@ -1512,213 +1635,213 @@ packages: '@cspell/dict-vue': 3.0.0 dev: true - /@cspell/cspell-pipe/6.31.1: + /@cspell/cspell-pipe@6.31.1: resolution: {integrity: sha512-zk1olZi4dr6GLm5PAjvsiZ01HURNSruUYFl1qSicGnTwYN8GaN4RhAwannAytcJ7zJPIcyXlid0YsB58nJf3wQ==} engines: {node: '>=14'} dev: true - /@cspell/cspell-service-bus/6.31.1: + /@cspell/cspell-service-bus@6.31.1: resolution: {integrity: sha512-YyBicmJyZ1uwKVxujXw7sgs9x+Eps43OkWmCtDZmZlnq489HdTSuhF1kTbVi2yeFSeaXIS87+uHo12z97KkQpg==} engines: {node: '>=14'} dev: true - /@cspell/cspell-types/6.31.1: + /@cspell/cspell-types@6.31.1: resolution: {integrity: sha512-1KeTQFiHMssW1eRoF2NZIEg4gPVIfXLsL2+VSD/AV6YN7lBcuf6gRRgV5KWYarhxtEfjxhDdDTmu26l/iJEUtw==} engines: {node: '>=14'} dev: true - /@cspell/dict-ada/4.0.1: + /@cspell/dict-ada@4.0.1: resolution: {integrity: sha512-/E9o3nHrXOhYmQE43deKbxZcR3MIJAsa+66IzP9TXGHheKEx8b9dVMVVqydDDH8oom1H0U20NRPtu6KRVbT9xw==} dev: true - /@cspell/dict-aws/3.0.0: + /@cspell/dict-aws@3.0.0: resolution: {integrity: sha512-O1W6nd5y3Z00AMXQMzfiYrIJ1sTd9fB1oLr+xf/UD7b3xeHeMeYE2OtcWbt9uyeHim4tk+vkSTcmYEBKJgS5bQ==} dev: true - /@cspell/dict-bash/4.1.1: + /@cspell/dict-bash@4.1.1: resolution: {integrity: sha512-8czAa/Mh96wu2xr0RXQEGMTBUGkTvYn/Pb0o+gqOO1YW+poXGQc3gx0YPqILDryP/KCERrNvkWUJz3iGbvwC2A==} dev: true - /@cspell/dict-companies/3.0.9: + /@cspell/dict-companies@3.0.9: resolution: {integrity: sha512-wSkVIJjk33Sm3LhieNv9TsSvUSeP0R/h8xx06NqbMYF43w9J8hZiMHlbB3FzaSOHRpXT5eBIJBVTeFbceZdiqg==} dev: true - /@cspell/dict-cpp/5.0.2: + /@cspell/dict-cpp@5.0.2: resolution: {integrity: sha512-Q0ZjfhrHHfm0Y1/7LMCq3Fne/bhiBeBogUw4TV1wX/1tg3m+5BtaW/7GiOzRk+rFsblVj3RFam59VJKMT3vSoQ==} dev: true - /@cspell/dict-cryptocurrencies/3.0.1: + /@cspell/dict-cryptocurrencies@3.0.1: resolution: {integrity: sha512-Tdlr0Ahpp5yxtwM0ukC13V6+uYCI0p9fCRGMGZt36rWv8JQZHIuHfehNl7FB/Qc09NCF7p5ep0GXbL+sVTd/+w==} dev: true - /@cspell/dict-csharp/4.0.2: + /@cspell/dict-csharp@4.0.2: resolution: {integrity: sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==} dev: true - /@cspell/dict-css/4.0.5: + /@cspell/dict-css@4.0.5: resolution: {integrity: sha512-z5vw8nJSyKd6d3i5UmMNoVcAp0wxvs9OHWOmAeJKT9fO3tok02gK24VZhcJ0NJtiKdHQ2zRuzdfWl51wdAiY6A==} dev: true - /@cspell/dict-dart/2.0.2: + /@cspell/dict-dart@2.0.2: resolution: {integrity: sha512-jigcODm7Z4IFZ4vParwwP3IT0fIgRq/9VoxkXfrxBMsLBGGM2QltHBj7pl+joX+c4cOHxfyZktGJK1B1wFtR4Q==} dev: true - /@cspell/dict-django/4.0.2: + /@cspell/dict-django@4.0.2: resolution: {integrity: sha512-L0Yw6+Yh2bE9/FAMG4gy9m752G4V8HEBjEAGeRIQ9qvxDLR9yD6dPOtgEFTjv7SWlKSrLb9wA/W3Q2GKCOusSg==} dev: true - /@cspell/dict-docker/1.1.6: + /@cspell/dict-docker@1.1.6: resolution: {integrity: sha512-zCCiRTZ6EOQpBnSOm0/3rnKW1kCcAUDUA7SxJG3SuH6iZvKi3I8FEg8+O83WQUeXg0SyPNerD9F40JLnnJjJig==} dev: true - /@cspell/dict-dotnet/5.0.0: + /@cspell/dict-dotnet@5.0.0: resolution: {integrity: sha512-EOwGd533v47aP5QYV8GlSSKkmM9Eq8P3G/eBzSpH3Nl2+IneDOYOBLEUraHuiCtnOkNsz0xtZHArYhAB2bHWAw==} dev: true - /@cspell/dict-elixir/4.0.3: + /@cspell/dict-elixir@4.0.3: resolution: {integrity: sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==} dev: true - /@cspell/dict-en-common-misspellings/1.0.2: + /@cspell/dict-en-common-misspellings@1.0.2: resolution: {integrity: sha512-jg7ZQZpZH7+aAxNBlcAG4tGhYF6Ksy+QS5Df73Oo+XyckBjC9QS+PrRwLTeYoFIgXy5j3ICParK5r3MSSoL4gw==} dev: true - /@cspell/dict-en-gb/1.1.33: + /@cspell/dict-en-gb@1.1.33: resolution: {integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==} dev: true - /@cspell/dict-en_us/4.3.2: + /@cspell/dict-en_us@4.3.2: resolution: {integrity: sha512-o8xtHDLPNzW6hK5b1TaDTWt25vVi9lWlL6/dZ9YoS+ZMj+Dy/yuXatqfOgeGyU3a9+2gxC0kbr4oufMUQXI2mQ==} dev: true - /@cspell/dict-filetypes/3.0.0: + /@cspell/dict-filetypes@3.0.0: resolution: {integrity: sha512-Fiyp0z5uWaK0d2TfR9GMUGDKmUMAsOhGD5A0kHoqnNGswL2iw0KB0mFBONEquxU65fEnQv4R+jdM2d9oucujuA==} dev: true - /@cspell/dict-fonts/3.0.2: + /@cspell/dict-fonts@3.0.2: resolution: {integrity: sha512-Z5QdbgEI7DV+KPXrAeDA6dDm/vTzyaW53SGlKqz6PI5VhkOjgkBXv3YtZjnxMZ4dY2ZIqq+RUK6qa9Pi8rQdGQ==} dev: true - /@cspell/dict-fullstack/3.1.5: + /@cspell/dict-fullstack@3.1.5: resolution: {integrity: sha512-6ppvo1dkXUZ3fbYn/wwzERxCa76RtDDl5Afzv2lijLoijGGUw5yYdLBKJnx8PJBGNLh829X352ftE7BElG4leA==} dev: true - /@cspell/dict-gaming-terms/1.0.4: + /@cspell/dict-gaming-terms@1.0.4: resolution: {integrity: sha512-hbDduNXlk4AOY0wFxcDMWBPpm34rpqJBeqaySeoUH70eKxpxm+dvjpoRLJgyu0TmymEICCQSl6lAHTHSDiWKZg==} dev: true - /@cspell/dict-git/2.0.0: + /@cspell/dict-git@2.0.0: resolution: {integrity: sha512-n1AxyX5Kgxij/sZFkxFJlzn3K9y/sCcgVPg/vz4WNJ4K9YeTsUmyGLA2OQI7d10GJeiuAo2AP1iZf2A8j9aj2w==} dev: true - /@cspell/dict-golang/6.0.1: + /@cspell/dict-golang@6.0.1: resolution: {integrity: sha512-Z19FN6wgg2M/A+3i1O8qhrGaxUUGOW8S2ySN0g7vp4HTHeFmockEPwYx7gArfssNIruw60JorZv+iLJ6ilTeow==} dev: true - /@cspell/dict-haskell/4.0.1: + /@cspell/dict-haskell@4.0.1: resolution: {integrity: sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==} dev: true - /@cspell/dict-html-symbol-entities/4.0.0: + /@cspell/dict-html-symbol-entities@4.0.0: resolution: {integrity: sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==} dev: true - /@cspell/dict-html/4.0.3: + /@cspell/dict-html@4.0.3: resolution: {integrity: sha512-Gae8i8rrArT0UyG1I6DHDK62b7Be6QEcBSIeWOm4VIIW1CASkN9B0qFgSVnkmfvnu1Y3H7SSaaEynKjdj3cs8w==} dev: true - /@cspell/dict-java/5.0.5: + /@cspell/dict-java@5.0.5: resolution: {integrity: sha512-X19AoJgWIBwJBSWGFqSgHaBR/FEykBHTMjL6EqOnhIGEyE9nvuo32tsSHjXNJ230fQxQptEvRZoaldNLtKxsRg==} dev: true - /@cspell/dict-k8s/1.0.1: + /@cspell/dict-k8s@1.0.1: resolution: {integrity: sha512-gc5y4Nm3hVdMZNBZfU2M1AsAmObZsRWjCUk01NFPfGhFBXyVne41T7E62rpnzu5330FV/6b/TnFcPgRmak9lLw==} dev: true - /@cspell/dict-latex/4.0.0: + /@cspell/dict-latex@4.0.0: resolution: {integrity: sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==} dev: true - /@cspell/dict-lorem-ipsum/3.0.0: + /@cspell/dict-lorem-ipsum@3.0.0: resolution: {integrity: sha512-msEV24qEpzWZs2kcEicqYlhyBpR0amfDkJOs+iffC07si9ftqtQ+yP3lf1VFLpgqw3SQh1M1vtU7RD4sPrNlcQ==} dev: true - /@cspell/dict-lua/4.0.1: + /@cspell/dict-lua@4.0.1: resolution: {integrity: sha512-j0MFmeCouSoC6EdZTbvGe1sJ9V+ruwKSeF+zRkNNNload7R72Co5kX1haW2xLHGdlq0kqSy1ODRZKdVl0e+7hg==} dev: true - /@cspell/dict-node/4.0.2: + /@cspell/dict-node@4.0.2: resolution: {integrity: sha512-FEQJ4TnMcXEFslqBQkXa5HposMoCGsiBv2ux4IZuIXgadXeHKHUHk60iarWpjhzNzQLyN2GD7NoRMd12bK3Llw==} dev: true - /@cspell/dict-npm/5.0.5: + /@cspell/dict-npm@5.0.5: resolution: {integrity: sha512-eirZm4XpJNEcbmLGIwI2qXdRRlCKwEsH9mT3qCUytmbj6S6yn63F+8bShMW/yQBedV7+GXq9Td+cJdqiVutOiA==} dev: true - /@cspell/dict-php/4.0.1: + /@cspell/dict-php@4.0.1: resolution: {integrity: sha512-XaQ/JkSyq2c07MfRG54DjLi2CV+HHwS99DDCAao9Fq2JfkWroTQsUeek7wYZXJATrJVOULoV3HKih12x905AtQ==} dev: true - /@cspell/dict-powershell/5.0.1: + /@cspell/dict-powershell@5.0.1: resolution: {integrity: sha512-lLl+syWFgfv2xdsoxHfPIB2FGkn//XahCIKcRaf52AOlm1/aXeaJN579B9HCpvM7wawHzMqJ33VJuL/vb6Lc4g==} dev: true - /@cspell/dict-public-licenses/2.0.2: + /@cspell/dict-public-licenses@2.0.2: resolution: {integrity: sha512-baKkbs/WGEV2lCWZoL0KBPh3uiPcul5GSDwmXEBAsR5McEW52LF94/b7xWM0EmSAc/y8ODc5LnPYC7RDRLi6LQ==} dev: true - /@cspell/dict-python/4.0.3: + /@cspell/dict-python@4.0.3: resolution: {integrity: sha512-tUEMEbtV5kjuiX//K1SFo4ayO6q+bY9ghqTAo3bdlraZy59MFx8KVLYHnRndVqGwM8rRwRhp9Kmb6boAnBl+Kw==} dev: true - /@cspell/dict-r/2.0.1: + /@cspell/dict-r@2.0.1: resolution: {integrity: sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==} dev: true - /@cspell/dict-ruby/5.0.0: + /@cspell/dict-ruby@5.0.0: resolution: {integrity: sha512-ssb96QxLZ76yPqFrikWxItnCbUKhYXJ2owkoIYzUGNFl2CHSoHCb5a6Zetum9mQ/oUA3gNeUhd28ZUlXs0la2A==} dev: true - /@cspell/dict-rust/4.0.1: + /@cspell/dict-rust@4.0.1: resolution: {integrity: sha512-xJSSzHDK2z6lSVaOmMxl3PTOtfoffaxMo7fTcbZUF+SCJzfKbO6vnN9TCGX2sx1RHFDz66Js6goz6SAZQdOwaw==} dev: true - /@cspell/dict-scala/5.0.0: + /@cspell/dict-scala@5.0.0: resolution: {integrity: sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==} dev: true - /@cspell/dict-software-terms/3.1.6: + /@cspell/dict-software-terms@3.1.6: resolution: {integrity: sha512-w46+pIMRVtrDuTZXK/YxDP5NL5yVoX0ImEPO0s9WbxdyyfhzAF3sGYHBGN/50OGLHExcqe6Idb9feoRC9mCLxw==} dev: true - /@cspell/dict-sql/2.1.0: + /@cspell/dict-sql@2.1.0: resolution: {integrity: sha512-Bb+TNWUrTNNABO0bmfcYXiTlSt0RD6sB2MIY+rNlaMyIwug43jUjeYmkLz2tPkn3+2uvySeFEOMVYhMVfcuDKg==} dev: true - /@cspell/dict-svelte/1.0.2: + /@cspell/dict-svelte@1.0.2: resolution: {integrity: sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==} dev: true - /@cspell/dict-swift/2.0.1: + /@cspell/dict-swift@2.0.1: resolution: {integrity: sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==} dev: true - /@cspell/dict-typescript/3.1.1: + /@cspell/dict-typescript@3.1.1: resolution: {integrity: sha512-N9vNJZoOXmmrFPR4ir3rGvnqqwmQGgOYoL1+y6D4oIhyr7FhaYiyF/d7QT61RmjZQcATMa6PSL+ZisCeRLx9+A==} dev: true - /@cspell/dict-vue/3.0.0: + /@cspell/dict-vue@3.0.0: resolution: {integrity: sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==} dev: true - /@cspell/dynamic-import/6.31.1: + /@cspell/dynamic-import@6.31.1: resolution: {integrity: sha512-uliIUv9uZlnyYmjUlcw/Dm3p0xJOEnWJNczHAfqAl4Ytg6QZktw0GtUA9b1umbRXLv0KRTPtSC6nMq3cR7rRmQ==} engines: {node: '>=14'} dependencies: import-meta-resolve: 2.2.2 dev: true - /@cspell/eslint-plugin/6.31.1: + /@cspell/eslint-plugin@6.31.1: resolution: {integrity: sha512-4WJXHZVHdVqIyaxCHRgd55bqkhjSDIu/kDJAvprxhEGdyladIOHZ/c3si8AMJYnYbZY56zY2LsF2W5uNyIsRgg==} engines: {node: '>=14'} dependencies: @@ -1729,19 +1852,18 @@ packages: - encoding dev: true - /@cspell/strong-weak-map/6.31.1: + /@cspell/strong-weak-map@6.31.1: resolution: {integrity: sha512-z8AuWvUuSnugFKJOA9Ke0aiFuehcqLFqia9bk8XaQNEWr44ahPVn3sEWnAncTxPbpWuUw5UajoJa0egRAE1CCg==} engines: {node: '>=14.6'} dev: true - /@cspotcode/source-map-support/0.8.1: + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 - dev: true - /@cypress/request/2.88.10: + /@cypress/request@2.88.10: resolution: {integrity: sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==} engines: {node: '>= 6'} dependencies: @@ -1765,28 +1887,28 @@ packages: uuid: 8.3.2 dev: true - /@cypress/xvfb/1.2.4_supports-color@8.1.1: + /@cypress/xvfb@1.2.4(supports-color@8.1.1): resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} dependencies: - debug: 3.2.7_supports-color@8.1.1 + debug: 3.2.7(supports-color@8.1.1) lodash.once: 4.1.1 transitivePeerDependencies: - supports-color dev: true - /@discoveryjs/json-ext/0.5.7: + /@discoveryjs/json-ext@0.5.7: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} dev: true - /@docsearch/css/3.3.3: + /@docsearch/css@3.3.3: resolution: {integrity: sha512-6SCwI7P8ao+se1TUsdZ7B4XzL+gqeQZnBc+2EONZlcVa0dVrk0NjETxozFKgMv0eEGH8QzP1fkN+A1rH61l4eg==} dev: true - /@docsearch/js/3.3.3_hoyvfk3ab7nzsjkhptt6ai7rzq: + /@docsearch/js@3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0): resolution: {integrity: sha512-2xAv2GFuHzzmG0SSZgf8wHX0qZX8n9Y1ZirKUk5Wrdc+vH9CL837x2hZIUdwcPZI9caBA+/CzxsS68O4waYjUQ==} dependencies: - '@docsearch/react': 3.3.3_hoyvfk3ab7nzsjkhptt6ai7rzq + '@docsearch/react': 3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0) preact: 10.11.0 transitivePeerDependencies: - '@algolia/client-search' @@ -1795,7 +1917,7 @@ packages: - react-dom dev: true - /@docsearch/react/3.3.3_hoyvfk3ab7nzsjkhptt6ai7rzq: + /@docsearch/react@3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0): resolution: {integrity: sha512-pLa0cxnl+G0FuIDuYlW+EBK6Rw2jwLw9B1RHIeS4N4s2VhsfJ/wzeCi3CWcs5yVfxLd5ZK50t//TMA5e79YT7Q==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -1810,16 +1932,16 @@ packages: optional: true dependencies: '@algolia/autocomplete-core': 1.7.4 - '@algolia/autocomplete-preset-algolia': 1.7.4_qs6lk5nhygj2o3hj4sf6xnr724 + '@algolia/autocomplete-preset-algolia': 1.7.4(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) '@docsearch/css': 3.3.3 algoliasearch: 4.14.2 react: 16.14.0 - react-dom: 16.14.0_react@16.14.0 + react-dom: 16.14.0(react@16.14.0) transitivePeerDependencies: - '@algolia/client-search' dev: true - /@es-joy/jsdoccomment/0.37.1: + /@es-joy/jsdoccomment@0.37.1: resolution: {integrity: sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==} engines: {node: ^14 || ^16 || ^17 || ^18 || ^19 || ^20} dependencies: @@ -1828,16 +1950,7 @@ packages: jsdoc-type-pratt-parser: 4.0.0 dev: true - /@esbuild/android-arm/0.17.18: - resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm64/0.17.18: + /@esbuild/android-arm64@0.17.18: resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} engines: {node: '>=12'} cpu: [arm64] @@ -1846,7 +1959,16 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.17.18: + /@esbuild/android-arm@0.17.18: + resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.17.18: resolution: {integrity: sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==} engines: {node: '>=12'} cpu: [x64] @@ -1855,7 +1977,7 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.18: + /@esbuild/darwin-arm64@0.17.18: resolution: {integrity: sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==} engines: {node: '>=12'} cpu: [arm64] @@ -1864,7 +1986,7 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.18: + /@esbuild/darwin-x64@0.17.18: resolution: {integrity: sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==} engines: {node: '>=12'} cpu: [x64] @@ -1873,7 +1995,7 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.18: + /@esbuild/freebsd-arm64@0.17.18: resolution: {integrity: sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==} engines: {node: '>=12'} cpu: [arm64] @@ -1882,7 +2004,7 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.17.18: + /@esbuild/freebsd-x64@0.17.18: resolution: {integrity: sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==} engines: {node: '>=12'} cpu: [x64] @@ -1891,16 +2013,7 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.18: - resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64/0.17.18: + /@esbuild/linux-arm64@0.17.18: resolution: {integrity: sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==} engines: {node: '>=12'} cpu: [arm64] @@ -1909,7 +2022,16 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.17.18: + /@esbuild/linux-arm@0.17.18: + resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.17.18: resolution: {integrity: sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==} engines: {node: '>=12'} cpu: [ia32] @@ -1918,7 +2040,7 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.18: + /@esbuild/linux-loong64@0.17.18: resolution: {integrity: sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==} engines: {node: '>=12'} cpu: [loong64] @@ -1927,7 +2049,7 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.18: + /@esbuild/linux-mips64el@0.17.18: resolution: {integrity: sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==} engines: {node: '>=12'} cpu: [mips64el] @@ -1936,7 +2058,7 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.18: + /@esbuild/linux-ppc64@0.17.18: resolution: {integrity: sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==} engines: {node: '>=12'} cpu: [ppc64] @@ -1945,7 +2067,7 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.18: + /@esbuild/linux-riscv64@0.17.18: resolution: {integrity: sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==} engines: {node: '>=12'} cpu: [riscv64] @@ -1954,7 +2076,7 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.18: + /@esbuild/linux-s390x@0.17.18: resolution: {integrity: sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==} engines: {node: '>=12'} cpu: [s390x] @@ -1963,7 +2085,7 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.18: + /@esbuild/linux-x64@0.17.18: resolution: {integrity: sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==} engines: {node: '>=12'} cpu: [x64] @@ -1972,7 +2094,7 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.18: + /@esbuild/netbsd-x64@0.17.18: resolution: {integrity: sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==} engines: {node: '>=12'} cpu: [x64] @@ -1981,7 +2103,7 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.18: + /@esbuild/openbsd-x64@0.17.18: resolution: {integrity: sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==} engines: {node: '>=12'} cpu: [x64] @@ -1990,7 +2112,7 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.18: + /@esbuild/sunos-x64@0.17.18: resolution: {integrity: sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==} engines: {node: '>=12'} cpu: [x64] @@ -1999,7 +2121,7 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.18: + /@esbuild/win32-arm64@0.17.18: resolution: {integrity: sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==} engines: {node: '>=12'} cpu: [arm64] @@ -2008,7 +2130,7 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.18: + /@esbuild/win32-ia32@0.17.18: resolution: {integrity: sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==} engines: {node: '>=12'} cpu: [ia32] @@ -2017,7 +2139,7 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.18: + /@esbuild/win32-x64@0.17.18: resolution: {integrity: sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==} engines: {node: '>=12'} cpu: [x64] @@ -2026,7 +2148,7 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils/4.4.0_eslint@8.39.0: + /@eslint-community/eslint-utils@4.4.0(eslint@8.39.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2036,17 +2158,17 @@ packages: eslint-visitor-keys: 3.4.0 dev: true - /@eslint-community/regexpp/4.5.0: + /@eslint-community/regexpp@4.5.0: resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc/2.0.2: + /@eslint/eslintrc@2.0.2: resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) espree: 9.5.1 globals: 13.19.0 ignore: 5.2.0 @@ -2058,52 +2180,52 @@ packages: - supports-color dev: true - /@eslint/js/8.39.0: + /@eslint/js@8.39.0: resolution: {integrity: sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@fastify/ajv-compiler/1.1.0: + /@fastify/ajv-compiler@1.1.0: resolution: {integrity: sha512-gvCOUNpXsWrIQ3A4aXCLIdblL0tDq42BG/2Xw7oxbil9h11uow10ztS2GuFazNBfjbrsZ5nl+nPl5jDSjj5TSg==} dependencies: ajv: 6.12.6 dev: true - /@fastify/error/2.0.0: + /@fastify/error@2.0.0: resolution: {integrity: sha512-wI3fpfDT0t7p8E6dA2eTECzzOd+bZsZCJ2Hcv+Onn2b7ZwK3RwD27uW2QDaMtQhAfWQQP+WNK7nKf0twLsBf9w==} dev: true - /@hapi/hoek/9.3.0: + /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} dev: true - /@hapi/topo/5.1.0: + /@hapi/topo@5.1.0: resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} dependencies: '@hapi/hoek': 9.3.0 dev: true - /@humanwhocodes/config-array/0.11.8: + /@humanwhocodes/config-array@0.11.8: resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color dev: true - /@humanwhocodes/module-importer/1.0.1: + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema/1.2.1: + /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@istanbuljs/load-nyc-config/1.1.0: + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} dependencies: @@ -2114,12 +2236,12 @@ packages: resolve-from: 5.0.0 dev: true - /@istanbuljs/schema/0.1.3: + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} dev: true - /@jest/console/29.5.0: + /@jest/console@29.5.0: resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2131,7 +2253,7 @@ packages: slash: 3.0.0 dev: true - /@jest/core/29.5.0_ts-node@10.9.1: + /@jest/core@29.5.0(ts-node@10.9.1): resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -2152,7 +2274,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0_nos7cth4dsekhy4fgueg2u3gjm + jest-config: 29.5.0(@types/node@18.16.0)(ts-node@10.9.1) jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -2173,7 +2295,7 @@ packages: - ts-node dev: true - /@jest/environment/29.5.0: + /@jest/environment@29.5.0: resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2183,14 +2305,14 @@ packages: jest-mock: 29.5.0 dev: true - /@jest/expect-utils/29.5.0: + /@jest/expect-utils@29.5.0: resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.4.3 dev: true - /@jest/expect/29.5.0: + /@jest/expect@29.5.0: resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2200,7 +2322,7 @@ packages: - supports-color dev: true - /@jest/fake-timers/29.5.0: + /@jest/fake-timers@29.5.0: resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2212,7 +2334,7 @@ packages: jest-util: 29.5.0 dev: true - /@jest/globals/29.5.0: + /@jest/globals@29.5.0: resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2224,7 +2346,7 @@ packages: - supports-color dev: true - /@jest/reporters/29.5.0: + /@jest/reporters@29.5.0: resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -2261,14 +2383,14 @@ packages: - supports-color dev: true - /@jest/schemas/29.4.3: + /@jest/schemas@29.4.3: resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.25.24 dev: true - /@jest/source-map/29.4.3: + /@jest/source-map@29.4.3: resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2277,7 +2399,7 @@ packages: graceful-fs: 4.2.10 dev: true - /@jest/test-result/29.5.0: + /@jest/test-result@29.5.0: resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2287,7 +2409,7 @@ packages: collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/29.5.0: + /@jest/test-sequencer@29.5.0: resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2297,7 +2419,7 @@ packages: slash: 3.0.0 dev: true - /@jest/transform/29.5.0: + /@jest/transform@29.5.0: resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2320,7 +2442,7 @@ packages: - supports-color dev: true - /@jest/types/29.5.0: + /@jest/types@29.5.0: resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2332,7 +2454,7 @@ packages: chalk: 4.1.2 dev: true - /@jridgewell/gen-mapping/0.3.2: + /@jridgewell/gen-mapping@0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} dependencies: @@ -2340,38 +2462,37 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 '@jridgewell/trace-mapping': 0.3.15 - /@jridgewell/resolve-uri/3.1.0: + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array/1.1.2: + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - /@jridgewell/source-map/0.3.2: + /@jridgewell/source-map@0.3.2: resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} dependencies: '@jridgewell/gen-mapping': 0.3.2 '@jridgewell/trace-mapping': 0.3.15 dev: true - /@jridgewell/sourcemap-codec/1.4.14: + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - /@jridgewell/trace-mapping/0.3.15: + /@jridgewell/trace-mapping@0.3.15: resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - /@jridgewell/trace-mapping/0.3.9: + /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - /@khanacademy/simple-markdown/0.9.2_wcqkhtmu7mswc6yz4uyexck3ty: + /@khanacademy/simple-markdown@0.9.2(react-dom@16.14.0)(react@16.14.0): resolution: {integrity: sha512-iRkSaVuUT+ho8B0aY0uLGgfS1YU84l/mSwjJTh0N0k0WzjdJUJY4+Eh56kn8whwD8QX6uNblAT0lT5ICATLtZg==} peerDependencies: react: 16.14.0 @@ -2379,14 +2500,14 @@ packages: dependencies: '@types/react': 18.0.33 react: 16.14.0 - react-dom: 16.14.0_react@16.14.0 + react-dom: 16.14.0(react@16.14.0) dev: false - /@leichtgewicht/ip-codec/2.0.4: + /@leichtgewicht/ip-codec@2.0.4: resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} dev: true - /@microsoft/tsdoc-config/0.16.2: + /@microsoft/tsdoc-config@0.16.2: resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} dependencies: '@microsoft/tsdoc': 0.14.2 @@ -2395,36 +2516,36 @@ packages: resolve: 1.19.0 dev: true - /@microsoft/tsdoc/0.14.2: + /@microsoft/tsdoc@0.14.2: resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} dev: true - /@nodelib/fs.scandir/2.1.5: + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - /@nodelib/fs.stat/2.0.5: + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - /@nodelib/fs.walk/1.2.8: + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 - /@pkgjs/parseargs/0.11.0: + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} requiresBuild: true dev: true optional: true - /@pkgr/utils/2.3.1: + /@pkgr/utils@2.3.1: resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: @@ -2436,11 +2557,11 @@ packages: tslib: 2.5.0 dev: true - /@polka/url/1.0.0-next.21: + /@polka/url@1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true - /@rollup/plugin-typescript/11.1.0_typescript@5.0.4: + /@rollup/plugin-typescript@11.1.0(typescript@5.0.4): resolution: {integrity: sha512-86flrfE+bSHB69znnTV6kVjkncs2LBMhcTCyxWgRxLyfXfQrxg4UwlAqENnjrrxnSNS/XKCDJCl8EkdFJVHOxw==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2458,7 +2579,7 @@ packages: typescript: 5.0.4 dev: true - /@rollup/pluginutils/5.0.2: + /@rollup/pluginutils@5.0.2: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2472,79 +2593,75 @@ packages: picomatch: 2.3.1 dev: true - /@sideway/address/4.1.4: + /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: '@hapi/hoek': 9.3.0 dev: true - /@sideway/formula/3.0.1: + /@sideway/formula@3.0.1: resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} dev: true - /@sideway/pinpoint/2.0.0: + /@sideway/pinpoint@2.0.0: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} dev: true - /@sinclair/typebox/0.25.24: + /@sinclair/typebox@0.25.24: resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} dev: true - /@sindresorhus/is/4.6.0: + /@sindresorhus/is@4.6.0: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} dev: true - /@sinonjs/commons/2.0.0: + /@sinonjs/commons@2.0.0: resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} dependencies: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers/10.0.2: + /@sinonjs/fake-timers@10.0.2: resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} dependencies: '@sinonjs/commons': 2.0.0 dev: true - /@szmarczak/http-timer/4.0.6: + /@szmarczak/http-timer@4.0.6: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} dependencies: defer-to-connect: 2.0.1 dev: true - /@tootallnate/once/1.1.2: + /@tootallnate/once@1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} dev: true - /@tootallnate/once/2.0.0: + /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} dev: true - /@tsconfig/node10/1.0.9: + /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: true - /@tsconfig/node12/1.0.11: + /@tsconfig/node12@1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true - /@tsconfig/node14/1.0.3: + /@tsconfig/node14@1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true - /@tsconfig/node16/1.0.3: + /@tsconfig/node16@1.0.3: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} - dev: true - /@types/assert/1.5.6: + /@types/assert@1.5.6: resolution: {integrity: sha512-Y7gDJiIqb9qKUHfBQYOWGngUpLORtirAVPuj/CWJrU2C6ZM4/y3XLwuwfGMF8s7QzW746LQZx23m0+1FSgjfug==} dev: false - /@types/babel__core/7.1.19: + /@types/babel__core@7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: '@babel/parser': 7.19.1 @@ -2554,43 +2671,43 @@ packages: '@types/babel__traverse': 7.18.2 dev: true - /@types/babel__generator/7.6.4: + /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: '@babel/types': 7.19.0 dev: true - /@types/babel__template/7.4.1: + /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: '@babel/parser': 7.19.1 '@babel/types': 7.19.0 dev: true - /@types/babel__traverse/7.18.2: + /@types/babel__traverse@7.18.2: resolution: {integrity: sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==} dependencies: '@babel/types': 7.19.0 dev: true - /@types/body-parser/1.19.2: + /@types/body-parser@1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 '@types/node': 18.16.0 dev: true - /@types/bonjour/3.5.10: + /@types/bonjour@3.5.10: resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==} dependencies: '@types/node': 18.16.0 dev: true - /@types/braces/3.0.1: + /@types/braces@3.0.1: resolution: {integrity: sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==} dev: true - /@types/cacheable-request/6.0.2: + /@types/cacheable-request@6.0.2: resolution: {integrity: sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==} dependencies: '@types/http-cache-semantics': 4.0.1 @@ -2599,184 +2716,184 @@ packages: '@types/responselike': 1.0.0 dev: true - /@types/chai-subset/1.3.3: + /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: '@types/chai': 4.3.4 dev: true - /@types/chai/4.3.4: + /@types/chai@4.3.4: resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} dev: true - /@types/connect-history-api-fallback/1.3.5: + /@types/connect-history-api-fallback@1.3.5: resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==} dependencies: '@types/express-serve-static-core': 4.17.33 '@types/node': 18.16.0 dev: true - /@types/connect/3.4.35: + /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: '@types/node': 18.16.0 dev: true - /@types/cors/2.8.13: + /@types/cors@2.8.13: resolution: {integrity: sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==} dependencies: '@types/node': 18.16.0 dev: true - /@types/cytoscape/3.19.9: + /@types/cytoscape@3.19.9: resolution: {integrity: sha512-oqCx0ZGiBO0UESbjgq052vjDAy2X53lZpMrWqiweMpvVwKw/2IiYDdzPFK6+f4tMfdv9YKEM9raO5bAZc3UYBg==} dev: true - /@types/d3-array/3.0.3: + /@types/d3-array@3.0.3: resolution: {integrity: sha512-Reoy+pKnvsksN0lQUlcH6dOGjRZ/3WRwXR//m+/8lt1BXeI4xyaUZoqULNjyXXRuh0Mj4LNpkCvhUpQlY3X5xQ==} dev: true - /@types/d3-axis/3.0.1: + /@types/d3-axis@3.0.1: resolution: {integrity: sha512-zji/iIbdd49g9WN0aIsGcwcTBUkgLsCSwB+uH+LPVDAiKWENMtI3cJEWt+7/YYwelMoZmbBfzA3qCdrZ2XFNnw==} dependencies: '@types/d3-selection': 3.0.3 dev: true - /@types/d3-brush/3.0.1: + /@types/d3-brush@3.0.1: resolution: {integrity: sha512-B532DozsiTuQMHu2YChdZU0qsFJSio3Q6jmBYGYNp3gMDzBmuFFgPt9qKA4VYuLZMp4qc6eX7IUFUEsvHiXZAw==} dependencies: '@types/d3-selection': 3.0.3 dev: true - /@types/d3-chord/3.0.1: + /@types/d3-chord@3.0.1: resolution: {integrity: sha512-eQfcxIHrg7V++W8Qxn6QkqBNBokyhdWSAS73AbkbMzvLQmVVBviknoz2SRS/ZJdIOmhcmmdCRE/NFOm28Z1AMw==} dev: true - /@types/d3-color/3.1.0: + /@types/d3-color@3.1.0: resolution: {integrity: sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==} dev: true - /@types/d3-contour/3.0.1: + /@types/d3-contour@3.0.1: resolution: {integrity: sha512-C3zfBrhHZvrpAAK3YXqLWVAGo87A4SvJ83Q/zVJ8rFWJdKejUnDYaWZPkA8K84kb2vDA/g90LTQAz7etXcgoQQ==} dependencies: '@types/d3-array': 3.0.3 '@types/geojson': 7946.0.10 dev: true - /@types/d3-delaunay/6.0.1: + /@types/d3-delaunay@6.0.1: resolution: {integrity: sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==} dev: true - /@types/d3-dispatch/3.0.1: + /@types/d3-dispatch@3.0.1: resolution: {integrity: sha512-NhxMn3bAkqhjoxabVJWKryhnZXXYYVQxaBnbANu0O94+O/nX9qSjrA1P1jbAQJxJf+VC72TxDX/YJcKue5bRqw==} dev: true - /@types/d3-drag/3.0.1: + /@types/d3-drag@3.0.1: resolution: {integrity: sha512-o1Va7bLwwk6h03+nSM8dpaGEYnoIG19P0lKqlic8Un36ymh9NSkNFX1yiXMKNMx8rJ0Kfnn2eovuFaL6Jvj0zA==} dependencies: '@types/d3-selection': 3.0.3 dev: true - /@types/d3-dsv/3.0.0: + /@types/d3-dsv@3.0.0: resolution: {integrity: sha512-o0/7RlMl9p5n6FQDptuJVMxDf/7EDEv2SYEO/CwdG2tr1hTfUVi0Iavkk2ax+VpaQ/1jVhpnj5rq1nj8vwhn2A==} dev: true - /@types/d3-ease/3.0.0: + /@types/d3-ease@3.0.0: resolution: {integrity: sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==} dev: true - /@types/d3-fetch/3.0.1: + /@types/d3-fetch@3.0.1: resolution: {integrity: sha512-toZJNOwrOIqz7Oh6Q7l2zkaNfXkfR7mFSJvGvlD/Ciq/+SQ39d5gynHJZ/0fjt83ec3WL7+u3ssqIijQtBISsw==} dependencies: '@types/d3-dsv': 3.0.0 dev: true - /@types/d3-force/3.0.3: + /@types/d3-force@3.0.3: resolution: {integrity: sha512-z8GteGVfkWJMKsx6hwC3SiTSLspL98VNpmvLpEFJQpZPq6xpA1I8HNBDNSpukfK0Vb0l64zGFhzunLgEAcBWSA==} dev: true - /@types/d3-format/3.0.1: + /@types/d3-format@3.0.1: resolution: {integrity: sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==} dev: true - /@types/d3-geo/3.0.2: + /@types/d3-geo@3.0.2: resolution: {integrity: sha512-DbqK7MLYA8LpyHQfv6Klz0426bQEf7bRTvhMy44sNGVyZoWn//B0c+Qbeg8Osi2Obdc9BLLXYAKpyWege2/7LQ==} dependencies: '@types/geojson': 7946.0.10 dev: true - /@types/d3-hierarchy/3.1.0: + /@types/d3-hierarchy@3.1.0: resolution: {integrity: sha512-g+sey7qrCa3UbsQlMZZBOHROkFqx7KZKvUpRzI/tAp/8erZWpYq7FgNKvYwebi2LaEiVs1klhUfd3WCThxmmWQ==} dev: true - /@types/d3-interpolate/3.0.1: + /@types/d3-interpolate@3.0.1: resolution: {integrity: sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==} dependencies: '@types/d3-color': 3.1.0 dev: true - /@types/d3-path/3.0.0: + /@types/d3-path@3.0.0: resolution: {integrity: sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==} dev: true - /@types/d3-polygon/3.0.0: + /@types/d3-polygon@3.0.0: resolution: {integrity: sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==} dev: true - /@types/d3-quadtree/3.0.2: + /@types/d3-quadtree@3.0.2: resolution: {integrity: sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==} dev: true - /@types/d3-random/3.0.1: + /@types/d3-random@3.0.1: resolution: {integrity: sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==} dev: true - /@types/d3-scale-chromatic/3.0.0: + /@types/d3-scale-chromatic@3.0.0: resolution: {integrity: sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==} dev: true - /@types/d3-scale/4.0.2: + /@types/d3-scale@4.0.2: resolution: {integrity: sha512-Yk4htunhPAwN0XGlIwArRomOjdoBFXC3+kCxK2Ubg7I9shQlVSJy/pG/Ht5ASN+gdMIalpk8TJ5xV74jFsetLA==} dependencies: '@types/d3-time': 3.0.0 dev: true - /@types/d3-selection/3.0.3: + /@types/d3-selection@3.0.3: resolution: {integrity: sha512-Mw5cf6nlW1MlefpD9zrshZ+DAWL4IQ5LnWfRheW6xwsdaWOb6IRRu2H7XPAQcyXEx1D7XQWgdoKR83ui1/HlEA==} dev: true - /@types/d3-shape/3.1.0: + /@types/d3-shape@3.1.0: resolution: {integrity: sha512-jYIYxFFA9vrJ8Hd4Se83YI6XF+gzDL1aC5DCsldai4XYYiVNdhtpGbA/GM6iyQ8ayhSp3a148LY34hy7A4TxZA==} dependencies: '@types/d3-path': 3.0.0 dev: true - /@types/d3-time-format/4.0.0: + /@types/d3-time-format@4.0.0: resolution: {integrity: sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==} dev: true - /@types/d3-time/3.0.0: + /@types/d3-time@3.0.0: resolution: {integrity: sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==} dev: true - /@types/d3-timer/3.0.0: + /@types/d3-timer@3.0.0: resolution: {integrity: sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==} dev: true - /@types/d3-transition/3.0.2: + /@types/d3-transition@3.0.2: resolution: {integrity: sha512-jo5o/Rf+/u6uerJ/963Dc39NI16FQzqwOc54bwvksGAdVfvDrqDpVeq95bEvPtBwLCVZutAEyAtmSyEMxN7vxQ==} dependencies: '@types/d3-selection': 3.0.3 dev: true - /@types/d3-zoom/3.0.1: + /@types/d3-zoom@3.0.1: resolution: {integrity: sha512-7s5L9TjfqIYQmQQEUcpMAcBOahem7TRoSO/+Gkz02GbMVuULiZzjF2BOdw291dbO2aNon4m2OdFsRGaCq2caLQ==} dependencies: '@types/d3-interpolate': 3.0.1 '@types/d3-selection': 3.0.3 dev: true - /@types/d3/7.4.0: + /@types/d3@7.4.0: resolution: {integrity: sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==} dependencies: '@types/d3-array': 3.0.3 @@ -2811,41 +2928,41 @@ packages: '@types/d3-zoom': 3.0.1 dev: true - /@types/debug/4.1.7: + /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: '@types/ms': 0.7.31 dev: true - /@types/dompurify/3.0.2: + /@types/dompurify@3.0.2: resolution: {integrity: sha512-YBL4ziFebbbfQfH5mlC+QTJsvh0oJUrWbmxKMyEdL7emlHJqGR2Qb34TEFKj+VCayBvjKy3xczMFNhugThUsfQ==} dependencies: '@types/trusted-types': 2.0.2 dev: true - /@types/eslint-scope/3.7.4: + /@types/eslint-scope@3.7.4: resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} dependencies: '@types/eslint': 8.37.0 '@types/estree': 1.0.0 dev: true - /@types/eslint/8.37.0: + /@types/eslint@8.37.0: resolution: {integrity: sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==} dependencies: '@types/estree': 1.0.0 '@types/json-schema': 7.0.11 dev: true - /@types/estree/0.0.51: + /@types/estree@0.0.51: resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} dev: true - /@types/estree/1.0.0: + /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: true - /@types/express-serve-static-core/4.17.33: + /@types/express-serve-static-core@4.17.33: resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: '@types/node': 18.16.0 @@ -2853,7 +2970,7 @@ packages: '@types/range-parser': 1.2.4 dev: true - /@types/express/4.17.14: + /@types/express@4.17.14: resolution: {integrity: sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==} dependencies: '@types/body-parser': 1.19.2 @@ -2862,7 +2979,7 @@ packages: '@types/serve-static': 1.15.0 dev: true - /@types/express/4.17.17: + /@types/express@4.17.17: resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} dependencies: '@types/body-parser': 1.19.2 @@ -2871,51 +2988,51 @@ packages: '@types/serve-static': 1.15.0 dev: true - /@types/flexsearch/0.7.3: + /@types/flexsearch@0.7.3: resolution: {integrity: sha512-HXwADeHEP4exXkCIwy2n1+i0f1ilP1ETQOH5KDOugjkTFZPntWo0Gr8stZOaebkxsdx+k0X/K6obU/+it07ocg==} dev: true - /@types/geojson/7946.0.10: + /@types/geojson@7946.0.10: resolution: {integrity: sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==} dev: true - /@types/graceful-fs/4.1.5: + /@types/graceful-fs@4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: '@types/node': 18.16.0 dev: true - /@types/http-cache-semantics/4.0.1: + /@types/http-cache-semantics@4.0.1: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} dev: true - /@types/http-proxy/1.17.9: + /@types/http-proxy@1.17.9: resolution: {integrity: sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==} dependencies: '@types/node': 18.16.0 dev: true - /@types/istanbul-lib-coverage/2.0.4: + /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true - /@types/istanbul-lib-report/3.0.0: + /@types/istanbul-lib-report@3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 dev: true - /@types/istanbul-reports/3.0.1: + /@types/istanbul-reports@3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/js-yaml/4.0.5: + /@types/js-yaml@4.0.5: resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} dev: true - /@types/jsdom/21.1.1: + /@types/jsdom@21.1.1: resolution: {integrity: sha512-cZFuoVLtzKP3gmq9eNosUL1R50U+USkbLtUQ1bYVgl/lKp0FZM7Cq4aIHAL8oIvQ17uSHi7jXPtfDOdjPwBE7A==} dependencies: '@types/node': 18.11.9 @@ -2923,121 +3040,120 @@ packages: parse5: 7.1.1 dev: true - /@types/json-schema/7.0.11: + /@types/json-schema@7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true - /@types/keyv/3.1.4: + /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: '@types/node': 18.16.0 dev: true - /@types/linkify-it/3.0.2: + /@types/linkify-it@3.0.2: resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} dev: true - /@types/lodash-es/4.17.7: + /@types/lodash-es@4.17.7: resolution: {integrity: sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ==} dependencies: '@types/lodash': 4.14.188 dev: true - /@types/lodash/4.14.188: + /@types/lodash@4.14.188: resolution: {integrity: sha512-zmEmF5OIM3rb7SbLCFYoQhO4dGt2FRM9AMkxvA3LaADOF1n8in/zGJlWji9fmafLoNyz+FoL6FE0SLtGIArD7w==} dev: true - /@types/lodash/4.14.194: + /@types/lodash@4.14.194: resolution: {integrity: sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==} dev: true - /@types/markdown-it/12.2.3: + /@types/markdown-it@12.2.3: resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} dependencies: '@types/linkify-it': 3.0.2 '@types/mdurl': 1.0.2 dev: true - /@types/mdast/3.0.10: + /@types/mdast@3.0.10: resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} dependencies: '@types/unist': 2.0.6 dev: true - /@types/mdast/3.0.11: + /@types/mdast@3.0.11: resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} dependencies: '@types/unist': 2.0.6 dev: true - /@types/mdurl/1.0.2: + /@types/mdurl@1.0.2: resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} dev: true - /@types/micromatch/4.0.2: + /@types/micromatch@4.0.2: resolution: {integrity: sha512-oqXqVb0ci19GtH0vOA/U2TmHTcRY9kuZl4mqUxe0QmJAlIW13kzhuK5pi1i9+ngav8FjpSb9FVS/GE00GLX1VA==} dependencies: '@types/braces': 3.0.1 dev: true - /@types/mime/3.0.1: + /@types/mime@3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} dev: true - /@types/minimist/1.2.2: + /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/ms/0.7.31: + /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: true - /@types/node-fetch/2.6.2: + /@types/node-fetch@2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} dependencies: '@types/node': 18.16.0 form-data: 3.0.1 dev: true - /@types/node/14.18.29: + /@types/node@14.18.29: resolution: {integrity: sha512-LhF+9fbIX4iPzhsRLpK5H7iPdvW8L4IwGciXQIOEcuF62+9nw/VQVsOViAOOGxY3OlOKGLFv0sWwJXdwQeTn6A==} dev: true - /@types/node/18.11.9: + /@types/node@18.11.9: resolution: {integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==} dev: true - /@types/node/18.16.0: + /@types/node@18.16.0: resolution: {integrity: sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ==} - dev: true - /@types/normalize-package-data/2.4.1: + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/prettier/2.7.2: + /@types/prettier@2.7.2: resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} dev: true - /@types/prop-types/15.7.5: + /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: false - /@types/qs/6.9.7: + /@types/qs@6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: true - /@types/ramda/0.28.25: + /@types/ramda@0.28.25: resolution: {integrity: sha512-HrQNqQAGcITpn9HAJFamDxm7iZeeXiP/95pN5OMbNniDjzCCeOHbBKNGmUy8NRi0fhYS+/cXeo91MFC+06gbow==} dependencies: ts-toolbelt: 6.15.5 dev: false - /@types/range-parser/1.2.4: + /@types/range-parser@1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true - /@types/react/18.0.33: + /@types/react@18.0.33: resolution: {integrity: sha512-sHxzVxeanvQyQ1lr8NSHaj0kDzcNiGpILEVt69g9S31/7PfMvNCKLKcsHw4lYKjs3cGNJjXSP4mYzX43QlnjNA==} dependencies: '@types/prop-types': 15.7.5 @@ -3045,109 +3161,109 @@ packages: csstype: 3.1.2 dev: false - /@types/responselike/1.0.0: + /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: '@types/node': 18.16.0 dev: true - /@types/retry/0.12.0: + /@types/retry@0.12.0: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} dev: true - /@types/rollup-plugin-visualizer/4.2.1: + /@types/rollup-plugin-visualizer@4.2.1: resolution: {integrity: sha512-Fk4y0EgmsSbvbayYhtSI9+cGvgw1rcQ9RlbExkQt4ivXRdiEwFKuRpxNuJCr0JktXIvOPUuPR7GSmtyZu0dujQ==} dependencies: '@types/node': 18.16.0 rollup: 2.79.1 dev: true - /@types/scheduler/0.16.3: + /@types/scheduler@0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} dev: false - /@types/semver/7.3.12: + /@types/semver@7.3.12: resolution: {integrity: sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==} dev: true - /@types/serve-index/1.9.1: + /@types/serve-index@1.9.1: resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} dependencies: '@types/express': 4.17.17 dev: true - /@types/serve-static/1.15.0: + /@types/serve-static@1.15.0: resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: '@types/mime': 3.0.1 '@types/node': 18.16.0 dev: true - /@types/sinonjs__fake-timers/8.1.1: + /@types/sinonjs__fake-timers@8.1.1: resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} dev: true - /@types/sizzle/2.3.3: + /@types/sizzle@2.3.3: resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} dev: true - /@types/sockjs/0.3.33: + /@types/sockjs@0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: '@types/node': 18.16.0 dev: true - /@types/stack-utils/2.0.1: + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/stylis/4.0.2: + /@types/stylis@4.0.2: resolution: {integrity: sha512-wtckGuk1eXUlUz0Qb1eXHG37Z7HWT2GfMdqRf8F/ifddTwadSS9Jwsqi4qtXk7cP7MtoyGVIHPElFCLc6HItbg==} dev: true - /@types/tough-cookie/4.0.2: + /@types/tough-cookie@4.0.2: resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} dev: true - /@types/trusted-types/2.0.2: + /@types/trusted-types@2.0.2: resolution: {integrity: sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==} dev: true - /@types/unist/2.0.6: + /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true - /@types/uuid/9.0.1: + /@types/uuid@9.0.1: resolution: {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==} dev: true - /@types/web-bluetooth/0.0.16: + /@types/web-bluetooth@0.0.16: resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} dev: true - /@types/ws/8.5.3: + /@types/ws@8.5.3: resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} dependencies: '@types/node': 18.16.0 dev: true - /@types/ws/8.5.4: + /@types/ws@8.5.4: resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} dependencies: '@types/node': 18.16.0 dev: true - /@types/yargs-parser/21.0.0: + /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true - /@types/yargs/17.0.13: + /@types/yargs@17.0.13: resolution: {integrity: sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==} dependencies: '@types/yargs-parser': 21.0.0 dev: true - /@types/yauzl/2.10.0: + /@types/yauzl@2.10.0: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: @@ -3155,7 +3271,7 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin/5.59.1_2utyh6gct5glvuz6qwradubqqa: + /@typescript-eslint/eslint-plugin@5.59.1(@typescript-eslint/parser@5.59.1)(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3167,23 +3283,23 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.0 - '@typescript-eslint/parser': 5.59.1_iacogk7kkaymxepzhgcbytyi7q + '@typescript-eslint/parser': 5.59.1(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/scope-manager': 5.59.1 - '@typescript-eslint/type-utils': 5.59.1_iacogk7kkaymxepzhgcbytyi7q - '@typescript-eslint/utils': 5.59.1_iacogk7kkaymxepzhgcbytyi7q - debug: 4.3.4 + '@typescript-eslint/type-utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.39.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 natural-compare-lite: 1.4.0 semver: 7.3.8 - tsutils: 3.21.0_typescript@5.0.4 + tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.59.1_iacogk7kkaymxepzhgcbytyi7q: + /@typescript-eslint/parser@5.59.1(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3195,15 +3311,15 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.59.1 '@typescript-eslint/types': 5.59.1 - '@typescript-eslint/typescript-estree': 5.59.1_typescript@5.0.4 - debug: 4.3.4 + '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.39.0 typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.59.1: + /@typescript-eslint/scope-manager@5.59.1: resolution: {integrity: sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -3211,7 +3327,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.1 dev: true - /@typescript-eslint/type-utils/5.59.1_iacogk7kkaymxepzhgcbytyi7q: + /@typescript-eslint/type-utils@5.59.1(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3221,22 +3337,22 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.1_typescript@5.0.4 - '@typescript-eslint/utils': 5.59.1_iacogk7kkaymxepzhgcbytyi7q - debug: 4.3.4 + '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.39.0 - tsutils: 3.21.0_typescript@5.0.4 + tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.59.1: + /@typescript-eslint/types@5.59.1: resolution: {integrity: sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.59.1_typescript@5.0.4: + /@typescript-eslint/typescript-estree@5.59.1(typescript@5.0.4): resolution: {integrity: sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3247,28 +3363,28 @@ packages: dependencies: '@typescript-eslint/types': 5.59.1 '@typescript-eslint/visitor-keys': 5.59.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@5.0.4 + tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.59.1_iacogk7kkaymxepzhgcbytyi7q: + /@typescript-eslint/utils@5.59.1(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0_eslint@8.39.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) '@types/json-schema': 7.0.11 '@types/semver': 7.3.12 '@typescript-eslint/scope-manager': 5.59.1 '@typescript-eslint/types': 5.59.1 - '@typescript-eslint/typescript-estree': 5.59.1_typescript@5.0.4 + '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4) eslint: 8.39.0 eslint-scope: 5.1.1 semver: 7.3.8 @@ -3277,7 +3393,7 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys/5.59.1: + /@typescript-eslint/visitor-keys@5.59.1: resolution: {integrity: sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -3285,18 +3401,18 @@ packages: eslint-visitor-keys: 3.4.0 dev: true - /@vitejs/plugin-vue/4.1.0_vite@4.2.2+vue@3.2.47: + /@vitejs/plugin-vue@4.1.0(vite@4.2.2)(vue@3.2.47): resolution: {integrity: sha512-++9JOAFdcXI3lyer9UKUV4rfoQ3T1RN8yDqoCLar86s0xQct5yblxAE+yWgRnU5/0FOlVCpTZpYSBV/bGWrSrQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.2.2 + vite: 4.2.2(@types/node@18.16.0) vue: 3.2.47 dev: true - /@vitest/coverage-c8/0.30.1_vitest@0.30.1: + /@vitest/coverage-c8@0.30.1(vitest@0.30.1): resolution: {integrity: sha512-/Wa3dtSuckpdngAmiCwowaEXXgJkqPrtfvrs9HTB9QoEfNbZWPu4E4cjEn4lJZb4qcGf4fxFtUA2f9DnDNAzBA==} peerDependencies: vitest: '>=0.30.0 <1' @@ -3304,10 +3420,10 @@ packages: c8: 7.13.0 picocolors: 1.0.0 std-env: 3.3.2 - vitest: 0.30.1_6kqxyppp63ueahn2lmwmvatjp4 + vitest: 0.30.1(@vitest/ui@0.30.1)(jsdom@21.1.1) dev: true - /@vitest/expect/0.30.1: + /@vitest/expect@0.30.1: resolution: {integrity: sha512-c3kbEtN8XXJSeN81iDGq29bUzSjQhjES2WR3aColsS4lPGbivwLtas4DNUe0jD9gg/FYGIteqOenfU95EFituw==} dependencies: '@vitest/spy': 0.30.1 @@ -3315,7 +3431,7 @@ packages: chai: 4.3.7 dev: true - /@vitest/runner/0.30.1: + /@vitest/runner@0.30.1: resolution: {integrity: sha512-W62kT/8i0TF1UBCNMRtRMOBWJKRnNyv9RrjIgdUryEe0wNpGZvvwPDLuzYdxvgSckzjp54DSpv1xUbv4BQ0qVA==} dependencies: '@vitest/utils': 0.30.1 @@ -3324,7 +3440,7 @@ packages: pathe: 1.1.0 dev: true - /@vitest/snapshot/0.30.1: + /@vitest/snapshot@0.30.1: resolution: {integrity: sha512-fJZqKrE99zo27uoZA/azgWyWbFvM1rw2APS05yB0JaLwUIg9aUtvvnBf4q7JWhEcAHmSwbrxKFgyBUga6tq9Tw==} dependencies: magic-string: 0.30.0 @@ -3332,13 +3448,13 @@ packages: pretty-format: 27.5.1 dev: true - /@vitest/spy/0.30.1: + /@vitest/spy@0.30.1: resolution: {integrity: sha512-YfJeIf37GvTZe04ZKxzJfnNNuNSmTEGnla2OdL60C8od16f3zOfv9q9K0nNii0NfjDJRt/CVN/POuY5/zTS+BA==} dependencies: tinyspy: 2.1.0 dev: true - /@vitest/ui/0.30.1: + /@vitest/ui@0.30.1: resolution: {integrity: sha512-Izz4ElDmdvX02KImSC2nCJI6CsGo9aETbKqxli55M0rbbPPAMtF0zDcJIqgEP5V6Y+4Ysf6wvsjLbLCTnaBvKw==} dependencies: '@vitest/utils': 0.30.1 @@ -3350,7 +3466,7 @@ packages: sirv: 2.0.2 dev: true - /@vitest/utils/0.30.1: + /@vitest/utils@0.30.1: resolution: {integrity: sha512-/c8Xv2zUVc+rnNt84QF0Y0zkfxnaGhp87K2dYJMLtLOIckPzuxLVzAtFCicGFdB4NeBHNzTRr1tNn7rCtQcWFA==} dependencies: concordance: 5.0.4 @@ -3358,7 +3474,7 @@ packages: pretty-format: 27.5.1 dev: true - /@vue/compat/3.2.47_vue@3.2.47: + /@vue/compat@3.2.47(vue@3.2.47): resolution: {integrity: sha512-spULbnhceN3fIGYRRgq75RPRqsakfUV0tyZ4zTweOB48bWtwHUn677exg8/58uLOBc1F5B5lXTD5qf7epqpTuw==} peerDependencies: vue: 3.2.47 @@ -3369,7 +3485,7 @@ packages: vue: 3.2.47 dev: false - /@vue/compiler-core/3.2.47: + /@vue/compiler-core@3.2.47: resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} dependencies: '@babel/parser': 7.19.1 @@ -3377,13 +3493,13 @@ packages: estree-walker: 2.0.2 source-map: 0.6.1 - /@vue/compiler-dom/3.2.47: + /@vue/compiler-dom@3.2.47: resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==} dependencies: '@vue/compiler-core': 3.2.47 '@vue/shared': 3.2.47 - /@vue/compiler-sfc/3.2.47: + /@vue/compiler-sfc@3.2.47: resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} dependencies: '@babel/parser': 7.19.1 @@ -3397,16 +3513,16 @@ packages: postcss: 8.4.21 source-map: 0.6.1 - /@vue/compiler-ssr/3.2.47: + /@vue/compiler-ssr@3.2.47: resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==} dependencies: '@vue/compiler-dom': 3.2.47 '@vue/shared': 3.2.47 - /@vue/devtools-api/6.5.0: + /@vue/devtools-api@6.5.0: resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} - /@vue/reactivity-transform/3.2.47: + /@vue/reactivity-transform@3.2.47: resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} dependencies: '@babel/parser': 7.19.1 @@ -3415,25 +3531,25 @@ packages: estree-walker: 2.0.2 magic-string: 0.25.9 - /@vue/reactivity/3.2.47: + /@vue/reactivity@3.2.47: resolution: {integrity: sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==} dependencies: '@vue/shared': 3.2.47 - /@vue/runtime-core/3.2.47: + /@vue/runtime-core@3.2.47: resolution: {integrity: sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==} dependencies: '@vue/reactivity': 3.2.47 '@vue/shared': 3.2.47 - /@vue/runtime-dom/3.2.47: + /@vue/runtime-dom@3.2.47: resolution: {integrity: sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==} dependencies: '@vue/runtime-core': 3.2.47 '@vue/shared': 3.2.47 csstype: 2.6.21 - /@vue/server-renderer/3.2.47_vue@3.2.47: + /@vue/server-renderer@3.2.47(vue@3.2.47): resolution: {integrity: sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==} peerDependencies: vue: 3.2.47 @@ -3442,48 +3558,48 @@ packages: '@vue/shared': 3.2.47 vue: 3.2.47 - /@vue/shared/3.2.47: + /@vue/shared@3.2.47: resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} - /@vueuse/core/10.0.2_vue@3.2.47: + /@vueuse/core@10.0.2(vue@3.2.47): resolution: {integrity: sha512-/UGc2cXbxbeIFLDSJyHUjI9QZ4CJJkhiJe9TbKNPSofcWmYhhUgJ+7iw9njXTKu/Xc3Z6UeXVR9fosW1+cyrnQ==} dependencies: '@types/web-bluetooth': 0.0.16 '@vueuse/metadata': 10.0.2 - '@vueuse/shared': 10.0.2_vue@3.2.47 - vue-demi: 0.14.0_vue@3.2.47 + '@vueuse/shared': 10.0.2(vue@3.2.47) + vue-demi: 0.14.0(vue@3.2.47) transitivePeerDependencies: - '@vue/composition-api' - vue dev: true - /@vueuse/metadata/10.0.2: + /@vueuse/metadata@10.0.2: resolution: {integrity: sha512-APSjlABrV+Q74c+FR0kFETvcN9W2pAaT3XF3WwqWUuk4srmVxv7DY4WshZxK2KYk1+MVY0Fus6J1Hk/JXVm6Aw==} dev: true - /@vueuse/shared/10.0.2_vue@3.2.47: + /@vueuse/shared@10.0.2(vue@3.2.47): resolution: {integrity: sha512-7W2l6qZaFvla3zAeEVo8hNHkNRKCezJa3JjZAKv3K4KsevXobHhVNr+RHaOVNK/6ETpFmtqiK+0pMIADbHjjag==} dependencies: - vue-demi: 0.14.0_vue@3.2.47 + vue-demi: 0.14.0(vue@3.2.47) transitivePeerDependencies: - '@vue/composition-api' - vue dev: true - /@wdio/config/7.30.0_typescript@5.0.4: + /@wdio/config@7.30.0(typescript@5.0.4): resolution: {integrity: sha512-/38rol9WCfFTMtXyd/C856/aexxIZnfVvXg7Fw2WXpqZ9qadLA+R4N35S2703n/RByjK/5XAYtHoljtvh3727w==} engines: {node: '>=12.0.0'} dependencies: '@wdio/logger': 7.26.0 - '@wdio/types': 7.26.0_typescript@5.0.4 - '@wdio/utils': 7.26.0_typescript@5.0.4 + '@wdio/types': 7.26.0(typescript@5.0.4) + '@wdio/utils': 7.26.0(typescript@5.0.4) deepmerge: 4.2.2 glob: 8.0.3 transitivePeerDependencies: - typescript dev: true - /@wdio/logger/7.26.0: + /@wdio/logger@7.26.0: resolution: {integrity: sha512-kQj9s5JudAG9qB+zAAcYGPHVfATl2oqKgqj47yjehOQ1zzG33xmtL1ArFbQKWhDG32y1A8sN6b0pIqBEIwgg8Q==} engines: {node: '>=12.0.0'} dependencies: @@ -3493,12 +3609,12 @@ packages: strip-ansi: 6.0.1 dev: true - /@wdio/protocols/7.27.0: + /@wdio/protocols@7.27.0: resolution: {integrity: sha512-hT/U22R5i3HhwPjkaKAG0yd59eaOaZB0eibRj2+esCImkb5Y6rg8FirrlYRxIGFVBl0+xZV0jKHzR5+o097nvg==} engines: {node: '>=12.0.0'} dev: true - /@wdio/types/7.26.0_typescript@5.0.4: + /@wdio/types@7.26.0(typescript@5.0.4): resolution: {integrity: sha512-mOTfWAGQ+iT58iaZhJMwlUkdEn3XEWE4jthysMLXFnSuZ2eaODVAiK31SmlS/eUqgSIaupeGqYUrtCuSNbLefg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3512,37 +3628,37 @@ packages: typescript: 5.0.4 dev: true - /@wdio/utils/7.26.0_typescript@5.0.4: + /@wdio/utils@7.26.0(typescript@5.0.4): resolution: {integrity: sha512-pVq2MPXZAYLkKGKIIHktHejnHqg4TYKoNYSi2EDv+I3GlT8VZKXHazKhci82ov0tD+GdF27+s4DWNDCfGYfBdQ==} engines: {node: '>=12.0.0'} dependencies: '@wdio/logger': 7.26.0 - '@wdio/types': 7.26.0_typescript@5.0.4 + '@wdio/types': 7.26.0(typescript@5.0.4) p-iteration: 1.1.8 transitivePeerDependencies: - typescript dev: true - /@webassemblyjs/ast/1.11.1: + /@webassemblyjs/ast@1.11.1: resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} dependencies: '@webassemblyjs/helper-numbers': 1.11.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.1 dev: true - /@webassemblyjs/floating-point-hex-parser/1.11.1: + /@webassemblyjs/floating-point-hex-parser@1.11.1: resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} dev: true - /@webassemblyjs/helper-api-error/1.11.1: + /@webassemblyjs/helper-api-error@1.11.1: resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} dev: true - /@webassemblyjs/helper-buffer/1.11.1: + /@webassemblyjs/helper-buffer@1.11.1: resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} dev: true - /@webassemblyjs/helper-numbers/1.11.1: + /@webassemblyjs/helper-numbers@1.11.1: resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} dependencies: '@webassemblyjs/floating-point-hex-parser': 1.11.1 @@ -3550,11 +3666,11 @@ packages: '@xtuc/long': 4.2.2 dev: true - /@webassemblyjs/helper-wasm-bytecode/1.11.1: + /@webassemblyjs/helper-wasm-bytecode@1.11.1: resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} dev: true - /@webassemblyjs/helper-wasm-section/1.11.1: + /@webassemblyjs/helper-wasm-section@1.11.1: resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} dependencies: '@webassemblyjs/ast': 1.11.1 @@ -3563,23 +3679,23 @@ packages: '@webassemblyjs/wasm-gen': 1.11.1 dev: true - /@webassemblyjs/ieee754/1.11.1: + /@webassemblyjs/ieee754@1.11.1: resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} dependencies: '@xtuc/ieee754': 1.2.0 dev: true - /@webassemblyjs/leb128/1.11.1: + /@webassemblyjs/leb128@1.11.1: resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} dependencies: '@xtuc/long': 4.2.2 dev: true - /@webassemblyjs/utf8/1.11.1: + /@webassemblyjs/utf8@1.11.1: resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} dev: true - /@webassemblyjs/wasm-edit/1.11.1: + /@webassemblyjs/wasm-edit@1.11.1: resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} dependencies: '@webassemblyjs/ast': 1.11.1 @@ -3592,7 +3708,7 @@ packages: '@webassemblyjs/wast-printer': 1.11.1 dev: true - /@webassemblyjs/wasm-gen/1.11.1: + /@webassemblyjs/wasm-gen@1.11.1: resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} dependencies: '@webassemblyjs/ast': 1.11.1 @@ -3602,7 +3718,7 @@ packages: '@webassemblyjs/utf8': 1.11.1 dev: true - /@webassemblyjs/wasm-opt/1.11.1: + /@webassemblyjs/wasm-opt@1.11.1: resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} dependencies: '@webassemblyjs/ast': 1.11.1 @@ -3611,7 +3727,7 @@ packages: '@webassemblyjs/wasm-parser': 1.11.1 dev: true - /@webassemblyjs/wasm-parser/1.11.1: + /@webassemblyjs/wasm-parser@1.11.1: resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} dependencies: '@webassemblyjs/ast': 1.11.1 @@ -3622,33 +3738,33 @@ packages: '@webassemblyjs/utf8': 1.11.1 dev: true - /@webassemblyjs/wast-printer/1.11.1: + /@webassemblyjs/wast-printer@1.11.1: resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} dependencies: '@webassemblyjs/ast': 1.11.1 '@xtuc/long': 4.2.2 dev: true - /@webpack-cli/configtest/1.2.0_pda42hcaj7d62cr262fr632kue: + /@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.75.0): resolution: {integrity: sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==} peerDependencies: webpack: 4.x.x || 5.x.x webpack-cli: 4.x.x dependencies: - webpack: 5.75.0_webpack-cli@4.10.0 - webpack-cli: 4.10.0_uaydpeuxkjjcxdbyfgk36cjdxi + webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) dev: true - /@webpack-cli/info/1.5.0_webpack-cli@4.10.0: + /@webpack-cli/info@1.5.0(webpack-cli@4.10.0): resolution: {integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==} peerDependencies: webpack-cli: 4.x.x dependencies: envinfo: 7.8.1 - webpack-cli: 4.10.0_uaydpeuxkjjcxdbyfgk36cjdxi + webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) dev: true - /@webpack-cli/serve/1.7.0_ud4agclah7rahur6ntojouq57y: + /@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)(webpack-dev-server@4.11.1): resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==} peerDependencies: webpack-cli: 4.x.x @@ -3657,25 +3773,25 @@ packages: webpack-dev-server: optional: true dependencies: - webpack-cli: 4.10.0_uaydpeuxkjjcxdbyfgk36cjdxi - webpack-dev-server: 4.11.1_pda42hcaj7d62cr262fr632kue + webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) + webpack-dev-server: 4.11.1(webpack-cli@4.10.0)(webpack@5.75.0) dev: true - /@xtuc/ieee754/1.2.0: + /@xtuc/ieee754@1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} dev: true - /@xtuc/long/4.2.2: + /@xtuc/long@4.2.2: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} dev: true - /@zenuml/core/3.0.0: + /@zenuml/core@3.0.0(ts-node@10.9.1): resolution: {integrity: sha512-DLX3vFfrV66X0b2kv8MPy3//l4jSoEGuf/zK2m+4t4CvaQ3rArQgXOc5aywi8pRyF1GmCiqgnG9NMRZ6RfqboA==} engines: {node: '>=12.0.0'} dependencies: '@types/assert': 1.5.6 '@types/ramda': 0.28.25 - '@vue/compat': 3.2.47_vue@3.2.47 + '@vue/compat': 3.2.47(vue@3.2.47) antlr4: 4.12.0 color-string: 1.9.1 dom-to-image-more: 2.16.0 @@ -3687,19 +3803,19 @@ packages: pino: 8.11.0 postcss: 8.4.21 ramda: 0.28.0 - tailwindcss: 3.3.1_postcss@8.4.21 + tailwindcss: 3.3.1(postcss@8.4.21)(ts-node@10.9.1) vue: 3.2.47 - vuex: 4.1.0_vue@3.2.47 + vuex: 4.1.0(vue@3.2.47) transitivePeerDependencies: - ts-node dev: false - /JSONSelect/0.4.0: + /JSONSelect@0.4.0: resolution: {integrity: sha512-VRLR3Su35MH+XV2lrvh9O7qWoug/TUyj9tLDjn9rtpUCNnILLrHjgd/tB0KrhugCxUpj3UqoLqfYb3fLJdIQQQ==} engines: {node: '>=0.4.7'} dev: true - /JSONStream/1.3.5: + /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true dependencies: @@ -3707,25 +3823,25 @@ packages: through: 2.3.8 dev: true - /JSV/4.0.2: + /JSV@4.0.2: resolution: {integrity: sha512-ZJ6wx9xaKJ3yFUhq5/sk82PJMuUyLk277I8mQeyDgCTjGdjWJIvPfaU5LIXaMuaN2UO1X3kZH4+lgphublZUHw==} dev: true - /abab/2.0.6: + /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: true - /abort-controller/3.0.0: + /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 - /abstract-logging/2.0.1: + /abstract-logging@2.0.1: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} dev: true - /accepts/1.3.8: + /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} dependencies: @@ -3733,21 +3849,21 @@ packages: negotiator: 0.6.3 dev: true - /acorn-globals/6.0.0: + /acorn-globals@6.0.0: resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} dependencies: acorn: 7.4.1 acorn-walk: 7.2.0 dev: true - /acorn-globals/7.0.1: + /acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: acorn: 8.8.2 acorn-walk: 8.2.0 dev: true - /acorn-import-assertions/1.8.0_acorn@8.8.0: + /acorn-import-assertions@1.8.0(acorn@8.8.0): resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} peerDependencies: acorn: ^8 @@ -3755,7 +3871,7 @@ packages: acorn: 8.8.0 dev: true - /acorn-jsx/5.3.2_acorn@8.8.2: + /acorn-jsx@5.3.2(acorn@8.8.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3763,50 +3879,48 @@ packages: acorn: 8.8.2 dev: true - /acorn-walk/7.2.0: + /acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} dev: true - /acorn-walk/8.2.0: + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - dev: true - /acorn/7.4.1: + /acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /acorn/8.8.0: + /acorn@8.8.0: resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} engines: {node: '>=0.4.0'} hasBin: true - dev: true - /acorn/8.8.1: + /acorn@8.8.1: resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /acorn/8.8.2: + /acorn@8.8.2: resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /agent-base/6.0.2: + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: true - /aggregate-error/3.1.0: + /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} dependencies: @@ -3814,7 +3928,7 @@ packages: indent-string: 4.0.0 dev: true - /aggregate-error/4.0.1: + /aggregate-error@4.0.1: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} engines: {node: '>=12'} dependencies: @@ -3822,7 +3936,7 @@ packages: indent-string: 5.0.0 dev: true - /ajv-formats/2.1.1_ajv@8.11.0: + /ajv-formats@2.1.1(ajv@8.11.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: ajv: ^8.0.0 @@ -3833,7 +3947,7 @@ packages: ajv: 8.11.0 dev: true - /ajv-keywords/3.5.2_ajv@6.12.6: + /ajv-keywords@3.5.2(ajv@6.12.6): resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: ajv: ^6.9.1 @@ -3841,7 +3955,7 @@ packages: ajv: 6.12.6 dev: true - /ajv-keywords/5.1.0_ajv@8.11.0: + /ajv-keywords@5.1.0(ajv@8.11.0): resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} peerDependencies: ajv: ^8.8.2 @@ -3850,7 +3964,7 @@ packages: fast-deep-equal: 3.1.3 dev: true - /ajv/6.12.6: + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 @@ -3859,7 +3973,7 @@ packages: uri-js: 4.4.1 dev: true - /ajv/8.11.0: + /ajv@8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} dependencies: fast-deep-equal: 3.1.3 @@ -3868,7 +3982,7 @@ packages: uri-js: 4.4.1 dev: true - /algoliasearch/4.14.2: + /algoliasearch@4.14.2: resolution: {integrity: sha512-ngbEQonGEmf8dyEh5f+uOIihv4176dgbuOZspiuhmTTBRBuzWu3KCGHre6uHj5YyuC7pNvQGzB6ZNJyZi0z+Sg==} dependencies: '@algolia/cache-browser-local-storage': 4.14.2 @@ -3887,241 +4001,240 @@ packages: '@algolia/transporter': 4.14.2 dev: true - /amdefine/1.0.1: + /amdefine@1.0.1: resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} engines: {node: '>=0.4.2'} dev: true optional: true - /ansi-align/3.0.1: + /ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: string-width: 4.2.3 dev: true - /ansi-colors/4.1.3: + /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} dev: true - /ansi-escapes/4.3.2: + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 dev: true - /ansi-html-community/0.0.8: + /ansi-html-community@0.0.8: resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} engines: {'0': node >= 0.8.0} hasBin: true dev: true - /ansi-regex/2.1.1: + /ansi-regex@2.1.1: resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} dev: true - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: true - /ansi-regex/6.0.1: + /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} dev: true - /ansi-sequence-parser/1.1.0: + /ansi-sequence-parser@1.1.0: resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} dev: true - /ansi-styles/2.2.1: + /ansi-styles@2.2.1: resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} engines: {node: '>=0.10.0'} dev: true - /ansi-styles/3.2.1: + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 dev: true - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 dev: true - /ansi-styles/5.2.0: + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} dev: true - /ansi-styles/6.1.1: + /ansi-styles@6.1.1: resolution: {integrity: sha512-qDOv24WjnYuL+wbwHdlsYZFy+cgPtrYw0Tn7GLORicQp9BkQLzrgI3Pm4VyR9ERZ41YTn7KlMPuL1n05WdZvmg==} engines: {node: '>=12'} dev: true - /antlr4/4.12.0: + /antlr4@4.12.0: resolution: {integrity: sha512-23iB5IzXJZRZeK9TigzUyrNc9pSmNqAerJRBcNq1ETrmttMWRgaYZzC561IgEO3ygKsDJTYDTozABXa4b/fTQQ==} engines: {node: '>=16'} dev: false - /any-promise/1.3.0: + /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: false - /anymatch/3.1.2: + /anymatch@3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - /app-path/3.3.0: + /app-path@3.3.0: resolution: {integrity: sha512-EAgEXkdcxH1cgEePOSsmUtw9ItPl0KTxnh/pj9ZbhvbKbij9x0oX6PWpGnorDr0DS5AosLgoa5n3T/hZmKQpYA==} engines: {node: '>=8'} dependencies: execa: 1.0.0 dev: true - /arch/2.2.0: + /arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true - /archy/1.0.0: + /archy@1.0.0: resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} dev: true - /are-docs-informative/0.0.2: + /are-docs-informative@0.0.2: resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} engines: {node: '>=14'} dev: true - /arg/4.1.3: + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true - /arg/5.0.2: + /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - /argparse/1.0.10: + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 dev: true - /argparse/2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /array-flatten/1.1.1: + /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: true - /array-flatten/2.1.2: + /array-flatten@2.1.2: resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} dev: true - /array-ify/1.0.0: + /array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true - /array-timsort/1.0.3: + /array-timsort@1.0.3: resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} dev: true - /array-union/2.1.0: + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: true - /arrify/1.0.1: + /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} dev: true - /arrify/3.0.0: + /arrify@3.0.0: resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} engines: {node: '>=12'} dev: true - /asn1/0.2.6: + /asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} dependencies: safer-buffer: 2.1.2 dev: true - /assert-plus/1.0.0: + /assert-plus@1.0.0: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} dev: true - /assertion-error/1.1.0: + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /ast-types/0.13.4: + /ast-types@0.13.4: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} dependencies: tslib: 2.5.0 dev: true - /astral-regex/2.0.0: + /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} dev: true - /async/3.2.4: + /async@3.2.4: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} dev: true - /asynckit/0.4.0: + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /at-least-node/1.0.0: + /at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} dev: true - /atomic-sleep/1.0.0: + /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} - /avvio/7.2.5: + /avvio@7.2.5: resolution: {integrity: sha512-AOhBxyLVdpOad3TujtC9kL/9r3HnTkxwQ5ggOsYrvvZP1cCFvzHWJd5XxZDFuTn+IN8vkKSG5SEJrd27vCSbeA==} dependencies: archy: 1.0.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) fastq: 1.13.0 queue-microtask: 1.2.3 transitivePeerDependencies: - supports-color dev: true - /aws-sign2/0.7.0: + /aws-sign2@0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} dev: true - /aws4/1.11.0: + /aws4@1.11.0: resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} dev: true - /axios/0.27.2_debug@4.3.4: + /axios@0.27.2(debug@4.3.4): resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} dependencies: - follow-redirects: 1.15.2 + follow-redirects: 1.15.2(debug@4.3.4) form-data: 4.0.0 transitivePeerDependencies: - debug dev: true - /babel-jest/29.5.0_@babel+core@7.12.3: + /babel-jest@29.5.0(@babel/core@7.12.3): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -4131,7 +4244,7 @@ packages: '@jest/transform': 29.5.0 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0_@babel+core@7.12.3 + babel-preset-jest: 29.5.0(@babel/core@7.12.3) chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -4139,7 +4252,7 @@ packages: - supports-color dev: true - /babel-plugin-istanbul/6.1.1: + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: @@ -4152,7 +4265,7 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist/29.5.0: + /babel-plugin-jest-hoist@29.5.0: resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4162,27 +4275,27 @@ packages: '@types/babel__traverse': 7.18.2 dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.12.3: + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.12.3): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.12.3 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.3 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.12.3 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.12.3 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.3 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.3 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.12.3 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.12.3) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.12.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.12.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.12.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.12.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.12.3) dev: true - /babel-preset-jest/29.5.0_@babel+core@7.12.3: + /babel-preset-jest@29.5.0(@babel/core@7.12.3): resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -4190,61 +4303,61 @@ packages: dependencies: '@babel/core': 7.12.3 babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.12.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.12.3) dev: true - /bail/2.0.2: + /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} dev: true - /balanced-match/1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /base64-js/1.5.1: + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - /batch/0.6.1: + /batch@0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} dev: true - /bcrypt-pbkdf/1.0.2: + /bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} dependencies: tweetnacl: 0.14.5 dev: true - /binary-extensions/2.2.0: + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - /binary-searching/2.0.5: + /binary-searching@2.0.5: resolution: {integrity: sha512-v4N2l3RxL+m4zDxyxz3Ne2aTmiPn8ZUpKFpdPtO+ItW1NcTCXA7JeHG5GMBSvoKSkQZ9ycS+EouDVxYB9ufKWA==} dev: true - /binary/0.3.0: + /binary@0.3.0: resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==} dependencies: buffers: 0.1.1 chainsaw: 0.1.0 dev: true - /blob-util/2.0.2: + /blob-util@2.0.2: resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} dev: true - /bluebird/3.7.2: + /bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} dev: true - /blueimp-md5/2.19.0: + /blueimp-md5@2.19.0: resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} dev: true - /bmpimagejs/1.0.4: + /bmpimagejs@1.0.4: resolution: {integrity: sha512-21oKU7kbRt2OgOOj7rdiNr/yznDNUQ585plxR00rsmECcZr+6O1oCwB8OIoSHk/bDhbG8mFXIdeQuCPHgZ6QBw==} dev: true - /body-parser/1.20.1: + /body-parser@1.20.1: resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: @@ -4264,11 +4377,11 @@ packages: - supports-color dev: true - /body-scroll-lock/4.0.0-beta.0: + /body-scroll-lock@4.0.0-beta.0: resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} dev: true - /bonjour-service/1.0.14: + /bonjour-service@1.0.14: resolution: {integrity: sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==} dependencies: array-flatten: 2.1.2 @@ -4277,7 +4390,7 @@ packages: multicast-dns: 7.2.5 dev: true - /boxen/5.1.2: + /boxen@5.1.2: resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} engines: {node: '>=10'} dependencies: @@ -4291,29 +4404,29 @@ packages: wrap-ansi: 7.0.0 dev: true - /brace-expansion/1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion/2.0.1: + /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 dev: true - /braces/3.0.2: + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - /browser-process-hrtime/1.0.0: + /browser-process-hrtime@1.0.0: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} dev: true - /browserslist/4.21.4: + /browserslist@4.21.4: resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -4321,58 +4434,58 @@ packages: caniuse-lite: 1.0.30001431 electron-to-chromium: 1.4.284 node-releases: 2.0.6 - update-browserslist-db: 1.0.10_browserslist@4.21.4 + update-browserslist-db: 1.0.10(browserslist@4.21.4) dev: true - /bser/2.1.1: + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 dev: true - /buffer-crc32/0.2.13: + /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} dev: true - /buffer-from/1.1.2: + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /buffer/5.7.1: + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: true - /buffer/6.0.3: + /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: false - /buffers/0.1.1: + /buffers@0.1.1: resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==} engines: {node: '>=0.2.0'} dev: true - /builtin-modules/3.3.0: + /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} dev: true - /bytes/3.0.0: + /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} dev: true - /bytes/3.1.2: + /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} dev: true - /c8/7.13.0: + /c8@7.13.0: resolution: {integrity: sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==} engines: {node: '>=10.12.0'} hasBin: true @@ -4391,17 +4504,17 @@ packages: yargs-parser: 20.2.9 dev: true - /cac/6.7.14: + /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} dev: true - /cacheable-lookup/5.0.4: + /cacheable-lookup@5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} dev: true - /cacheable-request/7.0.2: + /cacheable-request@7.0.2: resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==} engines: {node: '>=8'} dependencies: @@ -4414,29 +4527,29 @@ packages: responselike: 2.0.1 dev: true - /cachedir/2.3.0: + /cachedir@2.3.0: resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} engines: {node: '>=6'} dev: true - /call-bind/1.0.2: + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.3 dev: true - /callsites/3.1.0: + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true - /camelcase-css/2.0.1: + /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} dev: false - /camelcase-keys/6.2.2: + /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} dependencies: @@ -4445,7 +4558,7 @@ packages: quick-lru: 4.0.1 dev: true - /camelcase-keys/7.0.2: + /camelcase-keys@7.0.2: resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} engines: {node: '>=12'} dependencies: @@ -4455,29 +4568,29 @@ packages: type-fest: 1.4.0 dev: true - /camelcase/5.3.1: + /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} dev: true - /camelcase/6.3.0: + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001431: + /caniuse-lite@1.0.30001431: resolution: {integrity: sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==} dev: true - /caseless/0.12.0: + /caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} dev: true - /ccount/2.0.1: + /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: true - /chai/4.3.7: + /chai@4.3.7: resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} dependencies: @@ -4490,13 +4603,13 @@ packages: type-detect: 4.0.8 dev: true - /chainsaw/0.1.0: + /chainsaw@0.1.0: resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} dependencies: traverse: 0.3.9 dev: true - /chalk/1.1.3: + /chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} engines: {node: '>=0.10.0'} dependencies: @@ -4507,7 +4620,7 @@ packages: supports-color: 2.0.0 dev: true - /chalk/2.4.2: + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: @@ -4516,7 +4629,7 @@ packages: supports-color: 5.5.0 dev: true - /chalk/3.0.0: + /chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} dependencies: @@ -4524,7 +4637,7 @@ packages: supports-color: 7.2.0 dev: true - /chalk/4.1.2: + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: @@ -4532,42 +4645,42 @@ packages: supports-color: 7.2.0 dev: true - /chalk/5.2.0: + /chalk@5.2.0: resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true - /char-regex/1.0.2: + /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} dev: true - /character-entities-legacy/1.1.4: + /character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} dev: true - /character-entities/1.2.4: + /character-entities@1.2.4: resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} dev: true - /character-entities/2.0.2: + /character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} dev: true - /character-reference-invalid/1.1.4: + /character-reference-invalid@1.1.4: resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} dev: true - /check-error/1.0.2: + /check-error@1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true - /check-more-types/2.24.0: + /check-more-types@2.24.0: resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} engines: {node: '>= 0.8.0'} dev: true - /chokidar/3.5.3: + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: @@ -4581,54 +4694,54 @@ packages: optionalDependencies: fsevents: 2.3.2 - /chrome-trace-event/1.0.3: + /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} dev: true - /ci-info/3.6.2: + /ci-info@3.6.2: resolution: {integrity: sha512-lVZdhvbEudris15CLytp2u6Y0p5EKfztae9Fqa189MfNmln9F33XuH69v5fvNfiRN5/0eAUz2yJL3mo+nhaRKg==} engines: {node: '>=8'} dev: true - /cjs-module-lexer/1.2.2: + /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true - /cjson/0.3.0: + /cjson@0.3.0: resolution: {integrity: sha512-bBRQcCIHzI1IVH59fR0bwGrFmi3Btb/JNwM/n401i1DnYgWndpsUBiQRAddLflkZage20A2d25OAWZZk0vBRlA==} engines: {node: '>= 0.3.0'} dependencies: jsonlint: 1.6.0 dev: true - /clap/3.1.1: + /clap@3.1.1: resolution: {integrity: sha512-vp42956Ax06WwaaheYEqEOgXZ3VKJxgccZ0gJL0HpyiupkIS9RVJFo5eDU1BPeQAOqz+cclndZg4DCqG1sJReQ==} engines: {node: ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} dependencies: ansi-colors: 4.1.3 dev: true - /clean-regexp/1.0.0: + /clean-regexp@1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} dependencies: escape-string-regexp: 1.0.5 dev: true - /clean-stack/2.2.0: + /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} dev: true - /clean-stack/4.2.0: + /clean-stack@4.2.0: resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} engines: {node: '>=12'} dependencies: escape-string-regexp: 5.0.0 dev: true - /clear-module/4.1.2: + /clear-module@4.1.2: resolution: {integrity: sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==} engines: {node: '>=8'} dependencies: @@ -4636,19 +4749,19 @@ packages: resolve-from: 5.0.0 dev: true - /cli-boxes/2.2.1: + /cli-boxes@2.2.1: resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} engines: {node: '>=6'} dev: true - /cli-cursor/3.1.0: + /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 dev: true - /cli-table3/0.6.3: + /cli-table3@0.6.3: resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} engines: {node: 10.* || >= 12.*} dependencies: @@ -4657,7 +4770,7 @@ packages: '@colors/colors': 1.5.0 dev: true - /cli-truncate/2.1.0: + /cli-truncate@2.1.0: resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} engines: {node: '>=8'} dependencies: @@ -4665,7 +4778,7 @@ packages: string-width: 4.2.3 dev: true - /cli-truncate/3.1.0: + /cli-truncate@3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -4673,7 +4786,7 @@ packages: string-width: 5.1.2 dev: true - /cliui/7.0.4: + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 @@ -4681,7 +4794,7 @@ packages: wrap-ansi: 7.0.0 dev: true - /cliui/8.0.1: + /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} dependencies: @@ -4690,7 +4803,7 @@ packages: wrap-ansi: 7.0.0 dev: true - /clone-deep/4.0.1: + /clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} dependencies: @@ -4699,93 +4812,93 @@ packages: shallow-clone: 3.0.1 dev: true - /clone-response/1.0.3: + /clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} dependencies: mimic-response: 1.0.1 dev: true - /co/4.6.0: + /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true - /collect-v8-coverage/1.0.1: + /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} dev: true - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 dev: true - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 dev: true - /color-name/1.1.3: + /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: true - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /color-string/1.9.1: + /color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 dev: false - /colorette/2.0.19: + /colorette@2.0.19: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} dev: true - /colors/0.5.1: + /colors@0.5.1: resolution: {integrity: sha512-XjsuUwpDeY98+yz959OlUK6m7mLBM+1MEG5oaenfuQnNnrQk1WvtcvFgN3FNDP3f2NmZ211t0mNEfSEN1h0eIg==} engines: {node: '>=0.1.90'} dev: true - /combined-stream/1.0.8: + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 dev: true - /commander/10.0.1: + /commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} dev: true - /commander/2.20.3: + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true - /commander/4.1.1: + /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} dev: false - /commander/5.1.0: + /commander@5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} dev: true - /commander/6.2.1: + /commander@6.2.1: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} dev: true - /commander/7.2.0: + /commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} - /comment-json/4.2.3: + /comment-json@4.2.3: resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} engines: {node: '>= 6'} dependencies: @@ -4796,31 +4909,31 @@ packages: repeat-string: 1.6.1 dev: true - /comment-parser/1.3.1: + /comment-parser@1.3.1: resolution: {integrity: sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==} engines: {node: '>= 12.0.0'} dev: true - /common-tags/1.8.2: + /common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} dev: true - /compare-func/2.0.0: + /compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} dependencies: array-ify: 1.0.0 dot-prop: 5.3.0 dev: true - /compressible/2.0.18: + /compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: true - /compression/1.7.4: + /compression@1.7.4: resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -4835,10 +4948,10 @@ packages: - supports-color dev: true - /concat-map/0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /concordance/5.0.4: + /concordance@5.0.4: resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} dependencies: @@ -4852,7 +4965,7 @@ packages: well-known-symbols: 2.0.0 dev: true - /concurrently/8.0.1: + /concurrently@8.0.1: resolution: {integrity: sha512-Sh8bGQMEL0TAmAm2meAXMjcASHZa7V0xXQVDBLknCPa9TPtkY9yYs+0cnGGgfdkW0SV1Mlg+hVGfXcoI8d3MJA==} engines: {node: ^14.13.0 || >=16.0.0} hasBin: true @@ -4868,7 +4981,7 @@ packages: yargs: 17.7.1 dev: true - /configstore/5.0.1: + /configstore@5.0.1: resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} engines: {node: '>=8'} dependencies: @@ -4880,24 +4993,24 @@ packages: xdg-basedir: 4.0.0 dev: true - /connect-history-api-fallback/2.0.0: + /connect-history-api-fallback@2.0.0: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} dev: true - /content-disposition/0.5.4: + /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} dependencies: safe-buffer: 5.2.1 dev: true - /content-type/1.0.4: + /content-type@1.0.4: resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} engines: {node: '>= 0.6'} dev: true - /conventional-changelog-angular/5.0.13: + /conventional-changelog-angular@5.0.13: resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} engines: {node: '>=10'} dependencies: @@ -4905,7 +5018,7 @@ packages: q: 1.5.1 dev: true - /conventional-changelog-conventionalcommits/5.0.0: + /conventional-changelog-conventionalcommits@5.0.0: resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==} engines: {node: '>=10'} dependencies: @@ -4914,7 +5027,7 @@ packages: q: 1.5.1 dev: true - /conventional-commits-parser/3.2.4: + /conventional-commits-parser@3.2.4: resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==} engines: {node: '>=10'} hasBin: true @@ -4927,34 +5040,34 @@ packages: through2: 4.0.2 dev: true - /convert-source-map/1.8.0: + /convert-source-map@1.8.0: resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} dependencies: safe-buffer: 5.1.2 dev: true - /convert-source-map/2.0.0: + /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true - /cookie-signature/1.0.6: + /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: true - /cookie/0.5.0: + /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} dev: true - /core-util-is/1.0.2: + /core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} dev: true - /core-util-is/1.0.3: + /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cors/2.8.5: + /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} dependencies: @@ -4962,19 +5075,19 @@ packages: vary: 1.1.2 dev: true - /cose-base/1.0.3: + /cose-base@1.0.3: resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} dependencies: layout-base: 1.0.2 dev: false - /cose-base/2.1.0: + /cose-base@2.1.0: resolution: {integrity: sha512-HTMm07dhxq1dIPGWwpiVrIk9n+DH7KYmqWA786mLe8jDS+1ZjGtJGIIsJVKoseZXS6/FxiUWCJ2B7XzqUCuhPw==} dependencies: layout-base: 2.0.1 dev: false - /cosmiconfig-typescript-loader/4.1.0_xwyayzgqs4yw5z7irzbqmvmbvy: + /cosmiconfig-typescript-loader@4.1.0(@types/node@18.16.0)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-HbWIuR5O+XO5Oj9SZ5bzgrD4nN+rfhrm2PMb0FVx+t+XIvC45n8F0oTNnztXtspWGw0i2IzHaUWFD5LzV1JB4A==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4985,11 +5098,11 @@ packages: dependencies: '@types/node': 18.16.0 cosmiconfig: 8.0.0 - ts-node: 10.9.1_gfpyv5b3h2oguybx3lu7z4el7a + ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) typescript: 5.0.4 dev: true - /cosmiconfig/8.0.0: + /cosmiconfig@8.0.0: resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} engines: {node: '>=14'} dependencies: @@ -4999,7 +5112,7 @@ packages: path-type: 4.0.0 dev: true - /coveralls/3.1.1: + /coveralls@3.1.1: resolution: {integrity: sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==} engines: {node: '>=6'} hasBin: true @@ -5011,7 +5124,7 @@ packages: request: 2.88.2 dev: true - /cp-file/9.1.0: + /cp-file@9.1.0: resolution: {integrity: sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA==} engines: {node: '>=10'} dependencies: @@ -5021,7 +5134,7 @@ packages: p-event: 4.2.0 dev: true - /cpy-cli/4.2.0: + /cpy-cli@4.2.0: resolution: {integrity: sha512-b04b+cbdr29CdpREPKw/itrfjO43Ty0Aj7wRM6M6LoE4GJxZJCk9Xp+Eu1IqztkKh3LxIBt1tDplENsa6KYprg==} engines: {node: '>=12.20'} hasBin: true @@ -5030,7 +5143,7 @@ packages: meow: 10.1.5 dev: true - /cpy/9.0.1: + /cpy@9.0.1: resolution: {integrity: sha512-D9U0DR5FjTCN3oMTcFGktanHnAG5l020yvOCR1zKILmAyPP7I/9pl6NFgRbDcmSENtbK1sQLBz1p9HIOlroiNg==} engines: {node: ^12.20.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -5044,11 +5157,10 @@ packages: p-map: 5.5.0 dev: true - /create-require/1.1.1: + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true - /cross-spawn/6.0.5: + /cross-spawn@6.0.5: resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} engines: {node: '>=4.8'} dependencies: @@ -5059,7 +5171,7 @@ packages: which: 1.3.1 dev: true - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -5068,12 +5180,12 @@ packages: which: 2.0.2 dev: true - /crypto-random-string/2.0.0: + /crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} dev: true - /cspell-dictionary/6.31.1: + /cspell-dictionary@6.31.1: resolution: {integrity: sha512-7+K7aQGarqbpucky26wled7QSCJeg6VkLUWS+hLjyf0Cqc9Zew5xsLa4QjReExWUJx+a97jbiflITZNuWxgMrg==} engines: {node: '>=14'} dependencies: @@ -5084,7 +5196,7 @@ packages: gensequence: 5.0.2 dev: true - /cspell-gitignore/6.31.1: + /cspell-gitignore@6.31.1: resolution: {integrity: sha512-PAcmjN6X89Z8qgjem6HYb+VmvVtKuc+fWs4sk21+jv2MiLk23Bkp+8slSaIDVR//58fxJkMx17PHyo2cDO/69A==} engines: {node: '>=14'} hasBin: true @@ -5093,14 +5205,14 @@ packages: find-up: 5.0.0 dev: true - /cspell-glob/6.31.1: + /cspell-glob@6.31.1: resolution: {integrity: sha512-ygEmr5hgE4QtO5+L3/ihfMKBhPipbapfS22ilksFSChKMc15Regds0z+z/1ZBoe+OFAPneQfIuBxMwQ/fB00GQ==} engines: {node: '>=14'} dependencies: micromatch: 4.0.5 dev: true - /cspell-grammar/6.31.1: + /cspell-grammar@6.31.1: resolution: {integrity: sha512-AsRVP0idcNFVSb9+p9XjMumFj3BUV67WIPWApaAzJl/dYyiIygQObRE+si0/QtFWGNw873b7hNhWZiKjqIdoaQ==} engines: {node: '>=14'} hasBin: true @@ -5109,17 +5221,17 @@ packages: '@cspell/cspell-types': 6.31.1 dev: true - /cspell-io/6.31.1: + /cspell-io@6.31.1: resolution: {integrity: sha512-deZcpvTYY/NmLfOdOtzcm+nDvJZozKmj4TY3pPpX0HquPX0A/w42bFRT/zZNmRslFl8vvrCZZUog7SOc6ha3uA==} engines: {node: '>=14'} dependencies: '@cspell/cspell-service-bus': 6.31.1 - node-fetch: 2.6.9 + node-fetch: 2.6.9(encoding@0.1.13) transitivePeerDependencies: - encoding dev: true - /cspell-lib/6.31.1: + /cspell-lib@6.31.1: resolution: {integrity: sha512-KgSiulbLExY+z2jGwkO77+aAkyugsPAw7y07j3hTQLpd+0esPCZqrmbo2ItnkvkDNd/c34PqQCr7/044/rz8gw==} engines: {node: '>=14.6'} dependencies: @@ -5148,7 +5260,7 @@ packages: - encoding dev: true - /cspell-trie-lib/6.31.1: + /cspell-trie-lib@6.31.1: resolution: {integrity: sha512-MtYh7s4Sbr1rKT31P2BK6KY+YfOy3dWsuusq9HnqCXmq6aZ1HyFgjH/9p9uvqGi/TboMqn1KOV8nifhXK3l3jg==} engines: {node: '>=14'} dependencies: @@ -5157,7 +5269,7 @@ packages: gensequence: 5.0.2 dev: true - /cspell/6.31.1: + /cspell@6.31.1: resolution: {integrity: sha512-gyCtpkOpwI/TGibbtIgMBFnAUUp2hnYdvW/9Ky4RcneHtLH0+V/jUEbZD8HbRKz0GVZ6mhKWbNRSEyP9p3Cejw==} engines: {node: '>=14'} hasBin: true @@ -5182,7 +5294,7 @@ packages: - encoding dev: true - /css-tree/2.3.1: + /css-tree@2.3.1: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} dependencies: @@ -5190,35 +5302,35 @@ packages: source-map-js: 1.0.2 dev: true - /cssesc/3.0.0: + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true dev: false - /cssom/0.3.8: + /cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true - /cssom/0.5.0: + /cssom@0.5.0: resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} dev: true - /cssstyle/2.3.0: + /cssstyle@2.3.0: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} dependencies: cssom: 0.3.8 dev: true - /cssstyle/3.0.0: + /cssstyle@3.0.0: resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} engines: {node: '>=14'} dependencies: rrweb-cssom: 0.6.0 dev: true - /csstree-validator/3.0.0: + /csstree-validator@3.0.0: resolution: {integrity: sha512-Y5OSq3wI0Xz6L7DCgJQtQ97U+v99SkX9r663VjpvUMJPhEr0A149OxiAGqcnokB5bt81irgnMudspBzujzqn0w==} engines: {node: ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} hasBin: true @@ -5228,14 +5340,14 @@ packages: resolve: 1.22.1 dev: true - /csstype/2.6.21: + /csstype@2.6.21: resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} - /csstype/3.1.2: + /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} dev: false - /cypress-image-snapshot/4.0.1_gcodpydjfwpsuqvmhecw3qmmoa: + /cypress-image-snapshot@4.0.1(cypress@12.10.0)(jest@29.5.0): resolution: {integrity: sha512-PBpnhX/XItlx3/DAk5ozsXQHUi72exybBNH5Mpqj1DVmjq+S5Jd9WE5CRa4q5q0zuMZb2V2VpXHth6MjFpgj9Q==} engines: {node: '>=8'} peerDependencies: @@ -5245,21 +5357,21 @@ packages: cypress: 12.10.0 fs-extra: 7.0.1 glob: 7.2.3 - jest-image-snapshot: 4.2.0_jest@29.5.0 + jest-image-snapshot: 4.2.0(jest@29.5.0) pkg-dir: 3.0.0 term-img: 4.1.0 transitivePeerDependencies: - jest dev: true - /cypress/12.10.0: + /cypress@12.10.0: resolution: {integrity: sha512-Y0wPc221xKKW1/4iAFCphkrG2jNR4MjOne3iGn4mcuCaE7Y5EtXL83N8BzRsAht7GYfWVjJ/UeTqEdDKHz39HQ==} engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} hasBin: true requiresBuild: true dependencies: '@cypress/request': 2.88.10 - '@cypress/xvfb': 1.2.4_supports-color@8.1.1 + '@cypress/xvfb': 1.2.4(supports-color@8.1.1) '@types/node': 14.18.29 '@types/sinonjs__fake-timers': 8.1.1 '@types/sizzle': 2.3.3 @@ -5275,19 +5387,19 @@ packages: commander: 6.2.1 common-tags: 1.8.2 dayjs: 1.11.7 - debug: 4.3.4_supports-color@8.1.1 + debug: 4.3.4(supports-color@8.1.1) enquirer: 2.3.6 eventemitter2: 6.4.7 execa: 4.1.0 executable: 4.1.1 - extract-zip: 2.0.1_supports-color@8.1.1 + extract-zip: 2.0.1(supports-color@8.1.1) figures: 3.2.0 fs-extra: 9.1.0 getos: 3.2.1 is-ci: 3.0.1 is-installed-globally: 0.4.0 lazy-ass: 1.6.0 - listr2: 3.14.0_enquirer@2.3.6 + listr2: 3.14.0(enquirer@2.3.6) lodash: 4.17.21 log-symbols: 4.1.0 minimist: 1.2.8 @@ -5302,7 +5414,7 @@ packages: yauzl: 2.10.0 dev: true - /cytoscape-cose-bilkent/4.1.0_cytoscape@3.23.0: + /cytoscape-cose-bilkent@4.1.0(cytoscape@3.23.0): resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} peerDependencies: cytoscape: ^3.2.0 @@ -5311,7 +5423,7 @@ packages: cytoscape: 3.23.0 dev: false - /cytoscape-fcose/2.1.0_cytoscape@3.23.0: + /cytoscape-fcose@2.1.0(cytoscape@3.23.0): resolution: {integrity: sha512-Q3apPl66jf8/2sMsrCjNP247nbDkyIPjA9g5iPMMWNLZgP3/mn9aryF7EFY/oRPEpv7bKJ4jYmCoU5r5/qAc1Q==} peerDependencies: cytoscape: ^3.2.0 @@ -5320,7 +5432,7 @@ packages: cytoscape: 3.23.0 dev: false - /cytoscape/3.23.0: + /cytoscape@3.23.0: resolution: {integrity: sha512-gRZqJj/1kiAVPkrVFvz/GccxsXhF3Qwpptl32gKKypO4IlqnKBjTOu+HbXtEggSGzC5KCaHp3/F7GgENrtsFkA==} engines: {node: '>=0.10'} dependencies: @@ -5328,19 +5440,19 @@ packages: lodash: 4.17.21 dev: false - /d3-array/3.2.0: + /d3-array@3.2.0: resolution: {integrity: sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==} engines: {node: '>=12'} dependencies: internmap: 2.0.3 dev: false - /d3-axis/3.0.0: + /d3-axis@3.0.0: resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} engines: {node: '>=12'} dev: false - /d3-brush/3.0.0: + /d3-brush@3.0.0: resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} engines: {node: '>=12'} dependencies: @@ -5348,41 +5460,41 @@ packages: d3-drag: 3.0.0 d3-interpolate: 3.0.1 d3-selection: 3.0.0 - d3-transition: 3.0.1_d3-selection@3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) dev: false - /d3-chord/3.0.1: + /d3-chord@3.0.1: resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} engines: {node: '>=12'} dependencies: d3-path: 3.0.1 dev: false - /d3-color/3.1.0: + /d3-color@3.1.0: resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} engines: {node: '>=12'} dev: false - /d3-contour/4.0.0: + /d3-contour@4.0.0: resolution: {integrity: sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==} engines: {node: '>=12'} dependencies: d3-array: 3.2.0 dev: false - /d3-delaunay/6.0.2: + /d3-delaunay@6.0.2: resolution: {integrity: sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==} engines: {node: '>=12'} dependencies: delaunator: 5.0.0 dev: false - /d3-dispatch/3.0.1: + /d3-dispatch@3.0.1: resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} engines: {node: '>=12'} dev: false - /d3-drag/3.0.0: + /d3-drag@3.0.0: resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} engines: {node: '>=12'} dependencies: @@ -5390,7 +5502,7 @@ packages: d3-selection: 3.0.0 dev: false - /d3-dsv/3.0.1: + /d3-dsv@3.0.1: resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} engines: {node: '>=12'} hasBin: true @@ -5400,19 +5512,19 @@ packages: rw: 1.3.3 dev: false - /d3-ease/3.0.1: + /d3-ease@3.0.1: resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} engines: {node: '>=12'} dev: false - /d3-fetch/3.0.1: + /d3-fetch@3.0.1: resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} engines: {node: '>=12'} dependencies: d3-dsv: 3.0.1 dev: false - /d3-force/3.0.0: + /d3-force@3.0.0: resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} engines: {node: '>=12'} dependencies: @@ -5421,51 +5533,51 @@ packages: d3-timer: 3.0.1 dev: false - /d3-format/3.1.0: + /d3-format@3.1.0: resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} engines: {node: '>=12'} dev: false - /d3-geo/3.0.1: + /d3-geo@3.0.1: resolution: {integrity: sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==} engines: {node: '>=12'} dependencies: d3-array: 3.2.0 dev: false - /d3-hierarchy/3.1.2: + /d3-hierarchy@3.1.2: resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} engines: {node: '>=12'} dev: false - /d3-interpolate/3.0.1: + /d3-interpolate@3.0.1: resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} engines: {node: '>=12'} dependencies: d3-color: 3.1.0 dev: false - /d3-path/3.0.1: + /d3-path@3.0.1: resolution: {integrity: sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==} engines: {node: '>=12'} dev: false - /d3-polygon/3.0.1: + /d3-polygon@3.0.1: resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} engines: {node: '>=12'} dev: false - /d3-quadtree/3.0.1: + /d3-quadtree@3.0.1: resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} engines: {node: '>=12'} dev: false - /d3-random/3.0.1: + /d3-random@3.0.1: resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} engines: {node: '>=12'} dev: false - /d3-scale-chromatic/3.0.0: + /d3-scale-chromatic@3.0.0: resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} engines: {node: '>=12'} dependencies: @@ -5473,7 +5585,7 @@ packages: d3-interpolate: 3.0.1 dev: false - /d3-scale/4.0.2: + /d3-scale@4.0.2: resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} engines: {node: '>=12'} dependencies: @@ -5484,38 +5596,38 @@ packages: d3-time-format: 4.1.0 dev: false - /d3-selection/3.0.0: + /d3-selection@3.0.0: resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} engines: {node: '>=12'} dev: false - /d3-shape/3.1.0: + /d3-shape@3.1.0: resolution: {integrity: sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==} engines: {node: '>=12'} dependencies: d3-path: 3.0.1 dev: false - /d3-time-format/4.1.0: + /d3-time-format@4.1.0: resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} engines: {node: '>=12'} dependencies: d3-time: 3.0.0 dev: false - /d3-time/3.0.0: + /d3-time@3.0.0: resolution: {integrity: sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==} engines: {node: '>=12'} dependencies: d3-array: 3.2.0 dev: false - /d3-timer/3.0.1: + /d3-timer@3.0.1: resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} engines: {node: '>=12'} dev: false - /d3-transition/3.0.1_d3-selection@3.0.0: + /d3-transition@3.0.1(d3-selection@3.0.0): resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} engines: {node: '>=12'} peerDependencies: @@ -5529,7 +5641,7 @@ packages: d3-timer: 3.0.1 dev: false - /d3-zoom/3.0.0: + /d3-zoom@3.0.0: resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} engines: {node: '>=12'} dependencies: @@ -5537,10 +5649,10 @@ packages: d3-drag: 3.0.0 d3-interpolate: 3.0.1 d3-selection: 3.0.0 - d3-transition: 3.0.1_d3-selection@3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) dev: false - /d3/7.8.2: + /d3@7.8.2: resolution: {integrity: sha512-WXty7qOGSHb7HR7CfOzwN1Gw04MUOzN8qh9ZUsvwycIMb4DYMpY9xczZ6jUorGtO6bR9BPMPaueIKwiDxu9uiQ==} engines: {node: '>=12'} dependencies: @@ -5572,35 +5684,35 @@ packages: d3-time: 3.0.0 d3-time-format: 4.1.0 d3-timer: 3.0.1 - d3-transition: 3.0.1_d3-selection@3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) d3-zoom: 3.0.0 dev: false - /dagre-d3-es/7.0.10: + /dagre-d3-es@7.0.10: resolution: {integrity: sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==} dependencies: d3: 7.8.2 lodash-es: 4.17.21 dev: false - /dargs/7.0.0: + /dargs@7.0.0: resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} engines: {node: '>=8'} dev: true - /dashdash/1.14.1: + /dashdash@1.14.1: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} dependencies: assert-plus: 1.0.0 dev: true - /data-uri-to-buffer/3.0.1: + /data-uri-to-buffer@3.0.1: resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} engines: {node: '>= 6'} dev: true - /data-urls/3.0.2: + /data-urls@3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} dependencies: @@ -5609,7 +5721,7 @@ packages: whatwg-url: 11.0.0 dev: true - /data-urls/4.0.0: + /data-urls@4.0.0: resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} engines: {node: '>=14'} dependencies: @@ -5618,22 +5730,22 @@ packages: whatwg-url: 12.0.1 dev: true - /date-fns/2.29.3: + /date-fns@2.29.3: resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} engines: {node: '>=0.11'} dev: true - /date-time/3.1.0: + /date-time@3.1.0: resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} engines: {node: '>=6'} dependencies: time-zone: 1.0.0 dev: true - /dayjs/1.11.7: + /dayjs@1.11.7: resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} - /debug/2.6.9: + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' @@ -5644,7 +5756,7 @@ packages: ms: 2.0.0 dev: true - /debug/3.2.7_supports-color@8.1.1: + /debug@3.2.7(supports-color@8.1.1): resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' @@ -5656,7 +5768,7 @@ packages: supports-color: 8.1.1 dev: true - /debug/4.3.3: + /debug@4.3.3: resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} engines: {node: '>=6.0'} peerDependencies: @@ -5668,19 +5780,7 @@ packages: ms: 2.1.2 dev: true - /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /debug/4.3.4_supports-color@8.1.1: + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -5693,7 +5793,7 @@ packages: supports-color: 8.1.1 dev: true - /decamelize-keys/1.1.0: + /decamelize-keys@1.1.0: resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} engines: {node: '>=0.10.0'} dependencies: @@ -5701,71 +5801,71 @@ packages: map-obj: 1.0.1 dev: true - /decamelize/1.2.0: + /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} dev: true - /decamelize/5.0.1: + /decamelize@5.0.1: resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} engines: {node: '>=10'} dev: true - /decimal.js/10.4.3: + /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true - /decode-named-character-reference/1.0.2: + /decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: character-entities: 2.0.2 dev: true - /decompress-response/6.0.0: + /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} dependencies: mimic-response: 3.1.0 dev: true - /dedent/0.7.0: + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deep-eql/4.1.3: + /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} dependencies: type-detect: 4.0.8 dev: true - /deep-is/0.1.4: + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /deepmerge/4.2.2: + /deepmerge@4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} dev: true - /default-gateway/6.0.3: + /default-gateway@6.0.3: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} engines: {node: '>= 10'} dependencies: execa: 5.1.1 dev: true - /defer-to-connect/2.0.1: + /defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} dev: true - /define-lazy-prop/2.0.0: + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} dev: true - /degenerator/3.0.2: + /degenerator@3.0.2: resolution: {integrity: sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==} engines: {node: '>= 6'} dependencies: @@ -5775,95 +5875,94 @@ packages: vm2: 3.9.11 dev: true - /delaunator/5.0.0: + /delaunator@5.0.0: resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==} dependencies: robust-predicates: 3.0.1 dev: false - /delayed-stream/1.0.0: + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: true - /depd/1.1.2: + /depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} dev: true - /depd/2.0.0: + /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} dev: true - /dequal/2.0.3: + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} dev: true - /destroy/1.2.0: + /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: true - /detect-newline/3.1.0: + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} dev: true - /detect-node/2.1.0: + /detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} dev: true - /didyoumean/1.2.2: + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: false - /diff-sequences/29.4.3: + /diff-sequences@29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /diff/4.0.2: + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - dev: true - /diff/5.1.0: + /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} dev: true - /dir-glob/3.0.1: + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 dev: true - /dlv/1.1.3: + /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: false - /dns-equal/1.0.0: + /dns-equal@1.0.0: resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} dev: true - /dns-packet/5.4.0: + /dns-packet@5.4.0: resolution: {integrity: sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==} engines: {node: '>=6'} dependencies: '@leichtgewicht/ip-codec': 2.0.4 dev: true - /doctrine/3.0.0: + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 dev: true - /dom-serializer/2.0.0: + /dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: domelementtype: 2.3.0 @@ -5871,33 +5970,33 @@ packages: entities: 4.4.0 dev: true - /dom-to-image-more/2.16.0: + /dom-to-image-more@2.16.0: resolution: {integrity: sha512-RyjtkaM/zVy90uJ20lT+/G7MwBZx6l/ePliq5CQOeAnPeew7aUGS6IqRWBkHpstU+POmhaKA8A9H9qf476gisQ==} dev: false - /domelementtype/2.3.0: + /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: true - /domexception/4.0.0: + /domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} dependencies: webidl-conversions: 7.0.0 dev: true - /domhandler/5.0.3: + /domhandler@5.0.3: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 dev: true - /dompurify/3.0.2: + /dompurify@3.0.2: resolution: {integrity: sha512-B8c6JdiEpxAKnd8Dm++QQxJL4lfuc757scZtcapj6qjTjrQzyq5iAyznLKVvK+77eYNiFblHBlt7MM0fOeqoKw==} dev: false - /domutils/3.0.1: + /domutils@3.0.1: resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} dependencies: dom-serializer: 2.0.0 @@ -5905,80 +6004,80 @@ packages: domhandler: 5.0.3 dev: true - /dot-prop/5.3.0: + /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} dependencies: is-obj: 2.0.0 dev: true - /dotenv/16.0.3: + /dotenv@16.0.3: resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} engines: {node: '>=12'} dev: true - /duplexer/0.1.2: + /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: true - /eastasianwidth/0.2.0: + /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /ebnf-parser/0.1.10: + /ebnf-parser@0.1.10: resolution: {integrity: sha512-urvSxVQ6XJcoTpc+/x2pWhhuOX4aljCNQpwzw+ifZvV1andZkAmiJc3Rq1oGEAQmcjiLceyMXOy1l8ms8qs2fQ==} dev: true - /ecc-jsbn/0.1.2: + /ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} dependencies: jsbn: 0.1.1 safer-buffer: 2.1.2 dev: true - /ee-first/1.1.1: + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium/1.4.284: + /electron-to-chromium@1.4.284: resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} dev: true - /elkjs/0.8.2: + /elkjs@0.8.2: resolution: {integrity: sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==} dev: false - /emittery/0.13.1: + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} dev: true - /emoji-regex/8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true - /emoji-regex/9.2.2: + /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /encodeurl/1.0.2: + /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} dev: true - /encoding/0.1.13: + /encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} dependencies: iconv-lite: 0.6.3 dev: true - /end-of-stream/1.4.4: + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 dev: true - /enhanced-resolve/5.10.0: + /enhanced-resolve@5.10.0: resolution: {integrity: sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==} engines: {node: '>=10.13.0'} dependencies: @@ -5986,40 +6085,40 @@ packages: tapable: 2.2.1 dev: true - /enquirer/2.3.6: + /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 dev: true - /entities/3.0.1: + /entities@3.0.1: resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} engines: {node: '>=0.12'} dev: true - /entities/4.4.0: + /entities@4.4.0: resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} engines: {node: '>=0.12'} dev: true - /envinfo/7.8.1: + /envinfo@7.8.1: resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} engines: {node: '>=4'} hasBin: true dev: true - /error-ex/1.3.2: + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: true - /es-module-lexer/0.9.3: + /es-module-lexer@0.9.3: resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} dev: true - /esbuild/0.17.18: + /esbuild@0.17.18: resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} engines: {node: '>=12'} hasBin: true @@ -6049,36 +6148,36 @@ packages: '@esbuild/win32-x64': 0.17.18 dev: true - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: true - /escape-html/1.0.3: + /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} dev: true - /escape-string-regexp/1.0.5: + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} dev: true - /escape-string-regexp/2.0.0: + /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} dev: true - /escape-string-regexp/4.0.0: + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: true - /escape-string-regexp/5.0.0: + /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} dev: true - /escodegen/1.14.3: + /escodegen@1.14.3: resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} engines: {node: '>=4.0'} hasBin: true @@ -6091,7 +6190,7 @@ packages: source-map: 0.6.1 dev: true - /escodegen/1.3.3: + /escodegen@1.3.3: resolution: {integrity: sha512-z9FWgKc48wjMlpzF5ymKS1AF8OIgnKLp9VyN7KbdtyrP/9lndwUFqCtMm+TAJmJf7KJFFYc4cFJfVTTGkKEwsA==} engines: {node: '>=0.10.0'} hasBin: true @@ -6103,7 +6202,7 @@ packages: source-map: 0.1.43 dev: true - /escodegen/2.0.0: + /escodegen@2.0.0: resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} engines: {node: '>=6.0'} hasBin: true @@ -6116,7 +6215,7 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier/8.8.0_eslint@8.39.0: + /eslint-config-prettier@8.8.0(eslint@8.39.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: @@ -6125,7 +6224,7 @@ packages: eslint: 8.39.0 dev: true - /eslint-plugin-cypress/2.13.2_eslint@8.39.0: + /eslint-plugin-cypress@2.13.2(eslint@8.39.0): resolution: {integrity: sha512-LlwjnBTzuKuC0A4H0RxVjs0YeAWK+CD1iM9Dp8un3lzT713ePQxfpPstCD+9HSAss8emuE3b2hCNUST+NrUwKw==} peerDependencies: eslint: '>= 3.2.1' @@ -6134,13 +6233,13 @@ packages: globals: 11.12.0 dev: true - /eslint-plugin-html/7.1.0: + /eslint-plugin-html@7.1.0: resolution: {integrity: sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg==} dependencies: htmlparser2: 8.0.1 dev: true - /eslint-plugin-jest/27.2.1_fy2a3wzracqbngneh76u25tbne: + /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.59.1)(eslint@8.39.0)(jest@29.5.0)(typescript@5.0.4): resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6153,16 +6252,16 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.1_2utyh6gct5glvuz6qwradubqqa - '@typescript-eslint/utils': 5.59.1_iacogk7kkaymxepzhgcbytyi7q + '@typescript-eslint/eslint-plugin': 5.59.1(@typescript-eslint/parser@5.59.1)(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4) eslint: 8.39.0 - jest: 29.5.0_nos7cth4dsekhy4fgueg2u3gjm + jest: 29.5.0(@types/node@18.16.0)(ts-node@10.9.1) transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsdoc/43.1.1_eslint@8.39.0: + /eslint-plugin-jsdoc@43.1.1(eslint@8.39.0): resolution: {integrity: sha512-J2kjjsJ5vBXSyNzqJhceeSGTAgVgZHcPSJKo3vD4tNjUdfky98rR2VfZUDsS1GKL6isyVa8GWvr+Az7Vyg2HXA==} engines: {node: '>=16'} peerDependencies: @@ -6171,7 +6270,7 @@ packages: '@es-joy/jsdoccomment': 0.37.1 are-docs-informative: 0.0.2 comment-parser: 1.3.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) escape-string-regexp: 4.0.0 eslint: 8.39.0 esquery: 1.5.0 @@ -6181,7 +6280,7 @@ packages: - supports-color dev: true - /eslint-plugin-json/3.1.0: + /eslint-plugin-json@3.1.0: resolution: {integrity: sha512-MrlG2ynFEHe7wDGwbUuFPsaT2b1uhuEFhJ+W1f1u+1C2EkXmTYJp4B1aAdQQ8M+CC3t//N/oRKiIVw14L2HR1g==} engines: {node: '>=12.0'} dependencies: @@ -6189,7 +6288,7 @@ packages: vscode-json-languageservice: 4.2.1 dev: true - /eslint-plugin-lodash/7.4.0_eslint@8.39.0: + /eslint-plugin-lodash@7.4.0(eslint@8.39.0): resolution: {integrity: sha512-Tl83UwVXqe1OVeBRKUeWcfg6/pCW1GTRObbdnbEJgYwjxp5Q92MEWQaH9+dmzbRt6kvYU1Mp893E79nJiCSM8A==} engines: {node: '>=10'} peerDependencies: @@ -6199,7 +6298,7 @@ packages: lodash: 4.17.21 dev: true - /eslint-plugin-markdown/3.0.0_eslint@8.39.0: + /eslint-plugin-markdown@3.0.0(eslint@8.39.0): resolution: {integrity: sha512-hRs5RUJGbeHDLfS7ELanT0e29Ocyssf/7kBM+p7KluY5AwngGkDf8Oyu4658/NZSGTTq05FZeWbkxXtbVyHPwg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -6211,26 +6310,26 @@ packages: - supports-color dev: true - /eslint-plugin-no-only-tests/3.1.0: + /eslint-plugin-no-only-tests@3.1.0: resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==} engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-tsdoc/0.2.17: + /eslint-plugin-tsdoc@0.2.17: resolution: {integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 dev: true - /eslint-plugin-unicorn/46.0.0_eslint@8.39.0: + /eslint-plugin-unicorn@46.0.0(eslint@8.39.0): resolution: {integrity: sha512-j07WkC+PFZwk8J33LYp6JMoHa1lXc1u6R45pbSAipjpfpb7KIGr17VE2D685zCxR5VL4cjrl65kTJflziQWMDA==} engines: {node: '>=14.18'} peerDependencies: eslint: '>=8.28.0' dependencies: '@babel/helper-validator-identifier': 7.19.1 - '@eslint-community/eslint-utils': 4.4.0_eslint@8.39.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) ci-info: 3.6.2 clean-regexp: 1.0.0 eslint: 8.39.0 @@ -6248,7 +6347,7 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-scope/5.1.1: + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: @@ -6256,7 +6355,7 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope/7.2.0: + /eslint-scope@7.2.0: resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -6264,17 +6363,17 @@ packages: estraverse: 5.3.0 dev: true - /eslint-visitor-keys/3.4.0: + /eslint-visitor-keys@3.4.0: resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.39.0: + /eslint@8.39.0: resolution: {integrity: sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0_eslint@8.39.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) '@eslint-community/regexpp': 4.5.0 '@eslint/eslintrc': 2.0.2 '@eslint/js': 8.39.0 @@ -6284,7 +6383,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 @@ -6318,88 +6417,88 @@ packages: - supports-color dev: true - /espree/9.5.1: + /espree@9.5.1: resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.2 - acorn-jsx: 5.3.2_acorn@8.8.2 + acorn-jsx: 5.3.2(acorn@8.8.2) eslint-visitor-keys: 3.4.0 dev: true - /esprima/1.1.1: + /esprima@1.1.1: resolution: {integrity: sha512-qxxB994/7NtERxgXdFgLHIs9M6bhLXc6qtUmWZ3L8+gTQ9qaoyki2887P2IqAYsoENyr8SUbTutStDniOHSDHg==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /esprima/4.0.1: + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true dev: true - /esquery/1.4.0: + /esquery@1.4.0: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 dev: true - /esquery/1.5.0: + /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 dev: true - /esrecurse/4.3.0: + /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 dev: true - /estraverse/1.5.1: + /estraverse@1.5.1: resolution: {integrity: sha512-FpCjJDfmo3vsc/1zKSeqR5k42tcIhxFIlvq+h9j0fO2q/h2uLKyweq7rYJ+0CoVvrGQOxIS5wyBrW/+vF58BUQ==} engines: {node: '>=0.4.0'} dev: true - /estraverse/4.3.0: + /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} dev: true - /estraverse/5.3.0: + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: true - /estree-walker/2.0.2: + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - /estree-walker/3.0.3: + /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: '@types/estree': 1.0.0 dev: true - /esutils/1.0.0: + /esutils@1.0.0: resolution: {integrity: sha512-x/iYH53X3quDwfHRz4y8rn4XcEwwCJeWsul9pF1zldMbGtgOtMNBEOuYWwB1EQlK2LRa1fev3YAgym/RElp5Cg==} engines: {node: '>=0.10.0'} dev: true - /esutils/2.0.3: + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: true - /etag/1.8.1: + /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} dev: true - /event-stream/3.3.4: + /event-stream@3.3.4: resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} dependencies: duplexer: 0.1.2 @@ -6411,23 +6510,23 @@ packages: through: 2.3.8 dev: true - /event-target-shim/5.0.1: + /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - /eventemitter2/6.4.7: + /eventemitter2@6.4.7: resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} dev: true - /eventemitter3/4.0.7: + /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: true - /events/3.3.0: + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - /execa/1.0.0: + /execa@1.0.0: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} engines: {node: '>=6'} dependencies: @@ -6440,7 +6539,7 @@ packages: strip-eof: 1.0.0 dev: true - /execa/4.1.0: + /execa@4.1.0: resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} engines: {node: '>=10'} dependencies: @@ -6455,7 +6554,7 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa/5.1.1: + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: @@ -6470,7 +6569,7 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa/7.1.1: + /execa@7.1.1: resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: @@ -6485,19 +6584,19 @@ packages: strip-final-newline: 3.0.0 dev: true - /executable/4.1.1: + /executable@4.1.1: resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} engines: {node: '>=4'} dependencies: pify: 2.3.0 dev: true - /exit/0.1.2: + /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} dev: true - /expect/29.5.0: + /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6508,7 +6607,7 @@ packages: jest-util: 29.5.0 dev: true - /express/4.18.2: + /express@4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} dependencies: @@ -6547,16 +6646,16 @@ packages: - supports-color dev: true - /extend/3.0.2: + /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: true - /extract-zip/2.0.1_supports-color@8.1.1: + /extract-zip@2.0.1(supports-color@8.1.1): resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} hasBin: true dependencies: - debug: 4.3.4_supports-color@8.1.1 + debug: 4.3.4(supports-color@8.1.1) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -6565,32 +6664,32 @@ packages: - supports-color dev: true - /extsprintf/1.3.0: + /extsprintf@1.3.0: resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} engines: {'0': node >=0.6.0} dev: true - /fast-content-type-parse/1.0.0: + /fast-content-type-parse@1.0.0: resolution: {integrity: sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==} dev: true - /fast-decode-uri-component/1.0.1: + /fast-decode-uri-component@1.0.1: resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} dev: true - /fast-deep-equal/3.1.3: + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-diff/1.2.0: + /fast-diff@1.2.0: resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} dev: true - /fast-equals/4.0.3: + /fast-equals@4.0.3: resolution: {integrity: sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==} dev: true - /fast-glob/3.2.12: + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: @@ -6600,11 +6699,11 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 - /fast-json-stable-stringify/2.1.0: + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true - /fast-json-stringify/2.7.13: + /fast-json-stringify@2.7.13: resolution: {integrity: sha512-ar+hQ4+OIurUGjSJD1anvYSDcUflywhKjfxnsW4TBTD7+u0tJufv6DKRWoQk3vI6YBOWMoz0TQtfbe7dxbQmvA==} engines: {node: '>= 10.0.0'} dependencies: @@ -6614,28 +6713,28 @@ packages: string-similarity: 4.0.4 dev: true - /fast-levenshtein/2.0.6: + /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fast-redact/3.1.2: + /fast-redact@3.1.2: resolution: {integrity: sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==} engines: {node: '>=6'} - /fast-safe-stringify/2.1.1: + /fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} dev: true - /fastest-levenshtein/1.0.16: + /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} dev: true - /fastify-plugin/3.0.1: + /fastify-plugin@3.0.1: resolution: {integrity: sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==} dev: true - /fastify/3.29.5: + /fastify@3.29.5: resolution: {integrity: sha512-FBDgb1gkenZxxh4sTD6AdI6mFnZnsgckpjIXzIvfLSYCa4isfQeD8QWGPib63dxq6btnY0l1j8I0xYhMvUb+sw==} dependencies: '@fastify/ajv-compiler': 1.1.0 @@ -6658,70 +6757,70 @@ packages: - supports-color dev: true - /fastq/1.13.0: + /fastq@1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: reusify: 1.0.4 - /fault/2.0.1: + /fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} dependencies: format: 0.2.2 dev: true - /faye-websocket/0.11.4: + /faye-websocket@0.11.4: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} dependencies: websocket-driver: 0.7.4 dev: true - /fb-watchman/2.0.2: + /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 dev: true - /fd-slicer/1.1.0: + /fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: pend: 1.2.0 dev: true - /fflate/0.7.4: + /fflate@0.7.4: resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} dev: true - /figures/3.2.0: + /figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} dependencies: escape-string-regexp: 1.0.5 dev: true - /file-entry-cache/6.0.1: + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 dev: true - /file-saver/2.0.5: + /file-saver@2.0.5: resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} dev: false - /file-uri-to-path/2.0.0: + /file-uri-to-path@2.0.0: resolution: {integrity: sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==} engines: {node: '>= 6'} dev: true - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - /finalhandler/1.2.0: + /finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} dependencies: @@ -6736,7 +6835,7 @@ packages: - supports-color dev: true - /find-my-way/4.5.1: + /find-my-way@4.5.1: resolution: {integrity: sha512-kE0u7sGoUFbMXcOG/xpkmz4sRLCklERnBcg7Ftuu1iAxsfEt2S46RLJ3Sq7vshsEy2wJT2hZxE58XZK27qa8kg==} engines: {node: '>=10'} dependencies: @@ -6746,25 +6845,25 @@ packages: semver-store: 0.3.0 dev: true - /find-process/1.4.7: + /find-process@1.4.7: resolution: {integrity: sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==} hasBin: true dependencies: chalk: 4.1.2 commander: 5.1.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: true - /find-up/3.0.0: + /find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} dependencies: locate-path: 3.0.0 dev: true - /find-up/4.1.0: + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: @@ -6772,7 +6871,7 @@ packages: path-exists: 4.0.0 dev: true - /find-up/5.0.0: + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} dependencies: @@ -6780,7 +6879,7 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache/3.0.4: + /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: @@ -6788,19 +6887,19 @@ packages: rimraf: 3.0.2 dev: true - /flatstr/1.0.12: + /flatstr@1.0.12: resolution: {integrity: sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==} dev: true - /flatted/3.2.7: + /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true - /flexsearch/0.7.31: + /flexsearch@0.7.31: resolution: {integrity: sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==} dev: true - /follow-redirects/1.15.2: + /follow-redirects@1.15.2(debug@4.3.4): resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} peerDependencies: @@ -6808,9 +6907,11 @@ packages: peerDependenciesMeta: debug: optional: true + dependencies: + debug: 4.3.4(supports-color@8.1.1) dev: true - /foreground-child/2.0.0: + /foreground-child@2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} dependencies: @@ -6818,7 +6919,7 @@ packages: signal-exit: 3.0.7 dev: true - /foreground-child/3.1.1: + /foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} dependencies: @@ -6826,11 +6927,11 @@ packages: signal-exit: 4.0.1 dev: true - /forever-agent/0.6.1: + /forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} dev: true - /form-data/2.3.3: + /form-data@2.3.3: resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} engines: {node: '>= 0.12'} dependencies: @@ -6839,7 +6940,7 @@ packages: mime-types: 2.1.35 dev: true - /form-data/3.0.1: + /form-data@3.0.1: resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} engines: {node: '>= 6'} dependencies: @@ -6848,7 +6949,7 @@ packages: mime-types: 2.1.35 dev: true - /form-data/4.0.0: + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: @@ -6857,26 +6958,26 @@ packages: mime-types: 2.1.35 dev: true - /format/0.2.2: + /format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} dev: true - /forwarded/0.2.0: + /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} dev: true - /fresh/0.5.2: + /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} dev: true - /from/0.1.7: + /from@0.1.7: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} dev: true - /fs-extra/11.1.1: + /fs-extra@11.1.1: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} dependencies: @@ -6885,7 +6986,7 @@ packages: universalify: 2.0.0 dev: true - /fs-extra/7.0.1: + /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -6894,7 +6995,7 @@ packages: universalify: 0.1.2 dev: true - /fs-extra/8.1.0: + /fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -6903,7 +7004,7 @@ packages: universalify: 0.1.2 dev: true - /fs-extra/9.1.0: + /fs-extra@9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} dependencies: @@ -6913,21 +7014,21 @@ packages: universalify: 2.0.0 dev: true - /fs-monkey/1.0.3: + /fs-monkey@1.0.3: resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} dev: true - /fs.realpath/1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true optional: true - /ftp/0.3.10: + /ftp@0.3.10: resolution: {integrity: sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==} engines: {node: '>=0.8.0'} dependencies: @@ -6935,29 +7036,29 @@ packages: xregexp: 2.0.0 dev: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /gensequence/5.0.2: + /gensequence@5.0.2: resolution: {integrity: sha512-JlKEZnFc6neaeSVlkzBGGgkIoIaSxMgvdamRoPN8r3ozm2r9dusqxeKqYQ7lhzmj2UhFQP8nkyfCaiLQxiLrDA==} engines: {node: '>=14'} dev: true - /gensync/1.0.0-beta.2: + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} dev: true - /get-caller-file/2.0.5: + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-func-name/2.0.0: + /get-func-name@2.0.0: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true - /get-intrinsic/1.1.3: + /get-intrinsic@1.1.3: resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} dependencies: function-bind: 1.1.1 @@ -6965,47 +7066,47 @@ packages: has-symbols: 1.0.3 dev: true - /get-package-type/0.1.0: + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} dev: true - /get-stdin/5.0.1: + /get-stdin@5.0.1: resolution: {integrity: sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA==} engines: {node: '>=0.12.0'} dev: true - /get-stdin/8.0.0: + /get-stdin@8.0.0: resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} engines: {node: '>=10'} dev: true - /get-stream/4.1.0: + /get-stream@4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} dependencies: pump: 3.0.0 dev: true - /get-stream/5.2.0: + /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} dependencies: pump: 3.0.0 dev: true - /get-stream/6.0.1: + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: true - /get-uri/3.0.2: + /get-uri@3.0.2: resolution: {integrity: sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==} engines: {node: '>= 6'} dependencies: '@tootallnate/once': 1.1.2 data-uri-to-buffer: 3.0.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) file-uri-to-path: 2.0.0 fs-extra: 8.1.0 ftp: 0.3.10 @@ -7013,19 +7114,19 @@ packages: - supports-color dev: true - /getos/3.2.1: + /getos@3.2.1: resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} dependencies: async: 3.2.4 dev: true - /getpass/0.1.7: + /getpass@0.1.7: resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} dependencies: assert-plus: 1.0.0 dev: true - /git-raw-commits/2.0.11: + /git-raw-commits@2.0.11: resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} engines: {node: '>=10'} hasBin: true @@ -7037,23 +7138,23 @@ packages: through2: 4.0.2 dev: true - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - /glob-parent/6.0.2: + /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 - /glob-to-regexp/0.4.1: + /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: true - /glob/10.2.2: + /glob@10.2.2: resolution: {integrity: sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true @@ -7065,7 +7166,7 @@ packages: path-scurry: 1.7.0 dev: true - /glob/7.1.6: + /glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: fs.realpath: 1.0.0 @@ -7076,7 +7177,7 @@ packages: path-is-absolute: 1.0.1 dev: false - /glob/7.2.3: + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 @@ -7087,7 +7188,7 @@ packages: path-is-absolute: 1.0.1 dev: true - /glob/8.0.3: + /glob@8.0.3: resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} engines: {node: '>=12'} dependencies: @@ -7098,37 +7199,37 @@ packages: once: 1.4.0 dev: true - /global-dirs/0.1.1: + /global-dirs@0.1.1: resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} engines: {node: '>=4'} dependencies: ini: 1.3.8 dev: true - /global-dirs/3.0.0: + /global-dirs@3.0.0: resolution: {integrity: sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==} engines: {node: '>=10'} dependencies: ini: 2.0.0 dev: true - /globals/11.12.0: + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} dev: true - /globals/13.19.0: + /globals@13.19.0: resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true - /globalyzer/0.1.0: + /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} dev: true - /globby/11.1.0: + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: @@ -7140,7 +7241,7 @@ packages: slash: 3.0.0 dev: true - /globby/13.1.4: + /globby@13.1.4: resolution: {integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -7151,15 +7252,15 @@ packages: slash: 4.0.0 dev: true - /globrex/0.1.2: + /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} dev: true - /glur/1.1.2: + /glur@1.1.2: resolution: {integrity: sha512-l+8esYHTKOx2G/Aao4lEQ0bnHWg4fWtJbVoZZT9Knxi01pB8C80BR85nONLFwkkQoFRCmXY+BUcGZN3yZ2QsRA==} dev: true - /got/11.8.5: + /got@11.8.5: resolution: {integrity: sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==} engines: {node: '>=10.19.0'} dependencies: @@ -7176,19 +7277,19 @@ packages: responselike: 2.0.1 dev: true - /graceful-fs/4.2.10: + /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: true - /grapheme-splitter/1.0.4: + /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /handle-thing/2.0.1: + /handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} dev: true - /handlebars/4.7.7: + /handlebars@4.7.7: resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} engines: {node: '>=0.4.7'} hasBin: true @@ -7201,12 +7302,12 @@ packages: uglify-js: 3.17.3 dev: true - /har-schema/2.0.0: + /har-schema@2.0.0: resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} engines: {node: '>=4'} dev: true - /har-validator/5.1.5: + /har-validator@5.1.5: resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} engines: {node: '>=6'} deprecated: this library is no longer supported @@ -7215,64 +7316,64 @@ packages: har-schema: 2.0.0 dev: true - /hard-rejection/2.1.0: + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} dev: true - /has-ansi/2.0.0: + /has-ansi@2.0.0: resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} engines: {node: '>=0.10.0'} dependencies: ansi-regex: 2.1.1 dev: true - /has-flag/3.0.0: + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} dev: true - /has-flag/4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} dev: true - /has-own-prop/2.0.0: + /has-own-prop@2.0.0: resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} engines: {node: '>=8'} dev: true - /has-symbols/1.0.3: + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: true - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - /heap/0.2.7: + /heap@0.2.7: resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} dev: false - /highlight.js/10.7.3: + /highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} dev: false - /hosted-git-info/2.8.9: + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true - /hosted-git-info/4.1.0: + /hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} dependencies: lru-cache: 6.0.0 dev: true - /hpack.js/2.1.6: + /hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} dependencies: inherits: 2.0.4 @@ -7281,26 +7382,26 @@ packages: wbuf: 1.7.3 dev: true - /html-encoding-sniffer/3.0.0: + /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 dev: true - /html-entities/2.3.3: + /html-entities@2.3.3: resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} dev: true - /html-escaper/2.0.2: + /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /html-to-image/1.11.11: + /html-to-image@1.11.11: resolution: {integrity: sha512-9gux8QhvjRO/erSnDPv28noDZcPZmYE7e1vFsBLKLlRlKDSqNJYebj6Qz1TGd5lsRV+X+xYyjCKjuZdABinWjA==} dev: false - /htmlparser2/8.0.1: + /htmlparser2@8.0.1: resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} dependencies: domelementtype: 2.3.0 @@ -7309,15 +7410,15 @@ packages: entities: 4.4.0 dev: true - /http-cache-semantics/4.1.0: + /http-cache-semantics@4.1.0: resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} dev: true - /http-deceiver/1.2.7: + /http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} dev: true - /http-errors/1.6.3: + /http-errors@1.6.3: resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} engines: {node: '>= 0.6'} dependencies: @@ -7327,7 +7428,7 @@ packages: statuses: 1.5.0 dev: true - /http-errors/2.0.0: + /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} dependencies: @@ -7338,33 +7439,33 @@ packages: toidentifier: 1.0.1 dev: true - /http-parser-js/0.5.8: + /http-parser-js@0.5.8: resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} dev: true - /http-proxy-agent/4.0.1: + /http-proxy-agent@4.0.1: resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} engines: {node: '>= 6'} dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: true - /http-proxy-agent/5.0.0: + /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: true - /http-proxy-middleware/2.0.6_@types+express@4.17.14: + /http-proxy-middleware@2.0.6(@types/express@4.17.14): resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -7383,18 +7484,18 @@ packages: - debug dev: true - /http-proxy/1.18.1: + /http-proxy@1.18.1: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.2 + follow-redirects: 1.15.2(debug@4.3.4) requires-port: 1.0.0 transitivePeerDependencies: - debug dev: true - /http-signature/1.2.0: + /http-signature@1.2.0: resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} engines: {node: '>=0.8', npm: '>=1.3.7'} dependencies: @@ -7403,7 +7504,7 @@ packages: sshpk: 1.17.0 dev: true - /http-signature/1.3.6: + /http-signature@1.3.6: resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} engines: {node: '>=0.10'} dependencies: @@ -7412,7 +7513,7 @@ packages: sshpk: 1.17.0 dev: true - /http2-wrapper/1.0.3: + /http2-wrapper@1.0.3: resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} engines: {node: '>=10.19.0'} dependencies: @@ -7420,59 +7521,59 @@ packages: resolve-alpn: 1.2.1 dev: true - /https-proxy-agent/5.0.1: + /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: true - /human-signals/1.1.1: + /human-signals@1.1.1: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} dev: true - /human-signals/2.1.0: + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} dev: true - /human-signals/4.3.1: + /human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} dev: true - /husky/8.0.3: + /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} hasBin: true dev: true - /iconv-lite/0.4.24: + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true - /iconv-lite/0.6.3: + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - /ieee754/1.2.1: + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore/5.2.0: + /ignore@5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} dev: true - /import-fresh/3.3.0: + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: @@ -7480,7 +7581,7 @@ packages: resolve-from: 4.0.0 dev: true - /import-local/3.1.0: + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true @@ -7489,169 +7590,169 @@ packages: resolve-cwd: 3.0.0 dev: true - /import-meta-resolve/2.2.2: + /import-meta-resolve@2.2.2: resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==} dev: true - /imurmurhash/0.1.4: + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} dev: true - /indent-string/4.0.0: + /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} dev: true - /indent-string/5.0.0: + /indent-string@5.0.0: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} dev: true - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits/2.0.3: + /inherits@2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} dev: true - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /ini/1.3.8: + /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true - /ini/2.0.0: + /ini@2.0.0: resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} engines: {node: '>=10'} dev: true - /ini/3.0.1: + /ini@3.0.1: resolution: {integrity: sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dev: true - /internmap/2.0.3: + /internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} dev: false - /interpret/2.2.0: + /interpret@2.2.0: resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} engines: {node: '>= 0.10'} dev: true - /ip/1.1.8: + /ip@1.1.8: resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} dev: true - /ip/2.0.0: + /ip@2.0.0: resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} dev: true - /ipaddr.js/1.9.1: + /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} dev: true - /ipaddr.js/2.0.1: + /ipaddr.js@2.0.1: resolution: {integrity: sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==} engines: {node: '>= 10'} dev: true - /is-alphabetical/1.0.4: + /is-alphabetical@1.0.4: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} dev: true - /is-alphanumerical/1.0.4: + /is-alphanumerical@1.0.4: resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} dependencies: is-alphabetical: 1.0.4 is-decimal: 1.0.4 dev: true - /is-arrayish/0.2.1: + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true - /is-arrayish/0.3.2: + /is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} dev: false - /is-binary-path/2.1.0: + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - /is-buffer/2.0.5: + /is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} dev: true - /is-builtin-module/3.2.0: + /is-builtin-module@3.2.0: resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} engines: {node: '>=6'} dependencies: builtin-modules: 3.3.0 dev: true - /is-ci/3.0.1: + /is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: ci-info: 3.6.2 dev: true - /is-core-module/2.10.0: + /is-core-module@2.10.0: resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} dependencies: has: 1.0.3 - /is-decimal/1.0.4: + /is-decimal@1.0.4: resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} dev: true - /is-docker/2.2.1: + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true dev: true - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - /is-fullwidth-code-point/3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} dev: true - /is-fullwidth-code-point/4.0.0: + /is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} dev: true - /is-generator-fn/2.1.0: + /is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} dev: true - /is-glob/4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - /is-hexadecimal/1.0.4: + /is-hexadecimal@1.0.4: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} dev: true - /is-installed-globally/0.4.0: + /is-installed-globally@0.4.0: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} engines: {node: '>=10'} dependencies: @@ -7659,116 +7760,116 @@ packages: is-path-inside: 3.0.3 dev: true - /is-localhost-ip/2.0.0: + /is-localhost-ip@2.0.0: resolution: {integrity: sha512-vlgs2cSgMOfnKU8c1ewgKPyum9rVrjjLLW2HBdL5i0iAJjOs8NY55ZBd/hqUTaYR0EO9CKZd3hVSC2HlIbygTQ==} engines: {node: '>=12'} dev: true - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - /is-obj/2.0.0: + /is-obj@2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} dev: true - /is-path-inside/3.0.3: + /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} dev: true - /is-plain-obj/1.1.0: + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} dev: true - /is-plain-obj/3.0.0: + /is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} dev: true - /is-plain-obj/4.1.0: + /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} dev: true - /is-plain-object/2.0.4: + /is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 dev: true - /is-potential-custom-element-name/1.0.1: + /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true - /is-stream/1.1.0: + /is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} dev: true - /is-stream/2.0.1: + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} dev: true - /is-stream/3.0.0: + /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-text-path/1.0.1: + /is-text-path@1.0.1: resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} engines: {node: '>=0.10.0'} dependencies: text-extensions: 1.9.0 dev: true - /is-typedarray/1.0.0: + /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: true - /is-unicode-supported/0.1.0: + /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} dev: true - /is-wsl/2.2.0: + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 dev: true - /isarray/0.0.1: + /isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} dev: true - /isarray/1.0.0: + /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true - /isexe/2.0.0: + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /isobject/3.0.1: + /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} dev: true - /isstream/0.1.2: + /isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} dev: true - /istanbul-lib-coverage/3.2.0: + /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} dev: true - /istanbul-lib-instrument/5.2.0: + /istanbul-lib-instrument@5.2.0: resolution: {integrity: sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==} engines: {node: '>=8'} dependencies: @@ -7781,7 +7882,7 @@ packages: - supports-color dev: true - /istanbul-lib-report/3.0.0: + /istanbul-lib-report@3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} dependencies: @@ -7790,18 +7891,18 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps/4.0.1: + /istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: - supports-color dev: true - /istanbul-reports/3.1.5: + /istanbul-reports@3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: @@ -7809,7 +7910,7 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /iterm2-version/4.2.0: + /iterm2-version@4.2.0: resolution: {integrity: sha512-IoiNVk4SMPu6uTcK+1nA5QaHNok2BMDLjSl5UomrOixe5g4GkylhPwuiGdw00ysSCrXAKNMfFTu+u/Lk5f6OLQ==} engines: {node: '>=8'} dependencies: @@ -7817,7 +7918,7 @@ packages: plist: 3.0.6 dev: true - /jackspeak/2.1.0: + /jackspeak@2.1.0: resolution: {integrity: sha512-DiEwVPqsieUzZBNxQ2cxznmFzfg/AMgJUjYw5xl6rSmCxAQXECcbSdwcLM6Ds6T09+SBfSNCGPhYUoQ96P4h7A==} engines: {node: '>=14'} dependencies: @@ -7826,7 +7927,7 @@ packages: '@pkgjs/parseargs': 0.11.0 dev: true - /jest-changed-files/29.5.0: + /jest-changed-files@29.5.0: resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -7834,7 +7935,7 @@ packages: p-limit: 3.1.0 dev: true - /jest-circus/29.5.0: + /jest-circus@29.5.0: resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -7862,7 +7963,7 @@ packages: - supports-color dev: true - /jest-cli/29.5.0_nos7cth4dsekhy4fgueg2u3gjm: + /jest-cli@29.5.0(@types/node@18.16.0)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7872,14 +7973,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0_ts-node@10.9.1 + '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0_nos7cth4dsekhy4fgueg2u3gjm + jest-config: 29.5.0(@types/node@18.16.0)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -7890,7 +7991,7 @@ packages: - ts-node dev: true - /jest-config/29.5.0_nos7cth4dsekhy4fgueg2u3gjm: + /jest-config@29.5.0(@types/node@18.16.0)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -7906,7 +8007,7 @@ packages: '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 '@types/node': 18.16.0 - babel-jest: 29.5.0_@babel+core@7.12.3 + babel-jest: 29.5.0(@babel/core@7.12.3) chalk: 4.1.2 ci-info: 3.6.2 deepmerge: 4.2.2 @@ -7925,12 +8026,12 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1_gfpyv5b3h2oguybx3lu7z4el7a + ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) transitivePeerDependencies: - supports-color dev: true - /jest-diff/29.5.0: + /jest-diff@29.5.0: resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -7940,14 +8041,14 @@ packages: pretty-format: 29.5.0 dev: true - /jest-docblock/29.4.3: + /jest-docblock@29.4.3: resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each/29.5.0: + /jest-each@29.5.0: resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -7958,7 +8059,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-environment-node/29.5.0: + /jest-environment-node@29.5.0: resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -7970,12 +8071,12 @@ packages: jest-util: 29.5.0 dev: true - /jest-get-type/29.4.3: + /jest-get-type@29.4.3: resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map/29.5.0: + /jest-haste-map@29.5.0: resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -7994,7 +8095,7 @@ packages: fsevents: 2.3.2 dev: true - /jest-image-snapshot/4.2.0_jest@29.5.0: + /jest-image-snapshot@4.2.0(jest@29.5.0): resolution: {integrity: sha512-6aAqv2wtfOgxiJeBayBCqHo1zX+A12SUNNzo7rIxiXh6W6xYVu8QyHWkada8HeRi+QUTHddp0O0Xa6kmQr+xbQ==} engines: {node: '>= 10.14.2'} peerDependencies: @@ -8003,7 +8104,7 @@ packages: chalk: 1.1.3 get-stdin: 5.0.1 glur: 1.1.2 - jest: 29.5.0_nos7cth4dsekhy4fgueg2u3gjm + jest: 29.5.0(@types/node@18.16.0)(ts-node@10.9.1) lodash: 4.17.21 mkdirp: 0.5.6 pixelmatch: 5.3.0 @@ -8012,7 +8113,7 @@ packages: ssim.js: 3.5.0 dev: true - /jest-leak-detector/29.5.0: + /jest-leak-detector@29.5.0: resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8020,7 +8121,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-matcher-utils/29.5.0: + /jest-matcher-utils@29.5.0: resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8030,7 +8131,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-message-util/29.5.0: + /jest-message-util@29.5.0: resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8045,7 +8146,7 @@ packages: stack-utils: 2.0.5 dev: true - /jest-mock/29.5.0: + /jest-mock@29.5.0: resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8054,7 +8155,7 @@ packages: jest-util: 29.5.0 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@29.5.0: + /jest-pnp-resolver@1.2.2(jest-resolve@29.5.0): resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -8066,12 +8167,12 @@ packages: jest-resolve: 29.5.0 dev: true - /jest-regex-util/29.4.3: + /jest-regex-util@29.4.3: resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/29.5.0: + /jest-resolve-dependencies@29.5.0: resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8081,14 +8182,14 @@ packages: - supports-color dev: true - /jest-resolve/29.5.0: + /jest-resolve@29.5.0: resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.10 jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.2_jest-resolve@29.5.0 + jest-pnp-resolver: 1.2.2(jest-resolve@29.5.0) jest-util: 29.5.0 jest-validate: 29.5.0 resolve: 1.22.1 @@ -8096,7 +8197,7 @@ packages: slash: 3.0.0 dev: true - /jest-runner/29.5.0: + /jest-runner@29.5.0: resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8125,7 +8226,7 @@ packages: - supports-color dev: true - /jest-runtime/29.5.0: + /jest-runtime@29.5.0: resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8155,14 +8256,14 @@ packages: - supports-color dev: true - /jest-snapshot/29.5.0: + /jest-snapshot@29.5.0: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.12.3 '@babel/generator': 7.19.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-syntax-typescript': 7.18.6(@babel/core@7.12.3) '@babel/traverse': 7.19.1 '@babel/types': 7.19.0 '@jest/expect-utils': 29.5.0 @@ -8170,7 +8271,7 @@ packages: '@jest/types': 29.5.0 '@types/babel__traverse': 7.18.2 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.12.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.12.3) chalk: 4.1.2 expect: 29.5.0 graceful-fs: 4.2.10 @@ -8186,7 +8287,7 @@ packages: - supports-color dev: true - /jest-util/29.5.0: + /jest-util@29.5.0: resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8198,7 +8299,7 @@ packages: picomatch: 2.3.1 dev: true - /jest-validate/29.5.0: + /jest-validate@29.5.0: resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8210,7 +8311,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-watcher/29.5.0: + /jest-watcher@29.5.0: resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8224,7 +8325,7 @@ packages: string-length: 4.0.2 dev: true - /jest-worker/27.5.1: + /jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: @@ -8233,7 +8334,7 @@ packages: supports-color: 8.1.1 dev: true - /jest-worker/29.5.0: + /jest-worker@29.5.0: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8243,7 +8344,7 @@ packages: supports-color: 8.1.1 dev: true - /jest/29.5.0_nos7cth4dsekhy4fgueg2u3gjm: + /jest@29.5.0(@types/node@18.16.0)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -8253,17 +8354,17 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0_ts-node@10.9.1 + '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_nos7cth4dsekhy4fgueg2u3gjm + jest-cli: 29.5.0(@types/node@18.16.0)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color - ts-node dev: true - /jison-lex/0.3.4: + /jison-lex@0.3.4: resolution: {integrity: sha512-EBh5wrXhls1cUwROd5DcDHR1sG7CdsCFSqY1027+YA1RGxz+BX2TDLAhdsQf40YEtFDGoiO0Qm8PpnBl2EzDJw==} engines: {node: '>=0.4'} hasBin: true @@ -8272,7 +8373,7 @@ packages: nomnom: 1.5.2 dev: true - /jison/0.4.18: + /jison@0.4.18: resolution: {integrity: sha512-FKkCiJvozgC7VTHhMJ00a0/IApSxhlGsFIshLW6trWJ8ONX2TQJBBz6DlcO1Gffy4w9LT+uL+PA+CVnUSJMF7w==} engines: {node: '>=0.4'} hasBin: true @@ -8287,16 +8388,16 @@ packages: nomnom: 1.5.2 dev: true - /jiti/1.18.2: + /jiti@1.18.2: resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} hasBin: true dev: false - /jju/1.4.0: + /jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true - /joi/17.8.3: + /joi@17.8.3: resolution: {integrity: sha512-q5Fn6Tj/jR8PfrLrx4fpGH4v9qM6o+vDUfD4/3vxxyg34OmKcNqYZ1qn2mpLza96S8tL0p0rIw2gOZX+/cTg9w==} dependencies: '@hapi/hoek': 9.3.0 @@ -8306,27 +8407,27 @@ packages: '@sideway/pinpoint': 2.0.0 dev: true - /jpeg-js/0.4.4: + /jpeg-js@0.4.4: resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==} dev: true - /js-base64/3.7.5: + /js-base64@3.7.5: resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==} dev: true - /js-sdsl/4.1.4: + /js-sdsl@4.1.4: resolution: {integrity: sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==} dev: true - /js-string-escape/1.0.1: + /js-string-escape@1.0.1: resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} engines: {node: '>= 0.8'} dev: true - /js-tokens/4.0.0: + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-yaml/3.14.1: + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true dependencies: @@ -8334,23 +8435,23 @@ packages: esprima: 4.0.1 dev: true - /js-yaml/4.1.0: + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 dev: true - /jsbn/0.1.1: + /jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} dev: true - /jsdoc-type-pratt-parser/4.0.0: + /jsdoc-type-pratt-parser@4.0.0: resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} engines: {node: '>=12.0.0'} dev: true - /jsdom/21.1.1: + /jsdom@21.1.1: resolution: {integrity: sha512-Jjgdmw48RKcdAIQyUD1UdBh2ecH7VqwaXPN3ehoZN6MqgVbMn+lRm1aAT1AsdJRAJpwfa4IpwgzySn61h2qu3w==} engines: {node: '>=14'} peerDependencies: @@ -8391,68 +8492,68 @@ packages: - utf-8-validate dev: true - /jsesc/0.5.0: + /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true dev: true - /jsesc/2.5.2: + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true dev: true - /jsesc/3.0.2: + /jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} hasBin: true dev: true - /json-buffer/3.0.1: + /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true - /json-parse-even-better-errors/2.3.1: + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true - /json-schema-traverse/0.4.1: + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true - /json-schema-traverse/1.0.0: + /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true - /json-schema/0.4.0: + /json-schema@0.4.0: resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} dev: true - /json-stable-stringify-without-jsonify/1.0.1: + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json-stringify-safe/5.0.1: + /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: true - /json5/2.2.1: + /json5@2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} engines: {node: '>=6'} hasBin: true dev: true - /jsonc-parser/3.2.0: + /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true - /jsonfile/4.0.0: + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.10 dev: true - /jsonfile/6.1.0: + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.0 @@ -8460,7 +8561,7 @@ packages: graceful-fs: 4.2.10 dev: true - /jsonlint/1.6.0: + /jsonlint@1.6.0: resolution: {integrity: sha512-x6YLBe6NjdpmIeiklwQOxsZuYj/SOWkT33GlTpaG1UdFGjdWjPcxJ1CWZAX3wA7tarz8E2YHF6KiW5HTapPlXw==} engines: {node: '>= 0.6'} hasBin: true @@ -8469,12 +8570,12 @@ packages: nomnom: 1.5.2 dev: true - /jsonparse/1.3.1: + /jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} dev: true - /jsprim/1.4.2: + /jsprim@1.4.2: resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} engines: {node: '>=0.6.0'} dependencies: @@ -8484,7 +8585,7 @@ packages: verror: 1.10.0 dev: true - /jsprim/2.0.2: + /jsprim@2.0.2: resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} engines: {'0': node >=0.6.0} dependencies: @@ -8494,65 +8595,65 @@ packages: verror: 1.10.0 dev: true - /junk/4.0.0: + /junk@4.0.0: resolution: {integrity: sha512-ojtSU++zLJ3jQG9bAYjg94w+/DOJtRyD7nPaerMFrBhmdVmiV5/exYH5t4uHga4G/95nT6hr1OJoKIFbYbrW5w==} engines: {node: '>=12.20'} dev: true - /keyv/4.5.0: + /keyv@4.5.0: resolution: {integrity: sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA==} dependencies: json-buffer: 3.0.1 dev: true - /khroma/2.0.0: + /khroma@2.0.0: resolution: {integrity: sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==} dev: false - /kind-of/6.0.3: + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} dev: true - /kleur/3.0.3: + /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} dev: true - /kleur/4.1.5: + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} dev: true - /ky/0.30.0: + /ky@0.30.0: resolution: {integrity: sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==} engines: {node: '>=12'} dev: true - /layout-base/1.0.2: + /layout-base@1.0.2: resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} dev: false - /layout-base/2.0.1: + /layout-base@2.0.1: resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} dev: false - /lazy-ass/1.6.0: + /lazy-ass@1.6.0: resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} engines: {node: '> 0.8'} dev: true - /lcov-parse/1.0.0: + /lcov-parse@1.0.0: resolution: {integrity: sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==} hasBin: true dev: true - /leven/3.1.0: + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} dev: true - /levn/0.3.0: + /levn@0.3.0: resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} dependencies: @@ -8560,7 +8661,7 @@ packages: type-check: 0.3.2 dev: true - /levn/0.4.1: + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -8568,11 +8669,11 @@ packages: type-check: 0.4.0 dev: true - /lex-parser/0.1.4: + /lex-parser@0.1.4: resolution: {integrity: sha512-DuAEISsr1H4LOpmFLkyMc8YStiRWZCO8hMsoXAXSbgyfvs2WQhSt0+/FBv3ZU/JBFZMGcE+FWzEBSzwUU7U27w==} dev: true - /light-my-request/4.12.0: + /light-my-request@4.12.0: resolution: {integrity: sha512-0y+9VIfJEsPVzK5ArSIJ8Dkxp8QMP7/aCuxCUtG/tr9a2NoOf/snATE/OUc05XUplJCEnRh6gTkH7xh9POt1DQ==} dependencies: ajv: 8.11.0 @@ -8581,20 +8682,20 @@ packages: set-cookie-parser: 2.6.0 dev: true - /lilconfig/2.1.0: + /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - /lines-and-columns/1.2.4: + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /linkify-it/4.0.1: + /linkify-it@4.0.1: resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} dependencies: uc.micro: 1.0.6 dev: true - /lint-staged/13.2.1: + /lint-staged@13.2.1: resolution: {integrity: sha512-8gfzinVXoPfga5Dz/ZOn8I2GOhf81Wvs+KwbEXQn/oWZAvCVS2PivrXfVbFJc93zD16uC0neS47RXHIjXKYZQw==} engines: {node: ^14.13.1 || >=16.0.0} hasBin: true @@ -8602,7 +8703,7 @@ packages: chalk: 5.2.0 cli-truncate: 3.1.0 commander: 10.0.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) execa: 7.1.1 lilconfig: 2.1.0 listr2: 5.0.8 @@ -8617,7 +8718,7 @@ packages: - supports-color dev: true - /listr2/3.14.0_enquirer@2.3.6: + /listr2@3.14.0(enquirer@2.3.6): resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} engines: {node: '>=10.0.0'} peerDependencies: @@ -8637,7 +8738,7 @@ packages: wrap-ansi: 7.0.0 dev: true - /listr2/5.0.8: + /listr2@5.0.8: resolution: {integrity: sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==} engines: {node: ^14.13.1 || >=16.0.0} peerDependencies: @@ -8656,17 +8757,17 @@ packages: wrap-ansi: 7.0.0 dev: true - /loader-runner/4.3.0: + /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} dev: true - /local-pkg/0.4.3: + /local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} dev: true - /locate-path/3.0.0: + /locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} dependencies: @@ -8674,77 +8775,77 @@ packages: path-exists: 3.0.0 dev: true - /locate-path/5.0.0: + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 dev: true - /locate-path/6.0.0: + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 dev: true - /lodash-es/4.17.21: + /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} dev: false - /lodash.camelcase/4.3.0: + /lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} dev: true - /lodash.isfunction/3.0.9: + /lodash.isfunction@3.0.9: resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} dev: true - /lodash.isplainobject/4.0.6: + /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} dev: true - /lodash.kebabcase/4.1.1: + /lodash.kebabcase@4.1.1: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} dev: true - /lodash.merge/4.6.2: + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /lodash.mergewith/4.6.2: + /lodash.mergewith@4.6.2: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} dev: true - /lodash.once/4.1.1: + /lodash.once@4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} dev: true - /lodash.snakecase/4.1.1: + /lodash.snakecase@4.1.1: resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} dev: true - /lodash.startcase/4.4.0: + /lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true - /lodash.uniq/4.5.0: + /lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} dev: true - /lodash.upperfirst/4.3.1: + /lodash.upperfirst@4.3.1: resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} dev: true - /lodash/4.17.21: + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - /log-driver/1.2.7: + /log-driver@1.2.7: resolution: {integrity: sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==} engines: {node: '>=0.8.6'} dev: true - /log-symbols/4.1.0: + /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} dependencies: @@ -8752,7 +8853,7 @@ packages: is-unicode-supported: 0.1.0 dev: true - /log-update/4.0.0: + /log-update@4.0.0: resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} engines: {node: '>=10'} dependencies: @@ -8762,106 +8863,105 @@ packages: wrap-ansi: 6.2.0 dev: true - /loglevel-plugin-prefix/0.8.4: + /loglevel-plugin-prefix@0.8.4: resolution: {integrity: sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==} dev: true - /loglevel/1.8.0: + /loglevel@1.8.0: resolution: {integrity: sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==} engines: {node: '>= 0.6.0'} dev: true - /longest-streak/3.0.1: + /longest-streak@3.0.1: resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==} dev: true - /loose-envify/1.4.0: + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 - /loupe/2.3.6: + /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: get-func-name: 2.0.0 dev: true - /lowercase-keys/2.0.0: + /lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} dev: true - /lru-cache/5.1.1: + /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 dev: true - /lru-cache/6.0.0: + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 dev: true - /lru-cache/9.1.1: + /lru-cache@9.1.1: resolution: {integrity: sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==} engines: {node: 14 || >=16.14} dev: true - /lunr/2.3.9: + /lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} dev: true - /magic-string/0.25.9: + /magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 - /magic-string/0.30.0: + /magic-string@0.30.0: resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /make-dir/3.1.0: + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: semver: 6.3.0 dev: true - /make-error/1.3.6: + /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true - /makeerror/1.0.12: + /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 dev: true - /map-obj/1.0.1: + /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} dev: true - /map-obj/4.3.0: + /map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} dev: true - /map-stream/0.1.0: + /map-stream@0.1.0: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} dev: true - /mark.js/8.11.1: + /mark.js@8.11.1: resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} dev: true - /markdown-it/13.0.1: + /markdown-it@13.0.1: resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==} hasBin: true dependencies: @@ -8872,30 +8972,30 @@ packages: uc.micro: 1.0.6 dev: true - /markdown-table/3.0.3: + /markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} dev: true - /marked/4.1.1: + /marked@4.1.1: resolution: {integrity: sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==} engines: {node: '>= 12'} hasBin: true dev: false - /marked/4.3.0: + /marked@4.3.0: resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} hasBin: true dev: true - /md5-hex/3.0.1: + /md5-hex@3.0.1: resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} engines: {node: '>=8'} dependencies: blueimp-md5: 2.19.0 dev: true - /mdast-util-find-and-replace/2.2.1: + /mdast-util-find-and-replace@2.2.1: resolution: {integrity: sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==} dependencies: escape-string-regexp: 5.0.0 @@ -8903,7 +9003,7 @@ packages: unist-util-visit-parents: 5.1.1 dev: true - /mdast-util-from-markdown/0.8.5: + /mdast-util-from-markdown@0.8.5: resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} dependencies: '@types/mdast': 3.0.11 @@ -8915,7 +9015,7 @@ packages: - supports-color dev: true - /mdast-util-from-markdown/1.2.0: + /mdast-util-from-markdown@1.2.0: resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==} dependencies: '@types/mdast': 3.0.11 @@ -8934,13 +9034,13 @@ packages: - supports-color dev: true - /mdast-util-frontmatter/1.0.0: + /mdast-util-frontmatter@1.0.0: resolution: {integrity: sha512-7itKvp0arEVNpCktOET/eLFAYaZ+0cNjVtFtIPxgQ5tV+3i+D4SDDTjTzPWl44LT59PC+xdx+glNTawBdF98Mw==} dependencies: micromark-extension-frontmatter: 1.0.0 dev: true - /mdast-util-gfm-autolink-literal/1.0.2: + /mdast-util-gfm-autolink-literal@1.0.2: resolution: {integrity: sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==} dependencies: '@types/mdast': 3.0.11 @@ -8949,7 +9049,7 @@ packages: micromark-util-character: 1.1.0 dev: true - /mdast-util-gfm-footnote/1.0.1: + /mdast-util-gfm-footnote@1.0.1: resolution: {integrity: sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==} dependencies: '@types/mdast': 3.0.11 @@ -8957,14 +9057,14 @@ packages: micromark-util-normalize-identifier: 1.0.0 dev: true - /mdast-util-gfm-strikethrough/1.0.2: + /mdast-util-gfm-strikethrough@1.0.2: resolution: {integrity: sha512-T/4DVHXcujH6jx1yqpcAYYwd+z5lAYMw4Ls6yhTfbMMtCt0PHY4gEfhW9+lKsLBtyhUGKRIzcUA2FATVqnvPDA==} dependencies: '@types/mdast': 3.0.11 mdast-util-to-markdown: 1.3.0 dev: true - /mdast-util-gfm-table/1.0.6: + /mdast-util-gfm-table@1.0.6: resolution: {integrity: sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==} dependencies: '@types/mdast': 3.0.11 @@ -8975,14 +9075,14 @@ packages: - supports-color dev: true - /mdast-util-gfm-task-list-item/1.0.1: + /mdast-util-gfm-task-list-item@1.0.1: resolution: {integrity: sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==} dependencies: '@types/mdast': 3.0.11 mdast-util-to-markdown: 1.3.0 dev: true - /mdast-util-gfm/2.0.1: + /mdast-util-gfm@2.0.1: resolution: {integrity: sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==} dependencies: mdast-util-from-markdown: 1.2.0 @@ -8996,7 +9096,7 @@ packages: - supports-color dev: true - /mdast-util-to-markdown/1.3.0: + /mdast-util-to-markdown@1.3.0: resolution: {integrity: sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==} dependencies: '@types/mdast': 3.0.11 @@ -9008,35 +9108,35 @@ packages: zwitch: 2.0.2 dev: true - /mdast-util-to-string/2.0.0: + /mdast-util-to-string@2.0.0: resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} dev: true - /mdast-util-to-string/3.1.0: + /mdast-util-to-string@3.1.0: resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} dev: true - /mdn-data/2.0.30: + /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} dev: true - /mdurl/1.0.1: + /mdurl@1.0.1: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} dev: true - /media-typer/0.3.0: + /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} dev: true - /memfs/3.4.11: + /memfs@3.4.11: resolution: {integrity: sha512-GvsCITGAyDCxxsJ+X6prJexFQEhOCJaIlUbsAvjzSI5o5O7j2dle3jWvz5Z5aOdpOxW6ol3vI1+0ut+641F1+w==} engines: {node: '>= 4.0.0'} dependencies: fs-monkey: 1.0.3 dev: true - /meow/10.1.5: + /meow@10.1.5: resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -9054,7 +9154,7 @@ packages: yargs-parser: 20.2.9 dev: true - /meow/8.1.2: + /meow@8.1.2: resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} engines: {node: '>=10'} dependencies: @@ -9071,24 +9171,24 @@ packages: yargs-parser: 20.2.9 dev: true - /merge-descriptors/1.0.1: + /merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} dev: true - /merge-stream/2.0.0: + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true - /merge2/1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /methods/1.1.2: + /methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} dev: true - /micromark-core-commonmark/1.0.6: + /micromark-core-commonmark@1.0.6: resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} dependencies: decode-named-character-reference: 1.0.2 @@ -9109,7 +9209,7 @@ packages: uvu: 0.5.6 dev: true - /micromark-extension-frontmatter/1.0.0: + /micromark-extension-frontmatter@1.0.0: resolution: {integrity: sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==} dependencies: fault: 2.0.1 @@ -9117,7 +9217,7 @@ packages: micromark-util-symbol: 1.0.1 dev: true - /micromark-extension-gfm-autolink-literal/1.0.3: + /micromark-extension-gfm-autolink-literal@1.0.3: resolution: {integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==} dependencies: micromark-util-character: 1.1.0 @@ -9127,7 +9227,7 @@ packages: uvu: 0.5.6 dev: true - /micromark-extension-gfm-footnote/1.0.4: + /micromark-extension-gfm-footnote@1.0.4: resolution: {integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==} dependencies: micromark-core-commonmark: 1.0.6 @@ -9140,7 +9240,7 @@ packages: uvu: 0.5.6 dev: true - /micromark-extension-gfm-strikethrough/1.0.4: + /micromark-extension-gfm-strikethrough@1.0.4: resolution: {integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==} dependencies: micromark-util-chunked: 1.0.0 @@ -9151,7 +9251,7 @@ packages: uvu: 0.5.6 dev: true - /micromark-extension-gfm-table/1.0.5: + /micromark-extension-gfm-table@1.0.5: resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==} dependencies: micromark-factory-space: 1.0.0 @@ -9161,13 +9261,13 @@ packages: uvu: 0.5.6 dev: true - /micromark-extension-gfm-tagfilter/1.0.1: + /micromark-extension-gfm-tagfilter@1.0.1: resolution: {integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==} dependencies: micromark-util-types: 1.0.2 dev: true - /micromark-extension-gfm-task-list-item/1.0.3: + /micromark-extension-gfm-task-list-item@1.0.3: resolution: {integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==} dependencies: micromark-factory-space: 1.0.0 @@ -9177,7 +9277,7 @@ packages: uvu: 0.5.6 dev: true - /micromark-extension-gfm/2.0.1: + /micromark-extension-gfm@2.0.1: resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} dependencies: micromark-extension-gfm-autolink-literal: 1.0.3 @@ -9190,7 +9290,7 @@ packages: micromark-util-types: 1.0.2 dev: true - /micromark-factory-destination/1.0.0: + /micromark-factory-destination@1.0.0: resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} dependencies: micromark-util-character: 1.1.0 @@ -9198,7 +9298,7 @@ packages: micromark-util-types: 1.0.2 dev: true - /micromark-factory-label/1.0.2: + /micromark-factory-label@1.0.2: resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} dependencies: micromark-util-character: 1.1.0 @@ -9207,14 +9307,14 @@ packages: uvu: 0.5.6 dev: true - /micromark-factory-space/1.0.0: + /micromark-factory-space@1.0.0: resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} dependencies: micromark-util-character: 1.1.0 micromark-util-types: 1.0.2 dev: true - /micromark-factory-title/1.0.2: + /micromark-factory-title@1.0.2: resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} dependencies: micromark-factory-space: 1.0.0 @@ -9224,7 +9324,7 @@ packages: uvu: 0.5.6 dev: true - /micromark-factory-whitespace/1.0.0: + /micromark-factory-whitespace@1.0.0: resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} dependencies: micromark-factory-space: 1.0.0 @@ -9233,20 +9333,20 @@ packages: micromark-util-types: 1.0.2 dev: true - /micromark-util-character/1.1.0: + /micromark-util-character@1.1.0: resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} dependencies: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 dev: true - /micromark-util-chunked/1.0.0: + /micromark-util-chunked@1.0.0: resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} dependencies: micromark-util-symbol: 1.0.1 dev: true - /micromark-util-classify-character/1.0.0: + /micromark-util-classify-character@1.0.0: resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} dependencies: micromark-util-character: 1.1.0 @@ -9254,20 +9354,20 @@ packages: micromark-util-types: 1.0.2 dev: true - /micromark-util-combine-extensions/1.0.0: + /micromark-util-combine-extensions@1.0.0: resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} dependencies: micromark-util-chunked: 1.0.0 micromark-util-types: 1.0.2 dev: true - /micromark-util-decode-numeric-character-reference/1.0.0: + /micromark-util-decode-numeric-character-reference@1.0.0: resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} dependencies: micromark-util-symbol: 1.0.1 dev: true - /micromark-util-decode-string/1.0.2: + /micromark-util-decode-string@1.0.2: resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} dependencies: decode-named-character-reference: 1.0.2 @@ -9276,27 +9376,27 @@ packages: micromark-util-symbol: 1.0.1 dev: true - /micromark-util-encode/1.0.1: + /micromark-util-encode@1.0.1: resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} dev: true - /micromark-util-html-tag-name/1.1.0: + /micromark-util-html-tag-name@1.1.0: resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} dev: true - /micromark-util-normalize-identifier/1.0.0: + /micromark-util-normalize-identifier@1.0.0: resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} dependencies: micromark-util-symbol: 1.0.1 dev: true - /micromark-util-resolve-all/1.0.0: + /micromark-util-resolve-all@1.0.0: resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} dependencies: micromark-util-types: 1.0.2 dev: true - /micromark-util-sanitize-uri/1.0.0: + /micromark-util-sanitize-uri@1.0.0: resolution: {integrity: sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==} dependencies: micromark-util-character: 1.1.0 @@ -9304,7 +9404,7 @@ packages: micromark-util-symbol: 1.0.1 dev: true - /micromark-util-subtokenize/1.0.2: + /micromark-util-subtokenize@1.0.2: resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} dependencies: micromark-util-chunked: 1.0.0 @@ -9313,28 +9413,28 @@ packages: uvu: 0.5.6 dev: true - /micromark-util-symbol/1.0.1: + /micromark-util-symbol@1.0.1: resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} dev: true - /micromark-util-types/1.0.2: + /micromark-util-types@1.0.2: resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} dev: true - /micromark/2.11.4: + /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) parse-entities: 2.0.0 transitivePeerDependencies: - supports-color dev: true - /micromark/3.0.10: + /micromark@3.0.10: resolution: {integrity: sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==} dependencies: '@types/debug': 4.1.7 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.0.6 micromark-factory-space: 1.0.0 @@ -9354,80 +9454,80 @@ packages: - supports-color dev: true - /micromatch/4.0.5: + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 - /mime-db/1.52.0: + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} dev: true - /mime-types/2.1.35: + /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: true - /mime/1.6.0: + /mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true dev: true - /mimic-fn/2.1.0: + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} dev: true - /mimic-fn/4.0.0: + /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} dev: true - /mimic-response/1.0.1: + /mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} dev: true - /mimic-response/3.1.0: + /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} dev: true - /min-indent/1.0.1: + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} dev: true - /minimalistic-assert/1.0.1: + /minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} dev: true - /minimatch/3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - /minimatch/5.1.0: + /minimatch@5.1.0: resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 dev: true - /minimatch/9.0.0: + /minimatch@9.0.0: resolution: {integrity: sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 dev: true - /minimist-options/4.1.0: + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} dependencies: @@ -9436,31 +9536,31 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.6: + /minimist@1.2.6: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} dev: true - /minimist/1.2.8: + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /minipass/5.0.0: + /minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} dev: true - /minisearch/6.0.1: + /minisearch@6.0.1: resolution: {integrity: sha512-Ly1w0nHKnlhAAh6/BF/+9NgzXfoJxaJ8nhopFhQ3NcvFJrFIL+iCg9gw9e9UMBD+XIsp/RyznJ/o5UIe5Kw+kg==} dev: true - /mkdirp/0.5.6: + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true dependencies: minimist: 1.2.8 dev: true - /mlly/1.2.0: + /mlly@1.2.0: resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==} dependencies: acorn: 8.8.2 @@ -9469,29 +9569,29 @@ packages: ufo: 1.1.1 dev: true - /mri/1.2.0: + /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} dev: true - /mrmime/1.0.1: + /mrmime@1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} engines: {node: '>=10'} dev: true - /ms/2.0.0: + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true - /ms/2.1.2: + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /ms/2.1.3: + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /multicast-dns/7.2.5: + /multicast-dns@7.2.5: resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} hasBin: true dependencies: @@ -9499,7 +9599,7 @@ packages: thunky: 1.1.0 dev: true - /mz/2.7.0: + /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: any-promise: 1.3.0 @@ -9507,46 +9607,46 @@ packages: thenify-all: 1.6.0 dev: false - /nanoid/3.3.4: + /nanoid@3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /natural-compare-lite/1.4.0: + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true - /natural-compare/1.4.0: + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /negotiator/0.6.3: + /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} dev: true - /neo-async/2.6.2: + /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true - /nested-error-stacks/2.1.1: + /nested-error-stacks@2.1.1: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /netmask/2.0.2: + /netmask@2.0.2: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} dev: true - /nice-try/1.0.5: + /nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: true - /node-cleanup/2.1.2: + /node-cleanup@2.1.2: resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} dev: true - /node-fetch/2.6.7: + /node-fetch@2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} peerDependencies: @@ -9558,19 +9658,7 @@ packages: whatwg-url: 5.0.0 dev: true - /node-fetch/2.6.9: - resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: true - - /node-fetch/2.6.9_encoding@0.1.13: + /node-fetch@2.6.9(encoding@0.1.13): resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} engines: {node: 4.x || >=6.0.0} peerDependencies: @@ -9583,20 +9671,20 @@ packages: whatwg-url: 5.0.0 dev: true - /node-forge/1.3.1: + /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} dev: true - /node-int64/0.4.0: + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-releases/2.0.6: + /node-releases@2.0.6: resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} dev: true - /nomnom/1.5.2: + /nomnom@1.5.2: resolution: {integrity: sha512-fiVbT7BqxiQqjlR9U3FDGOSERFCKoXVCdxV2FwZuNN7/cmJ42iQx35nUFOAFDcyvemu9Adp+IlsCGlKQYLmBKw==} deprecated: Package no longer supported. Contact support@npmjs.com for more info. dependencies: @@ -9604,11 +9692,11 @@ packages: underscore: 1.1.7 dev: true - /non-layered-tidy-tree-layout/2.0.2: + /non-layered-tidy-tree-layout@2.0.2: resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==} dev: false - /normalize-package-data/2.5.0: + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 @@ -9617,7 +9705,7 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data/3.0.3: + /normalize-package-data@3.0.3: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} dependencies: @@ -9627,97 +9715,97 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - /normalize-url/6.1.0: + /normalize-url@6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} dev: true - /npm-run-path/2.0.2: + /npm-run-path@2.0.2: resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} engines: {node: '>=4'} dependencies: path-key: 2.0.1 dev: true - /npm-run-path/4.0.1: + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 dev: true - /npm-run-path/5.1.0: + /npm-run-path@5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 dev: true - /nwsapi/2.2.2: + /nwsapi@2.2.2: resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} dev: true - /oauth-sign/0.9.0: + /oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} dev: true - /object-assign/4.1.1: + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - /object-hash/3.0.0: + /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} dev: false - /object-inspect/1.12.3: + /object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} dev: true - /obuf/1.1.2: + /obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} dev: true - /on-exit-leak-free/2.1.0: + /on-exit-leak-free@2.1.0: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} dev: false - /on-finished/2.4.1: + /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 dev: true - /on-headers/1.0.2: + /on-headers@1.0.2: resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} engines: {node: '>= 0.8'} dev: true - /once/1.4.0: + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - /onetime/5.1.2: + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 dev: true - /onetime/6.0.0: + /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 dev: true - /open/8.4.0: + /open@8.4.0: resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} engines: {node: '>=12'} dependencies: @@ -9726,7 +9814,7 @@ packages: is-wsl: 2.2.0 dev: true - /optionator/0.8.3: + /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} dependencies: @@ -9738,7 +9826,7 @@ packages: word-wrap: 1.2.3 dev: true - /optionator/0.9.1: + /optionator@0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} dependencies: @@ -9750,96 +9838,96 @@ packages: word-wrap: 1.2.3 dev: true - /ospath/1.2.2: + /ospath@1.2.2: resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} dev: true - /p-cancelable/2.1.1: + /p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} dev: true - /p-event/4.2.0: + /p-event@4.2.0: resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==} engines: {node: '>=8'} dependencies: p-timeout: 3.2.0 dev: true - /p-filter/3.0.0: + /p-filter@3.0.0: resolution: {integrity: sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-map: 5.5.0 dev: true - /p-finally/1.0.0: + /p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} dev: true - /p-iteration/1.1.8: + /p-iteration@1.1.8: resolution: {integrity: sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==} engines: {node: '>=8.0.0'} dev: true - /p-limit/2.3.0: + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 dev: true - /p-limit/3.1.0: + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 dev: true - /p-limit/4.0.0: + /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 dev: true - /p-locate/3.0.0: + /p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} dependencies: p-limit: 2.3.0 dev: true - /p-locate/4.1.0: + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 dev: true - /p-locate/5.0.0: + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 dev: true - /p-map/4.0.0: + /p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 dev: true - /p-map/5.5.0: + /p-map@5.5.0: resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} engines: {node: '>=12'} dependencies: aggregate-error: 4.0.1 dev: true - /p-retry/4.6.2: + /p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} dependencies: @@ -9847,25 +9935,25 @@ packages: retry: 0.13.1 dev: true - /p-timeout/3.2.0: + /p-timeout@3.2.0: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} dependencies: p-finally: 1.0.0 dev: true - /p-try/2.2.0: + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} dev: true - /pac-proxy-agent/5.0.0: + /pac-proxy-agent@5.0.0: resolution: {integrity: sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==} engines: {node: '>= 8'} dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) get-uri: 3.0.2 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 @@ -9876,7 +9964,7 @@ packages: - supports-color dev: true - /pac-resolver/5.0.1: + /pac-resolver@5.0.1: resolution: {integrity: sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==} engines: {node: '>= 8'} dependencies: @@ -9885,25 +9973,25 @@ packages: netmask: 2.0.2 dev: true - /pako/1.0.11: + /pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} dev: true - /parent-module/1.0.1: + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 dev: true - /parent-module/2.0.0: + /parent-module@2.0.0: resolution: {integrity: sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==} engines: {node: '>=8'} dependencies: callsites: 3.1.0 dev: true - /parse-entities/2.0.0: + /parse-entities@2.0.0: resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} dependencies: character-entities: 1.2.4 @@ -9914,7 +10002,7 @@ packages: is-hexadecimal: 1.0.4 dev: true - /parse-json/5.2.0: + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: @@ -9924,64 +10012,64 @@ packages: lines-and-columns: 1.2.4 dev: true - /parse5/6.0.1: + /parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} dev: true - /parse5/7.1.1: + /parse5@7.1.1: resolution: {integrity: sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==} dependencies: entities: 4.4.0 dev: true - /parse5/7.1.2: + /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.4.0 dev: true - /parseurl/1.3.3: + /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} dev: true - /path-browserify/1.0.1: + /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} dev: true - /path-exists/3.0.0: + /path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} dev: true - /path-exists/4.0.0: + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} dev: true - /path-is-absolute/1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - /path-key/2.0.1: + /path-key@2.0.1: resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} engines: {node: '>=4'} dev: true - /path-key/3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} dev: true - /path-key/4.0.0: + /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} dev: true - /path-parse/1.0.7: + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-scurry/1.7.0: + /path-scurry@1.7.0: resolution: {integrity: sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==} engines: {node: '>=16 || 14 >=14.17'} dependencies: @@ -9989,70 +10077,70 @@ packages: minipass: 5.0.0 dev: true - /path-to-regexp/0.1.7: + /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: true - /path-type/4.0.0: + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true - /pathe/1.1.0: + /pathe@1.1.0: resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} dev: true - /pathval/1.1.1: + /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true - /pause-stream/0.0.11: + /pause-stream@0.0.11: resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} dependencies: through: 2.3.8 dev: true - /pend/1.2.0: + /pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true - /performance-now/2.1.0: + /performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true - /picocolors/1.0.0: + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pidtree/0.6.0: + /pidtree@0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} engines: {node: '>=0.10'} hasBin: true dev: true - /pify/2.3.0: + /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - /pino-abstract-transport/1.0.0: + /pino-abstract-transport@1.0.0: resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} dependencies: readable-stream: 4.3.0 split2: 4.2.0 dev: false - /pino-std-serializers/3.2.0: + /pino-std-serializers@3.2.0: resolution: {integrity: sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==} dev: true - /pino-std-serializers/6.2.0: + /pino-std-serializers@6.2.0: resolution: {integrity: sha512-IWgSzUL8X1w4BIWTwErRgtV8PyOGOOi60uqv0oKuS/fOA8Nco/OeI6lBuc4dyP8MMfdFwyHqTMcBIA7nDiqEqA==} dev: false - /pino/6.14.0: + /pino@6.14.0: resolution: {integrity: sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==} hasBin: true dependencies: @@ -10065,7 +10153,7 @@ packages: sonic-boom: 1.4.1 dev: true - /pino/8.11.0: + /pino@8.11.0: resolution: {integrity: sha512-Z2eKSvlrl2rH8p5eveNUnTdd4AjJk8tAsLkHYZQKGHP4WTh2Gi1cOSOs3eWPqaj+niS3gj4UkoreoaWgF3ZWYg==} hasBin: true dependencies: @@ -10082,32 +10170,32 @@ packages: thread-stream: 2.3.0 dev: false - /pirates/4.0.5: + /pirates@4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} - /pixelmatch/5.3.0: + /pixelmatch@5.3.0: resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==} hasBin: true dependencies: pngjs: 6.0.0 dev: true - /pkg-dir/3.0.0: + /pkg-dir@3.0.0: resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} engines: {node: '>=6'} dependencies: find-up: 3.0.0 dev: true - /pkg-dir/4.2.0: + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 dev: true - /pkg-types/1.0.2: + /pkg-types@1.0.2: resolution: {integrity: sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==} dependencies: jsonc-parser: 3.2.0 @@ -10115,7 +10203,7 @@ packages: pathe: 1.1.0 dev: true - /plist/3.0.6: + /plist@3.0.6: resolution: {integrity: sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==} engines: {node: '>=6'} dependencies: @@ -10123,32 +10211,32 @@ packages: xmlbuilder: 15.1.1 dev: true - /pluralize/8.0.0: + /pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} dev: true - /png-async/0.9.4: + /png-async@0.9.4: resolution: {integrity: sha512-B//AXX9TkneKfgtOpT1mdUnnhk2BImGD+a98vImsMU8uo1dBeHyW/kM2erWZ/CsYteTPU/xKG+t6T62heHkC3A==} dev: true - /pngjs/3.4.0: + /pngjs@3.4.0: resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} engines: {node: '>=4.0.0'} dev: true - /pngjs/6.0.0: + /pngjs@6.0.0: resolution: {integrity: sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==} engines: {node: '>=12.13.0'} dev: true - /pnpm/8.3.1: + /pnpm@8.3.1: resolution: {integrity: sha512-0mT2ZAv08J3nz8xUdWhRW88GE89IWgPo/xZhb6acQXK2+aCikl7kT7Bg31ZcnJqOrwYXSed68xjLd/ZoSnBR8w==} engines: {node: '>=16.14'} hasBin: true dev: true - /postcss-import/14.1.0_postcss@8.4.21: + /postcss-import@14.1.0(postcss@8.4.21): resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -10160,7 +10248,7 @@ packages: resolve: 1.22.1 dev: false - /postcss-js/4.0.1_postcss@8.4.21: + /postcss-js@4.0.1(postcss@8.4.21): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: @@ -10170,7 +10258,7 @@ packages: postcss: 8.4.21 dev: false - /postcss-load-config/3.1.4_postcss@8.4.21: + /postcss-load-config@3.1.4(postcss@8.4.21)(ts-node@10.9.1): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -10184,10 +10272,11 @@ packages: dependencies: lilconfig: 2.1.0 postcss: 8.4.21 + ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) yaml: 1.10.2 dev: false - /postcss-nested/6.0.0_postcss@8.4.21: + /postcss-nested@6.0.0(postcss@8.4.21): resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} engines: {node: '>=12.0'} peerDependencies: @@ -10197,7 +10286,7 @@ packages: postcss-selector-parser: 6.0.11 dev: false - /postcss-selector-parser/6.0.11: + /postcss-selector-parser@6.0.11: resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} engines: {node: '>=4'} dependencies: @@ -10205,10 +10294,10 @@ packages: util-deprecate: 1.0.2 dev: false - /postcss-value-parser/4.2.0: + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - /postcss/8.4.21: + /postcss@8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -10216,21 +10305,21 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /preact/10.11.0: + /preact@10.11.0: resolution: {integrity: sha512-Fk6+vB2kb6mSJfDgODq0YDhMfl0HNtK5+Uc9QqECO4nlyPAQwCI+BKyWO//idA7ikV7o+0Fm6LQmNuQi1wXI1w==} dev: true - /prelude-ls/1.1.2: + /prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} dev: true - /prelude-ls/1.2.1: + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true - /prettier-plugin-jsdoc/0.4.2_prettier@2.8.8: + /prettier-plugin-jsdoc@0.4.2(prettier@2.8.8): resolution: {integrity: sha512-w2jnAQm3z0GAG0bhzVJeehzDtrhGMSxJjit5ApCc2oxWfc7+jmLAkbtdOXaSpfwZz3IWkk+PiQPeRrLNpbM+Mw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -10244,18 +10333,18 @@ packages: - supports-color dev: true - /prettier/2.8.8: + /prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true dev: true - /pretty-bytes/5.6.0: + /pretty-bytes@5.6.0: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} dev: true - /pretty-format/27.5.1: + /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -10264,7 +10353,7 @@ packages: react-is: 17.0.2 dev: true - /pretty-format/29.5.0: + /pretty-format@29.5.0: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10273,24 +10362,24 @@ packages: react-is: 18.2.0 dev: true - /process-nextick-args/2.0.1: + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /process-warning/1.0.0: + /process-warning@1.0.0: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: true - /process-warning/2.2.0: + /process-warning@2.2.0: resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} dev: false - /process/0.11.10: + /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} dev: false - /prompts/2.4.2: + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: @@ -10298,14 +10387,14 @@ packages: sisteransi: 1.0.5 dev: true - /prop-types/15.8.1: + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - /proxy-addr/2.0.7: + /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} dependencies: @@ -10313,12 +10402,12 @@ packages: ipaddr.js: 1.9.1 dev: true - /proxy-agent/5.0.0: + /proxy-agent@5.0.0: resolution: {integrity: sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==} engines: {node: '>= 8'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 lru-cache: 5.1.1 @@ -10329,15 +10418,15 @@ packages: - supports-color dev: true - /proxy-from-env/1.0.0: + /proxy-from-env@1.0.0: resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} dev: true - /proxy-from-env/1.1.0: + /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: true - /ps-tree/1.2.0: + /ps-tree@1.2.0: resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} engines: {node: '>= 0.10'} hasBin: true @@ -10345,83 +10434,83 @@ packages: event-stream: 3.3.4 dev: true - /psl/1.9.0: + /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true - /pump/3.0.0: + /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 dev: true - /punycode/2.1.1: + /punycode@2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} dev: true - /punycode/2.3.0: + /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} dev: true - /pure-rand/6.0.2: + /pure-rand@6.0.2: resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} dev: true - /q/1.5.1: + /q@1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: true - /qs/6.11.0: + /qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} dependencies: side-channel: 1.0.4 dev: true - /qs/6.5.3: + /qs@6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} engines: {node: '>=0.6'} dev: true - /querystringify/2.2.0: + /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - /quick-format-unescaped/4.0.4: + /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - /quick-lru/4.0.1: + /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} dev: true - /quick-lru/5.1.1: + /quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - /ramda/0.28.0: + /ramda@0.28.0: resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} dev: false - /randombytes/2.1.0: + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 dev: true - /range-parser/1.2.1: + /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} dev: true - /raw-body/2.5.1: + /raw-body@2.5.1: resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} engines: {node: '>= 0.8'} dependencies: @@ -10431,7 +10520,7 @@ packages: unpipe: 1.0.0 dev: true - /react-dom/16.14.0_react@16.14.0: + /react-dom@16.14.0(react@16.14.0): resolution: {integrity: sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==} peerDependencies: react: ^16.14.0 @@ -10442,18 +10531,18 @@ packages: react: 16.14.0 scheduler: 0.19.1 - /react-is/16.13.1: + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - /react-is/17.0.2: + /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true - /react-is/18.2.0: + /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react/16.14.0: + /react@16.14.0: resolution: {integrity: sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==} engines: {node: '>=0.10.0'} dependencies: @@ -10461,13 +10550,13 @@ packages: object-assign: 4.1.1 prop-types: 15.8.1 - /read-cache/1.0.0: + /read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 dev: false - /read-pkg-up/7.0.1: + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} dependencies: @@ -10476,7 +10565,7 @@ packages: type-fest: 0.8.1 dev: true - /read-pkg-up/8.0.0: + /read-pkg-up@8.0.0: resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==} engines: {node: '>=12'} dependencies: @@ -10485,7 +10574,7 @@ packages: type-fest: 1.4.0 dev: true - /read-pkg/5.2.0: + /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: @@ -10495,7 +10584,7 @@ packages: type-fest: 0.6.0 dev: true - /read-pkg/6.0.0: + /read-pkg@6.0.0: resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} engines: {node: '>=12'} dependencies: @@ -10505,7 +10594,7 @@ packages: type-fest: 1.4.0 dev: true - /readable-stream/1.1.14: + /readable-stream@1.1.14: resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} dependencies: core-util-is: 1.0.3 @@ -10514,7 +10603,7 @@ packages: string_decoder: 0.10.31 dev: true - /readable-stream/2.3.7: + /readable-stream@2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} dependencies: core-util-is: 1.0.3 @@ -10526,7 +10615,7 @@ packages: util-deprecate: 1.0.2 dev: true - /readable-stream/3.6.0: + /readable-stream@3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} dependencies: @@ -10535,7 +10624,7 @@ packages: util-deprecate: 1.0.2 dev: true - /readable-stream/4.3.0: + /readable-stream@4.3.0: resolution: {integrity: sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -10545,25 +10634,25 @@ packages: process: 0.11.10 dev: false - /readdirp/3.6.0: + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - /real-require/0.2.0: + /real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} dev: false - /rechoir/0.7.1: + /rechoir@0.7.1: resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==} engines: {node: '>= 0.10'} dependencies: resolve: 1.22.1 dev: true - /redent/3.0.0: + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} dependencies: @@ -10571,7 +10660,7 @@ packages: strip-indent: 3.0.0 dev: true - /redent/4.0.0: + /redent@4.0.0: resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} engines: {node: '>=12'} dependencies: @@ -10579,23 +10668,23 @@ packages: strip-indent: 4.0.0 dev: true - /regenerator-runtime/0.13.11: + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: true - /regexp-tree/0.1.24: + /regexp-tree@0.1.24: resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} hasBin: true dev: true - /regjsparser/0.9.1: + /regjsparser@0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true dependencies: jsesc: 0.5.0 dev: true - /remark-frontmatter/4.0.1: + /remark-frontmatter@4.0.1: resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==} dependencies: '@types/mdast': 3.0.10 @@ -10604,7 +10693,7 @@ packages: unified: 10.1.2 dev: true - /remark-gfm/3.0.1: + /remark-gfm@3.0.1: resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} dependencies: '@types/mdast': 3.0.10 @@ -10615,7 +10704,7 @@ packages: - supports-color dev: true - /remark-parse/10.0.1: + /remark-parse@10.0.1: resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} dependencies: '@types/mdast': 3.0.11 @@ -10625,7 +10714,7 @@ packages: - supports-color dev: true - /remark-stringify/10.0.2: + /remark-stringify@10.0.2: resolution: {integrity: sha512-6wV3pvbPvHkbNnWB0wdDvVFHOe1hBRAx1Q/5g/EpH4RppAII6J8Gnwe7VbHuXaoKIF6LAg6ExTel/+kNqSQ7lw==} dependencies: '@types/mdast': 3.0.11 @@ -10633,7 +10722,7 @@ packages: unified: 10.1.2 dev: true - /remark/14.0.2: + /remark@14.0.2: resolution: {integrity: sha512-A3ARm2V4BgiRXaUo5K0dRvJ1lbogrbXnhkJRmD0yw092/Yl0kOCZt1k9ZeElEwkZsWGsMumz6qL5MfNJH9nOBA==} dependencies: '@types/mdast': 3.0.10 @@ -10644,18 +10733,18 @@ packages: - supports-color dev: true - /repeat-string/1.6.1: + /repeat-string@1.6.1: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} dev: true - /request-progress/3.0.0: + /request-progress@3.0.0: resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} dependencies: throttleit: 1.0.0 dev: true - /request/2.88.2: + /request@2.88.2: resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} engines: {node: '>= 6'} deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 @@ -10682,61 +10771,61 @@ packages: uuid: 3.4.0 dev: true - /require-directory/2.1.1: + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: true - /require-from-string/2.0.2: + /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} dev: true - /requires-port/1.0.0: + /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true - /resolve-alpn/1.2.1: + /resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} dev: true - /resolve-cwd/3.0.0: + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 dev: true - /resolve-from/4.0.0: + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true - /resolve-from/5.0.0: + /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} dev: true - /resolve-global/1.0.0: + /resolve-global@1.0.0: resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} engines: {node: '>=8'} dependencies: global-dirs: 0.1.1 dev: true - /resolve.exports/2.0.2: + /resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} dev: true - /resolve/1.19.0: + /resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: is-core-module: 2.10.0 path-parse: 1.0.7 dev: true - /resolve/1.22.1: + /resolve@1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: @@ -10744,13 +10833,13 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /responselike/2.0.1: + /responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} dependencies: lowercase-keys: 2.0.0 dev: true - /restore-cursor/3.1.0: + /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} dependencies: @@ -10758,39 +10847,39 @@ packages: signal-exit: 3.0.7 dev: true - /ret/0.2.2: + /ret@0.2.2: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} engines: {node: '>=4'} dev: true - /retry/0.13.1: + /retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} dev: true - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /rfdc/1.3.0: + /rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} dev: true - /rimraf/2.7.1: + /rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true dependencies: glob: 7.2.3 dev: true - /rimraf/3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 dev: true - /rimraf/5.0.0: + /rimraf@5.0.0: resolution: {integrity: sha512-Jf9llaP+RvaEVS5nPShYFhtXIrb3LRKP281ib3So0KkeZKo2wIKyq0Re7TOSwanasA423PSr6CCIL4bP6T040g==} engines: {node: '>=14'} hasBin: true @@ -10798,11 +10887,11 @@ packages: glob: 10.2.2 dev: true - /robust-predicates/3.0.1: + /robust-predicates@3.0.1: resolution: {integrity: sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==} dev: false - /rollup-plugin-visualizer/5.9.0: + /rollup-plugin-visualizer@5.9.0: resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} engines: {node: '>=14'} hasBin: true @@ -10818,7 +10907,7 @@ packages: yargs: 17.7.1 dev: true - /rollup/2.79.1: + /rollup@2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} hasBin: true @@ -10826,7 +10915,7 @@ packages: fsevents: 2.3.2 dev: true - /rollup/3.20.6: + /rollup@3.20.6: resolution: {integrity: sha512-2yEB3nQXp/tBQDN0hJScJQheXdvU2wFhh6ld7K/aiZ1vYcak6N/BKjY1QrU6BvO2JWYS8bEs14FRaxXosxy2zw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true @@ -10834,7 +10923,7 @@ packages: fsevents: 2.3.2 dev: true - /rollup/3.21.0: + /rollup@3.21.0: resolution: {integrity: sha512-ANPhVcyeHvYdQMUyCbczy33nbLzI7RzrBje4uvNiTDJGIMtlKoOStmympwr9OtS1LZxiDmE2wvxHyVhoLtf1KQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true @@ -10842,129 +10931,129 @@ packages: fsevents: 2.3.2 dev: true - /rrweb-cssom/0.6.0: + /rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: true - /run-parallel/1.2.0: + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - /rw/1.3.3: + /rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} dev: false - /rxjs/7.8.0: + /rxjs@7.8.0: resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} dependencies: tslib: 2.4.0 dev: true - /sade/1.8.1: + /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} dependencies: mri: 1.2.0 dev: true - /safe-buffer/5.1.2: + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true - /safe-buffer/5.2.1: + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safe-regex/2.1.1: - resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} - dependencies: - regexp-tree: 0.1.24 - dev: true - - /safe-regex2/2.0.0: + /safe-regex2@2.0.0: resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} dependencies: ret: 0.2.2 dev: true - /safe-stable-stringify/2.4.3: + /safe-regex@2.1.1: + resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} + dependencies: + regexp-tree: 0.1.24 + dev: true + + /safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} engines: {node: '>=10'} dev: false - /safer-buffer/2.1.2: + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /saxes/5.0.1: + /saxes@5.0.1: resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} engines: {node: '>=10'} dependencies: xmlchars: 2.2.0 dev: true - /saxes/6.0.0: + /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 dev: true - /scheduler/0.19.1: + /scheduler@0.19.1: resolution: {integrity: sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - /schema-utils/3.1.1: + /schema-utils@3.1.1: resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} engines: {node: '>= 10.13.0'} dependencies: '@types/json-schema': 7.0.11 ajv: 6.12.6 - ajv-keywords: 3.5.2_ajv@6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) dev: true - /schema-utils/4.0.0: + /schema-utils@4.0.0: resolution: {integrity: sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==} engines: {node: '>= 12.13.0'} dependencies: '@types/json-schema': 7.0.11 ajv: 8.11.0 - ajv-formats: 2.1.1_ajv@8.11.0 - ajv-keywords: 5.1.0_ajv@8.11.0 + ajv-formats: 2.1.1(ajv@8.11.0) + ajv-keywords: 5.1.0(ajv@8.11.0) dev: true - /secure-json-parse/2.7.0: + /secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} dev: true - /select-hose/2.0.0: + /select-hose@2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} dev: true - /selfsigned/2.1.1: + /selfsigned@2.1.1: resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==} engines: {node: '>=10'} dependencies: node-forge: 1.3.1 dev: true - /semver-store/0.3.0: + /semver-store@0.3.0: resolution: {integrity: sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg==} dev: true - /semver/5.7.1: + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true dev: true - /semver/6.3.0: + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true dev: true - /semver/7.3.7: + /semver@7.3.7: resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} engines: {node: '>=10'} hasBin: true @@ -10972,7 +11061,7 @@ packages: lru-cache: 6.0.0 dev: true - /semver/7.3.8: + /semver@7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} hasBin: true @@ -10980,7 +11069,7 @@ packages: lru-cache: 6.0.0 dev: true - /semver/7.5.0: + /semver@7.5.0: resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} engines: {node: '>=10'} hasBin: true @@ -10988,7 +11077,7 @@ packages: lru-cache: 6.0.0 dev: true - /send/0.18.0: + /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} dependencies: @@ -11009,13 +11098,13 @@ packages: - supports-color dev: true - /serialize-javascript/6.0.0: + /serialize-javascript@6.0.0: resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: randombytes: 2.1.0 dev: true - /serve-index/1.9.1: + /serve-index@1.9.1: resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} engines: {node: '>= 0.8.0'} dependencies: @@ -11030,7 +11119,7 @@ packages: - supports-color dev: true - /serve-static/1.15.0: + /serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} dependencies: @@ -11042,54 +11131,54 @@ packages: - supports-color dev: true - /set-cookie-parser/2.6.0: + /set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: true - /setprototypeof/1.1.0: + /setprototypeof@1.1.0: resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} dev: true - /setprototypeof/1.2.0: + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: true - /shallow-clone/3.0.1: + /shallow-clone@3.0.1: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} dependencies: kind-of: 6.0.3 dev: true - /shebang-command/1.2.0: + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 dev: true - /shebang-command/2.0.0: + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 dev: true - /shebang-regex/1.0.0: + /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} dev: true - /shebang-regex/3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} dev: true - /shell-quote/1.8.1: + /shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: true - /shiki/0.14.1: + /shiki@0.14.1: resolution: {integrity: sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==} dependencies: ansi-sequence-parser: 1.1.0 @@ -11098,7 +11187,7 @@ packages: vscode-textmate: 8.0.0 dev: true - /side-channel/1.0.4: + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 @@ -11106,26 +11195,26 @@ packages: object-inspect: 1.12.3 dev: true - /siginfo/2.0.0: + /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true - /signal-exit/3.0.7: + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /signal-exit/4.0.1: + /signal-exit@4.0.1: resolution: {integrity: sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==} engines: {node: '>=14'} dev: true - /simple-swizzle/0.2.2: + /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: is-arrayish: 0.3.2 dev: false - /sirv/2.0.2: + /sirv@2.0.2: resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} engines: {node: '>= 10'} dependencies: @@ -11134,21 +11223,21 @@ packages: totalist: 3.0.0 dev: true - /sisteransi/1.0.5: + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true - /slash/3.0.0: + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: true - /slash/4.0.0: + /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} dev: true - /slice-ansi/3.0.0: + /slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} dependencies: @@ -11157,7 +11246,7 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /slice-ansi/4.0.0: + /slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} dependencies: @@ -11166,7 +11255,7 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /slice-ansi/5.0.0: + /slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} dependencies: @@ -11174,12 +11263,12 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true - /smart-buffer/4.2.0: + /smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} dev: true - /sockjs/0.3.24: + /sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} dependencies: faye-websocket: 0.11.4 @@ -11187,18 +11276,18 @@ packages: websocket-driver: 0.7.4 dev: true - /socks-proxy-agent/5.0.1: + /socks-proxy-agent@5.0.1: resolution: {integrity: sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==} engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) socks: 2.7.0 transitivePeerDependencies: - supports-color dev: true - /socks/2.7.0: + /socks@2.7.0: resolution: {integrity: sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==} engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} dependencies: @@ -11206,38 +11295,38 @@ packages: smart-buffer: 4.2.0 dev: true - /sonic-boom/1.4.1: + /sonic-boom@1.4.1: resolution: {integrity: sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==} dependencies: atomic-sleep: 1.0.0 flatstr: 1.0.12 dev: true - /sonic-boom/3.3.0: + /sonic-boom@3.3.0: resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==} dependencies: atomic-sleep: 1.0.0 dev: false - /source-map-js/1.0.2: + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - /source-map-support/0.5.13: + /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map-support/0.5.21: + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map/0.1.43: + /source-map@0.1.43: resolution: {integrity: sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==} engines: {node: '>=0.8.0'} requiresBuild: true @@ -11246,54 +11335,54 @@ packages: dev: true optional: true - /source-map/0.5.7: + /source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} dev: true - /source-map/0.6.1: + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - /source-map/0.7.4: + /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} dev: true - /sourcemap-codec/1.4.8: + /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead - /spawn-command/0.0.2-1: + /spawn-command@0.0.2-1: resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} dev: true - /spdx-correct/3.1.1: + /spdx-correct@3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.12 dev: true - /spdx-exceptions/2.3.0: + /spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} dev: true - /spdx-expression-parse/3.0.1: + /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.12 dev: true - /spdx-license-ids/3.0.12: + /spdx-license-ids@3.0.12: resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} dev: true - /spdy-transport/3.0.0: + /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -11303,11 +11392,11 @@ packages: - supports-color dev: true - /spdy/4.0.2: + /spdy@4.0.2: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -11316,28 +11405,28 @@ packages: - supports-color dev: true - /split/0.3.3: - resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} - dependencies: - through: 2.3.8 - dev: true - - /split2/3.2.2: + /split2@3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} dependencies: readable-stream: 3.6.0 dev: true - /split2/4.2.0: + /split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} dev: false - /sprintf-js/1.0.3: + /split@0.3.3: + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} + dependencies: + through: 2.3.8 + dev: true + + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /sshpk/1.17.0: + /sshpk@1.17.0: resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} engines: {node: '>=0.10.0'} hasBin: true @@ -11353,22 +11442,22 @@ packages: tweetnacl: 0.14.5 dev: true - /ssim.js/3.5.0: + /ssim.js@3.5.0: resolution: {integrity: sha512-Aj6Jl2z6oDmgYFFbQqK7fght19bXdOxY7Tj03nF+03M9gCBAjeIiO8/PlEGMfKDwYpw4q6iBqVq2YuREorGg/g==} dev: true - /stack-utils/2.0.5: + /stack-utils@2.0.5: resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 dev: true - /stackback/0.0.2: + /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /start-server-and-test/2.0.0: + /start-server-and-test@2.0.0: resolution: {integrity: sha512-UqKLw0mJbfrsG1jcRLTUlvuRi9sjNuUiDOLI42r7R5fA9dsFoywAy9DoLXNYys9B886E4RCKb+qM1Gzu96h7DQ==} engines: {node: '>=6'} hasBin: true @@ -11376,41 +11465,41 @@ packages: arg: 5.0.2 bluebird: 3.7.2 check-more-types: 2.24.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) execa: 5.1.1 lazy-ass: 1.6.0 ps-tree: 1.2.0 - wait-on: 7.0.1_debug@4.3.4 + wait-on: 7.0.1(debug@4.3.4) transitivePeerDependencies: - supports-color dev: true - /statuses/1.5.0: + /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} dev: true - /statuses/2.0.1: + /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} dev: true - /std-env/3.3.2: + /std-env@3.3.2: resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==} dev: true - /stream-combiner/0.0.4: + /stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} dependencies: duplexer: 0.1.2 dev: true - /string-argv/0.3.1: + /string-argv@0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} dev: true - /string-length/4.0.2: + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} dependencies: @@ -11418,11 +11507,11 @@ packages: strip-ansi: 6.0.1 dev: true - /string-similarity/4.0.4: + /string-similarity@4.0.4: resolution: {integrity: sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==} dev: true - /string-width/4.2.3: + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -11431,7 +11520,7 @@ packages: strip-ansi: 6.0.1 dev: true - /string-width/5.1.2: + /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} dependencies: @@ -11440,93 +11529,93 @@ packages: strip-ansi: 7.0.1 dev: true - /string_decoder/0.10.31: + /string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} dev: true - /string_decoder/1.1.1: + /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 dev: true - /string_decoder/1.3.0: + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 dev: true - /strip-ansi/3.0.1: + /strip-ansi@3.0.1: resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} engines: {node: '>=0.10.0'} dependencies: ansi-regex: 2.1.1 dev: true - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: true - /strip-ansi/7.0.1: + /strip-ansi@7.0.1: resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 dev: true - /strip-bom/4.0.0: + /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} dev: true - /strip-eof/1.0.0: + /strip-eof@1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} dev: true - /strip-final-newline/2.0.0: + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} dev: true - /strip-final-newline/3.0.0: + /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} dev: true - /strip-indent/3.0.0: + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 dev: true - /strip-indent/4.0.0: + /strip-indent@4.0.0: resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} engines: {node: '>=12'} dependencies: min-indent: 1.0.1 dev: true - /strip-json-comments/3.1.1: + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: true - /strip-literal/1.0.1: + /strip-literal@1.0.1: resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} dependencies: acorn: 8.8.2 dev: true - /stylis/4.1.3: + /stylis@4.1.3: resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} dev: false - /sucrase/3.32.0: + /sucrase@3.32.0: resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} engines: {node: '>=8'} hasBin: true @@ -11540,41 +11629,41 @@ packages: ts-interface-checker: 0.1.13 dev: false - /supports-color/2.0.0: + /supports-color@2.0.0: resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} engines: {node: '>=0.8.0'} dev: true - /supports-color/5.5.0: + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 dev: true - /supports-color/7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 dev: true - /supports-color/8.1.1: + /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} dependencies: has-flag: 4.0.0 dev: true - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /symbol-tree/3.2.4: + /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /synckit/0.8.5: + /synckit@0.8.5: resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: @@ -11582,7 +11671,7 @@ packages: tslib: 2.5.0 dev: true - /tailwindcss/3.3.1_postcss@8.4.21: + /tailwindcss@3.3.1(postcss@8.4.21)(ts-node@10.9.1): resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==} engines: {node: '>=12.13.0'} hasBin: true @@ -11604,10 +11693,10 @@ packages: object-hash: 3.0.0 picocolors: 1.0.0 postcss: 8.4.21 - postcss-import: 14.1.0_postcss@8.4.21 - postcss-js: 4.0.1_postcss@8.4.21 - postcss-load-config: 3.1.4_postcss@8.4.21 - postcss-nested: 6.0.0_postcss@8.4.21 + postcss-import: 14.1.0(postcss@8.4.21) + postcss-js: 4.0.1(postcss@8.4.21) + postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.1) + postcss-nested: 6.0.0(postcss@8.4.21) postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 @@ -11617,12 +11706,12 @@ packages: - ts-node dev: false - /tapable/2.2.1: + /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} dev: true - /teen_process/1.16.0: + /teen_process@1.16.0: resolution: {integrity: sha512-RnW7HHZD1XuhSTzD3djYOdIl1adE3oNEprE3HOFFxWs5m4FZsqYRhKJ4mDU2udtNGMLUS7jV7l8vVRLWAvmPDw==} engines: {'0': node} dependencies: @@ -11634,7 +11723,7 @@ packages: which: 2.0.2 dev: true - /term-img/4.1.0: + /term-img@4.1.0: resolution: {integrity: sha512-DFpBhaF5j+2f7kheKFc1ajsAUUDGOaNPpKPtiIMxlbfud6mvfFZuWGnTRpaujUa5J7yl6cIw/h6nyr4mSsENPg==} engines: {node: '>=8'} dependencies: @@ -11642,7 +11731,7 @@ packages: iterm2-version: 4.2.0 dev: true - /terser-webpack-plugin/5.3.6_webpack@5.75.0: + /terser-webpack-plugin@5.3.6(esbuild@0.17.18)(webpack@5.75.0): resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -11659,14 +11748,15 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.15 + esbuild: 0.17.18 jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.0 terser: 5.15.1 - webpack: 5.75.0_webpack-cli@4.10.0 + webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) dev: true - /terser/5.15.1: + /terser@5.15.1: resolution: {integrity: sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==} engines: {node: '>=10'} hasBin: true @@ -11677,7 +11767,7 @@ packages: source-map-support: 0.5.21 dev: true - /test-exclude/6.0.0: + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: @@ -11686,123 +11776,123 @@ packages: minimatch: 3.1.2 dev: true - /text-extensions/1.9.0: + /text-extensions@1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} dev: true - /text-table/0.2.0: + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /thenify-all/1.6.0: + /thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 dev: false - /thenify/3.3.1: + /thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 dev: false - /thread-stream/2.3.0: + /thread-stream@2.3.0: resolution: {integrity: sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==} dependencies: real-require: 0.2.0 dev: false - /throat/6.0.1: + /throat@6.0.1: resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==} dev: true - /throat/6.0.2: + /throat@6.0.2: resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} dev: true - /throttleit/1.0.0: + /throttleit@1.0.0: resolution: {integrity: sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==} dev: true - /through/2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true - - /through2/4.0.2: + /through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} dependencies: readable-stream: 3.6.0 dev: true - /thunky/1.1.0: + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} dev: true - /time-zone/1.0.0: + /time-zone@1.0.0: resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} engines: {node: '>=4'} dev: true - /tiny-glob/0.2.9: + /tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: globalyzer: 0.1.0 globrex: 0.1.2 dev: true - /tiny-lru/8.0.2: + /tiny-lru@8.0.2: resolution: {integrity: sha512-ApGvZ6vVvTNdsmt676grvCkUCGwzG9IqXma5Z07xJgiC5L7akUMof5U8G2JTI9Rz/ovtVhJBlY6mNhEvtjzOIg==} engines: {node: '>=6'} dev: true - /tinybench/2.4.0: + /tinybench@2.4.0: resolution: {integrity: sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==} dev: true - /tinypool/0.4.0: + /tinypool@0.4.0: resolution: {integrity: sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==} engines: {node: '>=14.0.0'} dev: true - /tinyspy/2.1.0: + /tinyspy@2.1.0: resolution: {integrity: sha512-7eORpyqImoOvkQJCSkL0d0mB4NHHIFAy4b1u8PHdDa7SjGS2njzl6/lyGoZLm+eyYEtlUmFGE0rFj66SWxZgQQ==} engines: {node: '>=14.0.0'} dev: true - /tmp/0.2.1: + /tmp@0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} engines: {node: '>=8.17.0'} dependencies: rimraf: 3.0.2 dev: true - /tmpl/1.0.5: + /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true - /to-fast-properties/2.0.0: + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - /to-regex-range/5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - /toidentifier/1.0.1: + /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} dev: true - /totalist/3.0.0: + /totalist@3.0.0: resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} engines: {node: '>=6'} dev: true - /tough-cookie/2.5.0: + /tough-cookie@2.5.0: resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} engines: {node: '>=0.8'} dependencies: @@ -11810,7 +11900,7 @@ packages: punycode: 2.1.1 dev: true - /tough-cookie/4.1.2: + /tough-cookie@4.1.2: resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} engines: {node: '>=6'} dependencies: @@ -11820,57 +11910,57 @@ packages: url-parse: 1.5.10 dev: true - /tr46/0.0.3: + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true - /tr46/3.0.0: + /tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} dependencies: punycode: 2.3.0 dev: true - /tr46/4.1.1: + /tr46@4.1.1: resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} engines: {node: '>=14'} dependencies: punycode: 2.3.0 dev: true - /traverse/0.3.9: + /traverse@0.3.9: resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==} dev: true - /tree-kill/1.2.2: + /tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true dev: true - /trim-newlines/3.0.1: + /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} dev: true - /trim-newlines/4.0.2: + /trim-newlines@4.0.2: resolution: {integrity: sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==} engines: {node: '>=12'} dev: true - /trough/2.1.0: + /trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: true - /ts-dedent/2.2.0: + /ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} dev: false - /ts-interface-checker/0.1.13: + /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: false - /ts-node/10.9.1_gfpyv5b3h2oguybx3lu7z4el7a: + /ts-node@10.9.1(@types/node@18.16.0)(typescript@5.0.4): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -11899,25 +11989,24 @@ packages: typescript: 5.0.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true - /ts-toolbelt/6.15.5: + /ts-toolbelt@6.15.5: resolution: {integrity: sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==} dev: false - /tslib/1.14.1: + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib/2.4.0: + /tslib@2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} dev: true - /tslib/2.5.0: + /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} dev: true - /tsutils/3.21.0_typescript@5.0.4: + /tsutils@3.21.0(typescript@5.0.4): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: @@ -11927,66 +12016,66 @@ packages: typescript: 5.0.4 dev: true - /tunnel-agent/0.6.0: + /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: safe-buffer: 5.2.1 dev: true - /tweetnacl/0.14.5: + /tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} dev: true - /type-check/0.3.2: + /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 dev: true - /type-check/0.4.0: + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 dev: true - /type-detect/4.0.8: + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} dev: true - /type-fest/0.18.1: + /type-fest@0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} dev: true - /type-fest/0.20.2: + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} dev: true - /type-fest/0.21.3: + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} dev: true - /type-fest/0.6.0: + /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} dev: true - /type-fest/0.8.1: + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} dev: true - /type-fest/1.4.0: + /type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} dev: true - /type-is/1.6.18: + /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} dependencies: @@ -11994,31 +12083,31 @@ packages: mime-types: 2.1.35 dev: true - /typedarray-to-buffer/3.1.5: + /typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 dev: true - /typedoc-plugin-markdown/3.15.2_typedoc@0.24.6: + /typedoc-plugin-markdown@3.15.2(typedoc@0.24.6): resolution: {integrity: sha512-OPXAL9hhdoVJzH/UaKAz6CBS/s8KlYyLWwnxF7ap0fQCuaMMWShA1JBq4n1SXbiGjx+7DOhOfTKQ5OzwryN3Vw==} peerDependencies: typedoc: '>=0.24.0' dependencies: handlebars: 4.7.7 - typedoc: 0.24.6_typescript@5.0.4 - typedoc-plugin-mdn-links: 3.0.3_typedoc@0.24.6 + typedoc: 0.24.6(typescript@5.0.4) + typedoc-plugin-mdn-links: 3.0.3(typedoc@0.24.6) dev: true - /typedoc-plugin-mdn-links/3.0.3_typedoc@0.24.6: + /typedoc-plugin-mdn-links@3.0.3(typedoc@0.24.6): resolution: {integrity: sha512-NXhIpwQnsg7BcyMCHVqj3tUK+DL4g3Bt96JbFl4APzTGFkA+iM6GfZ/fn3TAqJ8O0CXG5R9BfWxolw1m1omNuQ==} peerDependencies: typedoc: '>= 0.23.14 || 0.24.x' dependencies: - typedoc: 0.24.6_typescript@5.0.4 + typedoc: 0.24.6(typescript@5.0.4) dev: true - /typedoc/0.24.6_typescript@5.0.4: + /typedoc@0.24.6(typescript@5.0.4): resolution: {integrity: sha512-c3y3h45xJv3qYwKDAwU6Cl+26CjT0ZvblHzfHJ+SjQDM4p1mZxtgHky4lhmG0+nNarRht8kADfZlbspJWdZarQ==} engines: {node: '>= 14.14'} hasBin: true @@ -12032,21 +12121,20 @@ packages: typescript: 5.0.4 dev: true - /typescript/5.0.4: + /typescript@5.0.4: resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} engines: {node: '>=12.20'} hasBin: true - dev: true - /uc.micro/1.0.6: + /uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} dev: true - /ufo/1.1.1: + /ufo@1.1.1: resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==} dev: true - /uglify-js/3.17.3: + /uglify-js@3.17.3: resolution: {integrity: sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==} engines: {node: '>=0.8.0'} hasBin: true @@ -12054,11 +12142,11 @@ packages: dev: true optional: true - /underscore/1.1.7: + /underscore@1.1.7: resolution: {integrity: sha512-w4QtCHoLBXw1mjofIDoMyexaEdWGMedWNDhlWTtT1V1lCRqi65Pnoygkh6+WRdr+Bm8ldkBNkNeCsXGMlQS9HQ==} dev: true - /unified/10.1.2: + /unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} dependencies: '@types/unist': 2.0.6 @@ -12070,41 +12158,41 @@ packages: vfile: 5.3.5 dev: true - /unique-string/2.0.0: + /unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} dependencies: crypto-random-string: 2.0.0 dev: true - /unist-util-flatmap/1.0.0: + /unist-util-flatmap@1.0.0: resolution: {integrity: sha512-IG32jcKJlhARCYT2LsYPJWdoXYkzz3ESAdl1aa2hn9Auh+cgUmU6wgkII4yCc/1GgeWibRdELdCZh/p3QKQ1dQ==} dev: true - /unist-util-is/5.1.1: + /unist-util-is@5.1.1: resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==} dev: true - /unist-util-stringify-position/2.0.3: + /unist-util-stringify-position@2.0.3: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} dependencies: '@types/unist': 2.0.6 dev: true - /unist-util-stringify-position/3.0.2: + /unist-util-stringify-position@3.0.2: resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} dependencies: '@types/unist': 2.0.6 dev: true - /unist-util-visit-parents/5.1.1: + /unist-util-visit-parents@5.1.1: resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} dependencies: '@types/unist': 2.0.6 unist-util-is: 5.1.1 dev: true - /unist-util-visit/4.1.1: + /unist-util-visit@4.1.1: resolution: {integrity: sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==} dependencies: '@types/unist': 2.0.6 @@ -12112,32 +12200,32 @@ packages: unist-util-visit-parents: 5.1.1 dev: true - /universalify/0.1.2: + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} dev: true - /universalify/0.2.0: + /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} dev: true - /universalify/2.0.0: + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} dev: true - /unpipe/1.0.0: + /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} dev: true - /untildify/4.0.0: + /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} dev: true - /update-browserslist-db/1.0.10_browserslist@4.21.4: + /update-browserslist-db@1.0.10(browserslist@4.21.4): resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: @@ -12148,44 +12236,44 @@ packages: picocolors: 1.0.0 dev: true - /uri-js/4.4.1: + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 dev: true - /url-parse/1.5.10: + /url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 dev: true - /util-deprecate/1.0.2: + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /utils-merge/1.0.1: + /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} dev: true - /uuid/3.4.0: + /uuid@3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. hasBin: true dev: true - /uuid/8.3.2: + /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true dev: true - /uuid/9.0.0: + /uuid@9.0.0: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true dev: false - /uvu/0.5.6: + /uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} engines: {node: '>=8'} hasBin: true @@ -12196,11 +12284,10 @@ packages: sade: 1.8.1 dev: true - /v8-compile-cache-lib/3.0.1: + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true - /v8-to-istanbul/9.0.1: + /v8-to-istanbul@9.0.1: resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: @@ -12209,19 +12296,19 @@ packages: convert-source-map: 1.8.0 dev: true - /validate-npm-package-license/3.0.4: + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.1.1 spdx-expression-parse: 3.0.1 dev: true - /vary/1.1.2: + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: true - /verror/1.10.0: + /verror@1.10.0: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} dependencies: @@ -12230,14 +12317,14 @@ packages: extsprintf: 1.3.0 dev: true - /vfile-message/3.1.2: + /vfile-message@3.1.2: resolution: {integrity: sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==} dependencies: '@types/unist': 2.0.6 unist-util-stringify-position: 3.0.2 dev: true - /vfile/5.3.5: + /vfile@5.3.5: resolution: {integrity: sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==} dependencies: '@types/unist': 2.0.6 @@ -12246,17 +12333,17 @@ packages: vfile-message: 3.1.2 dev: true - /vite-node/0.30.1_@types+node@18.16.0: + /vite-node@0.30.1(@types/node@18.16.0): resolution: {integrity: sha512-vTikpU/J7e6LU/8iM3dzBo8ZhEiKZEKRznEMm+mJh95XhWaPrJQraT/QsT2NWmuEf+zgAoMe64PKT7hfZ1Njmg==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 - vite: 4.3.2_@types+node@18.16.0 + vite: 4.3.2(@types/node@18.16.0) transitivePeerDependencies: - '@types/node' - less @@ -12267,7 +12354,7 @@ packages: - terser dev: true - /vite/4.2.2: + /vite@4.2.2(@types/node@18.16.0): resolution: {integrity: sha512-PcNtT5HeDxb3QaSqFYkEum8f5sCVe0R3WK20qxgIvNBZPXU/Obxs/+ubBMeE7nLWeCo2LDzv+8hRYSlcaSehig==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -12292,6 +12379,7 @@ packages: terser: optional: true dependencies: + '@types/node': 18.16.0 esbuild: 0.17.18 postcss: 8.4.21 resolve: 1.22.1 @@ -12300,7 +12388,7 @@ packages: fsevents: 2.3.2 dev: true - /vite/4.3.2_@types+node@18.16.0: + /vite@4.3.2(@types/node@18.16.0): resolution: {integrity: sha512-9R53Mf+TBoXCYejcL+qFbZde+eZveQLDYd9XgULILLC1a5ZwPaqgmdVpL8/uvw2BM/1TzetWjglwm+3RO+xTyw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -12333,7 +12421,7 @@ packages: fsevents: 2.3.2 dev: true - /vitepress-plugin-search/1.0.4-alpha.20_q7rm74uk55forjnjpr6bhftijq: + /vitepress-plugin-search@1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-alpha.72)(vue@3.2.47): resolution: {integrity: sha512-zG+ev9pw1Mg7htABlFCNXb8XwnKN+qfTKw+vU0Ers6RIrABx+45EAAFBoaL1mEpl1FRFn1o/dQ7F4b8GP6HdGQ==} engines: {node: ^14.13.1 || ^16.7.0 || >=18} peerDependencies: @@ -12346,24 +12434,24 @@ packages: flexsearch: 0.7.31 glob-to-regexp: 0.4.1 markdown-it: 13.0.1 - vitepress: 1.0.0-alpha.72_hoyvfk3ab7nzsjkhptt6ai7rzq + vitepress: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0) vue: 3.2.47 dev: true - /vitepress/1.0.0-alpha.72_hoyvfk3ab7nzsjkhptt6ai7rzq: + /vitepress@1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0): resolution: {integrity: sha512-Ou7fNE/OVYLrKGQMHSTVG6AcNsdv7tm4ACrdhx93SPMzEDj8UgIb4RFa5CTTowaYf3jeDGi2EAJlzXVC+IE3dg==} hasBin: true dependencies: '@docsearch/css': 3.3.3 - '@docsearch/js': 3.3.3_hoyvfk3ab7nzsjkhptt6ai7rzq - '@vitejs/plugin-vue': 4.1.0_vite@4.2.2+vue@3.2.47 + '@docsearch/js': 3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0) + '@vitejs/plugin-vue': 4.1.0(vite@4.2.2)(vue@3.2.47) '@vue/devtools-api': 6.5.0 - '@vueuse/core': 10.0.2_vue@3.2.47 + '@vueuse/core': 10.0.2(vue@3.2.47) body-scroll-lock: 4.0.0-beta.0 mark.js: 8.11.1 minisearch: 6.0.1 shiki: 0.14.1 - vite: 4.2.2 + vite: 4.2.2(@types/node@18.16.0) vue: 3.2.47 transitivePeerDependencies: - '@algolia/client-search' @@ -12379,7 +12467,7 @@ packages: - terser dev: true - /vitest/0.30.1_6kqxyppp63ueahn2lmwmvatjp4: + /vitest@0.30.1(@vitest/ui@0.30.1)(jsdom@21.1.1): resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -12424,7 +12512,7 @@ packages: cac: 6.7.14 chai: 4.3.7 concordance: 5.0.4 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) jsdom: 21.1.1 local-pkg: 0.4.3 magic-string: 0.30.0 @@ -12435,8 +12523,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.4.0 tinypool: 0.4.0 - vite: 4.3.2_@types+node@18.16.0 - vite-node: 0.30.1_@types+node@18.16.0 + vite: 4.3.2(@types/node@18.16.0) + vite-node: 0.30.1(@types/node@18.16.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -12447,7 +12535,7 @@ packages: - terser dev: true - /vm2/3.9.11: + /vm2@3.9.11: resolution: {integrity: sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==} engines: {node: '>=6.0'} hasBin: true @@ -12456,7 +12544,7 @@ packages: acorn-walk: 8.2.0 dev: true - /vscode-json-languageservice/4.2.1: + /vscode-json-languageservice@4.2.1: resolution: {integrity: sha512-xGmv9QIWs2H8obGbWg+sIPI/3/pFgj/5OWBhNzs00BkYQ9UaB2F6JJaGB/2/YOZJ3BvLXQTC4Q7muqU25QgAhA==} dependencies: jsonc-parser: 3.2.0 @@ -12466,35 +12554,35 @@ packages: vscode-uri: 3.0.7 dev: true - /vscode-languageserver-textdocument/1.0.7: + /vscode-languageserver-textdocument@1.0.7: resolution: {integrity: sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg==} dev: true - /vscode-languageserver-textdocument/1.0.8: + /vscode-languageserver-textdocument@1.0.8: resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} dev: true - /vscode-languageserver-types/3.17.2: + /vscode-languageserver-types@3.17.2: resolution: {integrity: sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==} dev: true - /vscode-nls/5.2.0: + /vscode-nls@5.2.0: resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} dev: true - /vscode-oniguruma/1.7.0: + /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} dev: true - /vscode-textmate/8.0.0: + /vscode-textmate@8.0.0: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: true - /vscode-uri/3.0.7: + /vscode-uri@3.0.7: resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} dev: true - /vue-demi/0.14.0_vue@3.2.47: + /vue-demi@0.14.0(vue@3.2.47): resolution: {integrity: sha512-gt58r2ogsNQeVoQ3EhoUAvUsH9xviydl0dWJj7dabBC/2L4uBId7ujtCwDRD0JhkGsV1i0CtfLAeyYKBht9oWg==} engines: {node: '>=12'} hasBin: true @@ -12509,16 +12597,16 @@ packages: vue: 3.2.47 dev: true - /vue/3.2.47: + /vue@3.2.47: resolution: {integrity: sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==} dependencies: '@vue/compiler-dom': 3.2.47 '@vue/compiler-sfc': 3.2.47 '@vue/runtime-dom': 3.2.47 - '@vue/server-renderer': 3.2.47_vue@3.2.47 + '@vue/server-renderer': 3.2.47(vue@3.2.47) '@vue/shared': 3.2.47 - /vuex/4.1.0_vue@3.2.47: + /vuex@4.1.0(vue@3.2.47): resolution: {integrity: sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==} peerDependencies: vue: ^3.2.0 @@ -12527,33 +12615,33 @@ packages: vue: 3.2.47 dev: false - /w3c-hr-time/1.0.2: + /w3c-hr-time@1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} deprecated: Use your platform's native performance.now() and performance.timeOrigin. dependencies: browser-process-hrtime: 1.0.0 dev: true - /w3c-xmlserializer/3.0.0: + /w3c-xmlserializer@3.0.0: resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} engines: {node: '>=12'} dependencies: xml-name-validator: 4.0.0 dev: true - /w3c-xmlserializer/4.0.0: + /w3c-xmlserializer@4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} dependencies: xml-name-validator: 4.0.0 dev: true - /wait-on/7.0.1_debug@4.3.4: + /wait-on@7.0.1(debug@4.3.4): resolution: {integrity: sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog==} engines: {node: '>=12.0.0'} hasBin: true dependencies: - axios: 0.27.2_debug@4.3.4 + axios: 0.27.2(debug@4.3.4) joi: 17.8.3 lodash: 4.17.21 minimist: 1.2.8 @@ -12562,13 +12650,13 @@ packages: - debug dev: true - /walker/1.0.8: + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 dev: true - /watchpack/2.4.0: + /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} dependencies: @@ -12576,26 +12664,26 @@ packages: graceful-fs: 4.2.10 dev: true - /wbuf/1.7.3: + /wbuf@1.7.3: resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} dependencies: minimalistic-assert: 1.0.1 dev: true - /web-worker/1.2.0: + /web-worker@1.2.0: resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==} dev: false - /webdriver/7.30.0_typescript@5.0.4: + /webdriver@7.30.0(typescript@5.0.4): resolution: {integrity: sha512-bQE4oVgjjg5sb3VkCD+Eb8mscEvf3TioP0mnEZK0f5OJUNI045gMCJgpX8X4J8ScGyEhzlhn1KvlAn3yzxjxog==} engines: {node: '>=12.0.0'} dependencies: '@types/node': 18.16.0 - '@wdio/config': 7.30.0_typescript@5.0.4 + '@wdio/config': 7.30.0(typescript@5.0.4) '@wdio/logger': 7.26.0 '@wdio/protocols': 7.27.0 - '@wdio/types': 7.26.0_typescript@5.0.4 - '@wdio/utils': 7.26.0_typescript@5.0.4 + '@wdio/types': 7.26.0(typescript@5.0.4) + '@wdio/utils': 7.26.0(typescript@5.0.4) got: 11.8.5 ky: 0.30.0 lodash.merge: 4.6.2 @@ -12603,16 +12691,16 @@ packages: - typescript dev: true - /webidl-conversions/3.0.1: + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true - /webidl-conversions/7.0.0: + /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} dev: true - /webpack-cli/4.10.0_uaydpeuxkjjcxdbyfgk36cjdxi: + /webpack-cli@4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0): resolution: {integrity: sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==} engines: {node: '>=10.13.0'} hasBin: true @@ -12633,9 +12721,9 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0_pda42hcaj7d62cr262fr632kue - '@webpack-cli/info': 1.5.0_webpack-cli@4.10.0 - '@webpack-cli/serve': 1.7.0_ud4agclah7rahur6ntojouq57y + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.75.0) + '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) + '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0)(webpack-dev-server@4.11.1) colorette: 2.0.19 commander: 7.2.0 cross-spawn: 7.0.3 @@ -12643,12 +12731,12 @@ packages: import-local: 3.1.0 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.75.0_webpack-cli@4.10.0 - webpack-dev-server: 4.11.1_pda42hcaj7d62cr262fr632kue + webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack-dev-server: 4.11.1(webpack-cli@4.10.0)(webpack@5.75.0) webpack-merge: 5.8.0 dev: true - /webpack-dev-middleware/5.3.3_webpack@5.75.0: + /webpack-dev-middleware@5.3.3(webpack@5.75.0): resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -12659,10 +12747,10 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.0.0 - webpack: 5.75.0_webpack-cli@4.10.0 + webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) dev: true - /webpack-dev-server/4.11.1_pda42hcaj7d62cr262fr632kue: + /webpack-dev-server@4.11.1(webpack-cli@4.10.0)(webpack@5.75.0): resolution: {integrity: sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==} engines: {node: '>= 12.13.0'} hasBin: true @@ -12690,7 +12778,7 @@ packages: express: 4.18.2 graceful-fs: 4.2.10 html-entities: 2.3.3 - http-proxy-middleware: 2.0.6_@types+express@4.17.14 + http-proxy-middleware: 2.0.6(@types/express@4.17.14) ipaddr.js: 2.0.1 open: 8.4.0 p-retry: 4.6.2 @@ -12700,9 +12788,9 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.75.0_webpack-cli@4.10.0 - webpack-cli: 4.10.0_uaydpeuxkjjcxdbyfgk36cjdxi - webpack-dev-middleware: 5.3.3_webpack@5.75.0 + webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) + webpack-dev-middleware: 5.3.3(webpack@5.75.0) ws: 8.9.0 transitivePeerDependencies: - bufferutil @@ -12711,7 +12799,7 @@ packages: - utf-8-validate dev: true - /webpack-merge/5.8.0: + /webpack-merge@5.8.0: resolution: {integrity: sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==} engines: {node: '>=10.0.0'} dependencies: @@ -12719,12 +12807,12 @@ packages: wildcard: 2.0.0 dev: true - /webpack-sources/3.2.3: + /webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} dev: true - /webpack/5.75.0_webpack-cli@4.10.0: + /webpack@5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0): resolution: {integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==} engines: {node: '>=10.13.0'} hasBin: true @@ -12740,7 +12828,7 @@ packages: '@webassemblyjs/wasm-edit': 1.11.1 '@webassemblyjs/wasm-parser': 1.11.1 acorn: 8.8.0 - acorn-import-assertions: 1.8.0_acorn@8.8.0 + acorn-import-assertions: 1.8.0(acorn@8.8.0) browserslist: 4.21.4 chrome-trace-event: 1.0.3 enhanced-resolve: 5.10.0 @@ -12755,9 +12843,9 @@ packages: neo-async: 2.6.2 schema-utils: 3.1.1 tapable: 2.2.1 - terser-webpack-plugin: 5.3.6_webpack@5.75.0 + terser-webpack-plugin: 5.3.6(esbuild@0.17.18)(webpack@5.75.0) watchpack: 2.4.0 - webpack-cli: 4.10.0_uaydpeuxkjjcxdbyfgk36cjdxi + webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -12765,7 +12853,7 @@ packages: - uglify-js dev: true - /websocket-driver/0.7.4: + /websocket-driver@0.7.4: resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} engines: {node: '>=0.8.0'} dependencies: @@ -12774,29 +12862,29 @@ packages: websocket-extensions: 0.1.4 dev: true - /websocket-extensions/0.1.4: + /websocket-extensions@0.1.4: resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} engines: {node: '>=0.8.0'} dev: true - /well-known-symbols/2.0.0: + /well-known-symbols@2.0.0: resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} engines: {node: '>=6'} dev: true - /whatwg-encoding/2.0.0: + /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 dev: true - /whatwg-mimetype/3.0.0: + /whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} dev: true - /whatwg-url/10.0.0: + /whatwg-url@10.0.0: resolution: {integrity: sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==} engines: {node: '>=12'} dependencies: @@ -12804,7 +12892,7 @@ packages: webidl-conversions: 7.0.0 dev: true - /whatwg-url/11.0.0: + /whatwg-url@11.0.0: resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} dependencies: @@ -12812,7 +12900,7 @@ packages: webidl-conversions: 7.0.0 dev: true - /whatwg-url/12.0.1: + /whatwg-url@12.0.1: resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} engines: {node: '>=14'} dependencies: @@ -12820,21 +12908,21 @@ packages: webidl-conversions: 7.0.0 dev: true - /whatwg-url/5.0.0: + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 dev: true - /which/1.3.1: + /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true dependencies: isexe: 2.0.0 dev: true - /which/2.0.2: + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true @@ -12842,7 +12930,7 @@ packages: isexe: 2.0.0 dev: true - /why-is-node-running/2.2.2: + /why-is-node-running@2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} engines: {node: '>=8'} hasBin: true @@ -12851,27 +12939,27 @@ packages: stackback: 0.0.2 dev: true - /widest-line/3.1.0: + /widest-line@3.1.0: resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} engines: {node: '>=8'} dependencies: string-width: 4.2.3 dev: true - /wildcard/2.0.0: + /wildcard@2.0.0: resolution: {integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==} dev: true - /word-wrap/1.2.3: + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: true - /wordwrap/1.0.0: + /wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true - /wrap-ansi/6.2.0: + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} dependencies: @@ -12880,7 +12968,7 @@ packages: strip-ansi: 6.0.1 dev: true - /wrap-ansi/7.0.0: + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: @@ -12889,10 +12977,10 @@ packages: strip-ansi: 6.0.1 dev: true - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /write-file-atomic/3.0.3: + /write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} dependencies: imurmurhash: 0.1.4 @@ -12901,7 +12989,7 @@ packages: typedarray-to-buffer: 3.1.5 dev: true - /write-file-atomic/4.0.2: + /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: @@ -12909,7 +12997,7 @@ packages: signal-exit: 3.0.7 dev: true - /ws/8.12.0: + /ws@8.12.0: resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} engines: {node: '>=10.0.0'} peerDependencies: @@ -12922,7 +13010,7 @@ packages: optional: true dev: true - /ws/8.13.0: + /ws@8.13.0: resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: @@ -12935,7 +13023,7 @@ packages: optional: true dev: true - /ws/8.5.0: + /ws@8.5.0: resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} engines: {node: '>=10.0.0'} peerDependencies: @@ -12948,7 +13036,7 @@ packages: optional: true dev: true - /ws/8.9.0: + /ws@8.9.0: resolution: {integrity: sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==} engines: {node: '>=10.0.0'} peerDependencies: @@ -12961,63 +13049,63 @@ packages: optional: true dev: true - /xdg-basedir/4.0.0: + /xdg-basedir@4.0.0: resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} engines: {node: '>=8'} dev: true - /xml-name-validator/4.0.0: + /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} dev: true - /xmlbuilder/15.1.1: + /xmlbuilder@15.1.1: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} dev: true - /xmlchars/2.2.0: + /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true - /xregexp/2.0.0: + /xregexp@2.0.0: resolution: {integrity: sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==} dev: true - /y18n/5.0.8: + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: true - /yallist/3.1.1: + /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: true - /yallist/4.0.0: + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml/1.10.2: + /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} dev: false - /yaml/2.2.2: + /yaml@2.2.2: resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} engines: {node: '>= 14'} dev: true - /yargs-parser/20.2.9: + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: true - /yargs-parser/21.1.1: + /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} dev: true - /yargs/16.2.0: + /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} dependencies: @@ -13030,7 +13118,7 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs/17.6.2: + /yargs@17.6.2: resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} engines: {node: '>=12'} dependencies: @@ -13043,7 +13131,7 @@ packages: yargs-parser: 21.1.1 dev: true - /yargs/17.7.1: + /yargs@17.7.1: resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} engines: {node: '>=12'} dependencies: @@ -13056,28 +13144,27 @@ packages: yargs-parser: 21.1.1 dev: true - /yauzl/2.10.0: + /yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 dev: true - /yn/3.1.1: + /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} - dev: true - /yocto-queue/0.1.0: + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true - /yocto-queue/1.0.0: + /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} dev: true - /zwitch/2.0.2: + /zwitch@2.0.2: resolution: {integrity: sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==} dev: true From 99abd4c31b859068dee14434509813b34dc7eec5 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 29 Apr 2023 10:12:47 +0530 Subject: [PATCH 052/255] Fix avatar fetching --- cSpell.json | 5 + .../src/docs/.vitepress/components.d.ts | 6 +- .../docs/.vitepress/contributor-names.json | 107 +- .../src/docs/.vitepress/contributors.ts | 69 +- .../docs/.vitepress/scripts/fetch-avatars.ts | 47 +- .../.vitepress/scripts/fetch-contributors.ts | 8 +- packages/mermaid/src/docs/package.json | 32 +- packages/mermaid/src/docs/vite.config.ts | 32 +- pnpm-lock.yaml | 9036 ++++++++--------- 9 files changed, 4517 insertions(+), 4825 deletions(-) rename scripts/updateContributors.ts => packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts (85%) diff --git a/cSpell.json b/cSpell.json index 24976643a..7cce0bfa9 100644 --- a/cSpell.json +++ b/cSpell.json @@ -38,6 +38,7 @@ "dompurify", "edgechromium", "elkjs", + "esno", "faber", "flatmap", "ftplugin", @@ -50,10 +51,12 @@ "grav", "greywolf", "huynh", + "huynhicode", "inkdrop", "jaoude", "jgreywolf", "jison", + "jiti", "kaufmann", "khroma", "klemm", @@ -79,6 +82,7 @@ "mult", "ohmyfetch", "orlandoni", + "pathe", "pbrolin", "phpbb", "plantuml", @@ -119,6 +123,7 @@ "vinod", "visio", "vitepress", + "vueuse", "xlink", "yash" ], diff --git a/packages/mermaid/src/docs/.vitepress/components.d.ts b/packages/mermaid/src/docs/.vitepress/components.d.ts index e02f97c92..9704ee282 100644 --- a/packages/mermaid/src/docs/.vitepress/components.d.ts +++ b/packages/mermaid/src/docs/.vitepress/components.d.ts @@ -1,5 +1,7 @@ -// generated by unplugin-vue-components -// We suggest you to commit this file into source control +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components // Read more: https://github.com/vuejs/core/pull/3399 import '@vue/runtime-core' diff --git a/packages/mermaid/src/docs/.vitepress/contributor-names.json b/packages/mermaid/src/docs/.vitepress/contributor-names.json index f1253b557..089c09eb6 100644 --- a/packages/mermaid/src/docs/.vitepress/contributor-names.json +++ b/packages/mermaid/src/docs/.vitepress/contributor-names.json @@ -5,48 +5,55 @@ "tylerlong", "ashishjain0512", "weedySeaDragon", + "aloisklink", "mmorel-35", "GDFaber", - "aloisklink", "klemmchr", "jgreywolf", "cmmoran", "Yash-Singh1", "IOrlandoni", "raghur", + "pbrolin47", "SeanKilleen", "erelling", "spopida", "emersonbottero", "bjowes", + "huynhicode", "Andre601", "dbartholomae", "gibson042", - "pbrolin47", "chrismoran-bkt", "abzicht", "gwincr11", "mearns", "spier", "BastianZim", + "JeremyFunk", + "remcohaszing", + "Billiam", "devcer", "sagea", "DKurilo", "gijswijs", "timmaffett", + "tomperr", "pinghe", "ciekawy", "lexmin0412", + "karistom", "koljatm-edeka", "notquiterussell", "spect88", - "huynhicode", + "oleveau", + "ted-marozzi", "dany74q", "johnnywalker", "72636c", "therzka", "fardog", - "Mogztter", + "ggrossetie", "bollwyvl", "adamwulf", "elliot-nelson", @@ -56,8 +63,9 @@ "flying-sheep", "vallsv", "Xstoudi", + "lishid", "arpansaha13", - "Some-Dood", + "BastiDood", "DanShai", "LarryKlugerDS", "MasonM", @@ -65,7 +73,6 @@ "sechel", "swoyam2609", "abhijeet-pathak", - "lishid", "eajenkins", "harshilparmar", "Guy-Adler", @@ -79,35 +86,42 @@ "keenanjt33", "lf-novelt", "faisalarbain", + "Will-Low", "cm-wada-yusuke", "ymgch", "yutotnh", "arnaud-zg", "BD103", + "Mister-Hope", + "Omerr", "Aniket1026", + "bish0polis", "CalebUsadi", "gene1wood", "gillesdemey", + "jeroen-ekkelkamp", + "josh-bouganim-avant", "JoshSharpe", "heyfirst", "knuts-ic", + "kshitijsaksena", "loris-intergalactique", "lindseywild", "tmatz", "mahomedalid", "doble-eme", - "Mister-Hope", "MrCoder", "pbendersky", + "Pr0dt0s", "Rutorai", "ThanasisMpalatsoukas", "thomasleveil", - "tomperr", "husa", "abeaton", "anugs", "ginomempin", "lilisha100", + "nekikara", "nothingismagick", "phairow", "deining", @@ -117,17 +131,20 @@ "vijay40", "0xflotus", "AndreasVolkmann", + "andrew-clarkson", "ashsearle", - "bish0polis", "DawMatt", "frankschmitt", + "guilhermgonzaga", "ggpasqualino", "hrgui", "IanLee1521", "jbednar", "jdavis61", "jayvdb", + "jonabc", "jbronson-sf", + "lauraceconi", "lorint", "MindaugasLaganeckas", "u-minor", @@ -139,29 +156,32 @@ "larkinscott", "The-Alchemist", "TomWright", + "LeoDog896", "tshepang", "Vrixyz", "sinedied", "yonasb", "Zer0n0mask", + "luin", "brookhong", + "Jeff-Tian", "edumicse", + "eitsupi", "ilmari-lauhakangas", "jasmaa", "sy-records", "uttk", "el-mapache", "bigred8982", - "imgss", "Joxtacy", "mrmanc", - "riaanduplessis", "sylhare", "vikyaiyer", "CollierCZ", "adutton", "adam-hotait", "ameech", + "AielloChan", "AlanHohn", "aledileo", "alexislefebvre", @@ -185,9 +205,9 @@ "Arthaey", "AsaAyers", "bglnelissen", + "Barry1", "ben-page", "jawn", - "Billiam", "xbojch", "craigmac", "hydrosquall", @@ -197,13 +217,16 @@ "dodoinblue", "ctruelson", "beaudry", + "Odogwudozilla", "ct-martin", + "Whoeza", "Clint-Chester", "connor4312", "DCsunset", "activus-d", "DanInProgress", "egnor", + "cakemanny", "Olshansk", "danielsitnik", "dariuswiles", @@ -224,9 +247,12 @@ "FabAlchemy", "fregante", "filipedeschamps", + "fkohrt", "Foo-x", "Frank-Mayer", + "l2fprod", "gwatts", + "GavinPen", "gnkm", "gjlubbertsen", "guidanoli", @@ -234,9 +260,11 @@ "H3RSKO", "hwine", "HerbCaudill", + "LiHowe", "TribalNightOwl", "hugovk", "jolting", + "imgss", "ImanimalXI", "ImgBotApp", "imma90", @@ -258,7 +286,7 @@ "jinntrance", "jmelfi", "Qix-", - "jmg-duarte", + "xuanxu", "kahgoh", "Schweinepriester", "Kaligule", @@ -269,6 +297,7 @@ "kriskhaira", "kale-stew", "Lance-DC", + "Valentine14th", "kciter", "zaaath", "manicki", @@ -287,19 +316,24 @@ "ma-zal", "mgaitan", "mapio", + "mre", "matteodelabre", "maxArturo", "DavertMik", "mgenereu", "maiermic", + "vorburger", "magmax", "quulah", "mbostock", "Crocin", + "natasha-jarus", "elv-nate", "NateChurch", "gerardnico", "NitinLodha2812", + "Oliboy50", + "piradata", "hype09", "pje", "saulgajda", @@ -310,6 +344,9 @@ "reetghosh1", "renanlecaro", "Renfay007", + "riaanduplessis", + "RobertWeinmeister", + "rodja", "wontonst", "RudolfMan", "SlideeScherz", @@ -332,56 +369,24 @@ "commai", "MetalBlueberry", "volkanunsal", + "Julez404", "yudenzel", "uskey512", "zakhenry", "abergquist", "JiChao99", "aryandeelwal", + "atmikeguo", "avijit1258", "bby-bishopclark", "beriakomal", + "Bogay", "bolshoytoster", "chrismetz09", "christopherkade", "tenuki", + "dix", "dkkb", "endolith", - "eel87", - "esphas", - "raptor0929", - "flywire", - "gkchic", - "gomlgs", - "hikerpig", - "hopoverflow", - "hughli-git", - "ishuen", - "it-sec-std", - "it0a", - "ivan-danilov", - "kerwin612", - "kuanyi-ng", - "laDanz", - "lgasp", - "mahimas28", - "may4everL", - "meganemura", - "monsterkrampe", - "mupple", - "mvandermade", - "penenkel", - "r-a-v-a-s", - "ryenus", - "alguerocode", - "siddhant-tripathy1", - "sifb", - "silverwind", - "wfnuser", - "chewnoill", - "znxkznxk1030", - "zepatrik", - "zephyraft", - "zwpaper", - "hetz" -] + "eel87" +] \ No newline at end of file diff --git a/packages/mermaid/src/docs/.vitepress/contributors.ts b/packages/mermaid/src/docs/.vitepress/contributors.ts index 510c44c45..a223a36df 100644 --- a/packages/mermaid/src/docs/.vitepress/contributors.ts +++ b/packages/mermaid/src/docs/.vitepress/contributors.ts @@ -16,7 +16,7 @@ export interface CoreTeam { // required to download avatars from GitHub github: string; twitter?: string; - mastodon?: string + mastodon?: string; sponsor?: string; website?: string; linkedIn?: string; @@ -29,35 +29,32 @@ export interface CoreTeam { const contributorNames: string[] = contributorNamesJson; const contributorsAvatars: Record = {}; -const getAvatarUrl = (name: string) => - import.meta.hot ? `https://github.com/${name}.png` : `/user-avatars/${name}.png`; - export const contributors = (contributorNames as string[]).reduce((acc, name) => { - contributorsAvatars[name] = getAvatarUrl(name) - acc.push({ name, avatar: contributorsAvatars[name] }) - return acc -}, [] as Contributor[]) + contributorsAvatars[name] = `/user-avatars/${name}.png`; + acc.push({ name, avatar: contributorsAvatars[name] }); + return acc; +}, [] as Contributor[]); const websiteSVG = { - svg: '' -} + svg: '', +}; const createLinks = (tm: CoreTeam): CoreTeam => { - tm.links = [{ icon: 'github', link: `https://github.com/${tm.github}` }] + tm.links = [{ icon: 'github', link: `https://github.com/${tm.github}` }]; if (tm.mastodon) { - tm.links.push({ icon: 'mastodon', link: tm.mastodon }) + tm.links.push({ icon: 'mastodon', link: tm.mastodon }); } if (tm.twitter) { - tm.links.push({ icon: 'twitter', link: `https://twitter.com/${tm.twitter}` }) + tm.links.push({ icon: 'twitter', link: `https://twitter.com/${tm.twitter}` }); } if (tm.website) { - tm.links.push({ icon: websiteSVG, link: tm.website }) + tm.links.push({ icon: websiteSVG, link: tm.website }); } if (tm.linkedIn) { - tm.links.push({ icon: 'linkedin', link: `https://www.linkedin.com/in/${tm.linkedIn}` }) + tm.links.push({ icon: 'linkedin', link: `https://www.linkedin.com/in/${tm.linkedIn}` }); } - return tm -} + return tm; +}; const plainTeamMembers: CoreTeam[] = [ { @@ -72,13 +69,13 @@ const plainTeamMembers: CoreTeam[] = [ github: 'NeilCuzon', avatar: contributorsAvatars.NeilCuzon, name: 'Neil Cuzon', - title: 'Developer' + title: 'Developer', }, { github: 'tylerlong', avatar: contributorsAvatars.tylerlong, name: 'Tyler Liu', - title: 'Developer' + title: 'Developer', }, { github: 'sidharthv96', @@ -89,20 +86,20 @@ const plainTeamMembers: CoreTeam[] = [ mastodon: 'https://techhub.social/@sidv', sponsor: 'https://github.com/sponsors/sidharthv96', linkedIn: 'sidharth-vinod', - website: 'https://sidharth.dev' + website: 'https://sidharth.dev', }, { github: 'ashishjain0512', avatar: contributorsAvatars.ashishjain0512, name: 'Ashish Jain', - title: 'Developer' + title: 'Developer', }, { github: 'mmorel-35', avatar: contributorsAvatars['mmorel-35'], name: 'Matthieu Morel', title: 'Developer', - linkedIn: 'matthieumorel35' + linkedIn: 'matthieumorel35', }, { github: 'aloisklink', @@ -110,48 +107,54 @@ const plainTeamMembers: CoreTeam[] = [ name: 'Alois Klink', title: 'Developer', linkedIn: 'aloisklink', - website: 'https://aloisklink.com' + website: 'https://aloisklink.com', }, { github: 'pbrolin47', avatar: contributorsAvatars.pbrolin47, name: 'Per Brolin', - title: 'Developer' + title: 'Developer', }, { github: 'Yash-Singh1', avatar: contributorsAvatars['Yash-Singh1'], name: 'Yash Singh', - title: 'Developer' + title: 'Developer', }, { github: 'GDFaber', avatar: contributorsAvatars.GDFaber, name: 'Marc Faber', title: 'Developer', - linkedIn: 'marc-faber' + linkedIn: 'marc-faber', }, { github: 'MindaugasLaganeckas', avatar: contributorsAvatars.MindaugasLaganeckas, name: 'Mindaugas Laganeckas', - title: 'Developer' + title: 'Developer', }, { github: 'jgreywolf', avatar: contributorsAvatars.jgreywolf, name: 'Justin Greywolf', - title: 'Developer' + title: 'Developer', }, { github: 'IOrlandoni', avatar: contributorsAvatars.IOrlandoni, name: 'Nacho Orlandoni', - title: 'Developer' + title: 'Developer', }, -] + { + github: 'huynhicode', + avatar: contributorsAvatars.huynhicode, + name: 'Steph Huynh', + title: 'Developer', + }, +]; -const teamMembers = plainTeamMembers.map(tm => createLinks(tm)) -teamMembers.sort((a, b) => contributorNames.indexOf(a.github) - contributorNames.indexOf(b.github)) +const teamMembers = plainTeamMembers.map((tm) => createLinks(tm)); +teamMembers.sort((a, b) => contributorNames.indexOf(a.github) - contributorNames.indexOf(b.github)); -export { teamMembers } +export { teamMembers }; diff --git a/packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts b/packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts index d071f527b..286e4a94f 100644 --- a/packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts +++ b/packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts @@ -1,32 +1,33 @@ -import { join, resolve } from 'pathe' -import fs from 'fs-extra' -import { $fetch } from 'ohmyfetch' +import fs from 'fs-extra'; +import { fileURLToPath } from 'url'; +import { $fetch } from 'ohmyfetch'; -const docsDir = resolve(__dirname, '../..') -const pathContributors = resolve(docsDir, '.vitepress/contributor-names.json') -const dirAvatars = resolve(docsDir, 'public/user-avatars/') -const dirSponsors = resolve(docsDir, 'public/sponsors/') +const pathContributors = new URL('../contributor-names.json', import.meta.url); +const getAvatarPath = (name: string) => + new URL(`../../public/user-avatars/${name}.png`, import.meta.url); +// const dirSponsors = resolve(docsDir, 'public/sponsors/') -let contributors: string[] = [] +let contributors: string[] = []; -async function download(url: string, fileName: string) { - if (fs.existsSync(fileName)) - return - // eslint-disable-next-line no-console - console.log('downloading', fileName) - try { - const image = await $fetch(url, { responseType: 'arrayBuffer' }) - await fs.writeFile(fileName, Buffer.from(image)) - } - catch { - } +async function download(url: string, fileName: URL) { + if (fs.existsSync(fileName)) return; + // eslint-disable-next-line no-console + console.log('downloading', fileName); + try { + const image = await $fetch(url, { responseType: 'arrayBuffer' }); + await fs.writeFile(fileName, Buffer.from(image)); + } catch {} } async function fetchAvatars() { - await fs.ensureDir(dirAvatars) - contributors = JSON.parse(await fs.readFile(pathContributors, { encoding: 'utf-8' })) + await fs.ensureDir(fileURLToPath(new URL('..', getAvatarPath('none')))); + contributors = JSON.parse(await fs.readFile(pathContributors, { encoding: 'utf-8' })); - await Promise.all(contributors.map(name => download(`https://github.com/${name}.png?size=100`, join(dirAvatars, `${name}.png`)))) + await Promise.allSettled( + contributors.map((name) => + download(`https://github.com/${name}.png?size=100`, getAvatarPath(name)) + ) + ); } // async function fetchSponsors() { @@ -36,5 +37,5 @@ async function fetchAvatars() { // await download('https://cdn.jsdelivr.net/gh/sheremet-va/static/sponsors.svg', join(dirSponsors, 'sheremet-va.svg')) // } -fetchAvatars() +fetchAvatars(); // fetchSponsors() diff --git a/scripts/updateContributors.ts b/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts similarity index 85% rename from scripts/updateContributors.ts rename to packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts index e28f24b0a..a758bd76a 100644 --- a/scripts/updateContributors.ts +++ b/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts @@ -3,6 +3,8 @@ import { writeFile } from 'node:fs/promises'; import { $fetch } from 'ohmyfetch'; +const pathContributors = new URL('../contributor-names.json', import.meta.url); + interface Contributor { login: string; } @@ -30,11 +32,7 @@ async function fetchContributors() { async function generate() { const collaborators = await fetchContributors(); - await writeFile( - './packages/mermaid/src/docs/.vitepress/contributor-names.json', - `${JSON.stringify(collaborators, null, 2)}\n`, - 'utf8' - ); + await writeFile(pathContributors, JSON.stringify(collaborators, null, 2), 'utf8'); } void generate(); diff --git a/packages/mermaid/src/docs/package.json b/packages/mermaid/src/docs/package.json index 2ee5e8fff..88ccd61af 100644 --- a/packages/mermaid/src/docs/package.json +++ b/packages/mermaid/src/docs/package.json @@ -1,6 +1,7 @@ { "name": "docs", "private": true, + "type": "module", "scripts": { "dev": "vitepress --port 3333 --open", "build": "nr prefetch && vitepress build", @@ -8,28 +9,31 @@ "serve": "vitepress serve", "preview-https": "pnpm run build && serve .vitepress/dist", "preview-https-no-prefetch": "pnpm run build-no-prefetch && serve .vitepress/dist", - "prefetch": "esno .vitepress/scripts/fetch-avatars.ts" + "prefetch": "pnpm run fetch-contributors && pnpm run fetch-avatars", + "fetch-avatars": "esno .vitepress/scripts/fetch-avatars.ts", + "fetch-contributors": "esno .vitepress/scripts/fetch-contributors.ts" }, "dependencies": { - "@vueuse/core": "^9.10.0", - "jiti": "^1.16.1", - "vue": "latest" + "@vueuse/core": "^10.1.0", + "jiti": "^1.18.2", + "vue": "^3.2.47" }, "devDependencies": { - "@iconify-json/carbon": "^1.1.13", - "@unocss/reset": "^0.48.3", - "@vite-pwa/vitepress": "^0.0.4", - "@vitejs/plugin-vue": "latest", + "@iconify-json/carbon": "^1.1.16", + "@types/fs-extra": "^11.0.1", + "@unocss/reset": "^0.51.8", + "@vite-pwa/vitepress": "^0.0.5", + "@vitejs/plugin-vue": "^4.2.1", "esno": "^0.16.3", "fast-glob": "^3.2.12", - "fs-extra": "^10.1.0", + "fs-extra": "^11.1.1", "https-localhost": "^4.7.1", "pathe": "^1.1.0", - "unocss": "^0.48.3", - "unplugin-vue-components": "^0.22.12", - "vite": "^4.1.4", - "vite-plugin-pwa": "^0.14.1", - "vitepress": "1.0.0-alpha.47", + "unocss": "^0.51.8", + "unplugin-vue-components": "^0.24.1", + "vite": "^4.3.3", + "vite-plugin-pwa": "^0.14.7", + "vitepress": "1.0.0-alpha.74", "workbox-window": "^6.5.4" } } diff --git a/packages/mermaid/src/docs/vite.config.ts b/packages/mermaid/src/docs/vite.config.ts index 43bea6a09..ed5f4bab9 100644 --- a/packages/mermaid/src/docs/vite.config.ts +++ b/packages/mermaid/src/docs/vite.config.ts @@ -3,11 +3,11 @@ import type { PluginOption, Plugin } from 'vite'; import path from 'path'; // @ts-expect-error This package has an incorrect export map. import { SearchPlugin } from 'vitepress-plugin-search'; -import fs from 'fs' -import Components from 'unplugin-vue-components/vite' -import Unocss from 'unocss/vite' -import { presetAttributify, presetIcons, presetUno } from 'unocss' -import { resolve } from 'pathe' +import fs from 'fs'; +import Components from 'unplugin-vue-components/vite'; +import Unocss from 'unocss/vite'; +import { presetAttributify, presetIcons, presetUno } from 'unocss'; +import { resolve } from 'pathe'; const virtualModuleId = 'virtual:mermaid-config'; const resolvedVirtualModuleId = '\0' + virtualModuleId; @@ -19,14 +19,19 @@ export default defineConfig({ exclude: ['vitepress'], }, plugins: [ + // @ts-ignore This package has an incorrect exports. Components({ include: [/\.vue/, /\.md/], dirs: '.vitepress/components', dts: '.vitepress/components.d.ts', }) as Plugin, + // @ts-ignore This package has an incorrect exports. Unocss({ shortcuts: [ - ['btn', 'px-4 py-1 rounded inline-flex justify-center gap-2 text-white leading-30px children:mya !no-underline cursor-pointer disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50'], + [ + 'btn', + 'px-4 py-1 rounded inline-flex justify-center gap-2 text-white leading-30px children:mya !no-underline cursor-pointer disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50', + ], ], presets: [ presetUno({ @@ -80,21 +85,20 @@ export default defineConfig({ }, }); - function IncludesPlugin(): Plugin { return { name: 'include-plugin', enforce: 'pre', transform(code: string, id: string): string | undefined { - let changed = false + let changed = false; code = code.replace(/\[@@include]\((.*?)\)/, (_: string, url: any): string => { - changed = true - const full = resolve(id, url) - return fs.readFileSync(full, 'utf-8') - }) + changed = true; + const full = resolve(id, url); + return fs.readFileSync(full, 'utf-8'); + }); if (changed) { - return code + return code; } }, - } as Plugin + } as Plugin; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f88782e01..b8f9fb398 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,27 +1,30 @@ -lockfileVersion: 5.4-inlineSpecifiers +lockfileVersion: '6.0' importers: .: devDependencies: '@applitools/eyes-cypress': - specifier: ^3.27.6 - version: 3.27.6 + specifier: ^3.32.0 + version: 3.32.0(typescript@5.0.4) '@commitlint/cli': - specifier: ^17.2.0 - version: 17.2.0 + specifier: ^17.6.1 + version: 17.6.1 '@commitlint/config-conventional': - specifier: ^17.2.0 - version: 17.2.0 + specifier: ^17.6.1 + version: 17.6.1 '@cspell/eslint-plugin': - specifier: ^6.14.2 - version: 6.14.2 + specifier: ^6.31.1 + version: 6.31.1 + '@rollup/plugin-typescript': + specifier: ^11.1.0 + version: 11.1.0(typescript@5.0.4) '@types/cors': specifier: ^2.8.13 version: 2.8.13 '@types/eslint': - specifier: ^8.4.10 - version: 8.4.10 + specifier: ^8.37.0 + version: 8.37.0 '@types/express': specifier: ^4.17.17 version: 4.17.17 @@ -29,41 +32,41 @@ importers: specifier: ^4.0.5 version: 4.0.5 '@types/jsdom': - specifier: ^21.0.0 - version: 21.1.0 + specifier: ^21.1.1 + version: 21.1.1 '@types/lodash': - specifier: ^4.14.188 - version: 4.14.188 + specifier: ^4.14.194 + version: 4.14.194 '@types/mdast': - specifier: ^3.0.10 - version: 3.0.10 + specifier: ^3.0.11 + version: 3.0.11 '@types/node': - specifier: ^18.11.9 - version: 18.11.9 + specifier: ^18.16.0 + version: 18.16.0 '@types/prettier': - specifier: ^2.7.1 - version: 2.7.1 + specifier: ^2.7.2 + version: 2.7.2 '@types/rollup-plugin-visualizer': specifier: ^4.2.1 version: 4.2.1 '@typescript-eslint/eslint-plugin': - specifier: ^5.48.2 - version: 5.48.2_azmbqzqvrlvblbdtiwxwvyvjjy + specifier: ^5.59.0 + version: 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/parser': - specifier: ^5.48.2 - version: 5.48.2_et5x32uxl7z5ldub3ye5rhlyqm + specifier: ^5.59.0 + version: 5.59.0(eslint@8.39.0)(typescript@5.0.4) '@vitest/coverage-c8': - specifier: ^0.28.4 - version: 0.28.4_vun5xzxu3tkrssf3erdbijyyki + specifier: ^0.30.1 + version: 0.30.1(vitest@0.30.1) '@vitest/spy': - specifier: ^0.28.4 - version: 0.28.4 + specifier: ^0.30.1 + version: 0.30.1 '@vitest/ui': - specifier: ^0.28.4 - version: 0.28.4 + specifier: ^0.30.1 + version: 0.30.1 concurrently: - specifier: ^7.5.0 - version: 7.5.0 + specifier: ^8.0.1 + version: 8.0.1 cors: specifier: ^2.8.5 version: 2.8.5 @@ -71,41 +74,41 @@ importers: specifier: ^3.1.1 version: 3.1.1 cypress: - specifier: ^12.0.0 - version: 12.5.1 + specifier: ^12.10.0 + version: 12.10.0 cypress-image-snapshot: specifier: ^4.0.1 - version: 4.0.1_cypress@12.5.1+jest@29.3.1 + version: 4.0.1(cypress@12.10.0)(jest@29.5.0) esbuild: - specifier: ^0.17.0 - version: 0.17.0 + specifier: ^0.17.18 + version: 0.17.18 eslint: - specifier: ^8.32.0 - version: 8.32.0 + specifier: ^8.39.0 + version: 8.39.0 eslint-config-prettier: - specifier: ^8.6.0 - version: 8.6.0_eslint@8.32.0 + specifier: ^8.8.0 + version: 8.8.0(eslint@8.39.0) eslint-plugin-cypress: - specifier: ^2.12.1 - version: 2.12.1_eslint@8.32.0 + specifier: ^2.13.2 + version: 2.13.2(eslint@8.39.0) eslint-plugin-html: specifier: ^7.1.0 version: 7.1.0 eslint-plugin-jest: - specifier: ^27.1.5 - version: 27.1.5_i5clxtuiaceouxhg5syqkw5wwi + specifier: ^27.2.1 + version: 27.2.1(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.39.0)(jest@29.5.0)(typescript@5.0.4) eslint-plugin-jsdoc: - specifier: ^39.6.2 - version: 39.6.2_eslint@8.32.0 + specifier: ^43.0.7 + version: 43.0.7(eslint@8.39.0) eslint-plugin-json: specifier: ^3.1.0 version: 3.1.0 eslint-plugin-lodash: specifier: ^7.4.0 - version: 7.4.0_eslint@8.32.0 + version: 7.4.0(eslint@8.39.0) eslint-plugin-markdown: specifier: ^3.0.0 - version: 3.0.0_eslint@8.32.0 + version: 3.0.0(eslint@8.39.0) eslint-plugin-no-only-tests: specifier: ^3.1.0 version: 3.1.0 @@ -113,20 +116,20 @@ importers: specifier: ^0.2.17 version: 0.2.17 eslint-plugin-unicorn: - specifier: ^45.0.0 - version: 45.0.0_eslint@8.32.0 + specifier: ^46.0.0 + version: 46.0.0(eslint@8.39.0) express: specifier: ^4.18.2 version: 4.18.2 globby: - specifier: ^13.1.2 - version: 13.1.2 + specifier: ^13.1.4 + version: 13.1.4 husky: - specifier: ^8.0.2 - version: 8.0.2 + specifier: ^8.0.3 + version: 8.0.3 jest: - specifier: ^29.3.1 - version: 29.3.1_odkjkoia5xunhxkdrka32ib6vi + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.16.0)(ts-node@10.9.1) jison: specifier: ^0.4.18 version: 0.4.18 @@ -134,11 +137,11 @@ importers: specifier: ^4.1.0 version: 4.1.0 jsdom: - specifier: ^21.0.0 - version: 21.1.0 + specifier: ^21.1.1 + version: 21.1.1 lint-staged: - specifier: ^13.0.3 - version: 13.0.3 + specifier: ^13.2.1 + version: 13.2.1 ohmyfetch: specifier: ^0.4.21 version: 0.4.21 @@ -146,59 +149,65 @@ importers: specifier: ^1.0.1 version: 1.0.1 pnpm: - specifier: ^7.15.0 - version: 7.15.0 + specifier: ^8.3.1 + version: 8.3.1 prettier: - specifier: ^2.7.1 - version: 2.7.1 + specifier: ^2.8.8 + version: 2.8.8 prettier-plugin-jsdoc: specifier: ^0.4.2 - version: 0.4.2_prettier@2.7.1 + version: 0.4.2(prettier@2.8.8) rimraf: - specifier: ^4.0.0 - version: 4.1.2 + specifier: ^5.0.0 + version: 5.0.0 rollup-plugin-visualizer: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.0 + version: 5.9.0 start-server-and-test: - specifier: ^1.15.4 - version: 1.15.4 + specifier: ^2.0.0 + version: 2.0.0 ts-node: specifier: ^10.9.1 - version: 10.9.1_w6ufic3jqylcjznzspnj4wjqfe + version: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) typescript: - specifier: ^4.8.4 - version: 4.9.5 + specifier: ^5.0.4 + version: 5.0.4 vite: - specifier: ^4.1.1 - version: 4.1.1_@types+node@18.11.9 + specifier: ^4.3.1 + version: 4.3.1(@types/node@18.16.0) vitest: - specifier: ^0.28.5 - version: 0.28.5_vun5xzxu3tkrssf3erdbijyyki + specifier: ^0.30.1 + version: 0.30.1(@vitest/ui@0.30.1)(jsdom@21.1.1) packages/mermaid: dependencies: '@braintree/sanitize-url': - specifier: ^6.0.0 - version: 6.0.0 + specifier: ^6.0.2 + version: 6.0.2 + '@khanacademy/simple-markdown': + specifier: ^0.9.0 + version: 0.9.0(react-dom@16.14.0)(react@16.14.0) cytoscape: specifier: ^3.23.0 version: 3.23.0 cytoscape-cose-bilkent: specifier: ^4.1.0 - version: 4.1.0_cytoscape@3.23.0 + version: 4.1.0(cytoscape@3.23.0) cytoscape-fcose: specifier: ^2.1.0 - version: 2.1.0_cytoscape@3.23.0 + version: 2.1.0(cytoscape@3.23.0) d3: specifier: ^7.4.0 version: 7.8.2 dagre-d3-es: - specifier: 7.0.8 - version: 7.0.8 + specifier: 7.0.10 + version: 7.0.10 + dayjs: + specifier: ^1.11.7 + version: 1.11.7 dompurify: - specifier: 2.4.3 - version: 2.4.3 + specifier: 3.0.2 + version: 3.0.2 elkjs: specifier: ^0.8.2 version: 0.8.2 @@ -208,15 +217,12 @@ importers: lodash-es: specifier: ^4.17.21 version: 4.17.21 - moment-mini: - specifier: ^2.29.4 - version: 2.29.4 non-layered-tidy-tree-layout: specifier: ^2.0.2 version: 2.0.2 stylis: - specifier: ^4.1.2 - version: 4.1.2 + specifier: ^4.1.3 + version: 4.1.3 ts-dedent: specifier: ^2.2.0 version: 2.2.0 @@ -234,38 +240,38 @@ importers: specifier: ^7.4.0 version: 7.4.0 '@types/dompurify': - specifier: ^2.4.0 - version: 2.4.0 + specifier: ^3.0.2 + version: 3.0.2 '@types/jsdom': - specifier: ^21.0.0 - version: 21.1.0 + specifier: ^21.1.1 + version: 21.1.1 '@types/lodash-es': - specifier: ^4.17.6 - version: 4.17.6 + specifier: ^4.17.7 + version: 4.17.7 '@types/micromatch': specifier: ^4.0.2 version: 4.0.2 '@types/prettier': - specifier: ^2.7.1 - version: 2.7.1 + specifier: ^2.7.2 + version: 2.7.2 '@types/stylis': specifier: ^4.0.2 version: 4.0.2 '@types/uuid': - specifier: ^9.0.0 - version: 9.0.0 + specifier: ^9.0.1 + version: 9.0.1 '@typescript-eslint/eslint-plugin': - specifier: ^5.42.1 - version: 5.42.1_qxgr6oy2qtsmmpo3f6iejuryuq + specifier: ^5.59.0 + version: 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/parser': - specifier: ^5.42.1 - version: 5.42.1_yygwinqv3a2io74xmwofqb7uka + specifier: ^5.59.0 + version: 5.59.0(eslint@8.39.0)(typescript@5.0.4) chokidar: specifier: ^3.5.3 version: 3.5.3 concurrently: - specifier: ^7.5.0 - version: 7.5.0 + specifier: ^8.0.1 + version: 8.0.1 coveralls: specifier: ^3.1.1 version: 3.1.1 @@ -273,20 +279,23 @@ importers: specifier: ^4.2.0 version: 4.2.0 cspell: - specifier: ^6.14.3 - version: 6.14.3 + specifier: ^6.31.1 + version: 6.31.1 + csstree-validator: + specifier: ^3.0.0 + version: 3.0.0 globby: - specifier: ^13.1.2 - version: 13.1.2 + specifier: ^13.1.4 + version: 13.1.4 jison: specifier: ^0.4.18 version: 0.4.18 js-base64: - specifier: ^3.7.2 - version: 3.7.2 + specifier: ^3.7.5 + version: 3.7.5 jsdom: - specifier: ^21.0.0 - version: 21.1.0 + specifier: ^21.1.1 + version: 21.1.1 micromatch: specifier: ^4.0.5 version: 4.0.5 @@ -294,8 +303,8 @@ importers: specifier: ^1.0.1 version: 1.0.1 prettier: - specifier: ^2.7.1 - version: 2.7.1 + specifier: ^2.8.8 + version: 2.8.8 remark: specifier: ^14.0.2 version: 14.0.2 @@ -306,29 +315,29 @@ importers: specifier: ^3.0.1 version: 3.0.1 rimraf: - specifier: ^4.0.0 - version: 4.1.2 + specifier: ^5.0.0 + version: 5.0.0 start-server-and-test: - specifier: ^1.14.0 - version: 1.14.0 + specifier: ^2.0.0 + version: 2.0.0 typedoc: - specifier: ^0.23.18 - version: 0.23.18_typescript@4.8.4 + specifier: ^0.24.5 + version: 0.24.5(typescript@5.0.4) typedoc-plugin-markdown: - specifier: ^3.13.6 - version: 3.13.6_typedoc@0.23.18 + specifier: ^3.15.2 + version: 3.15.2(typedoc@0.24.5) typescript: - specifier: ^4.8.4 - version: 4.8.4 + specifier: ^5.0.4 + version: 5.0.4 unist-util-flatmap: specifier: ^1.0.0 version: 1.0.0 vitepress: - specifier: ^1.0.0-alpha.46 - version: 1.0.0-alpha.46_tbpndr44ulefs3hehwpi2mkf2y + specifier: ^1.0.0-alpha.72 + version: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0) vitepress-plugin-search: - specifier: ^1.0.4-alpha.19 - version: 1.0.4-alpha.19_izgnxokfetdl4ncj36u4rk6qgu + specifier: ^1.0.4-alpha.20 + version: 1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-alpha.72)(vue@3.2.47) packages/mermaid-example-diagram: dependencies: @@ -340,10 +349,10 @@ importers: version: 3.23.0 cytoscape-cose-bilkent: specifier: ^4.1.0 - version: 4.1.0_cytoscape@3.23.0 + version: 4.1.0(cytoscape@3.23.0) cytoscape-fcose: specifier: ^2.1.0 - version: 2.1.0_cytoscape@3.23.0 + version: 2.1.0(cytoscape@3.23.0) d3: specifier: ^7.0.0 version: 7.8.2 @@ -358,39 +367,42 @@ importers: specifier: ^3.19.9 version: 3.19.9 concurrently: - specifier: ^7.5.0 - version: 7.5.0 + specifier: ^8.0.0 + version: 8.0.1 mermaid: specifier: workspace:* version: link:../mermaid rimraf: - specifier: ^4.0.0 - version: 4.1.2 + specifier: ^5.0.0 + version: 5.0.0 packages/mermaid/src/docs: dependencies: '@vueuse/core': - specifier: ^9.10.0 - version: 9.12.0_vue@3.2.47 + specifier: ^10.1.0 + version: 10.1.0(vue@3.2.47) jiti: - specifier: ^1.16.1 - version: 1.17.1 + specifier: ^1.18.2 + version: 1.18.2 vue: - specifier: latest + specifier: ^3.2.47 version: 3.2.47 devDependencies: '@iconify-json/carbon': - specifier: ^1.1.13 + specifier: ^1.1.16 version: 1.1.16 + '@types/fs-extra': + specifier: ^11.0.1 + version: 11.0.1 '@unocss/reset': - specifier: ^0.48.3 - version: 0.48.5 + specifier: ^0.51.8 + version: 0.51.8 '@vite-pwa/vitepress': - specifier: ^0.0.4 - version: 0.0.4_vite-plugin-pwa@0.14.4 + specifier: ^0.0.5 + version: 0.0.5(vite-plugin-pwa@0.14.7) '@vitejs/plugin-vue': - specifier: latest - version: 4.0.0_vite@4.1.4+vue@3.2.47 + specifier: ^4.2.1 + version: 4.2.1(vite@4.3.3)(vue@3.2.47) esno: specifier: ^0.16.3 version: 0.16.3 @@ -398,8 +410,8 @@ importers: specifier: ^3.2.12 version: 3.2.12 fs-extra: - specifier: ^10.1.0 - version: 10.1.0 + specifier: ^11.1.1 + version: 11.1.1 https-localhost: specifier: ^4.7.1 version: 4.7.1 @@ -407,78 +419,20 @@ importers: specifier: ^1.1.0 version: 1.1.0 unocss: - specifier: ^0.48.3 - version: 0.48.5_rollup@2.79.1+vite@4.1.4 + specifier: ^0.51.8 + version: 0.51.8(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3) unplugin-vue-components: - specifier: ^0.22.12 - version: 0.22.12_rollup@2.79.1+vue@3.2.47 + specifier: ^0.24.1 + version: 0.24.1(rollup@2.79.1)(vue@3.2.47) vite: - specifier: ^4.1.4 - version: 4.1.4 + specifier: ^4.3.3 + version: 4.3.3(@types/node@18.16.0) vite-plugin-pwa: - specifier: ^0.14.1 - version: 0.14.4_qtdhuw7qkuvvectm2wxn5d44j4 + specifier: ^0.14.7 + version: 0.14.7(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) vitepress: - specifier: 1.0.0-alpha.47 - version: 1.0.0-alpha.47_tbpndr44ulefs3hehwpi2mkf2y - workbox-window: - specifier: ^6.5.4 - version: 6.5.4 - - packages/mermaid/src/vitepress: - dependencies: - '@vueuse/core': - specifier: ^9.10.0 - version: 9.13.0_vue@3.2.47 - jiti: - specifier: ^1.16.1 - version: 1.17.1 - vue: - specifier: latest - version: 3.2.47 - devDependencies: - '@iconify-json/carbon': - specifier: ^1.1.13 - version: 1.1.16 - '@unocss/reset': - specifier: ^0.48.3 - version: 0.48.5 - '@vite-pwa/vitepress': - specifier: ^0.0.4 - version: 0.0.4_vite-plugin-pwa@0.14.4 - '@vitejs/plugin-vue': - specifier: latest - version: 4.0.0_vite@4.1.4+vue@3.2.47 - esno: - specifier: ^0.16.3 - version: 0.16.3 - fast-glob: - specifier: ^3.2.12 - version: 3.2.12 - fs-extra: - specifier: ^10.1.0 - version: 10.1.0 - https-localhost: - specifier: ^4.7.1 - version: 4.7.1 - pathe: - specifier: ^1.1.0 - version: 1.1.0 - unocss: - specifier: ^0.48.3 - version: 0.48.5_rollup@2.79.1+vite@4.1.4 - unplugin-vue-components: - specifier: ^0.22.12 - version: 0.22.12_rollup@2.79.1+vue@3.2.47 - vite: - specifier: ^4.1.4 - version: 4.1.4 - vite-plugin-pwa: - specifier: ^0.14.1 - version: 0.14.4_qtdhuw7qkuvvectm2wxn5d44j4 - vitepress: - specifier: 1.0.0-alpha.47 - version: 1.0.0-alpha.47_tbpndr44ulefs3hehwpi2mkf2y + specifier: 1.0.0-alpha.74 + version: 1.0.0-alpha.74(@algolia/client-search@4.14.2)(@types/node@18.16.0) workbox-window: specifier: ^6.5.4 version: 6.5.4 @@ -494,23 +448,23 @@ importers: devDependencies: webpack: specifier: ^5.74.0 - version: 5.75.0_webpack-cli@4.10.0 + version: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) webpack-cli: specifier: ^4.10.0 - version: 4.10.0_uaydpeuxkjjcxdbyfgk36cjdxi + version: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) webpack-dev-server: specifier: ^4.11.1 - version: 4.11.1_pda42hcaj7d62cr262fr632kue + version: 4.11.1(webpack-cli@4.10.0)(webpack@5.75.0) packages: - /@algolia/autocomplete-core/1.7.4: + /@algolia/autocomplete-core@1.7.4: resolution: {integrity: sha512-daoLpQ3ps/VTMRZDEBfU8ixXd+amZcNJ4QSP3IERGyzqnL5Ch8uSRFt/4G8pUvW9c3o6GA4vtVv4I4lmnkdXyg==} dependencies: '@algolia/autocomplete-shared': 1.7.4 dev: true - /@algolia/autocomplete-preset-algolia/1.7.4_qs6lk5nhygj2o3hj4sf6xnr724: + /@algolia/autocomplete-preset-algolia@1.7.4(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): resolution: {integrity: sha512-s37hrvLEIfcmKY8VU9LsAXgm2yfmkdHT3DnA3SgHaY93yjZ2qL57wzb5QweVkYuEBZkT2PIREvRoLXC2sxTbpQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' @@ -521,27 +475,27 @@ packages: algoliasearch: 4.14.2 dev: true - /@algolia/autocomplete-shared/1.7.4: + /@algolia/autocomplete-shared@1.7.4: resolution: {integrity: sha512-2VGCk7I9tA9Ge73Km99+Qg87w0wzW4tgUruvWAn/gfey1ZXgmxZtyIRBebk35R1O8TbK77wujVtCnpsGpRy1kg==} dev: true - /@algolia/cache-browser-local-storage/4.14.2: + /@algolia/cache-browser-local-storage@4.14.2: resolution: {integrity: sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA==} dependencies: '@algolia/cache-common': 4.14.2 dev: true - /@algolia/cache-common/4.14.2: + /@algolia/cache-common@4.14.2: resolution: {integrity: sha512-SbvAlG9VqNanCErr44q6lEKD2qoK4XtFNx9Qn8FK26ePCI8I9yU7pYB+eM/cZdS9SzQCRJBbHUumVr4bsQ4uxg==} dev: true - /@algolia/cache-in-memory/4.14.2: + /@algolia/cache-in-memory@4.14.2: resolution: {integrity: sha512-HrOukWoop9XB/VFojPv1R5SVXowgI56T9pmezd/djh2JnVN/vXswhXV51RKy4nCpqxyHt/aGFSq2qkDvj6KiuQ==} dependencies: '@algolia/cache-common': 4.14.2 dev: true - /@algolia/client-account/4.14.2: + /@algolia/client-account@4.14.2: resolution: {integrity: sha512-WHtriQqGyibbb/Rx71YY43T0cXqyelEU0lB2QMBRXvD2X0iyeGl4qMxocgEIcbHyK7uqE7hKgjT8aBrHqhgc1w==} dependencies: '@algolia/client-common': 4.14.2 @@ -549,7 +503,7 @@ packages: '@algolia/transporter': 4.14.2 dev: true - /@algolia/client-analytics/4.14.2: + /@algolia/client-analytics@4.14.2: resolution: {integrity: sha512-yBvBv2mw+HX5a+aeR0dkvUbFZsiC4FKSnfqk9rrfX+QrlNOKEhCG0tJzjiOggRW4EcNqRmaTULIYvIzQVL2KYQ==} dependencies: '@algolia/client-common': 4.14.2 @@ -558,14 +512,14 @@ packages: '@algolia/transporter': 4.14.2 dev: true - /@algolia/client-common/4.14.2: + /@algolia/client-common@4.14.2: resolution: {integrity: sha512-43o4fslNLcktgtDMVaT5XwlzsDPzlqvqesRi4MjQz2x4/Sxm7zYg5LRYFol1BIhG6EwxKvSUq8HcC/KxJu3J0Q==} dependencies: '@algolia/requester-common': 4.14.2 '@algolia/transporter': 4.14.2 dev: true - /@algolia/client-personalization/4.14.2: + /@algolia/client-personalization@4.14.2: resolution: {integrity: sha512-ACCoLi0cL8CBZ1W/2juehSltrw2iqsQBnfiu/Rbl9W2yE6o2ZUb97+sqN/jBqYNQBS+o0ekTMKNkQjHHAcEXNw==} dependencies: '@algolia/client-common': 4.14.2 @@ -573,7 +527,7 @@ packages: '@algolia/transporter': 4.14.2 dev: true - /@algolia/client-search/4.14.2: + /@algolia/client-search@4.14.2: resolution: {integrity: sha512-L5zScdOmcZ6NGiVbLKTvP02UbxZ0njd5Vq9nJAmPFtjffUSOGEp11BmD2oMJ5QvARgx2XbX4KzTTNS5ECYIMWw==} dependencies: '@algolia/client-common': 4.14.2 @@ -581,33 +535,33 @@ packages: '@algolia/transporter': 4.14.2 dev: true - /@algolia/logger-common/4.14.2: + /@algolia/logger-common@4.14.2: resolution: {integrity: sha512-/JGlYvdV++IcMHBnVFsqEisTiOeEr6cUJtpjz8zc0A9c31JrtLm318Njc72p14Pnkw3A/5lHHh+QxpJ6WFTmsA==} dev: true - /@algolia/logger-console/4.14.2: + /@algolia/logger-console@4.14.2: resolution: {integrity: sha512-8S2PlpdshbkwlLCSAB5f8c91xyc84VM9Ar9EdfE9UmX+NrKNYnWR1maXXVDQQoto07G1Ol/tYFnFVhUZq0xV/g==} dependencies: '@algolia/logger-common': 4.14.2 dev: true - /@algolia/requester-browser-xhr/4.14.2: + /@algolia/requester-browser-xhr@4.14.2: resolution: {integrity: sha512-CEh//xYz/WfxHFh7pcMjQNWgpl4wFB85lUMRyVwaDPibNzQRVcV33YS+63fShFWc2+42YEipFGH2iPzlpszmDw==} dependencies: '@algolia/requester-common': 4.14.2 dev: true - /@algolia/requester-common/4.14.2: + /@algolia/requester-common@4.14.2: resolution: {integrity: sha512-73YQsBOKa5fvVV3My7iZHu1sUqmjjfs9TteFWwPwDmnad7T0VTCopttcsM3OjLxZFtBnX61Xxl2T2gmG2O4ehg==} dev: true - /@algolia/requester-node-http/4.14.2: + /@algolia/requester-node-http@4.14.2: resolution: {integrity: sha512-oDbb02kd1o5GTEld4pETlPZLY0e+gOSWjWMJHWTgDXbv9rm/o2cF7japO6Vj1ENnrqWvLBmW1OzV9g6FUFhFXg==} dependencies: '@algolia/requester-common': 4.14.2 dev: true - /@algolia/transporter/4.14.2: + /@algolia/transporter@4.14.2: resolution: {integrity: sha512-t89dfQb2T9MFQHidjHcfhh6iGMNwvuKUvojAj+JsrHAGbuSy7yE4BylhLX6R0Q1xYRoC4Vvv+O5qIw/LdnQfsQ==} dependencies: '@algolia/cache-common': 4.14.2 @@ -615,30 +569,30 @@ packages: '@algolia/requester-common': 4.14.2 dev: true - /@ampproject/remapping/2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.1.1 + '@jridgewell/gen-mapping': 0.3.2 '@jridgewell/trace-mapping': 0.3.17 dev: true - /@antfu/install-pkg/0.1.1: + /@antfu/install-pkg@0.1.1: resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} dependencies: execa: 5.1.1 find-up: 5.0.0 dev: true - /@antfu/utils/0.5.2: + /@antfu/utils@0.5.2: resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==} dev: true - /@antfu/utils/0.7.2: + /@antfu/utils@0.7.2: resolution: {integrity: sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==} dev: true - /@apideck/better-ajv-errors/0.3.6_ajv@8.11.0: + /@apideck/better-ajv-errors@0.3.6(ajv@8.11.0): resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} engines: {node: '>=10'} peerDependencies: @@ -650,171 +604,298 @@ packages: leven: 3.1.0 dev: true - /@applitools/core-base/1.1.7: - resolution: {integrity: sha512-jxiRS7pQ9Q6deXeDa/mIACL/7S7ZxIOms49WSZGhUjb+1bfKEsH6+kLZKy5wUDHrUWRqPdILkLKWgQ0rLnKmFA==} + /@applitools/core-base@1.1.39: + resolution: {integrity: sha512-dFAmK5AeUEfhc6uHyZJ1sZNR2RB92EXn4zj2Vq4CVl1msnfb/rTLJl2UTSZtmP7W7khss2+y/vRsnJpyKErDPg==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/image': 1.0.4 - '@applitools/logger': 1.1.27 - '@applitools/req': 1.1.12 - '@applitools/utils': 1.3.13 + '@applitools/image': 1.0.26 + '@applitools/logger': 1.1.46 + '@applitools/req': 1.1.30 + '@applitools/utils': 1.3.30 transitivePeerDependencies: - encoding - supports-color dev: true - /@applitools/core-base/1.1.8: - resolution: {integrity: sha512-h5bm1uJmpn5NVagFnLpoXWEKfLtBBmdQsgtOwYAmbWGImMNsexEnki1JPPo4yTn6KN1sdGE1ShYo2+YzbQPgKA==} + /@applitools/core-base@1.1.49: + resolution: {integrity: sha512-6LqwN4jKA8aosmiTKXO9ZxCx9LMGhOWWW3o7qif1BPASx/z8ato8YkJetT6690Q71nkyUCsBt/5s/nJ1SCS9Nw==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/image': 1.0.5 - '@applitools/logger': 1.1.27 - '@applitools/req': 1.1.12 - '@applitools/utils': 1.3.13 + '@applitools/image': 1.0.28 + '@applitools/logger': 1.1.48 + '@applitools/req': 1.1.35 + '@applitools/utils': 1.3.32 + abort-controller: 3.0.0 + throat: 6.0.2 transitivePeerDependencies: - encoding - supports-color dev: true - /@applitools/core/1.2.4: - resolution: {integrity: sha512-BFbmUn39XFEVKHCb/bBXFZVAb46hOl4D/6VRnC5ey5tNTdriI35/l0jWpuBnYHU6LgK+5AvG70SUTKqiFJDZPQ==} + /@applitools/core@2.3.14(typescript@5.0.4): + resolution: {integrity: sha512-ubCQTGcoKKmgrt7QmIsrniDH8MqWgF66T+bEDRurNjpnC0RzjiCmEipr1pkMJGeXiUbe4Kr4uWP1+rg3QA8FBA==} engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@applitools/core-base': 1.1.7 - '@applitools/dom-capture': 11.2.0 - '@applitools/dom-snapshot': 4.7.0 - '@applitools/driver': 1.11.0 - '@applitools/logger': 1.1.27 - '@applitools/nml-client': 1.3.5 - '@applitools/req': 1.1.12 - '@applitools/screenshoter': 3.7.0 - '@applitools/snippets': 2.4.5 - '@applitools/ufg-client': 1.1.2 - '@applitools/utils': 1.3.13 + '@applitools/core-base': 1.1.39 + '@applitools/dom-capture': 11.2.1 + '@applitools/dom-snapshot': 4.7.5 + '@applitools/driver': 1.11.35 + '@applitools/ec-client': 1.2.14 + '@applitools/logger': 1.1.46 + '@applitools/nml-client': 1.3.38 + '@applitools/req': 1.1.30 + '@applitools/screenshoter': 3.7.29 + '@applitools/snippets': 2.4.15 + '@applitools/socket': 1.0.8 + '@applitools/spec-driver-webdriver': 1.0.15(webdriver@7.30.0) + '@applitools/ufg-client': 1.2.1 + '@applitools/utils': 1.3.30 + '@types/ws': 8.5.4 abort-controller: 3.0.0 + chalk: 4.1.2 + node-fetch: 2.6.7 throat: 6.0.1 + webdriver: 7.30.0(typescript@5.0.4) + ws: 8.12.0 + yargs: 17.6.2 transitivePeerDependencies: - bufferutil - encoding - supports-color + - typescript - utf-8-validate dev: true - /@applitools/core/1.2.7: - resolution: {integrity: sha512-cVH60tV3Uw1kIbml6IMPtwHRtJTRP5ySs2GRvDvHwq+dJNEddyIwJUwjHOI/xYYgc9rQRZOmM5Z4mzZXLjtgyw==} + /@applitools/core@2.5.3(typescript@5.0.4): + resolution: {integrity: sha512-hYSwpH+uvLcsVt97ZHYjiXclKOzxGRzoWmykWuigRFoJGoczEyf6UnCrIS5OtaWaUgpY2hL7Ltl2vvDsCwkzSQ==} engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@applitools/core-base': 1.1.8 - '@applitools/dom-capture': 11.2.0 - '@applitools/dom-snapshot': 4.7.0 - '@applitools/driver': 1.11.1 - '@applitools/logger': 1.1.27 - '@applitools/nml-client': 1.3.5 - '@applitools/req': 1.1.12 - '@applitools/screenshoter': 3.7.2 - '@applitools/snippets': 2.4.6 - '@applitools/ufg-client': 1.1.2 - '@applitools/utils': 1.3.13 + '@applitools/core-base': 1.1.49 + '@applitools/dom-capture': 11.2.1 + '@applitools/dom-snapshot': 4.7.9 + '@applitools/driver': 1.11.43 + '@applitools/ec-client': 1.2.23(typescript@5.0.4) + '@applitools/logger': 1.1.48 + '@applitools/nml-client': 1.3.47 + '@applitools/req': 1.1.35 + '@applitools/screenshoter': 3.7.38 + '@applitools/snippets': 2.4.19 + '@applitools/socket': 1.0.10 + '@applitools/spec-driver-webdriver': 1.0.24(webdriver@7.30.0) + '@applitools/ufg-client': 1.2.10 + '@applitools/utils': 1.3.32 + '@types/ws': 8.5.4 abort-controller: 3.0.0 - throat: 6.0.1 + chalk: 4.1.2 + node-fetch: 2.6.7 + webdriver: 7.30.0(typescript@5.0.4) + ws: 8.12.0 + yargs: 17.6.2 transitivePeerDependencies: - bufferutil - encoding - supports-color + - typescript - utf-8-validate dev: true - /@applitools/dom-capture/11.2.0: - resolution: {integrity: sha512-zFfYgvdXq5oTpLuYvOJdkh7jsbAxajOpD67pVoKc27lKwE0CGaM9I0Uf+qGh7GYtY93qyzMWBzqC7C8JlSK1gA==} + /@applitools/dom-capture@11.2.1: + resolution: {integrity: sha512-c3x87rgC+8wdyOHDd+jFkrJIfx1mWmSiN7pfOOZNVM1X69cF7qmLIlTrZ09ssU/eOXppRKqhAX6JiNmpD5uXKw==} engines: {node: '>=8.9.0'} dependencies: '@applitools/dom-shared': 1.0.5 '@applitools/functional-commons': 1.6.0 dev: true - /@applitools/dom-shared/1.0.5: + /@applitools/dom-shared@1.0.10: + resolution: {integrity: sha512-1k0CUQRm+38n6aTg/8IIppndYPDJLc/dU8Regbi/miP3xZmOG4Wwd5fBiu/MI5lgQm6RZU+at18lpCLFwU+Nng==} + engines: {node: '>=8.9.0'} + dev: true + + /@applitools/dom-shared@1.0.5: resolution: {integrity: sha512-O2zgnnqVi3/Atq7EQjURLa73XNaDFJCj8wHht6WQtxIv1EWYnPutNTmnJSKwK7FnbJAg65OVjZylcz4EezyYZA==} engines: {node: '>=8.9.0'} dev: true - /@applitools/dom-shared/1.0.9: + /@applitools/dom-shared@1.0.9: resolution: {integrity: sha512-u6nRHBklRAaODILm0HRluE0IAwrnjs8AMNRBFxHThKGt4qpbkhnwazGMr4zDu3WCBjr/sA31kekUqNl0Jx3YeQ==} engines: {node: '>=8.9.0'} dev: true - /@applitools/dom-snapshot/4.7.0: - resolution: {integrity: sha512-exLRB2dTLiqD8i5oOK/QyfNMSLramVF5CFYNI29WWQjbXkIpCGOomGA8/xL+sYiC53jjx3Y9u6jHtlkb5ASJAQ==} + /@applitools/dom-snapshot@4.7.5: + resolution: {integrity: sha512-qay8LQ7/qWIVzaaTCKgvNsmHhanppt58H9NsrpG7GXdCiQypa0zz6M9F9+XxEVSjcxMLtFal+O8OQQmCmLzEzQ==} engines: {node: '>=8.9.0'} dependencies: '@applitools/dom-shared': 1.0.9 '@applitools/functional-commons': 1.6.0 - css-tree: 1.0.0-alpha.39 + css-tree: 2.3.1 pako: 1.0.11 dev: true - /@applitools/driver/1.11.0: - resolution: {integrity: sha512-yNo4ljkk5C2wJ7foqENoIgtlbW3/RpDYBT5UCjq5yTK/xfnvAlh+zUmnqGJ43w8PZj4IH7E8xLRVBVIq2Mv9oQ==} - engines: {node: '>=12.13.0'} + /@applitools/dom-snapshot@4.7.9: + resolution: {integrity: sha512-lY1tkNwNQUBM7snYUwVZ80EisgIYdNZxIBtbsRU0R60wKTQc8ccBPGo9e3TBbS4Z9XqQYVAupKQjZMlcMVEiwQ==} + engines: {node: '>=8.9.0'} dependencies: - '@applitools/logger': 1.1.27 - '@applitools/snippets': 2.4.5 - '@applitools/utils': 1.3.13 - semver: 7.3.7 + '@applitools/dom-shared': 1.0.10 + '@applitools/functional-commons': 1.6.0 + css-tree: 2.3.1 + pako: 1.0.11 dev: true - /@applitools/driver/1.11.1: - resolution: {integrity: sha512-HFkbEeTaBI+k5RMQFM6RjaIRCvLOrVx4UUDehnSlyfAwZIN/RMuxMcAQaiU5ZdNPf3K/+TtNjtmJoXuG8veEcQ==} + /@applitools/driver@1.11.35: + resolution: {integrity: sha512-E2FqVtBR8OO9+5g0p0+rDWCBVnYA2o6WTgJp+2gcliTHnoRbFBuACIRrLikEfvEcIok/XQmo7g1GzBPFrDEy8Q==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/logger': 1.1.27 - '@applitools/snippets': 2.4.6 - '@applitools/utils': 1.3.13 + '@applitools/logger': 1.1.46 + '@applitools/snippets': 2.4.15 + '@applitools/utils': 1.3.30 semver: 7.3.7 + transitivePeerDependencies: + - supports-color dev: true - /@applitools/execution-grid-client/1.1.30: - resolution: {integrity: sha512-LoX0ZcNDZZV4aD6bpldfOTk94tNznRcIZPAVRRrKiqQJWJnDPP661EGxykXsfVnluCHaOGmbDPH6bfJGdDfUuQ==} + /@applitools/driver@1.11.43: + resolution: {integrity: sha512-a+tRvFog/uyJ8HXdH/eo3Ahfo1Zrw8i0FIL0l5Q/YgRH6l4xP3fV/a5/S2xFteiGshCoh5btEPhkBM+dEUSS/Q==} + engines: {node: '>=12.13.0'} + dependencies: + '@applitools/logger': 1.1.48 + '@applitools/snippets': 2.4.19 + '@applitools/utils': 1.3.32 + semver: 7.3.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@applitools/ec-client@1.2.14: + resolution: {integrity: sha512-qnAS7k5Y6MXLzOOZQ5Shl6crHFJ6hYnujGKqt2tJrLnIL8xwXPPhJNscb6NtLP4BTNvTxatdK8Rz4XJ4Tz+iow==} engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@applitools/logger': 1.1.27 - '@applitools/utils': 1.3.13 + '@applitools/execution-grid-tunnel': 1.0.19 + '@applitools/logger': 1.1.46 + '@applitools/req': 1.1.30 + '@applitools/socket': 1.0.8 + '@applitools/utils': 1.3.30 abort-controller: 3.0.0 - node-fetch: 2.6.7 - proxy-agent: 5.0.0 - raw-body: 2.5.1 - yargs: 17.4.1 + yargs: 17.6.2 transitivePeerDependencies: - encoding - supports-color dev: true - /@applitools/eyes-api/1.9.1: - resolution: {integrity: sha512-P/42YMcV8SbdZFXEph+Q37tMngIJv0jSC2S1QDp09/zi0V1z81yyAm8zK36PU0h0JTYeZxSs/T3BRhfitpzAIg==} + /@applitools/ec-client@1.2.23(typescript@5.0.4): + resolution: {integrity: sha512-YYamRWlclnOitpzNrDtcwAat+AL59mTIOlmUaki+dtfEf482e+Kxytpq5AdiTbIPRBA143D+b2PLtai+WJr7yA==} + engines: {node: '>=12.13.0'} + hasBin: true + dependencies: + '@applitools/core-base': 1.1.49 + '@applitools/driver': 1.11.43 + '@applitools/execution-grid-tunnel': 1.0.24 + '@applitools/logger': 1.1.48 + '@applitools/req': 1.1.35 + '@applitools/socket': 1.0.10 + '@applitools/spec-driver-webdriver': 1.0.24(webdriver@7.30.0) + '@applitools/utils': 1.3.32 + abort-controller: 3.0.0 + webdriver: 7.30.0(typescript@5.0.4) + yargs: 17.6.2 + transitivePeerDependencies: + - encoding + - supports-color + - typescript + dev: true + + /@applitools/eg-frpc@1.0.2: + resolution: {integrity: sha512-qNY+u1se+PCmiLTqGg7ed4tYf0ScjNOSIZmtqwi+cGeJFuny/oZ7ChctQLD6x8GL1YO3CDjZiJc9Zrcbnx7u0w==} + engines: {node: '>=12.13.0'} + dev: true + + /@applitools/eg-frpc@1.0.3: + resolution: {integrity: sha512-16CrVdq2onkN5j6wpHxd8dfapJehHJq7GnYEg86QGFZPhTgZI5WukKrp9ryM0EblUJUjdTwEPymc5B8cffuZZQ==} + engines: {node: '>=12.13.0'} + dev: true + + /@applitools/eg-socks5-proxy-server@0.5.4: + resolution: {integrity: sha512-LEucOmy1MXft6c07CkqKPS1Ov9Zg9WyHV2vI1SbbHR3AG4cEM2M3N0qcWlytxjzef9t22+1tOpEJhrBS65bSQw==} + engines: {node: '>=12'} + dependencies: + binary: 0.3.0 + is-localhost-ip: 2.0.0 + dev: true + + /@applitools/execution-grid-tunnel@1.0.19: + resolution: {integrity: sha512-kTRSNcld6fyW+vEXwsxkrgg7AfqXaA/upgUFdiIAEDoTUGqowoRfjAnkZcAgWPeEdtGEAu5KttlFp9z64EvRPQ==} + engines: {node: '>=12.13.0'} + hasBin: true + dependencies: + '@applitools/eg-frpc': 1.0.2 + '@applitools/eg-socks5-proxy-server': 0.5.4 + '@applitools/execution-grid-tunnel': 1.0.24 + '@applitools/logger': 1.1.48 + dotenv: 16.0.3 + encoding: 0.1.13 + fastify: 3.29.5 + fastify-plugin: 3.0.1 + find-process: 1.4.7 + ini: 3.0.1 + node-cleanup: 2.1.2 + node-fetch: 2.6.9(encoding@0.1.13) + p-retry: 4.6.2 + teen_process: 1.16.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@applitools/execution-grid-tunnel@1.0.24: + resolution: {integrity: sha512-PVOHhTSqC5JCZh76GJCuShLjApogl5IzE5xaDOF0ptX1gvlEqN1MuONw/TTcT4P9j4Xs/XLU+T4o265R4Z+dbA==} + engines: {node: '>=12.13.0'} + hasBin: true + dependencies: + '@applitools/eg-frpc': 1.0.3 + '@applitools/eg-socks5-proxy-server': 0.5.4 + '@applitools/logger': 1.1.48 + dotenv: 16.0.3 + encoding: 0.1.13 + fastify: 3.29.5 + fastify-plugin: 3.0.1 + find-process: 1.4.7 + ini: 3.0.1 + node-cleanup: 2.1.2 + node-fetch: 2.6.9(encoding@0.1.13) + p-retry: 4.6.2 + teen_process: 1.16.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@applitools/eyes-api@1.13.12(typescript@5.0.4): + resolution: {integrity: sha512-83pr95/6brMHnYmqFuoDezMzB5h6HtBz3NXPwJ6GtPj+37ksDVO6jwJz9fh/wmBx9KELd8FUGvWpYEUlhkJzuA==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/core': 1.2.4 - '@applitools/logger': 1.1.27 - '@applitools/utils': 1.3.13 + '@applitools/core': 2.3.14(typescript@5.0.4) + '@applitools/logger': 1.1.46 + '@applitools/utils': 1.3.30 transitivePeerDependencies: - bufferutil - encoding - supports-color + - typescript - utf-8-validate dev: true - /@applitools/eyes-cypress/3.27.6: - resolution: {integrity: sha512-2FpWKQ7rVhrr94Z8DjmJ8kD3f71aYahvTpT3dJyjfVKV8GxwAYAb/qrq6gAUnItaaoB2PgLHbIsqpOpRPki1tQ==} + /@applitools/eyes-cypress@3.32.0(typescript@5.0.4): + resolution: {integrity: sha512-PgDZi3zg7Auh2V6XmxTGn/ONZA5yY5VpW+fpV2rUx22ByM7BL9P7fHDJrx/iIdP/s5YUNDTIVJUuSvGSB+Arcg==} engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@applitools/core': 1.2.7 - '@applitools/eyes-api': 1.9.1 - '@applitools/eyes-universal': 2.16.9 + '@applitools/core': 2.5.3(typescript@5.0.4) + '@applitools/eyes-api': 1.13.12(typescript@5.0.4) '@applitools/functional-commons': 1.6.0 - '@applitools/logger': 1.1.27 + '@applitools/logger': 1.1.48 + '@applitools/utils': 1.3.32 + boxen: 5.1.2 chalk: 3.0.0 semver: 7.3.8 uuid: 8.3.2 @@ -824,80 +905,46 @@ packages: - bufferutil - encoding - supports-color + - typescript - utf-8-validate dev: true - /@applitools/eyes-sdk-core/13.11.15: - resolution: {integrity: sha512-oN2yTzFsuRMpmBpgzzqiUGRkezIez1JwQFRqqa6dsxUUBWE2IWp52MqJV5NRGHt9Sdh8q4+M6Hk6h8sVHE3LGg==} - engines: {node: '>=12.13.0'} - dependencies: - '@applitools/core': 1.2.7 - '@applitools/driver': 1.11.1 - '@applitools/execution-grid-client': 1.1.30 - '@applitools/utils': 1.3.13 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: true - - /@applitools/eyes-universal/2.16.9: - resolution: {integrity: sha512-D8MeOLoBETyg0oPxkaim3taiKWo6XMILTSAX+rWQHz0X7u+JRuCBLZu0WFlQPLTo7ndLiVyo2BpbBy9KIp5haA==} - engines: {node: '>=12.13.0'} - hasBin: true - dependencies: - '@applitools/core': 1.2.7 - '@applitools/driver': 1.11.1 - '@applitools/execution-grid-client': 1.1.30 - '@applitools/eyes-sdk-core': 13.11.15 - '@applitools/logger': 1.1.27 - '@applitools/utils': 1.3.13 - proxy-agent: 5.0.0 - webdriver: 7.16.11 - ws: 7.4.6 - yargs: 17.4.1 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: true - - /@applitools/functional-commons/1.6.0: + /@applitools/functional-commons@1.6.0: resolution: {integrity: sha512-fwiF0CbeYHDEOTD/NKaFgaI8LvRcGYG2GaJJiRwcedKko16sQ8F3TK5wXfj2Ytjf+8gjwHwsEEX550z3yvDWxA==} engines: {node: '>=8.0.0'} dev: true - /@applitools/image/1.0.4: - resolution: {integrity: sha512-eNr/fa+loGz1hrgwv/NKuVP13uRyfRUPFyCU8EtTdSWuGFJXIqwhtQWCFCokX1EXnhoCyGfFBAzWgW9StqTGfQ==} + /@applitools/image@1.0.26: + resolution: {integrity: sha512-eJ05q44JhNaZHnaUKOvAFiY2tgtk8xTf0oZqSRq9kxrCPHjHpdWGJhJt4BwZ+TzGJdA85/cLWDj/ZEXPyDCv6w==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/utils': 1.3.13 + '@applitools/utils': 1.3.30 + bmpimagejs: 1.0.4 jpeg-js: 0.4.4 png-async: 0.9.4 dev: true - /@applitools/image/1.0.5: - resolution: {integrity: sha512-khv0fkjaoe0j/btEog8K/sqC2ULss+bkkHQQz80AOxnW/ixq5C4eQhTNzVRZ9/X7EDi7XsskvAXsi9RseIRnBw==} + /@applitools/image@1.0.28: + resolution: {integrity: sha512-Pm5ZRnbTijafkHYmOhwACRN79YtbtiE9nDHhJSFPiuY7qdiFQ7vhG3XJmX00fMZBjuZHiZ9jRuvgUzASQ09a+Q==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/utils': 1.3.13 + '@applitools/utils': 1.3.32 + bmpimagejs: 1.0.4 jpeg-js: 0.4.4 png-async: 0.9.4 dev: true - /@applitools/jsdom/1.0.4: + /@applitools/jsdom@1.0.4: resolution: {integrity: sha512-JtjNfTJtphJYHEkicW4xlwtYuRP3TRvjoszfkrcpxTNMCbGkbop8ed9MuUfR83dAZj5NY9begbmEqJohLJco6w==} engines: {node: '>=12'} dependencies: abab: 2.0.6 - acorn: 8.8.1 + acorn: 8.8.2 acorn-globals: 6.0.0 cssom: 0.5.0 cssstyle: 2.3.0 data-urls: 3.0.2 - decimal.js: 10.4.1 + decimal.js: 10.4.3 domexception: 4.0.0 escodegen: 2.0.0 form-data: 4.0.0 @@ -916,7 +963,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 10.0.0 - ws: 8.9.0 + ws: 8.13.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -924,31 +971,57 @@ packages: - utf-8-validate dev: true - /@applitools/logger/1.1.27: - resolution: {integrity: sha512-lwKCNhuMfLkqxfwYhLalDg2JZNgNj6rEgD8LnozsQdfxqVXThrJb/fkdSaSeUwnF+ljJyR7fnPy+p742p66U0Q==} + /@applitools/logger@1.1.46: + resolution: {integrity: sha512-TMKy8sZT8k99a7QGTPYN0Iwxvi0evIv0apAJe37hQ792xUHVKjpLJ1U9LtLQqXqVzz5QCRw0jSx+1ssYWvMEKg==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/utils': 1.3.13 + '@applitools/utils': 1.3.30 chalk: 4.1.2 + debug: 4.3.3 + transitivePeerDependencies: + - supports-color dev: true - /@applitools/nml-client/1.3.5: - resolution: {integrity: sha512-MW1kB5AGe5l8HZ5GMkVhTm6XMndeIADmed37WrW3obD3FrmBGQLLj04GP6J7czLTeGjeh7QojvuAEvQUGFV5MQ==} + /@applitools/logger@1.1.48: + resolution: {integrity: sha512-A/8Q9p2INPDOMGE8Hqodpw5UxXLGdW4z2w8gOzEJ3zi0MyLOY3lBZiaPKEP0nmOs29q4r/yr0srYY5j9FVAmCg==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/logger': 1.1.27 - '@applitools/req': 1.1.12 - '@applitools/utils': 1.3.13 + '@applitools/utils': 1.3.32 + chalk: 4.1.2 + debug: 4.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@applitools/nml-client@1.3.38: + resolution: {integrity: sha512-okIo+R5wM+xDP0sNBPLOXbDsatnce40oiiK04UUb+8JlHQB+4MpeUweyjGrEtGRTkylBgA5o8xf5yAcSMAcD4g==} + engines: {node: '>=12.13.0'} + dependencies: + '@applitools/logger': 1.1.46 + '@applitools/req': 1.1.30 + '@applitools/utils': 1.3.30 transitivePeerDependencies: - encoding - supports-color dev: true - /@applitools/req/1.1.12: - resolution: {integrity: sha512-eA8gsbqMxGEvW1KHb6P/AZ+IXlkxhf+Best683z9uo6O/wPQbg+B/20GoUpbUgpqWDQZmdhZDUb/RvxKwSl/PA==} + /@applitools/nml-client@1.3.47: + resolution: {integrity: sha512-PCKU0iwRbvwQCkUOTDwaYl/PCeed2QzEaHKRU1JcQtFzS/icIC1ECQu13OdmBJitZiWs9E1WtRhLM9DCQ2vLxQ==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/utils': 1.3.13 + '@applitools/logger': 1.1.48 + '@applitools/req': 1.1.35 + '@applitools/utils': 1.3.32 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@applitools/req@1.1.30: + resolution: {integrity: sha512-W5gOrtxQRXcBzEJxBj2pHuT6npaL5M83MS8hl4UwyNKWkoWinbMpSiHTtjo/R7M2M0Nirq4qhAv8Wu2yIv2gsw==} + engines: {node: '>=12.13.0'} + dependencies: + '@applitools/utils': 1.3.30 '@types/node-fetch': 2.6.2 abort-controller: 3.0.0 node-fetch: 2.6.7 @@ -958,48 +1031,114 @@ packages: - supports-color dev: true - /@applitools/screenshoter/3.7.0: - resolution: {integrity: sha512-d723TI4InLQi06TpVj4rP+V5OrNL9mFQr+cWv2MOMfQbuAnZETTRzvDyk97e3qoDJHAPjyQuxi81qEaxsFxhOA==} + /@applitools/req@1.1.35: + resolution: {integrity: sha512-JKDFy3Y+EAORLzQ6oUa4lnAOvCCUbVol7ouJhId3kyQMye0rlQYCUVkwsrhc14BpvJjKyxABcIcQG8vp7xnaHg==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/image': 1.0.4 - '@applitools/logger': 1.1.27 - '@applitools/snippets': 2.4.5 - '@applitools/utils': 1.3.13 - jpeg-js: 0.4.4 - png-async: 0.9.4 + '@applitools/utils': 1.3.32 + '@types/node-fetch': 2.6.2 + abort-controller: 3.0.0 + node-fetch: 2.6.7 + proxy-agent: 5.0.0 + transitivePeerDependencies: + - encoding + - supports-color dev: true - /@applitools/screenshoter/3.7.2: - resolution: {integrity: sha512-bWtNQeRvdcQBcc+5kAwVBnEQ3DhDncAE853SuJPgpczZkqy9t7Ot8L3kNLbi+210vbWSqpnVGt9tAeLgG/xZdA==} + /@applitools/screenshoter@3.7.29: + resolution: {integrity: sha512-k+fMilqPCUj5VES6I3Nvbg9/tn1c7I4mTJC57SR/E3sFtVHl/oeGxAriiUpsgRwlsAbpJ09EJUJd+4Ikce290Q==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/image': 1.0.5 - '@applitools/logger': 1.1.27 - '@applitools/snippets': 2.4.6 - '@applitools/utils': 1.3.13 + '@applitools/image': 1.0.26 + '@applitools/logger': 1.1.46 + '@applitools/snippets': 2.4.15 + '@applitools/utils': 1.3.30 jpeg-js: 0.4.4 png-async: 0.9.4 + transitivePeerDependencies: + - supports-color dev: true - /@applitools/snippets/2.4.5: - resolution: {integrity: sha512-GoLN1wu8u5/qwdk1ozEElqmr4y7AoMQl0Ka0OzisGdx9/L7R0RzSWQCErjkf4LgKiWKK8j7lde3JT9yjxfritQ==} + /@applitools/screenshoter@3.7.38: + resolution: {integrity: sha512-QkgCTg8qEEyU0eif/Vspg6MeFLTnSos5BXMQpw0EfhuotPWtIpNT5Ky0bOwXfnU07bM/7WtzYVy44c109iV0/Q==} + engines: {node: '>=12.13.0'} + dependencies: + '@applitools/image': 1.0.28 + '@applitools/logger': 1.1.48 + '@applitools/snippets': 2.4.19 + '@applitools/utils': 1.3.32 + jpeg-js: 0.4.4 + png-async: 0.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@applitools/snippets@2.4.15: + resolution: {integrity: sha512-Yjta4HTmdcvK4w9u7uBQxKUDduRM1nwUb8Q/AHol/+dneJF+NVK2zBOw5c8fZn4+YEURsNx8sUTaqeN/5TZmzQ==} engines: {node: '>=12.13.0'} dev: true - /@applitools/snippets/2.4.6: - resolution: {integrity: sha512-hAsAalDxaa1w2RCEx2b35D9XJIGGRlqQKzXEE6/rNr5vMtT0eYye61SST5e2PD7B4F2jJ7jRKrZd7REawoxxmg==} + /@applitools/snippets@2.4.19: + resolution: {integrity: sha512-cXIB5fuVGYFQzZK3tylgIRLh5dTWoCS2v2ZDGpSgdWuz0NH5LArGQpqPr8svqv3nEHCKMBHCMbwEF/CoblIblA==} engines: {node: '>=12.13.0'} dev: true - /@applitools/ufg-client/1.1.2: - resolution: {integrity: sha512-yhjlp4QHWVazImfUUr9S9ueQhKstxfI3NNu/SLPPX7lHLOdpdWn7fUZOzTBCs6j914s87r9J9cmsU2gnOO8bOQ==} + /@applitools/socket@1.0.10: + resolution: {integrity: sha512-uQLwoTJPpKwdKUN+kY9L7AtHxvwkxPzHOvzrD7Gf3TEWOIESXtvwbWiAH+se3lut0hejk/qxsRGB1p5ljkrawA==} + engines: {node: '>=12.13.0'} + dependencies: + '@applitools/logger': 1.1.48 + '@applitools/utils': 1.3.32 + transitivePeerDependencies: + - supports-color + dev: true + + /@applitools/socket@1.0.8: + resolution: {integrity: sha512-TsuPeIByNsP18wTqrSwbTya+A2n0zjOPvt82A3BQUid/37R5K3wQv3UnKFIvOsPwPTuKEjGlv0YS0xSj5j+foA==} + engines: {node: '>=12.13.0'} + dependencies: + '@applitools/logger': 1.1.46 + '@applitools/utils': 1.3.30 + transitivePeerDependencies: + - supports-color + dev: true + + /@applitools/spec-driver-webdriver@1.0.15(webdriver@7.30.0): + resolution: {integrity: sha512-L6Oph0KE7qDNFip4kLW+XnuimdezjCkVeNNEjxgnu5E7C85ZI5h4KvzSnPbCp69lIbTTi8f6Df6Nq6c+KbPrPg==} + engines: {node: '>=12.13.0'} + peerDependencies: + webdriver: '>=7.27.0' + dependencies: + '@applitools/driver': 1.11.35 + '@applitools/utils': 1.3.30 + proxy-agent: 5.0.0 + webdriver: 7.30.0(typescript@5.0.4) + transitivePeerDependencies: + - supports-color + dev: true + + /@applitools/spec-driver-webdriver@1.0.24(webdriver@7.30.0): + resolution: {integrity: sha512-Lta6H7BjyWyOLzvvmfW/fZ8stXxG2QUxmaNU3krU9xiKyx598Yhz1pn847xTiP5UaUb8bdF2q/cyb+n7gu4VVQ==} + engines: {node: '>=12.13.0'} + peerDependencies: + webdriver: '>=7.27.0' + dependencies: + '@applitools/driver': 1.11.43 + '@applitools/utils': 1.3.32 + proxy-agent: 5.0.0 + webdriver: 7.30.0(typescript@5.0.4) + transitivePeerDependencies: + - supports-color + dev: true + + /@applitools/ufg-client@1.2.1: + resolution: {integrity: sha512-LpfxjNqOeee/XgvKzzqVN+ytDe4MsQU4C7lwTv2GUMQXfEHIdqEAoeqzDkywTdn7o1tOeDGEXg1JFORrlMSosA==} engines: {node: '>=12.13.0'} dependencies: '@applitools/jsdom': 1.0.4 - '@applitools/logger': 1.1.27 - '@applitools/req': 1.1.12 - '@applitools/utils': 1.3.13 + '@applitools/logger': 1.1.46 + '@applitools/req': 1.1.30 + '@applitools/utils': 1.3.30 abort-controller: 3.0.0 postcss-value-parser: 4.2.0 throat: 6.0.1 @@ -1010,24 +1149,47 @@ packages: - utf-8-validate dev: true - /@applitools/utils/1.3.13: - resolution: {integrity: sha512-UwA1skl9kzK+WrXu7WyX6A4K4TdIFZbDAcFJq2PA5fhmbviAlk4iFJtQjyopYTdY0sSh3VRSsCPr3DsbFa79AA==} + /@applitools/ufg-client@1.2.10: + resolution: {integrity: sha512-AeHMhmIThcL6M3B+AFquTOlTT8UkPhf/5zQBQH6wuJmdYKzkvPHISPK8yM+JK9zg1nJtiC0HRPoNKoVkb++LfA==} + engines: {node: '>=12.13.0'} + dependencies: + '@applitools/jsdom': 1.0.4 + '@applitools/logger': 1.1.48 + '@applitools/req': 1.1.35 + '@applitools/utils': 1.3.32 + abort-controller: 3.0.0 + css-tree: 2.3.1 + throat: 6.0.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + + /@applitools/utils@1.3.30: + resolution: {integrity: sha512-plOtxdUYLqMAYwevUTUFNYqSJIH0BQXeqlBFtKwdTdFGn6pK3cGBg5aYp40BxPodBKrQ6Ze325WnwhIVAI3pYg==} engines: {node: '>=12.13.0'} dev: true - /@babel/code-frame/7.18.6: + /@applitools/utils@1.3.32: + resolution: {integrity: sha512-GSMSf1NNW6fEm0u1ANGrQY+ESs8UgDYAZnaVrgjpFJ8ONL8eVDXn3tiIDdhmj/HKthAHqiYOYdRESmpuru/zrQ==} + engines: {node: '>=12.13.0'} + dev: true + + /@babel/code-frame@7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 dev: true - /@babel/compat-data/7.21.0: + /@babel/compat-data@7.21.0: resolution: {integrity: sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.12.3: + /@babel/core@7.12.3: resolution: {integrity: sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==} engines: {node: '>=6.9.0'} dependencies: @@ -1040,7 +1202,7 @@ packages: '@babel/traverse': 7.21.2 '@babel/types': 7.21.2 convert-source-map: 1.8.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.1 lodash: 4.17.21 @@ -1051,16 +1213,7 @@ packages: - supports-color dev: true - /@babel/generator/7.19.0: - resolution: {integrity: sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.2 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - dev: true - - /@babel/generator/7.21.1: + /@babel/generator@7.21.1: resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==} engines: {node: '>=6.9.0'} dependencies: @@ -1070,14 +1223,14 @@ packages: jsesc: 2.5.2 dev: true - /@babel/helper-annotate-as-pure/7.18.6: + /@babel/helper-annotate-as-pure@7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.2 dev: true - /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: + /@babel/helper-builder-binary-assignment-operator-visitor@7.18.9: resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} engines: {node: '>=6.9.0'} dependencies: @@ -1085,7 +1238,7 @@ packages: '@babel/types': 7.21.2 dev: true - /@babel/helper-compilation-targets/7.20.7_@babel+core@7.12.3: + /@babel/helper-compilation-targets@7.20.7(@babel/core@7.12.3): resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1099,7 +1252,7 @@ packages: semver: 6.3.0 dev: true - /@babel/helper-create-class-features-plugin/7.21.0_@babel+core@7.12.3: + /@babel/helper-create-class-features-plugin@7.21.0(@babel/core@7.12.3): resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1118,7 +1271,7 @@ packages: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin/7.21.0_@babel+core@7.12.3: + /@babel/helper-create-regexp-features-plugin@7.21.0(@babel/core@7.12.3): resolution: {integrity: sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1129,15 +1282,15 @@ packages: regexpu-core: 5.3.1 dev: true - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.12.3: + /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.12.3): resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.3 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.12.3) '@babel/helper-plugin-utils': 7.20.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.1 semver: 6.3.0 @@ -1145,27 +1298,19 @@ packages: - supports-color dev: true - /@babel/helper-environment-visitor/7.18.9: + /@babel/helper-environment-visitor@7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-explode-assignable-expression/7.18.6: + /@babel/helper-explode-assignable-expression@7.18.6: resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.2 dev: true - /@babel/helper-function-name/7.19.0: - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.21.2 - dev: true - - /@babel/helper-function-name/7.21.0: + /@babel/helper-function-name@7.21.0: resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} engines: {node: '>=6.9.0'} dependencies: @@ -1173,28 +1318,28 @@ packages: '@babel/types': 7.21.2 dev: true - /@babel/helper-hoist-variables/7.18.6: + /@babel/helper-hoist-variables@7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.2 dev: true - /@babel/helper-member-expression-to-functions/7.21.0: + /@babel/helper-member-expression-to-functions@7.21.0: resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.2 dev: true - /@babel/helper-module-imports/7.18.6: + /@babel/helper-module-imports@7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.2 dev: true - /@babel/helper-module-transforms/7.21.2: + /@babel/helper-module-transforms@7.21.2: resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} engines: {node: '>=6.9.0'} dependencies: @@ -1210,24 +1355,19 @@ packages: - supports-color dev: true - /@babel/helper-optimise-call-expression/7.18.6: + /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.2 dev: true - /@babel/helper-plugin-utils/7.19.0: - resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-plugin-utils/7.20.2: + /@babel/helper-plugin-utils@7.20.2: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.12.3: + /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.12.3): resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1242,7 +1382,7 @@ packages: - supports-color dev: true - /@babel/helper-replace-supers/7.20.7: + /@babel/helper-replace-supers@7.20.7: resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} engines: {node: '>=6.9.0'} dependencies: @@ -1256,41 +1396,41 @@ packages: - supports-color dev: true - /@babel/helper-simple-access/7.20.2: + /@babel/helper-simple-access@7.20.2: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.2 dev: true - /@babel/helper-skip-transparent-expression-wrappers/7.20.0: + /@babel/helper-skip-transparent-expression-wrappers@7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.2 dev: true - /@babel/helper-split-export-declaration/7.18.6: + /@babel/helper-split-export-declaration@7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.2 dev: true - /@babel/helper-string-parser/7.19.4: + /@babel/helper-string-parser@7.19.4: resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier/7.19.1: + /@babel/helper-validator-identifier@7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option/7.21.0: + /@babel/helper-validator-option@7.21.0: resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-wrap-function/7.20.5: + /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} dependencies: @@ -1302,7 +1442,7 @@ packages: - supports-color dev: true - /@babel/helpers/7.19.0: + /@babel/helpers@7.19.0: resolution: {integrity: sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==} engines: {node: '>=6.9.0'} dependencies: @@ -1313,7 +1453,7 @@ packages: - supports-color dev: true - /@babel/highlight/7.18.6: + /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: @@ -1322,22 +1462,14 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/parser/7.19.1: - resolution: {integrity: sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.21.2 - dev: true - - /@babel/parser/7.21.2: + /@babel/parser@7.21.2: resolution: {integrity: sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: '@babel/types': 7.21.2 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.12.3: + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1347,7 +1479,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.20.7_@babel+core@7.12.3: + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.20.7(@babel/core@7.12.3): resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1356,10 +1488,10 @@ packages: '@babel/core': 7.12.3 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.12.3 + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.12.3) dev: true - /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.12.3: + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.12.3): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1368,40 +1500,40 @@ packages: '@babel/core': 7.12.3 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.12.3 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.3 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.12.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.12.3) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.12.3: + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.12.3) '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-static-block/7.21.0_@babel+core@7.12.3: + /@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.12.3): resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.12.3) '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.12.3 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.12.3) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.12.3: + /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1409,10 +1541,10 @@ packages: dependencies: '@babel/core': 7.12.3 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.12.3) dev: true - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.12.3: + /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.12.3): resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1420,10 +1552,10 @@ packages: dependencies: '@babel/core': 7.12.3 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.12.3) dev: true - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.12.3: + /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1431,10 +1563,10 @@ packages: dependencies: '@babel/core': 7.12.3 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.12.3) dev: true - /@babel/plugin-proposal-logical-assignment-operators/7.20.7_@babel+core@7.12.3: + /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.12.3): resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1442,10 +1574,10 @@ packages: dependencies: '@babel/core': 7.12.3 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.3 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.12.3) dev: true - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.12.3: + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1453,10 +1585,10 @@ packages: dependencies: '@babel/core': 7.12.3 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.12.3) dev: true - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.12.3: + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1464,10 +1596,10 @@ packages: dependencies: '@babel/core': 7.12.3 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.3 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.12.3) dev: true - /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.12.3: + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.12.3): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1475,13 +1607,13 @@ packages: dependencies: '@babel/compat-data': 7.21.0 '@babel/core': 7.12.3 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.3 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.12.3) '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.12.3 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-transform-parameters': 7.20.7(@babel/core@7.12.3) dev: true - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.12.3: + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1489,10 +1621,10 @@ packages: dependencies: '@babel/core': 7.12.3 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.12.3) dev: true - /@babel/plugin-proposal-optional-chaining/7.21.0_@babel+core@7.12.3: + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.12.3): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1501,23 +1633,23 @@ packages: '@babel/core': 7.12.3 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.12.3) dev: true - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.12.3: + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.12.3) '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object/7.21.0_@babel+core@7.12.3: + /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.12.3): resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1525,25 +1657,25 @@ packages: dependencies: '@babel/core': 7.12.3 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.12.3) '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.12.3 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.12.3) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.12.3: + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-create-regexp-features-plugin': 7.21.0(@babel/core@7.12.3) '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.12.3: + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.12.3): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1552,16 +1684,16 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.12.3: + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.12.3): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.12.3: + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.12.3): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1570,7 +1702,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.12.3: + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.12.3): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1580,7 +1712,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.12.3: + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.12.3): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1589,7 +1721,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.12.3: + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.12.3): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1598,7 +1730,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.12.3: + /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.12.3): resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1608,16 +1740,16 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.12.3: + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.12.3): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.12.3: + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.12.3): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1626,17 +1758,17 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.12.3: + /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.12.3: + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.12.3): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1645,7 +1777,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.12.3: + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.12.3): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1654,7 +1786,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.12.3: + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.12.3): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1663,7 +1795,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.3: + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.12.3): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1672,7 +1804,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.12.3: + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.12.3): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1681,7 +1813,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.12.3: + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.12.3): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1690,7 +1822,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.12.3: + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.12.3): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1700,7 +1832,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.12.3: + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.12.3): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1710,17 +1842,17 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.12.3: + /@babel/plugin-syntax-typescript@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-arrow-functions/7.20.7_@babel+core@7.12.3: + /@babel/plugin-transform-arrow-functions@7.20.7(@babel/core@7.12.3): resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1730,7 +1862,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.12.3: + /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.12.3): resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1739,12 +1871,12 @@ packages: '@babel/core': 7.12.3 '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.12.3 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.12.3) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.12.3: + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1754,7 +1886,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-block-scoping/7.21.0_@babel+core@7.12.3: + /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.12.3): resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1764,7 +1896,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-classes/7.21.0_@babel+core@7.12.3: + /@babel/plugin-transform-classes@7.21.0(@babel/core@7.12.3): resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1772,7 +1904,7 @@ packages: dependencies: '@babel/core': 7.12.3 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.3 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.12.3) '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 @@ -1784,7 +1916,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.12.3: + /@babel/plugin-transform-computed-properties@7.20.7(@babel/core@7.12.3): resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1795,7 +1927,7 @@ packages: '@babel/template': 7.20.7 dev: true - /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.12.3: + /@babel/plugin-transform-destructuring@7.20.7(@babel/core@7.12.3): resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1805,18 +1937,18 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.12.3: + /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-create-regexp-features-plugin': 7.21.0(@babel/core@7.12.3) '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.12.3: + /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.12.3): resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1826,7 +1958,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.12.3: + /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1837,7 +1969,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-for-of/7.21.0_@babel+core@7.12.3: + /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.12.3): resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1847,19 +1979,19 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.12.3: + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.12.3): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.3 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.12.3) '@babel/helper-function-name': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.12.3: + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.12.3): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1869,7 +2001,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.12.3: + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1879,7 +2011,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.12.3: + /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.12.3): resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1892,7 +2024,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.21.2_@babel+core@7.12.3: + /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.12.3): resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1906,7 +2038,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.12.3: + /@babel/plugin-transform-modules-systemjs@7.20.11(@babel/core@7.12.3): resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1921,7 +2053,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.12.3: + /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1934,18 +2066,18 @@ packages: - supports-color dev: true - /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.12.3: + /@babel/plugin-transform-named-capturing-groups-regex@7.20.5(@babel/core@7.12.3): resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-create-regexp-features-plugin': 7.21.0(@babel/core@7.12.3) '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.12.3: + /@babel/plugin-transform-new-target@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1955,7 +2087,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.12.3: + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1968,7 +2100,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.12.3: + /@babel/plugin-transform-parameters@7.20.7(@babel/core@7.12.3): resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1978,7 +2110,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.12.3: + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1988,7 +2120,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.12.3: + /@babel/plugin-transform-regenerator@7.20.5(@babel/core@7.12.3): resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1999,7 +2131,7 @@ packages: regenerator-transform: 0.15.1 dev: true - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.12.3: + /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -2009,7 +2141,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.12.3: + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -2019,7 +2151,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-spread/7.20.7_@babel+core@7.12.3: + /@babel/plugin-transform-spread@7.20.7(@babel/core@7.12.3): resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -2030,7 +2162,7 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: true - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.12.3: + /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -2040,7 +2172,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.12.3: + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.12.3): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -2050,7 +2182,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.12.3: + /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.12.3): resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -2060,7 +2192,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.12.3: + /@babel/plugin-transform-unicode-escapes@7.18.10(@babel/core@7.12.3): resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -2070,18 +2202,18 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.12.3: + /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.12.3 + '@babel/helper-create-regexp-features-plugin': 7.21.0(@babel/core@7.12.3) '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/preset-env/7.20.2_@babel+core@7.12.3: + /@babel/preset-env@7.20.2(@babel/core@7.12.3): resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -2089,118 +2221,109 @@ packages: dependencies: '@babel/compat-data': 7.21.0 '@babel/core': 7.12.3 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.12.3 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.12.3) '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-option': 7.21.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7_@babel+core@7.12.3 - '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.12.3 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-proposal-class-static-block': 7.21.0_@babel+core@7.12.3 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.12.3 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7_@babel+core@7.12.3 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.12.3 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.12.3 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-proposal-private-property-in-object': 7.21.0_@babel+core@7.12.3 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.3 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.12.3 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.12.3 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.12.3 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.3 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.3 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.12.3 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.12.3 - '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.12.3 - '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.12.3 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.12.3 - '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.12.3 - '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.12.3 - '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.12.3 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.12.3 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-transform-for-of': 7.21.0_@babel+core@7.12.3 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.12.3 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.12.3 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.12.3 - '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.12.3 - '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.12.3 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.12.3 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.12.3 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.12.3 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.12.3 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.12.3 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.12.3 - '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.12.3 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.12.3 - '@babel/preset-modules': 0.1.5_@babel+core@7.12.3 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7(@babel/core@7.12.3) + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.12.3) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.12.3) + '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.12.3) + '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.12.3) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.12.3) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.12.3) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.12.3) + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.12.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.12.3) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.12.3) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.12.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.12.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.12.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.12.3) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.12.3) + '@babel/plugin-transform-arrow-functions': 7.20.7(@babel/core@7.12.3) + '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.12.3) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.12.3) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.12.3) + '@babel/plugin-transform-computed-properties': 7.20.7(@babel/core@7.12.3) + '@babel/plugin-transform-destructuring': 7.20.7(@babel/core@7.12.3) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.12.3) + '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-transform-for-of': 7.21.0(@babel/core@7.12.3) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.12.3) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.12.3) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.12.3) + '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.12.3) + '@babel/plugin-transform-modules-systemjs': 7.20.11(@babel/core@7.12.3) + '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5(@babel/core@7.12.3) + '@babel/plugin-transform-new-target': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-transform-parameters': 7.20.7(@babel/core@7.12.3) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-transform-regenerator': 7.20.5(@babel/core@7.12.3) + '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.12.3) + '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.12.3) + '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.12.3) + '@babel/plugin-transform-unicode-escapes': 7.18.10(@babel/core@7.12.3) + '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.12.3) + '@babel/preset-modules': 0.1.5(@babel/core@7.12.3) '@babel/types': 7.21.2 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.12.3 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.12.3 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.12.3 + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.12.3) + babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.12.3) + babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.12.3) core-js-compat: 3.28.0 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules/0.1.5_@babel+core@7.12.3: + /@babel/preset-modules@0.1.5(@babel/core@7.12.3): resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.12.3 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.12.3) '@babel/types': 7.21.2 esutils: 2.0.3 dev: true - /@babel/regjsgen/0.8.0: + /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true - /@babel/runtime/7.21.0: + /@babel/runtime@7.21.0: resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 dev: true - /@babel/template/7.18.10: - resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.21.2 - '@babel/types': 7.21.2 - dev: true - - /@babel/template/7.20.7: + /@babel/template@7.20.7: resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} engines: {node: '>=6.9.0'} dependencies: @@ -2209,25 +2332,7 @@ packages: '@babel/types': 7.21.2 dev: true - /@babel/traverse/7.19.1: - resolution: {integrity: sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.0 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.2 - '@babel/types': 7.21.2 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/traverse/7.21.2: + /@babel/traverse@7.21.2: resolution: {integrity: sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==} engines: {node: '>=6.9.0'} dependencies: @@ -2239,13 +2344,13 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.2 '@babel/types': 7.21.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.21.2: + /@babel/types@7.21.2: resolution: {integrity: sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==} engines: {node: '>=6.9.0'} dependencies: @@ -2253,504 +2358,475 @@ packages: '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - /@bcoe/v8-coverage/0.2.3: + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@braintree/sanitize-url/6.0.0: + /@braintree/sanitize-url@6.0.0: resolution: {integrity: sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w==} dev: false - /@colors/colors/1.5.0: + /@braintree/sanitize-url@6.0.2: + resolution: {integrity: sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==} + dev: false + + /@colors/colors@1.5.0: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} requiresBuild: true dev: true optional: true - /@commitlint/cli/17.2.0: - resolution: {integrity: sha512-kd1zykcrjIKyDRftWW1E1TJqkgzeosEkv1BiYPCdzkb/g/3BrfgwZUHR1vg+HO3qKUb/0dN+jNXArhGGAHpmaQ==} + /@commitlint/cli@17.6.1: + resolution: {integrity: sha512-kCnDD9LE2ySiTnj/VPaxy4/oRayRcdv4aCuVxtoum8SxIU7OADHc0nJPQfheE8bHcs3zZdWzDMWltRosuT13bg==} engines: {node: '>=v14'} hasBin: true dependencies: - '@commitlint/format': 17.0.0 - '@commitlint/lint': 17.2.0 - '@commitlint/load': 17.2.0 - '@commitlint/read': 17.2.0 - '@commitlint/types': 17.0.0 + '@commitlint/format': 17.4.4 + '@commitlint/lint': 17.6.1 + '@commitlint/load': 17.5.0 + '@commitlint/read': 17.5.1 + '@commitlint/types': 17.4.4 execa: 5.1.1 - lodash: 4.17.21 + lodash.isfunction: 3.0.9 resolve-from: 5.0.0 resolve-global: 1.0.0 - yargs: 17.5.1 + yargs: 17.7.2 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true - /@commitlint/config-conventional/17.2.0: - resolution: {integrity: sha512-g5hQqRa80f++SYS233dbDSg16YdyounMTAhVcmqtInNeY/GF3aA4st9SVtJxpeGrGmueMrU4L+BBb+6Vs5wrcg==} + /@commitlint/config-conventional@17.6.1: + resolution: {integrity: sha512-ng/ybaSLuTCH9F+7uavSOnEQ9EFMl7lHEjfAEgRh1hwmEe8SpLKpQeMo2aT1IWvHaGMuTb+gjfbzoRf2IR23NQ==} engines: {node: '>=v14'} dependencies: conventional-changelog-conventionalcommits: 5.0.0 dev: true - /@commitlint/config-validator/17.1.0: - resolution: {integrity: sha512-Q1rRRSU09ngrTgeTXHq6ePJs2KrI+axPTgkNYDWSJIuS1Op4w3J30vUfSXjwn5YEJHklK3fSqWNHmBhmTR7Vdg==} + /@commitlint/config-validator@17.4.4: + resolution: {integrity: sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.0.0 + '@commitlint/types': 17.4.4 ajv: 8.11.0 dev: true - /@commitlint/ensure/17.0.0: - resolution: {integrity: sha512-M2hkJnNXvEni59S0QPOnqCKIK52G1XyXBGw51mvh7OXDudCmZ9tZiIPpU882p475Mhx48Ien1MbWjCP1zlyC0A==} + /@commitlint/ensure@17.4.4: + resolution: {integrity: sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.0.0 - lodash: 4.17.21 + '@commitlint/types': 17.4.4 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 dev: true - /@commitlint/execute-rule/17.0.0: - resolution: {integrity: sha512-nVjL/w/zuqjCqSJm8UfpNaw66V9WzuJtQvEnCrK4jDw6qKTmZB+1JQ8m6BQVZbNBcwfYdDNKnhIhqI0Rk7lgpQ==} + /@commitlint/execute-rule@17.4.0: + resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==} engines: {node: '>=v14'} dev: true - /@commitlint/format/17.0.0: - resolution: {integrity: sha512-MZzJv7rBp/r6ZQJDEodoZvdRM0vXu1PfQvMTNWFb8jFraxnISMTnPBWMMjr2G/puoMashwaNM//fl7j8gGV5lA==} + /@commitlint/format@17.4.4: + resolution: {integrity: sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.0.0 + '@commitlint/types': 17.4.4 chalk: 4.1.2 dev: true - /@commitlint/is-ignored/17.2.0: - resolution: {integrity: sha512-rgUPUQraHxoMLxiE8GK430HA7/R2vXyLcOT4fQooNrZq9ERutNrP6dw3gdKLkq22Nede3+gEHQYUzL4Wu75ndg==} + /@commitlint/is-ignored@17.4.4: + resolution: {integrity: sha512-Y3eo1SFJ2JQDik4rWkBC4tlRIxlXEFrRWxcyrzb1PUT2k3kZ/XGNuCDfk/u0bU2/yS0tOA/mTjFsV+C4qyACHw==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.0.0 - semver: 7.3.7 + '@commitlint/types': 17.4.4 + semver: 7.3.8 dev: true - /@commitlint/lint/17.2.0: - resolution: {integrity: sha512-N2oLn4Dj672wKH5qJ4LGO+73UkYXGHO+NTVUusGw83SjEv7GjpqPGKU6KALW2kFQ/GsDefSvOjpSi3CzWHQBDg==} + /@commitlint/lint@17.6.1: + resolution: {integrity: sha512-VARJ9kxH64isgwVnC+ABPafCYzqxpsWJIpDaTuI0gh8aX4GQ0i7cn9tvxtFNfJj4ER2BAJeWJ0vURdNYjK2RQQ==} engines: {node: '>=v14'} dependencies: - '@commitlint/is-ignored': 17.2.0 - '@commitlint/parse': 17.2.0 - '@commitlint/rules': 17.2.0 - '@commitlint/types': 17.0.0 + '@commitlint/is-ignored': 17.4.4 + '@commitlint/parse': 17.4.4 + '@commitlint/rules': 17.6.1 + '@commitlint/types': 17.4.4 dev: true - /@commitlint/load/17.2.0: - resolution: {integrity: sha512-HDD57qSqNrk399R4TIjw31AWBG8dBjNj1MrDKZKmC/wvimtnIFlqzcu1+sxfXIOHj/+M6tcMWDtvknGUd7SU+g==} + /@commitlint/load@17.5.0: + resolution: {integrity: sha512-l+4W8Sx4CD5rYFsrhHH8HP01/8jEP7kKf33Xlx2Uk2out/UKoKPYMOIRcDH5ppT8UXLMV+x6Wm5osdRKKgaD1Q==} engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 17.1.0 - '@commitlint/execute-rule': 17.0.0 - '@commitlint/resolve-extends': 17.1.0 - '@commitlint/types': 17.0.0 - '@types/node': 14.18.29 + '@commitlint/config-validator': 17.4.4 + '@commitlint/execute-rule': 17.4.0 + '@commitlint/resolve-extends': 17.4.4 + '@commitlint/types': 17.4.4 + '@types/node': 18.16.0 chalk: 4.1.2 - cosmiconfig: 7.0.1 - cosmiconfig-typescript-loader: 4.1.0_2uclxasecupgvdn72amnhmyg7y - lodash: 4.17.21 + cosmiconfig: 8.0.0 + cosmiconfig-typescript-loader: 4.1.0(@types/node@18.16.0)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@5.0.4) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1_yxpazyh7n5pql7jdaglasgwqki - typescript: 4.9.5 + ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true - /@commitlint/message/17.2.0: - resolution: {integrity: sha512-/4l2KFKxBOuoEn1YAuuNNlAU05Zt7sNsC9H0mPdPm3chOrT4rcX0pOqrQcLtdMrMkJz0gC7b3SF80q2+LtdL9Q==} + /@commitlint/message@17.4.2: + resolution: {integrity: sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==} engines: {node: '>=v14'} dev: true - /@commitlint/parse/17.2.0: - resolution: {integrity: sha512-vLzLznK9Y21zQ6F9hf8D6kcIJRb2haAK5T/Vt1uW2CbHYOIfNsR/hJs0XnF/J9ctM20Tfsqv4zBitbYvVw7F6Q==} + /@commitlint/parse@17.4.4: + resolution: {integrity: sha512-EKzz4f49d3/OU0Fplog7nwz/lAfXMaDxtriidyGF9PtR+SRbgv4FhsfF310tKxs6EPj8Y+aWWuX3beN5s+yqGg==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.0.0 + '@commitlint/types': 17.4.4 conventional-changelog-angular: 5.0.13 conventional-commits-parser: 3.2.4 dev: true - /@commitlint/read/17.2.0: - resolution: {integrity: sha512-bbblBhrHkjxra3ptJNm0abxu7yeAaxumQ8ZtD6GIVqzURCETCP7Dm0tlVvGRDyXBuqX6lIJxh3W7oyKqllDsHQ==} + /@commitlint/read@17.5.1: + resolution: {integrity: sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==} engines: {node: '>=v14'} dependencies: - '@commitlint/top-level': 17.0.0 - '@commitlint/types': 17.0.0 - fs-extra: 10.1.0 + '@commitlint/top-level': 17.4.0 + '@commitlint/types': 17.4.4 + fs-extra: 11.1.1 git-raw-commits: 2.0.11 - minimist: 1.2.6 + minimist: 1.2.8 dev: true - /@commitlint/resolve-extends/17.1.0: - resolution: {integrity: sha512-jqKm00LJ59T0O8O4bH4oMa4XyJVEOK4GzH8Qye9XKji+Q1FxhZznxMV/bDLyYkzbTodBt9sL0WLql8wMtRTbqQ==} + /@commitlint/resolve-extends@17.4.4: + resolution: {integrity: sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==} engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 17.1.0 - '@commitlint/types': 17.0.0 + '@commitlint/config-validator': 17.4.4 + '@commitlint/types': 17.4.4 import-fresh: 3.3.0 - lodash: 4.17.21 + lodash.mergewith: 4.6.2 resolve-from: 5.0.0 resolve-global: 1.0.0 dev: true - /@commitlint/rules/17.2.0: - resolution: {integrity: sha512-1YynwD4Eh7HXZNpqG8mtUlL2pSX2jBy61EejYJv4ooZPcg50Ak7LPOyD3a9UZnsE76AXWFBz+yo9Hv4MIpAa0Q==} + /@commitlint/rules@17.6.1: + resolution: {integrity: sha512-lUdHw6lYQ1RywExXDdLOKxhpp6857/4c95Dc/1BikrHgdysVUXz26yV0vp1GL7Gv+avx9WqZWTIVB7pNouxlfw==} engines: {node: '>=v14'} dependencies: - '@commitlint/ensure': 17.0.0 - '@commitlint/message': 17.2.0 - '@commitlint/to-lines': 17.0.0 - '@commitlint/types': 17.0.0 + '@commitlint/ensure': 17.4.4 + '@commitlint/message': 17.4.2 + '@commitlint/to-lines': 17.4.0 + '@commitlint/types': 17.4.4 execa: 5.1.1 dev: true - /@commitlint/to-lines/17.0.0: - resolution: {integrity: sha512-nEi4YEz04Rf2upFbpnEorG8iymyH7o9jYIVFBG1QdzebbIFET3ir+8kQvCZuBE5pKCtViE4XBUsRZz139uFrRQ==} + /@commitlint/to-lines@17.4.0: + resolution: {integrity: sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==} engines: {node: '>=v14'} dev: true - /@commitlint/top-level/17.0.0: - resolution: {integrity: sha512-dZrEP1PBJvodNWYPOYiLWf6XZergdksKQaT6i1KSROLdjf5Ai0brLOv5/P+CPxBeoj3vBxK4Ax8H1Pg9t7sHIQ==} + /@commitlint/top-level@17.4.0: + resolution: {integrity: sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==} engines: {node: '>=v14'} dependencies: find-up: 5.0.0 dev: true - /@commitlint/types/17.0.0: - resolution: {integrity: sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ==} + /@commitlint/types@17.4.4: + resolution: {integrity: sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==} engines: {node: '>=v14'} dependencies: chalk: 4.1.2 dev: true - /@cspell/cspell-bundled-dicts/6.14.2: - resolution: {integrity: sha512-gh6h/1vy332s3IR7x1v53Cp/WGPpbKKRdte3qUG0KZol9A52agfPCju8TEHxsyk8rXAbVtqYwue8Y68Nz4ZbVg==} + /@cspell/cspell-bundled-dicts@6.31.1: + resolution: {integrity: sha512-rsIev+dk1Vd8H1OKZhNhXycIVsMfeWJaeW3QUi1l4oIoGwQfJVbs1ZPZPHE5cglzyHOW1jQNStXf34UKaC6siA==} engines: {node: '>=14'} dependencies: - '@cspell/dict-ada': 4.0.0 + '@cspell/dict-ada': 4.0.1 '@cspell/dict-aws': 3.0.0 - '@cspell/dict-bash': 4.1.0 - '@cspell/dict-companies': 3.0.3 - '@cspell/dict-cpp': 4.0.0 + '@cspell/dict-bash': 4.1.1 + '@cspell/dict-companies': 3.0.10 + '@cspell/dict-cpp': 5.0.3 '@cspell/dict-cryptocurrencies': 3.0.1 - '@cspell/dict-csharp': 4.0.1 - '@cspell/dict-css': 4.0.0 - '@cspell/dict-dart': 2.0.0 - '@cspell/dict-django': 4.0.0 - '@cspell/dict-docker': 1.1.3 - '@cspell/dict-dotnet': 4.0.0 - '@cspell/dict-elixir': 4.0.0 + '@cspell/dict-csharp': 4.0.2 + '@cspell/dict-css': 4.0.6 + '@cspell/dict-dart': 2.0.2 + '@cspell/dict-django': 4.0.2 + '@cspell/dict-docker': 1.1.6 + '@cspell/dict-dotnet': 5.0.0 + '@cspell/dict-elixir': 4.0.3 + '@cspell/dict-en-common-misspellings': 1.0.2 '@cspell/dict-en-gb': 1.1.33 - '@cspell/dict-en_us': 4.1.0 + '@cspell/dict-en_us': 4.3.2 '@cspell/dict-filetypes': 3.0.0 - '@cspell/dict-fonts': 3.0.0 - '@cspell/dict-fullstack': 3.0.0 + '@cspell/dict-fonts': 3.0.2 + '@cspell/dict-fullstack': 3.1.5 + '@cspell/dict-gaming-terms': 1.0.4 '@cspell/dict-git': 2.0.0 - '@cspell/dict-golang': 5.0.0 - '@cspell/dict-haskell': 4.0.0 - '@cspell/dict-html': 4.0.1 + '@cspell/dict-golang': 6.0.1 + '@cspell/dict-haskell': 4.0.1 + '@cspell/dict-html': 4.0.3 '@cspell/dict-html-symbol-entities': 4.0.0 - '@cspell/dict-java': 5.0.2 - '@cspell/dict-latex': 3.0.0 + '@cspell/dict-java': 5.0.5 + '@cspell/dict-k8s': 1.0.1 + '@cspell/dict-latex': 4.0.0 '@cspell/dict-lorem-ipsum': 3.0.0 - '@cspell/dict-lua': 3.0.0 - '@cspell/dict-node': 4.0.1 - '@cspell/dict-npm': 4.0.1 - '@cspell/dict-php': 3.0.3 - '@cspell/dict-powershell': 3.0.0 - '@cspell/dict-public-licenses': 2.0.0 - '@cspell/dict-python': 4.0.0 - '@cspell/dict-r': 2.0.0 - '@cspell/dict-ruby': 3.0.0 - '@cspell/dict-rust': 3.0.0 - '@cspell/dict-scala': 3.0.0 - '@cspell/dict-software-terms': 3.0.5 - '@cspell/dict-sql': 2.0.0 - '@cspell/dict-swift': 2.0.0 - '@cspell/dict-typescript': 3.0.1 + '@cspell/dict-lua': 4.0.1 + '@cspell/dict-node': 4.0.2 + '@cspell/dict-npm': 5.0.5 + '@cspell/dict-php': 4.0.1 + '@cspell/dict-powershell': 5.0.1 + '@cspell/dict-public-licenses': 2.0.2 + '@cspell/dict-python': 4.0.4 + '@cspell/dict-r': 2.0.1 + '@cspell/dict-ruby': 5.0.0 + '@cspell/dict-rust': 4.0.1 + '@cspell/dict-scala': 5.0.0 + '@cspell/dict-software-terms': 3.1.8 + '@cspell/dict-sql': 2.1.0 + '@cspell/dict-svelte': 1.0.2 + '@cspell/dict-swift': 2.0.1 + '@cspell/dict-typescript': 3.1.1 '@cspell/dict-vue': 3.0.0 dev: true - /@cspell/cspell-bundled-dicts/6.14.3: - resolution: {integrity: sha512-bgPBduoDi1jkrcLkmAwRG1c6F1iprF2yfBgEDT19dRG1kYuq/fLGNOcSmEp4CbApn8m0MmxsrhEp8O0Q9owQRQ==} - engines: {node: '>=14'} - dependencies: - '@cspell/dict-ada': 4.0.0 - '@cspell/dict-aws': 3.0.0 - '@cspell/dict-bash': 4.1.0 - '@cspell/dict-companies': 3.0.3 - '@cspell/dict-cpp': 4.0.0 - '@cspell/dict-cryptocurrencies': 3.0.1 - '@cspell/dict-csharp': 4.0.1 - '@cspell/dict-css': 4.0.0 - '@cspell/dict-dart': 2.0.0 - '@cspell/dict-django': 4.0.0 - '@cspell/dict-docker': 1.1.3 - '@cspell/dict-dotnet': 4.0.0 - '@cspell/dict-elixir': 4.0.0 - '@cspell/dict-en-gb': 1.1.33 - '@cspell/dict-en_us': 4.1.0 - '@cspell/dict-filetypes': 3.0.0 - '@cspell/dict-fonts': 3.0.0 - '@cspell/dict-fullstack': 3.0.0 - '@cspell/dict-git': 2.0.0 - '@cspell/dict-golang': 5.0.0 - '@cspell/dict-haskell': 4.0.0 - '@cspell/dict-html': 4.0.1 - '@cspell/dict-html-symbol-entities': 4.0.0 - '@cspell/dict-java': 5.0.2 - '@cspell/dict-latex': 3.0.0 - '@cspell/dict-lorem-ipsum': 3.0.0 - '@cspell/dict-lua': 3.0.0 - '@cspell/dict-node': 4.0.1 - '@cspell/dict-npm': 4.0.1 - '@cspell/dict-php': 3.0.3 - '@cspell/dict-powershell': 3.0.0 - '@cspell/dict-public-licenses': 2.0.0 - '@cspell/dict-python': 4.0.0 - '@cspell/dict-r': 2.0.0 - '@cspell/dict-ruby': 3.0.0 - '@cspell/dict-rust': 3.0.0 - '@cspell/dict-scala': 3.0.0 - '@cspell/dict-software-terms': 3.0.5 - '@cspell/dict-sql': 2.0.0 - '@cspell/dict-swift': 2.0.0 - '@cspell/dict-typescript': 3.0.1 - '@cspell/dict-vue': 3.0.0 - dev: true - - /@cspell/cspell-pipe/6.14.2: - resolution: {integrity: sha512-9H7Z/jy2tGpMW9T/JOk8T3bqvQoHJIz1wddktA5Lq8fnMqlDhM9le2uykhVlLpemLhWpDS2fNzLJ3sHiaPgHBA==} + /@cspell/cspell-pipe@6.31.1: + resolution: {integrity: sha512-zk1olZi4dr6GLm5PAjvsiZ01HURNSruUYFl1qSicGnTwYN8GaN4RhAwannAytcJ7zJPIcyXlid0YsB58nJf3wQ==} engines: {node: '>=14'} dev: true - /@cspell/cspell-pipe/6.14.3: - resolution: {integrity: sha512-/mLZxJOK3/UFpnR4jrImKY5W4cn5XWjvQPXnFCEzpU0tAAF6GboJgWl30TegqFJjLVCKTNRMOtT1r6kgvb66zw==} + /@cspell/cspell-service-bus@6.31.1: + resolution: {integrity: sha512-YyBicmJyZ1uwKVxujXw7sgs9x+Eps43OkWmCtDZmZlnq489HdTSuhF1kTbVi2yeFSeaXIS87+uHo12z97KkQpg==} engines: {node: '>=14'} dev: true - /@cspell/cspell-service-bus/6.14.2: - resolution: {integrity: sha512-IOK4MqwDNS2y29eZjdpHrCQ0ouTWZCS2e3EOmlvY+yUpT7e1AX8pVOaar4jLnXg03evAjrFrrmfmhFI6poO6Hg==} + /@cspell/cspell-types@6.31.1: + resolution: {integrity: sha512-1KeTQFiHMssW1eRoF2NZIEg4gPVIfXLsL2+VSD/AV6YN7lBcuf6gRRgV5KWYarhxtEfjxhDdDTmu26l/iJEUtw==} engines: {node: '>=14'} dev: true - /@cspell/cspell-service-bus/6.14.3: - resolution: {integrity: sha512-89OWGBzhorhiWcFqFTeHl9Y6WTdd5MGC2XNNCVZLM3VTYaFx4DVkiyxWdkE7gHjYxvNdGSH54/fE18TqLc//dQ==} - engines: {node: '>=14'} + /@cspell/dict-ada@4.0.1: + resolution: {integrity: sha512-/E9o3nHrXOhYmQE43deKbxZcR3MIJAsa+66IzP9TXGHheKEx8b9dVMVVqydDDH8oom1H0U20NRPtu6KRVbT9xw==} dev: true - /@cspell/cspell-types/6.14.2: - resolution: {integrity: sha512-/EZYVglm6+2GlnkFTzuLuQFr7vrttkhG+ZsNO9EDcFYB5N7O2ndNSkTQFxGi8FS8R3RS5CHyS5X6hANnolzvfQ==} - engines: {node: '>=14'} - dev: true - - /@cspell/cspell-types/6.14.3: - resolution: {integrity: sha512-u4Hun0vOQVkk3tJ6VzPjHVmv2dq0D6jYqX8pWLKWRwo38rdoIkdWseN359sWCz96tDM8g5rpSFdmecbWLU7BYg==} - engines: {node: '>=14'} - dev: true - - /@cspell/dict-ada/4.0.0: - resolution: {integrity: sha512-M0n4ZYmpLOXbDD07Qb/Ekk0K5pX2C+mCuJ2ZxPgbTq9HGlrN43PmqrGJHWcgtVHE3fd1D4VxS85QcQP6r1Y+KQ==} - dev: true - - /@cspell/dict-aws/3.0.0: + /@cspell/dict-aws@3.0.0: resolution: {integrity: sha512-O1W6nd5y3Z00AMXQMzfiYrIJ1sTd9fB1oLr+xf/UD7b3xeHeMeYE2OtcWbt9uyeHim4tk+vkSTcmYEBKJgS5bQ==} dev: true - /@cspell/dict-bash/4.1.0: - resolution: {integrity: sha512-8pFL03ZKejynfbsa2UZ3iZ7BrT1TAGTD8ZlK822ioAb7aoDvQhYao2Bjz5cXU0uk7CyrlgsSnYX94sLfqDfTxQ==} + /@cspell/dict-bash@4.1.1: + resolution: {integrity: sha512-8czAa/Mh96wu2xr0RXQEGMTBUGkTvYn/Pb0o+gqOO1YW+poXGQc3gx0YPqILDryP/KCERrNvkWUJz3iGbvwC2A==} dev: true - /@cspell/dict-companies/3.0.3: - resolution: {integrity: sha512-qBWdwA97HdnLbxPLOUTZ+/mg9eYhi14hM7PEUM1PZ004MEIxQHum0IQpypKAwP3teR1KEsyxEPHp8v24Dw45Zg==} + /@cspell/dict-companies@3.0.10: + resolution: {integrity: sha512-LgPi7t9cMc2gBL63jkx/H3LAAtM/DjgZEsnmYmGqrCPWYVmKY1Y4sH2PBaV2ocE9CypV83M0DellGiUNb0kmug==} dev: true - /@cspell/dict-cpp/4.0.0: - resolution: {integrity: sha512-NrCmer14tTSbPs1TwqyCjFEmWCBw0UFvAn4O3pdWuxktArHxRJ5vUQOoL2Gus2H9s3ihhOJZkcuJ47Kd21E7BQ==} + /@cspell/dict-cpp@5.0.3: + resolution: {integrity: sha512-7sx/RFsf0hB3q8chx8OHYl9Kd+g0pqA1laphwaAQ+/jPwoAreYT3kNQWbJ3bIt/rMoORetFSQxckSbaJXwwqpw==} dev: true - /@cspell/dict-cryptocurrencies/3.0.1: + /@cspell/dict-cryptocurrencies@3.0.1: resolution: {integrity: sha512-Tdlr0Ahpp5yxtwM0ukC13V6+uYCI0p9fCRGMGZt36rWv8JQZHIuHfehNl7FB/Qc09NCF7p5ep0GXbL+sVTd/+w==} dev: true - /@cspell/dict-csharp/4.0.1: - resolution: {integrity: sha512-BkfT6S790FcyWLTWYBwkj9dKxuNz4pHFDrj9GFrmqXd2HWzfSa944S0NJhal42TnW30JJljQY5P1ZYau+s2Pbg==} + /@cspell/dict-csharp@4.0.2: + resolution: {integrity: sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==} dev: true - /@cspell/dict-css/4.0.0: - resolution: {integrity: sha512-ieSeG9KAJGIr5eK0JRWqD5KXstPPUw6JUTmGWc7P/qiqj/sjmhWqWKEt7HhoSNcb8uQxAkAoxhrNpfbKzqnKAw==} + /@cspell/dict-css@4.0.6: + resolution: {integrity: sha512-2Lo8W2ezHmGgY8cWFr4RUwnjbndna5mokpCK/DuxGILQnuajR0J31ANQOXj/8iZM2phFB93ZzMNk/0c04TDfSQ==} dev: true - /@cspell/dict-dart/2.0.0: - resolution: {integrity: sha512-p7vHszsu2uJt+F04gvNy1e5okypFfVEYHBWgpOV/Jrvs0F5A+gUzFTG2Ix9b1jkCigAULYKQkIGue+qlhSoK5Q==} + /@cspell/dict-dart@2.0.2: + resolution: {integrity: sha512-jigcODm7Z4IFZ4vParwwP3IT0fIgRq/9VoxkXfrxBMsLBGGM2QltHBj7pl+joX+c4cOHxfyZktGJK1B1wFtR4Q==} dev: true - /@cspell/dict-django/4.0.0: - resolution: {integrity: sha512-k0npSzQrPQSqjR2XtumV14sv9waTRMUzPx0UfOuJZcnCCZY8ofPeqFYoku+O+9Kc9etFOziOxnScshKVDzYWOQ==} + /@cspell/dict-django@4.0.2: + resolution: {integrity: sha512-L0Yw6+Yh2bE9/FAMG4gy9m752G4V8HEBjEAGeRIQ9qvxDLR9yD6dPOtgEFTjv7SWlKSrLb9wA/W3Q2GKCOusSg==} dev: true - /@cspell/dict-docker/1.1.3: - resolution: {integrity: sha512-Iz7EQGnLBgnnmzCC8iLQ7JssCCQlCjZLiCs0qhooETWLifob3nzsI9AVBh3gkYLhISLIIjBpfa4LTknskT7LzA==} + /@cspell/dict-docker@1.1.6: + resolution: {integrity: sha512-zCCiRTZ6EOQpBnSOm0/3rnKW1kCcAUDUA7SxJG3SuH6iZvKi3I8FEg8+O83WQUeXg0SyPNerD9F40JLnnJjJig==} dev: true - /@cspell/dict-dotnet/4.0.0: - resolution: {integrity: sha512-biZiTWyDqwVV2m+c17lLIliPDXPjOR1VwwmyMxvb3nFS84aP9x52SAVCf0w7Io1CIpUiY7XnG6/xeI7esYU78w==} + /@cspell/dict-dotnet@5.0.0: + resolution: {integrity: sha512-EOwGd533v47aP5QYV8GlSSKkmM9Eq8P3G/eBzSpH3Nl2+IneDOYOBLEUraHuiCtnOkNsz0xtZHArYhAB2bHWAw==} dev: true - /@cspell/dict-elixir/4.0.0: - resolution: {integrity: sha512-0TqqdQjg/zu3wAjk2FQkZ87pPIS9tA9kl6he5NJB729ysrWhND/7aSPC48QrP46VZ+oFrvFZK8DC8ZlYs16cjQ==} + /@cspell/dict-elixir@4.0.3: + resolution: {integrity: sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==} dev: true - /@cspell/dict-en-gb/1.1.33: + /@cspell/dict-en-common-misspellings@1.0.2: + resolution: {integrity: sha512-jg7ZQZpZH7+aAxNBlcAG4tGhYF6Ksy+QS5Df73Oo+XyckBjC9QS+PrRwLTeYoFIgXy5j3ICParK5r3MSSoL4gw==} + dev: true + + /@cspell/dict-en-gb@1.1.33: resolution: {integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==} dev: true - /@cspell/dict-en_us/4.1.0: - resolution: {integrity: sha512-EnfxP/5U3kDhmTWcHV7Xs2Fxa9KAE5fbHm+4u8LGBOUZvSkZC5+ayjQ50CfEyTGuaI/946ITQYPRNxUZ7oqOiQ==} + /@cspell/dict-en_us@4.3.2: + resolution: {integrity: sha512-o8xtHDLPNzW6hK5b1TaDTWt25vVi9lWlL6/dZ9YoS+ZMj+Dy/yuXatqfOgeGyU3a9+2gxC0kbr4oufMUQXI2mQ==} dev: true - /@cspell/dict-filetypes/3.0.0: + /@cspell/dict-filetypes@3.0.0: resolution: {integrity: sha512-Fiyp0z5uWaK0d2TfR9GMUGDKmUMAsOhGD5A0kHoqnNGswL2iw0KB0mFBONEquxU65fEnQv4R+jdM2d9oucujuA==} dev: true - /@cspell/dict-fonts/3.0.0: - resolution: {integrity: sha512-zTZni0AbwBVG1MKA0WpwPyIJPVF+gp6neXDQzHcu4RUnuQ4uDu0PVEuZjGHCJWwwFoR5JmkqZxVSg1y3ufJODA==} + /@cspell/dict-fonts@3.0.2: + resolution: {integrity: sha512-Z5QdbgEI7DV+KPXrAeDA6dDm/vTzyaW53SGlKqz6PI5VhkOjgkBXv3YtZjnxMZ4dY2ZIqq+RUK6qa9Pi8rQdGQ==} dev: true - /@cspell/dict-fullstack/3.0.0: - resolution: {integrity: sha512-BMQRTaeReLufjMwgWqqwPdrXQ7jkVGTv7/YvOLsHFZvcAP3eM7WqX+rvdXckLhJmuuzbceFRDKs5F/9Ig2x/tQ==} + /@cspell/dict-fullstack@3.1.5: + resolution: {integrity: sha512-6ppvo1dkXUZ3fbYn/wwzERxCa76RtDDl5Afzv2lijLoijGGUw5yYdLBKJnx8PJBGNLh829X352ftE7BElG4leA==} dev: true - /@cspell/dict-git/2.0.0: + /@cspell/dict-gaming-terms@1.0.4: + resolution: {integrity: sha512-hbDduNXlk4AOY0wFxcDMWBPpm34rpqJBeqaySeoUH70eKxpxm+dvjpoRLJgyu0TmymEICCQSl6lAHTHSDiWKZg==} + dev: true + + /@cspell/dict-git@2.0.0: resolution: {integrity: sha512-n1AxyX5Kgxij/sZFkxFJlzn3K9y/sCcgVPg/vz4WNJ4K9YeTsUmyGLA2OQI7d10GJeiuAo2AP1iZf2A8j9aj2w==} dev: true - /@cspell/dict-golang/5.0.0: - resolution: {integrity: sha512-Cbx4mVHsGbr5D+wlT0yU3n/0c5iLvciU48rSOQR7SCAzu5mTXyM1mqRu6nqnRiMv6G6mO50EL2LCTq6RZrlIOg==} + /@cspell/dict-golang@6.0.1: + resolution: {integrity: sha512-Z19FN6wgg2M/A+3i1O8qhrGaxUUGOW8S2ySN0g7vp4HTHeFmockEPwYx7gArfssNIruw60JorZv+iLJ6ilTeow==} dev: true - /@cspell/dict-haskell/4.0.0: - resolution: {integrity: sha512-U/DPpDoitGeUvduM9teDkDc1zs4Plgh0pNONDP3YbsEICErSlp1NfatD0i35Z6cR0C7I8uEe4gG2phG00zrSqw==} + /@cspell/dict-haskell@4.0.1: + resolution: {integrity: sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==} dev: true - /@cspell/dict-html-symbol-entities/4.0.0: + /@cspell/dict-html-symbol-entities@4.0.0: resolution: {integrity: sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==} dev: true - /@cspell/dict-html/4.0.1: - resolution: {integrity: sha512-q5fCzkoOz+8BW79qLrnANEDnG+Jb2WS2fXERxg9xwgKBXwXUxH8ttGVNhfkLpNWe/UMm00U1IZMnVGyYLNTO5w==} + /@cspell/dict-html@4.0.3: + resolution: {integrity: sha512-Gae8i8rrArT0UyG1I6DHDK62b7Be6QEcBSIeWOm4VIIW1CASkN9B0qFgSVnkmfvnu1Y3H7SSaaEynKjdj3cs8w==} dev: true - /@cspell/dict-java/5.0.2: - resolution: {integrity: sha512-HWgdp8plZOdYjOkndwmgHGVxoewylZcl886PqSL6TMcDshyI0+2nePft31nIuALRvt7HL8IX++DM1uk4UfY4kg==} + /@cspell/dict-java@5.0.5: + resolution: {integrity: sha512-X19AoJgWIBwJBSWGFqSgHaBR/FEykBHTMjL6EqOnhIGEyE9nvuo32tsSHjXNJ230fQxQptEvRZoaldNLtKxsRg==} dev: true - /@cspell/dict-latex/3.0.0: - resolution: {integrity: sha512-QsRWj+Jll4ueVbce8ofKa743oQ2exmbVNZN70MaMbmu8PSbjW2+Rj3OdExVStesANMj7qc20inS/TgPr8DrInQ==} + /@cspell/dict-k8s@1.0.1: + resolution: {integrity: sha512-gc5y4Nm3hVdMZNBZfU2M1AsAmObZsRWjCUk01NFPfGhFBXyVne41T7E62rpnzu5330FV/6b/TnFcPgRmak9lLw==} dev: true - /@cspell/dict-lorem-ipsum/3.0.0: + /@cspell/dict-latex@4.0.0: + resolution: {integrity: sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==} + dev: true + + /@cspell/dict-lorem-ipsum@3.0.0: resolution: {integrity: sha512-msEV24qEpzWZs2kcEicqYlhyBpR0amfDkJOs+iffC07si9ftqtQ+yP3lf1VFLpgqw3SQh1M1vtU7RD4sPrNlcQ==} dev: true - /@cspell/dict-lua/3.0.0: - resolution: {integrity: sha512-WOhSCgS5wMxkGQJ8siB90iTB9ElquJB7FeqYSbJqqs6cUwH8G7MM/CEDPL6h7vCo0+v3GuxQ8yKWDSUcUhz9Lg==} + /@cspell/dict-lua@4.0.1: + resolution: {integrity: sha512-j0MFmeCouSoC6EdZTbvGe1sJ9V+ruwKSeF+zRkNNNload7R72Co5kX1haW2xLHGdlq0kqSy1ODRZKdVl0e+7hg==} dev: true - /@cspell/dict-node/4.0.1: - resolution: {integrity: sha512-4EmT5yZFitdwnG0hYEd+Ek19zzD81Bp+n7w0kglZKldS5AvapwW6GM/SAps5YMQQc5zZMi+bMgV7NIzapREqUg==} + /@cspell/dict-node@4.0.2: + resolution: {integrity: sha512-FEQJ4TnMcXEFslqBQkXa5HposMoCGsiBv2ux4IZuIXgadXeHKHUHk60iarWpjhzNzQLyN2GD7NoRMd12bK3Llw==} dev: true - /@cspell/dict-npm/4.0.1: - resolution: {integrity: sha512-jNKImVG5ZX+Pp6PhbSR3TmC9+0ROx09dGhSgUsZyvXV5CGEr+OQGJtNL98TGwU3pP2Xjc++qnHA/XPwB5WvLfA==} + /@cspell/dict-npm@5.0.5: + resolution: {integrity: sha512-eirZm4XpJNEcbmLGIwI2qXdRRlCKwEsH9mT3qCUytmbj6S6yn63F+8bShMW/yQBedV7+GXq9Td+cJdqiVutOiA==} dev: true - /@cspell/dict-php/3.0.3: - resolution: {integrity: sha512-7dvXdPTfbIF2xEob9w94/eV5SU8BkYoN0R7EQghXi0fcF7T1unK+JwDgfoEs6wqApB5aCVYwguiaj8HGX2IRIQ==} + /@cspell/dict-php@4.0.1: + resolution: {integrity: sha512-XaQ/JkSyq2c07MfRG54DjLi2CV+HHwS99DDCAao9Fq2JfkWroTQsUeek7wYZXJATrJVOULoV3HKih12x905AtQ==} dev: true - /@cspell/dict-powershell/3.0.0: - resolution: {integrity: sha512-pkztY9Ak4oc33q+Qxcn9/CTOKo4N8YIRRE6v67WwQOncA5QIJfcOPUrjfR3Z8SpzElXhu3s9qtWWSqbCy6qmcA==} + /@cspell/dict-powershell@5.0.1: + resolution: {integrity: sha512-lLl+syWFgfv2xdsoxHfPIB2FGkn//XahCIKcRaf52AOlm1/aXeaJN579B9HCpvM7wawHzMqJ33VJuL/vb6Lc4g==} dev: true - /@cspell/dict-public-licenses/2.0.0: - resolution: {integrity: sha512-NdMHnS6xiYJKlzVoTV5CBhMiDpXMZ/PDcvXiOpxeR50xkjR18O/XFP4f4eDZpxGiBSUCMFRWf4JjILJ04Rpcfg==} + /@cspell/dict-public-licenses@2.0.2: + resolution: {integrity: sha512-baKkbs/WGEV2lCWZoL0KBPh3uiPcul5GSDwmXEBAsR5McEW52LF94/b7xWM0EmSAc/y8ODc5LnPYC7RDRLi6LQ==} dev: true - /@cspell/dict-python/4.0.0: - resolution: {integrity: sha512-MC6CKbYOly3Ig25ZnhlCzPbE/QozqfQv4VYW6HcoMQ5IbHu33ddf2lzkZ89qTXlxsF5NT5qfZEkQYHYuhuL6AQ==} + /@cspell/dict-python@4.0.4: + resolution: {integrity: sha512-whCrxsALD66PxSbxZ++xV1HQzxpRZMiX6LXEkZlj4gWuptrzyZUdTMiI8EqVEVfyf5G4EW7HNCTz35kNL5Zl+w==} dev: true - /@cspell/dict-r/2.0.0: - resolution: {integrity: sha512-rdt1cKc3VL2uXJ2X088gRhTFreN/MkJWK1jccW1EWdFHLzDwhKfrlAkoLCp0paD6HvmloLQ+eSR09D58DdsYfA==} + /@cspell/dict-r@2.0.1: + resolution: {integrity: sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==} dev: true - /@cspell/dict-ruby/3.0.0: - resolution: {integrity: sha512-sA98T8Y1Pmq3RStVkO14E8vTWkq6JUn8c8PldiMyYgV0yfQgwhQfFAzlSfF3Gg2B0VkIdqt2et2SPN7f9wp7fQ==} + /@cspell/dict-ruby@5.0.0: + resolution: {integrity: sha512-ssb96QxLZ76yPqFrikWxItnCbUKhYXJ2owkoIYzUGNFl2CHSoHCb5a6Zetum9mQ/oUA3gNeUhd28ZUlXs0la2A==} dev: true - /@cspell/dict-rust/3.0.0: - resolution: {integrity: sha512-L1T1IBsYJZVDmfOGAbVLcpc6arWxRRCSJYvHSwEDBGrNuMyJ4jx/NvBEz5crcKf4vVKgwVlXgzQlJJZ8AVxU9w==} + /@cspell/dict-rust@4.0.1: + resolution: {integrity: sha512-xJSSzHDK2z6lSVaOmMxl3PTOtfoffaxMo7fTcbZUF+SCJzfKbO6vnN9TCGX2sx1RHFDz66Js6goz6SAZQdOwaw==} dev: true - /@cspell/dict-scala/3.0.0: - resolution: {integrity: sha512-sIiCQDIMMnNns/fzD61z5npbh5pypaKq07Orqe0+eRfdQpika8iRSGUGFHVbtdd1JzB1DyTCV2e8OwdaQiXqJQ==} + /@cspell/dict-scala@5.0.0: + resolution: {integrity: sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==} dev: true - /@cspell/dict-software-terms/3.0.5: - resolution: {integrity: sha512-xZVcX1zsIUbLvUc/RX+YgJRvbHaGMcdkRR+Vw8UoLjmhnT0yXWLds5uwRwAVjlQIrIcHylfDWuG70Cq5nmJHfA==} + /@cspell/dict-software-terms@3.1.8: + resolution: {integrity: sha512-gXJWSqnr8U50wHo/tpplLaZUQBQQGOwaJFHyMhN+DVNO92setoApHQ0zSqy4KSSkfvdbgYP0nPAj0MAo9/TvOw==} dev: true - /@cspell/dict-sql/2.0.0: - resolution: {integrity: sha512-J3X8VSgWpc/4McQEs138abtBw/SO3Z+vGaYi5X7XV1pKPBxjupHTTNQHSS/HWUDmVWj6fR3OV+ZGptcmvv3Clg==} + /@cspell/dict-sql@2.1.0: + resolution: {integrity: sha512-Bb+TNWUrTNNABO0bmfcYXiTlSt0RD6sB2MIY+rNlaMyIwug43jUjeYmkLz2tPkn3+2uvySeFEOMVYhMVfcuDKg==} dev: true - /@cspell/dict-swift/2.0.0: - resolution: {integrity: sha512-VStJ0fKPPNIXKmxJrbGH6vKNtJCwAnQatfSH0fVj+Unf3QHHlmuLKRG0cN0aVgEIolpRkxNXJcSB3CPbYr0Xhw==} + /@cspell/dict-svelte@1.0.2: + resolution: {integrity: sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==} dev: true - /@cspell/dict-typescript/3.0.1: - resolution: {integrity: sha512-nKEtOpj+rJNIUK268/mCFDCIv1MWFdK1efm9YL4q1q3NHT+qCKhkXoA0eG8k4AaDIpsvebB8CgNIYFPxY92r4A==} + /@cspell/dict-swift@2.0.1: + resolution: {integrity: sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==} dev: true - /@cspell/dict-vue/3.0.0: + /@cspell/dict-typescript@3.1.1: + resolution: {integrity: sha512-N9vNJZoOXmmrFPR4ir3rGvnqqwmQGgOYoL1+y6D4oIhyr7FhaYiyF/d7QT61RmjZQcATMa6PSL+ZisCeRLx9+A==} + dev: true + + /@cspell/dict-vue@3.0.0: resolution: {integrity: sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==} dev: true - /@cspell/eslint-plugin/6.14.2: - resolution: {integrity: sha512-GnwM/DOenB6VIt4lMpmw4jI1Sc83eR9/lsxz/yTQ8LZFYVxK0yWi+LbSLCLvKhLJ9RNm7jzyHCanIFNtx+aEyw==} + /@cspell/dynamic-import@6.31.1: + resolution: {integrity: sha512-uliIUv9uZlnyYmjUlcw/Dm3p0xJOEnWJNczHAfqAl4Ytg6QZktw0GtUA9b1umbRXLv0KRTPtSC6nMq3cR7rRmQ==} engines: {node: '>=14'} dependencies: - cspell-lib: 6.14.2 + import-meta-resolve: 2.2.2 + dev: true + + /@cspell/eslint-plugin@6.31.1: + resolution: {integrity: sha512-4WJXHZVHdVqIyaxCHRgd55bqkhjSDIu/kDJAvprxhEGdyladIOHZ/c3si8AMJYnYbZY56zY2LsF2W5uNyIsRgg==} + engines: {node: '>=14'} + dependencies: + cspell-lib: 6.31.1 + estree-walker: 3.0.3 + synckit: 0.8.5 transitivePeerDependencies: - encoding dev: true - /@cspell/strong-weak-map/6.14.2: - resolution: {integrity: sha512-OS/t4e5vfUyAiOcyuI1I9d4/EWCx7pA3L8uHNOQQHgjVP41tffMaKTirqRiNhkruIhmxa5Tk5fbQLRMEFapalg==} + /@cspell/strong-weak-map@6.31.1: + resolution: {integrity: sha512-z8AuWvUuSnugFKJOA9Ke0aiFuehcqLFqia9bk8XaQNEWr44ahPVn3sEWnAncTxPbpWuUw5UajoJa0egRAE1CCg==} engines: {node: '>=14.6'} dev: true - /@cspell/strong-weak-map/6.14.3: - resolution: {integrity: sha512-/FTvcywuwfFTMEpRabL8+rqB/ezSjvMp6todO0SwL/agYQmRIuTvTYLh0Ikq430oVnjo7LDgztW0tHq38UlFLw==} - engines: {node: '>=14.6'} - dev: true - - /@cspotcode/source-map-support/0.8.1: + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@cypress/request/2.88.10: + /@cypress/request@2.88.10: resolution: {integrity: sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==} engines: {node: '>= 6'} dependencies: @@ -2774,28 +2850,28 @@ packages: uuid: 8.3.2 dev: true - /@cypress/xvfb/1.2.4_supports-color@8.1.1: + /@cypress/xvfb@1.2.4(supports-color@8.1.1): resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} dependencies: - debug: 3.2.7_supports-color@8.1.1 + debug: 3.2.7(supports-color@8.1.1) lodash.once: 4.1.1 transitivePeerDependencies: - supports-color dev: true - /@discoveryjs/json-ext/0.5.7: + /@discoveryjs/json-ext@0.5.7: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} dev: true - /@docsearch/css/3.3.3: + /@docsearch/css@3.3.3: resolution: {integrity: sha512-6SCwI7P8ao+se1TUsdZ7B4XzL+gqeQZnBc+2EONZlcVa0dVrk0NjETxozFKgMv0eEGH8QzP1fkN+A1rH61l4eg==} dev: true - /@docsearch/js/3.3.3_tbpndr44ulefs3hehwpi2mkf2y: + /@docsearch/js@3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0): resolution: {integrity: sha512-2xAv2GFuHzzmG0SSZgf8wHX0qZX8n9Y1ZirKUk5Wrdc+vH9CL837x2hZIUdwcPZI9caBA+/CzxsS68O4waYjUQ==} dependencies: - '@docsearch/react': 3.3.3_tbpndr44ulefs3hehwpi2mkf2y + '@docsearch/react': 3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0) preact: 10.11.0 transitivePeerDependencies: - '@algolia/client-search' @@ -2804,7 +2880,7 @@ packages: - react-dom dev: true - /@docsearch/react/3.3.3_tbpndr44ulefs3hehwpi2mkf2y: + /@docsearch/react@3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0): resolution: {integrity: sha512-pLa0cxnl+G0FuIDuYlW+EBK6Rw2jwLw9B1RHIeS4N4s2VhsfJ/wzeCi3CWcs5yVfxLd5ZK50t//TMA5e79YT7Q==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -2819,45 +2895,56 @@ packages: optional: true dependencies: '@algolia/autocomplete-core': 1.7.4 - '@algolia/autocomplete-preset-algolia': 1.7.4_qs6lk5nhygj2o3hj4sf6xnr724 + '@algolia/autocomplete-preset-algolia': 1.7.4(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) '@docsearch/css': 3.3.3 algoliasearch: 4.14.2 + react: 16.14.0 + react-dom: 16.14.0(react@16.14.0) transitivePeerDependencies: - '@algolia/client-search' dev: true - /@es-joy/jsdoccomment/0.36.0: - resolution: {integrity: sha512-u0XZyvUF6Urb2cSivSXA8qXIpT/CxkHcdtZKoWusAzgzmsTWpg0F2FpWXsolHmMUyVY3dLWaoy+0ccJ5uf2QjA==} - engines: {node: ^14 || ^16 || ^17 || ^18 || ^19} + /@es-joy/jsdoccomment@0.37.1: + resolution: {integrity: sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==} + engines: {node: ^14 || ^16 || ^17 || ^18 || ^19 || ^20} dependencies: comment-parser: 1.3.1 - esquery: 1.4.0 - jsdoc-type-pratt-parser: 3.1.0 + esquery: 1.5.0 + jsdoc-type-pratt-parser: 4.0.0 dev: true - /@esbuild-kit/cjs-loader/2.4.2: + /@esbuild-kit/cjs-loader@2.4.2: resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} dependencies: '@esbuild-kit/core-utils': 3.1.0 get-tsconfig: 4.4.0 dev: true - /@esbuild-kit/core-utils/3.1.0: + /@esbuild-kit/core-utils@3.1.0: resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} dependencies: - esbuild: 0.17.10 + esbuild: 0.17.18 source-map-support: 0.5.21 dev: true - /@esbuild-kit/esm-loader/2.5.5: + /@esbuild-kit/esm-loader@2.5.5: resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} dependencies: '@esbuild-kit/core-utils': 3.1.0 get-tsconfig: 4.4.0 dev: true - /@esbuild/android-arm/0.16.17: - resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} + /@esbuild/android-arm64@0.17.18: + resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.17.18: + resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2865,53 +2952,8 @@ packages: dev: true optional: true - /@esbuild/android-arm/0.17.0: - resolution: {integrity: sha512-hlbX5ym1V5kIKvnwFhm6rhar7MNqfJrZyYTNfk6+WS1uQfQmszFgXeyPH2beP3lSCumZyqX0zMBfOqftOpZ7GA==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm/0.17.10: - resolution: {integrity: sha512-7YEBfZ5lSem9Tqpsz+tjbdsEshlO9j/REJrfv4DXgKTt1+/MHqGwbtlyxQuaSlMeUZLxUKBaX8wdzlTfHkmnLw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm64/0.16.17: - resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm64/0.17.0: - resolution: {integrity: sha512-77GVyD7ToESy/7+9eI8z62GGBdS/hsqsrpM+JA4kascky86wHbN29EEFpkVvxajPL7k6mbLJ5VBQABdj7n9FhQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm64/0.17.10: - resolution: {integrity: sha512-ht1P9CmvrPF5yKDtyC+z43RczVs4rrHpRqrmIuoSvSdn44Fs1n6DGlpZKdK6rM83pFLbVaSUwle8IN+TPmkv7g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-x64/0.16.17: - resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} + /@esbuild/android-x64@0.17.18: + resolution: {integrity: sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2919,26 +2961,8 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.17.0: - resolution: {integrity: sha512-TroxZdZhtAz0JyD0yahtjcbKuIXrBEAoAazaYSeR2e2tUtp9uXrcbpwFJF6oxxOiOOne6y7l4hx4YVnMW/tdFw==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-x64/0.17.10: - resolution: {integrity: sha512-CYzrm+hTiY5QICji64aJ/xKdN70IK8XZ6iiyq0tZkd3tfnwwSWTYH1t3m6zyaaBxkuj40kxgMyj1km/NqdjQZA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-arm64/0.16.17: - resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} + /@esbuild/darwin-arm64@0.17.18: + resolution: {integrity: sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2946,26 +2970,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.0: - resolution: {integrity: sha512-wP/v4cgdWt1m8TS/WmbaBc3NZON10eCbm6XepdVc3zJuqruHCzCKcC9dTSTEk50zX04REcRcbIbdhTMciQoFIg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-arm64/0.17.10: - resolution: {integrity: sha512-3HaGIowI+nMZlopqyW6+jxYr01KvNaLB5znXfbyyjuo4lE0VZfvFGcguIJapQeQMS4cX/NEispwOekJt3gr5Dg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-x64/0.16.17: - resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} + /@esbuild/darwin-x64@0.17.18: + resolution: {integrity: sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2973,26 +2979,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.0: - resolution: {integrity: sha512-R4WB6D6V9KGO/3LVTT8UlwRJO26IBFatOdo/bRXksfJR0vyOi2/lgmAAMBSpgcnnwvts9QsWiyM++mTTlwRseA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-x64/0.17.10: - resolution: {integrity: sha512-J4MJzGchuCRG5n+B4EHpAMoJmBeAE1L3wGYDIN5oWNqX0tEr7VKOzw0ymSwpoeSpdCa030lagGUfnfhS7OvzrQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-arm64/0.16.17: - resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} + /@esbuild/freebsd-arm64@0.17.18: + resolution: {integrity: sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -3000,53 +2988,26 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.0: - resolution: {integrity: sha512-FO7+UEZv79gen2df8StFYFHZPI9ADozpFepLZCxY+O8sYLDa1rirvenmLwJiOHmeQRJ5orYedFeLk1PFlZ6t8Q==} + /@esbuild/freebsd-x64@0.17.18: + resolution: {integrity: sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.17.18: + resolution: {integrity: sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==} engines: {node: '>=12'} cpu: [arm64] - os: [freebsd] + os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/freebsd-arm64/0.17.10: - resolution: {integrity: sha512-ZkX40Z7qCbugeK4U5/gbzna/UQkM9d9LNV+Fro8r7HA7sRof5Rwxc46SsqeMvB5ZaR0b1/ITQ/8Y1NmV2F0fXQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-x64/0.16.17: - resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-x64/0.17.0: - resolution: {integrity: sha512-qCsNRsVTaC3ekwZcb2sa7l1gwCtJK3EqCWyDgpoQocYf3lRpbAzaCvqZSF2+NOO64cV+JbedXPsFiXU1aaVcIg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-x64/0.17.10: - resolution: {integrity: sha512-0m0YX1IWSLG9hWh7tZa3kdAugFbZFFx9XrvfpaCMMvrswSTvUZypp0NFKriUurHpBA3xsHVE9Qb/0u2Bbi/otg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm/0.16.17: - resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} + /@esbuild/linux-arm@0.17.18: + resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -3054,53 +3015,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.0: - resolution: {integrity: sha512-Y2G2NU6155gcfNKvrakVmZV5xUAEhXjsN/uKtbKKRnvee0mHUuaT3OdQJDJKjHVGr6B0898pc3slRpI1PqspoQ==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm/0.17.10: - resolution: {integrity: sha512-whRdrrl0X+9D6o5f0sTZtDM9s86Xt4wk1bf7ltx6iQqrIIOH+sre1yjpcCdrVXntQPCNw/G+XqsD4HuxeS+2QA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64/0.16.17: - resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64/0.17.0: - resolution: {integrity: sha512-js4Vlch5XJQYISbDVJd2hsI/MsfVUz6d/FrclCE73WkQmniH37vFpuQI42ntWAeBghDIfaPZ6f9GilhwGzVFUg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64/0.17.10: - resolution: {integrity: sha512-g1EZJR1/c+MmCgVwpdZdKi4QAJ8DCLP5uTgLWSAVd9wlqk9GMscaNMEViG3aE1wS+cNMzXXgdWiW/VX4J+5nTA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ia32/0.16.17: - resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} + /@esbuild/linux-ia32@0.17.18: + resolution: {integrity: sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -3108,26 +3024,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.17.0: - resolution: {integrity: sha512-7tl/jSPkF59R3zeFDB2/09zLGhcM7DM+tCoOqjJbQjuL6qbMWomGT2RglCqRFpCSdzBx0hukmPPgUAMlmdj0sQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ia32/0.17.10: - resolution: {integrity: sha512-1vKYCjfv/bEwxngHERp7huYfJ4jJzldfxyfaF7hc3216xiDA62xbXJfRlradiMhGZbdNLj2WA1YwYFzs9IWNPw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64/0.16.17: - resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} + /@esbuild/linux-loong64@0.17.18: + resolution: {integrity: sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -3135,26 +3033,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.0: - resolution: {integrity: sha512-OG356F7dIVVF+EXJx5UfzFr1I5l6ES53GlMNSr3U1MhlaVyrP9um5PnrSJ+7TSDAzUC7YGjxb2GQWqHLd5XFoA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64/0.17.10: - resolution: {integrity: sha512-mvwAr75q3Fgc/qz3K6sya3gBmJIYZCgcJ0s7XshpoqIAIBszzfXsqhpRrRdVFAyV1G9VUjj7VopL2HnAS8aHFA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-mips64el/0.16.17: - resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} + /@esbuild/linux-mips64el@0.17.18: + resolution: {integrity: sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -3162,26 +3042,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.0: - resolution: {integrity: sha512-LWQJgGpxrjh2x08UYf6G5R+Km7zhkpCvKXtFQ6SX0fimDvy1C8kslgFHGxLS0wjGV8C4BNnENW/HNy57+RB7iA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-mips64el/0.17.10: - resolution: {integrity: sha512-XilKPgM2u1zR1YuvCsFQWl9Fc35BqSqktooumOY2zj7CSn5czJn279j9TE1JEqSqz88izJo7yE4x3LSf7oxHzg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ppc64/0.16.17: - resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} + /@esbuild/linux-ppc64@0.17.18: + resolution: {integrity: sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -3189,26 +3051,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.0: - resolution: {integrity: sha512-f40N8fKiTQslUcUuhof2/syOQ+DC9Mqdnm9d063pew+Ptv9r6dBNLQCz4300MOfCLAbb0SdnrcMSzHbMehXWLw==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ppc64/0.17.10: - resolution: {integrity: sha512-kM4Rmh9l670SwjlGkIe7pYWezk8uxKHX4Lnn5jBZYBNlWpKMBCVfpAgAJqp5doLobhzF3l64VZVrmGeZ8+uKmQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-riscv64/0.16.17: - resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} + /@esbuild/linux-riscv64@0.17.18: + resolution: {integrity: sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -3216,26 +3060,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.0: - resolution: {integrity: sha512-sc/pvLexRvxgEbmeq7LfLGnzUBFi/E2MGbnQj3CG8tnQ90tWPTi+9CbZEgIADhj6CAlCCmqxpUclIV1CRVUOTw==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-riscv64/0.17.10: - resolution: {integrity: sha512-r1m9ZMNJBtOvYYGQVXKy+WvWd0BPvSxMsVq8Hp4GzdMBQvfZRvRr5TtX/1RdN6Va8JMVQGpxqde3O+e8+khNJQ==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-s390x/0.16.17: - resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} + /@esbuild/linux-s390x@0.17.18: + resolution: {integrity: sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -3243,26 +3069,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.0: - resolution: {integrity: sha512-7xq9/kY0vunCL2vjHKdHGI+660pCdeEC6K6TWBVvbTGXvT8s/qacfxMgr8PCeQRbNUZLOA13G6/G1+c0lYXO1A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-s390x/0.17.10: - resolution: {integrity: sha512-LsY7QvOLPw9WRJ+fU5pNB3qrSfA00u32ND5JVDrn/xG5hIQo3kvTxSlWFRP0NJ0+n6HmhPGG0Q4jtQsb6PFoyg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-x64/0.16.17: - resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} + /@esbuild/linux-x64@0.17.18: + resolution: {integrity: sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -3270,26 +3078,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.0: - resolution: {integrity: sha512-o7FhBLONk1mLT2ytlj/j/WuJcPdhWcVpysSJn1s9+zRdLwLKveipbPi5SIasJIqMq0T4CkQW76pxJYMqz9HrQA==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-x64/0.17.10: - resolution: {integrity: sha512-zJUfJLebCYzBdIz/Z9vqwFjIA7iSlLCFvVi7glMgnu2MK7XYigwsonXshy9wP9S7szF+nmwrelNaP3WGanstEg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64/0.16.17: - resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} + /@esbuild/netbsd-x64@0.17.18: + resolution: {integrity: sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -3297,26 +3087,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.0: - resolution: {integrity: sha512-V6xXsv71b8vwFCW/ky82Rs//SbyA+ORty6A7Mzkg33/4NbYZ/1Vcbk7qAN5oi0i/gS4Q0+7dYT7NqaiVZ7+Xjw==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64/0.17.10: - resolution: {integrity: sha512-lOMkailn4Ok9Vbp/q7uJfgicpDTbZFlXlnKT2DqC8uBijmm5oGtXAJy2ZZVo5hX7IOVXikV9LpCMj2U8cTguWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64/0.16.17: - resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} + /@esbuild/openbsd-x64@0.17.18: + resolution: {integrity: sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -3324,26 +3096,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.0: - resolution: {integrity: sha512-StlQor6A0Y9SSDxraytr46Qbz25zsSDmsG3MCaNkBnABKHP3QsngOCfdBikqHVVrXeK0KOTmtX92/ncTGULYgQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64/0.17.10: - resolution: {integrity: sha512-/VE0Kx6y7eekqZ+ZLU4AjMlB80ov9tEz4H067Y0STwnGOYL8CsNg4J+cCmBznk1tMpxMoUOf0AbWlb1d2Pkbig==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64/0.16.17: - resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} + /@esbuild/sunos-x64@0.17.18: + resolution: {integrity: sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -3351,26 +3105,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.0: - resolution: {integrity: sha512-K64Wqw57j8KrwjR3QjsuzN/qDGK6Cno6QYtIlWAmGab5iYPBZCWz7HFtF2a86/130LmUsdXqOID7J0SmjjRFIQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64/0.17.10: - resolution: {integrity: sha512-ERNO0838OUm8HfUjjsEs71cLjLMu/xt6bhOlxcJ0/1MG3hNqCmbWaS+w/8nFLa0DDjbwZQuGKVtCUJliLmbVgg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64/0.16.17: - resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} + /@esbuild/win32-arm64@0.17.18: + resolution: {integrity: sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -3378,26 +3114,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.0: - resolution: {integrity: sha512-hly6iSWAf0hf3aHD18/qW7iFQbg9KAQ0RFGG9plcxkhL4uGw43O+lETGcSO/PylNleFowP/UztpF6U4oCYgpPw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64/0.17.10: - resolution: {integrity: sha512-fXv+L+Bw2AeK+XJHwDAQ9m3NRlNemG6Z6ijLwJAAVdu4cyoFbBWbEtyZzDeL+rpG2lWI51cXeMt70HA8g2MqIg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-ia32/0.16.17: - resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} + /@esbuild/win32-ia32@0.17.18: + resolution: {integrity: sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -3405,26 +3123,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.0: - resolution: {integrity: sha512-aL4EWPh0nyC5uYRfn+CHkTgawd4DjtmwquthNDmGf6Ht6+mUc+bQXyZNH1QIw8x20hSqFc4Tf36aLLWP/TPR3g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-ia32/0.17.10: - resolution: {integrity: sha512-3s+HADrOdCdGOi5lnh5DMQEzgbsFsd4w57L/eLKKjMnN0CN4AIEP0DCP3F3N14xnxh3ruNc32A0Na9zYe1Z/AQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-x64/0.16.17: - resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} + /@esbuild/win32-x64@0.17.18: + resolution: {integrity: sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -3432,31 +3132,28 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.0: - resolution: {integrity: sha512-W6IIQ9Rt43I/GqfXeBFLk0TvowKBoirs9sw2LPfhHax6ayMlW5PhFzSJ76I1ac9Pk/aRcSMrHWvVyZs8ZPK2wA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.39.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.39.0 + eslint-visitor-keys: 3.4.0 dev: true - optional: true - /@esbuild/win32-x64/0.17.10: - resolution: {integrity: sha512-oP+zFUjYNaMNmjTwlFtWep85hvwUu19cZklB3QsBOcZSs6y7hmH4LNCJ7075bsqzYaNvZFXJlAVaQ2ApITDXtw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true + /@eslint-community/regexpp@4.5.0: + resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - optional: true - /@eslint/eslintrc/1.4.1: - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + /@eslint/eslintrc@2.0.2: + resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 - espree: 9.4.0 + debug: 4.3.4(supports-color@8.1.1) + espree: 9.5.1 globals: 13.19.0 ignore: 5.2.0 import-fresh: 3.3.0 @@ -3467,60 +3164,75 @@ packages: - supports-color dev: true - /@hapi/hoek/9.3.0: + /@eslint/js@8.39.0: + resolution: {integrity: sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@fastify/ajv-compiler@1.1.0: + resolution: {integrity: sha512-gvCOUNpXsWrIQ3A4aXCLIdblL0tDq42BG/2Xw7oxbil9h11uow10ztS2GuFazNBfjbrsZ5nl+nPl5jDSjj5TSg==} + dependencies: + ajv: 6.12.6 + dev: true + + /@fastify/error@2.0.0: + resolution: {integrity: sha512-wI3fpfDT0t7p8E6dA2eTECzzOd+bZsZCJ2Hcv+Onn2b7ZwK3RwD27uW2QDaMtQhAfWQQP+WNK7nKf0twLsBf9w==} + dev: true + + /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} dev: true - /@hapi/topo/5.1.0: + /@hapi/topo@5.1.0: resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} dependencies: '@hapi/hoek': 9.3.0 dev: true - /@humanwhocodes/config-array/0.11.8: + /@humanwhocodes/config-array@0.11.8: resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color dev: true - /@humanwhocodes/module-importer/1.0.1: + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema/1.2.1: + /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@iconify-json/carbon/1.1.16: + /@iconify-json/carbon@1.1.16: resolution: {integrity: sha512-AD8bcnRSGA0WfcGEass2FbA0sagrUzrpFx5WchuDy3uf7yKBWumdypdQK121DH321fQDl5+zZQ26T6gC9knwUQ==} dependencies: '@iconify/types': 2.0.0 dev: true - /@iconify/types/2.0.0: + /@iconify/types@2.0.0: resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} dev: true - /@iconify/utils/2.1.4: - resolution: {integrity: sha512-7vzsYIvxv5Hng0MNEtSSnyMBD/+zqnORqmKiYsSgpMBGSz1r93URgBZHPYCZ1/gpoaVstYW4/SVLGCMJBNMCLQ==} + /@iconify/utils@2.1.5: + resolution: {integrity: sha512-6MvDI+I6QMvXn5rK9KQGdpEE4mmLTcuQdLZEiX5N+uZB+vc4Yw9K1OtnOgkl8mp4d9X0UrILREyZgF1NUwUt+Q==} dependencies: '@antfu/install-pkg': 0.1.1 '@antfu/utils': 0.7.2 '@iconify/types': 2.0.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) kolorist: 1.7.0 local-pkg: 0.4.3 transitivePeerDependencies: - supports-color dev: true - /@istanbuljs/load-nyc-config/1.1.0: + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} dependencies: @@ -3531,25 +3243,25 @@ packages: resolve-from: 5.0.0 dev: true - /@istanbuljs/schema/0.1.3: + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} dev: true - /@jest/console/29.3.1: - resolution: {integrity: sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==} + /@jest/console@29.5.0: + resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@types/node': 18.11.9 + '@jest/types': 29.5.0 + '@types/node': 18.16.0 chalk: 4.1.2 - jest-message-util: 29.3.1 - jest-util: 29.3.1 + jest-message-util: 29.5.0 + jest-util: 29.5.0 slash: 3.0.0 dev: true - /@jest/core/29.3.1_ts-node@10.9.1: - resolution: {integrity: sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==} + /@jest/core@29.5.0(ts-node@10.9.1): + resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3557,32 +3269,32 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 29.3.1 - '@jest/reporters': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 + '@jest/console': 29.5.0 + '@jest/reporters': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.0 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.6.2 exit: 0.1.2 graceful-fs: 4.2.10 - jest-changed-files: 29.2.0 - jest-config: 29.3.1_odkjkoia5xunhxkdrka32ib6vi - jest-haste-map: 29.3.1 - jest-message-util: 29.3.1 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-resolve-dependencies: 29.3.1 - jest-runner: 29.3.1 - jest-runtime: 29.3.1 - jest-snapshot: 29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 - jest-watcher: 29.3.1 + jest-changed-files: 29.5.0 + jest-config: 29.5.0(@types/node@18.16.0)(ts-node@10.9.1) + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-resolve-dependencies: 29.5.0 + jest-runner: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + jest-watcher: 29.5.0 micromatch: 4.0.5 - pretty-format: 29.3.1 + pretty-format: 29.5.0 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: @@ -3590,59 +3302,59 @@ packages: - ts-node dev: true - /@jest/environment/29.3.1: - resolution: {integrity: sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==} + /@jest/environment@29.5.0: + resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 - jest-mock: 29.3.1 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.0 + jest-mock: 29.5.0 dev: true - /@jest/expect-utils/29.3.1: - resolution: {integrity: sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==} + /@jest/expect-utils@29.5.0: + resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.2.0 + jest-get-type: 29.4.3 dev: true - /@jest/expect/29.3.1: - resolution: {integrity: sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==} + /@jest/expect@29.5.0: + resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expect: 29.3.1 - jest-snapshot: 29.3.1 + expect: 29.5.0 + jest-snapshot: 29.5.0 transitivePeerDependencies: - supports-color dev: true - /@jest/fake-timers/29.3.1: - resolution: {integrity: sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==} + /@jest/fake-timers@29.5.0: + resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@sinonjs/fake-timers': 9.1.2 - '@types/node': 18.11.9 - jest-message-util: 29.3.1 - jest-mock: 29.3.1 - jest-util: 29.3.1 + '@jest/types': 29.5.0 + '@sinonjs/fake-timers': 10.0.2 + '@types/node': 18.16.0 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-util: 29.5.0 dev: true - /@jest/globals/29.3.1: - resolution: {integrity: sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==} + /@jest/globals@29.5.0: + resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/expect': 29.3.1 - '@jest/types': 29.3.1 - jest-mock: 29.3.1 + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/types': 29.5.0 + jest-mock: 29.5.0 transitivePeerDependencies: - supports-color dev: true - /@jest/reporters/29.3.1: - resolution: {integrity: sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==} + /@jest/reporters@29.5.0: + resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3651,12 +3363,12 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.11.9 + '@jest/console': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.17 + '@types/node': 18.16.0 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3667,9 +3379,9 @@ packages: istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 - jest-message-util: 29.3.1 - jest-util: 29.3.1 - jest-worker: 29.3.1 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + jest-worker: 29.5.0 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 @@ -3678,57 +3390,57 @@ packages: - supports-color dev: true - /@jest/schemas/29.0.0: - resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} + /@jest/schemas@29.4.3: + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@sinclair/typebox': 0.24.43 + '@sinclair/typebox': 0.25.24 dev: true - /@jest/source-map/29.2.0: - resolution: {integrity: sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==} + /@jest/source-map@29.4.3: + resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.15 + '@jridgewell/trace-mapping': 0.3.17 callsites: 3.1.0 graceful-fs: 4.2.10 dev: true - /@jest/test-result/29.3.1: - resolution: {integrity: sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==} + /@jest/test-result@29.5.0: + resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.3.1 - '@jest/types': 29.3.1 + '@jest/console': 29.5.0 + '@jest/types': 29.5.0 '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/29.3.1: - resolution: {integrity: sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==} + /@jest/test-sequencer@29.5.0: + resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.3.1 + '@jest/test-result': 29.5.0 graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 + jest-haste-map: 29.5.0 slash: 3.0.0 dev: true - /@jest/transform/29.3.1: - resolution: {integrity: sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==} + /@jest/transform@29.5.0: + resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.12.3 - '@jest/types': 29.3.1 - '@jridgewell/trace-mapping': 0.3.15 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.17 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 - jest-regex-util: 29.2.0 - jest-util: 29.3.1 + jest-haste-map: 29.5.0 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 @@ -3737,27 +3449,19 @@ packages: - supports-color dev: true - /@jest/types/29.3.1: - resolution: {integrity: sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==} + /@jest/types@29.5.0: + resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.0.0 + '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.9 + '@types/node': 18.16.0 '@types/yargs': 17.0.13 chalk: 4.1.2 dev: true - /@jridgewell/gen-mapping/0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /@jridgewell/gen-mapping/0.3.2: + /@jridgewell/gen-mapping@0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} dependencies: @@ -3766,53 +3470,64 @@ packages: '@jridgewell/trace-mapping': 0.3.17 dev: true - /@jridgewell/resolve-uri/3.1.0: + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/set-array/1.1.2: + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/source-map/0.3.2: + /@jridgewell/source-map@0.3.2: resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} dependencies: '@jridgewell/gen-mapping': 0.3.2 '@jridgewell/trace-mapping': 0.3.17 dev: true - /@jridgewell/sourcemap-codec/1.4.14: + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true - /@jridgewell/trace-mapping/0.3.15: + /@jridgewell/trace-mapping@0.3.15: resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@jridgewell/trace-mapping/0.3.17: + /@jridgewell/trace-mapping@0.3.17: resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@jridgewell/trace-mapping/0.3.9: + /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@leichtgewicht/ip-codec/2.0.4: + /@khanacademy/simple-markdown@0.9.0(react-dom@16.14.0)(react@16.14.0): + resolution: {integrity: sha512-ujhwWO5ijcBR1Yimx0GljIBlZ3yG6ULqexawNexrQONNs+JJGNGi5TLZUFvCffxxGBHpS8UmOTU1zWVd6Lg1Aw==} + peerDependencies: + react: 16.14.0 + react-dom: 16.14.0 + dependencies: + '@types/react': 18.2.0 + react: 16.14.0 + react-dom: 16.14.0(react@16.14.0) + dev: false + + /@leichtgewicht/ip-codec@2.0.4: resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} dev: true - /@microsoft/tsdoc-config/0.16.2: + /@microsoft/tsdoc-config@0.16.2: resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} dependencies: '@microsoft/tsdoc': 0.14.2 @@ -3821,11 +3536,11 @@ packages: resolve: 1.19.0 dev: true - /@microsoft/tsdoc/0.14.2: + /@microsoft/tsdoc@0.14.2: resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} dev: true - /@nodelib/fs.scandir/2.1.5: + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: @@ -3833,12 +3548,12 @@ packages: run-parallel: 1.2.0 dev: true - /@nodelib/fs.stat/2.0.5: + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} dev: true - /@nodelib/fs.walk/1.2.8: + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: @@ -3846,11 +3561,30 @@ packages: fastq: 1.13.0 dev: true - /@polka/url/1.0.0-next.21: + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@pkgr/utils@2.3.1: + resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + is-glob: 4.0.3 + open: 8.4.0 + picocolors: 1.0.0 + tiny-glob: 0.2.9 + tslib: 2.5.0 + dev: true + + /@polka/url@1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true - /@rollup/plugin-babel/5.3.1_dckrvusq2p5l2rafxmdzsxgali: + /@rollup/plugin-babel@5.3.1(@babel/core@7.12.3)(rollup@2.79.1): resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -3863,17 +3597,17 @@ packages: dependencies: '@babel/core': 7.12.3 '@babel/helper-module-imports': 7.18.6 - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 dev: true - /@rollup/plugin-node-resolve/11.2.1_rollup@2.79.1: + /@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1): resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) '@types/resolve': 1.17.1 builtin-modules: 3.3.0 deepmerge: 4.2.2 @@ -3882,17 +3616,17 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-replace/2.4.2_rollup@2.79.1: + /@rollup/plugin-replace@2.4.2(rollup@2.79.1): resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) magic-string: 0.25.9 rollup: 2.79.1 dev: true - /@rollup/plugin-replace/5.0.2_rollup@3.15.0: + /@rollup/plugin-replace@5.0.2(rollup@3.21.0): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3901,12 +3635,30 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2_rollup@3.15.0 + '@rollup/pluginutils': 5.0.2(rollup@3.21.0) magic-string: 0.27.0 - rollup: 3.15.0 + rollup: 3.21.0 dev: true - /@rollup/pluginutils/3.1.0_rollup@2.79.1: + /@rollup/plugin-typescript@11.1.0(typescript@5.0.4): + resolution: {integrity: sha512-86flrfE+bSHB69znnTV6kVjkncs2LBMhcTCyxWgRxLyfXfQrxg4UwlAqENnjrrxnSNS/XKCDJCl8EkdFJVHOxw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.21.0) + resolve: 1.22.1 + typescript: 5.0.4 + dev: true + + /@rollup/pluginutils@3.1.0(rollup@2.79.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -3918,7 +3670,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/pluginutils/5.0.2_rollup@2.79.1: + /@rollup/pluginutils@5.0.2(rollup@2.79.1): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3933,7 +3685,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/pluginutils/5.0.2_rollup@3.15.0: + /@rollup/pluginutils@5.0.2(rollup@3.21.0): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3945,49 +3697,45 @@ packages: '@types/estree': 1.0.0 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.15.0 + rollup: 3.21.0 dev: true - /@sideway/address/4.1.4: + /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: '@hapi/hoek': 9.3.0 dev: true - /@sideway/formula/3.0.0: - resolution: {integrity: sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==} - dev: true - - /@sideway/formula/3.0.1: + /@sideway/formula@3.0.1: resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} dev: true - /@sideway/pinpoint/2.0.0: + /@sideway/pinpoint@2.0.0: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} dev: true - /@sinclair/typebox/0.24.43: - resolution: {integrity: sha512-1orQTvtazZmsPeBroJjysvsOQCYV2yjWlebkSY38pl5vr2tdLjEJ+LoxITlGNZaH2RE19WlAwQMkH/7C14wLfw==} + /@sinclair/typebox@0.25.24: + resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} dev: true - /@sindresorhus/is/4.6.0: + /@sindresorhus/is@4.6.0: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} dev: true - /@sinonjs/commons/1.8.3: - resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} + /@sinonjs/commons@2.0.0: + resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} dependencies: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers/9.1.2: - resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} + /@sinonjs/fake-timers@10.0.2: + resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} dependencies: - '@sinonjs/commons': 1.8.3 + '@sinonjs/commons': 2.0.0 dev: true - /@surma/rollup-plugin-off-main-thread/2.2.3: + /@surma/rollup-plugin-off-main-thread@2.2.3: resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} dependencies: ejs: 3.1.8 @@ -3996,40 +3744,40 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /@szmarczak/http-timer/4.0.6: + /@szmarczak/http-timer@4.0.6: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} dependencies: defer-to-connect: 2.0.1 dev: true - /@tootallnate/once/1.1.2: + /@tootallnate/once@1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} dev: true - /@tootallnate/once/2.0.0: + /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} dev: true - /@tsconfig/node10/1.0.9: + /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} dev: true - /@tsconfig/node12/1.0.11: + /@tsconfig/node12@1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} dev: true - /@tsconfig/node14/1.0.3: + /@tsconfig/node14@1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} dev: true - /@tsconfig/node16/1.0.3: + /@tsconfig/node16@1.0.3: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} dev: true - /@types/babel__core/7.1.19: + /@types/babel__core@7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: '@babel/parser': 7.21.2 @@ -4039,229 +3787,229 @@ packages: '@types/babel__traverse': 7.18.2 dev: true - /@types/babel__generator/7.6.4: + /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: '@babel/types': 7.21.2 dev: true - /@types/babel__template/7.4.1: + /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: '@babel/parser': 7.21.2 '@babel/types': 7.21.2 dev: true - /@types/babel__traverse/7.18.2: + /@types/babel__traverse@7.18.2: resolution: {integrity: sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==} dependencies: '@babel/types': 7.21.2 dev: true - /@types/body-parser/1.19.2: + /@types/body-parser@1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.11.9 + '@types/node': 18.16.0 dev: true - /@types/bonjour/3.5.10: + /@types/bonjour@3.5.10: resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 dev: true - /@types/braces/3.0.1: + /@types/braces@3.0.1: resolution: {integrity: sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==} dev: true - /@types/cacheable-request/6.0.2: + /@types/cacheable-request@6.0.2: resolution: {integrity: sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==} dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 18.11.9 + '@types/node': 18.16.0 '@types/responselike': 1.0.0 dev: true - /@types/chai-subset/1.3.3: + /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: '@types/chai': 4.3.4 dev: true - /@types/chai/4.3.4: + /@types/chai@4.3.4: resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} dev: true - /@types/connect-history-api-fallback/1.3.5: + /@types/connect-history-api-fallback@1.3.5: resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==} dependencies: '@types/express-serve-static-core': 4.17.31 - '@types/node': 18.11.9 + '@types/node': 18.16.0 dev: true - /@types/connect/3.4.35: + /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 dev: true - /@types/cors/2.8.13: + /@types/cors@2.8.13: resolution: {integrity: sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 dev: true - /@types/cytoscape/3.19.9: + /@types/cytoscape@3.19.9: resolution: {integrity: sha512-oqCx0ZGiBO0UESbjgq052vjDAy2X53lZpMrWqiweMpvVwKw/2IiYDdzPFK6+f4tMfdv9YKEM9raO5bAZc3UYBg==} dev: true - /@types/d3-array/3.0.3: + /@types/d3-array@3.0.3: resolution: {integrity: sha512-Reoy+pKnvsksN0lQUlcH6dOGjRZ/3WRwXR//m+/8lt1BXeI4xyaUZoqULNjyXXRuh0Mj4LNpkCvhUpQlY3X5xQ==} dev: true - /@types/d3-axis/3.0.1: + /@types/d3-axis@3.0.1: resolution: {integrity: sha512-zji/iIbdd49g9WN0aIsGcwcTBUkgLsCSwB+uH+LPVDAiKWENMtI3cJEWt+7/YYwelMoZmbBfzA3qCdrZ2XFNnw==} dependencies: '@types/d3-selection': 3.0.3 dev: true - /@types/d3-brush/3.0.1: + /@types/d3-brush@3.0.1: resolution: {integrity: sha512-B532DozsiTuQMHu2YChdZU0qsFJSio3Q6jmBYGYNp3gMDzBmuFFgPt9qKA4VYuLZMp4qc6eX7IUFUEsvHiXZAw==} dependencies: '@types/d3-selection': 3.0.3 dev: true - /@types/d3-chord/3.0.1: + /@types/d3-chord@3.0.1: resolution: {integrity: sha512-eQfcxIHrg7V++W8Qxn6QkqBNBokyhdWSAS73AbkbMzvLQmVVBviknoz2SRS/ZJdIOmhcmmdCRE/NFOm28Z1AMw==} dev: true - /@types/d3-color/3.1.0: + /@types/d3-color@3.1.0: resolution: {integrity: sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==} dev: true - /@types/d3-contour/3.0.1: + /@types/d3-contour@3.0.1: resolution: {integrity: sha512-C3zfBrhHZvrpAAK3YXqLWVAGo87A4SvJ83Q/zVJ8rFWJdKejUnDYaWZPkA8K84kb2vDA/g90LTQAz7etXcgoQQ==} dependencies: '@types/d3-array': 3.0.3 '@types/geojson': 7946.0.10 dev: true - /@types/d3-delaunay/6.0.1: + /@types/d3-delaunay@6.0.1: resolution: {integrity: sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==} dev: true - /@types/d3-dispatch/3.0.1: + /@types/d3-dispatch@3.0.1: resolution: {integrity: sha512-NhxMn3bAkqhjoxabVJWKryhnZXXYYVQxaBnbANu0O94+O/nX9qSjrA1P1jbAQJxJf+VC72TxDX/YJcKue5bRqw==} dev: true - /@types/d3-drag/3.0.1: + /@types/d3-drag@3.0.1: resolution: {integrity: sha512-o1Va7bLwwk6h03+nSM8dpaGEYnoIG19P0lKqlic8Un36ymh9NSkNFX1yiXMKNMx8rJ0Kfnn2eovuFaL6Jvj0zA==} dependencies: '@types/d3-selection': 3.0.3 dev: true - /@types/d3-dsv/3.0.0: + /@types/d3-dsv@3.0.0: resolution: {integrity: sha512-o0/7RlMl9p5n6FQDptuJVMxDf/7EDEv2SYEO/CwdG2tr1hTfUVi0Iavkk2ax+VpaQ/1jVhpnj5rq1nj8vwhn2A==} dev: true - /@types/d3-ease/3.0.0: + /@types/d3-ease@3.0.0: resolution: {integrity: sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==} dev: true - /@types/d3-fetch/3.0.1: + /@types/d3-fetch@3.0.1: resolution: {integrity: sha512-toZJNOwrOIqz7Oh6Q7l2zkaNfXkfR7mFSJvGvlD/Ciq/+SQ39d5gynHJZ/0fjt83ec3WL7+u3ssqIijQtBISsw==} dependencies: '@types/d3-dsv': 3.0.0 dev: true - /@types/d3-force/3.0.3: + /@types/d3-force@3.0.3: resolution: {integrity: sha512-z8GteGVfkWJMKsx6hwC3SiTSLspL98VNpmvLpEFJQpZPq6xpA1I8HNBDNSpukfK0Vb0l64zGFhzunLgEAcBWSA==} dev: true - /@types/d3-format/3.0.1: + /@types/d3-format@3.0.1: resolution: {integrity: sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==} dev: true - /@types/d3-geo/3.0.2: + /@types/d3-geo@3.0.2: resolution: {integrity: sha512-DbqK7MLYA8LpyHQfv6Klz0426bQEf7bRTvhMy44sNGVyZoWn//B0c+Qbeg8Osi2Obdc9BLLXYAKpyWege2/7LQ==} dependencies: '@types/geojson': 7946.0.10 dev: true - /@types/d3-hierarchy/3.1.0: + /@types/d3-hierarchy@3.1.0: resolution: {integrity: sha512-g+sey7qrCa3UbsQlMZZBOHROkFqx7KZKvUpRzI/tAp/8erZWpYq7FgNKvYwebi2LaEiVs1klhUfd3WCThxmmWQ==} dev: true - /@types/d3-interpolate/3.0.1: + /@types/d3-interpolate@3.0.1: resolution: {integrity: sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==} dependencies: '@types/d3-color': 3.1.0 dev: true - /@types/d3-path/3.0.0: + /@types/d3-path@3.0.0: resolution: {integrity: sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==} dev: true - /@types/d3-polygon/3.0.0: + /@types/d3-polygon@3.0.0: resolution: {integrity: sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==} dev: true - /@types/d3-quadtree/3.0.2: + /@types/d3-quadtree@3.0.2: resolution: {integrity: sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==} dev: true - /@types/d3-random/3.0.1: + /@types/d3-random@3.0.1: resolution: {integrity: sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==} dev: true - /@types/d3-scale-chromatic/3.0.0: + /@types/d3-scale-chromatic@3.0.0: resolution: {integrity: sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==} dev: true - /@types/d3-scale/4.0.2: + /@types/d3-scale@4.0.2: resolution: {integrity: sha512-Yk4htunhPAwN0XGlIwArRomOjdoBFXC3+kCxK2Ubg7I9shQlVSJy/pG/Ht5ASN+gdMIalpk8TJ5xV74jFsetLA==} dependencies: '@types/d3-time': 3.0.0 dev: true - /@types/d3-selection/3.0.3: + /@types/d3-selection@3.0.3: resolution: {integrity: sha512-Mw5cf6nlW1MlefpD9zrshZ+DAWL4IQ5LnWfRheW6xwsdaWOb6IRRu2H7XPAQcyXEx1D7XQWgdoKR83ui1/HlEA==} dev: true - /@types/d3-shape/3.1.0: + /@types/d3-shape@3.1.0: resolution: {integrity: sha512-jYIYxFFA9vrJ8Hd4Se83YI6XF+gzDL1aC5DCsldai4XYYiVNdhtpGbA/GM6iyQ8ayhSp3a148LY34hy7A4TxZA==} dependencies: '@types/d3-path': 3.0.0 dev: true - /@types/d3-time-format/4.0.0: + /@types/d3-time-format@4.0.0: resolution: {integrity: sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==} dev: true - /@types/d3-time/3.0.0: + /@types/d3-time@3.0.0: resolution: {integrity: sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==} dev: true - /@types/d3-timer/3.0.0: + /@types/d3-timer@3.0.0: resolution: {integrity: sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==} dev: true - /@types/d3-transition/3.0.2: + /@types/d3-transition@3.0.2: resolution: {integrity: sha512-jo5o/Rf+/u6uerJ/963Dc39NI16FQzqwOc54bwvksGAdVfvDrqDpVeq95bEvPtBwLCVZutAEyAtmSyEMxN7vxQ==} dependencies: '@types/d3-selection': 3.0.3 dev: true - /@types/d3-zoom/3.0.1: + /@types/d3-zoom@3.0.1: resolution: {integrity: sha512-7s5L9TjfqIYQmQQEUcpMAcBOahem7TRoSO/+Gkz02GbMVuULiZzjF2BOdw291dbO2aNon4m2OdFsRGaCq2caLQ==} dependencies: '@types/d3-interpolate': 3.0.1 '@types/d3-selection': 3.0.3 dev: true - /@types/d3/7.4.0: + /@types/d3@7.4.0: resolution: {integrity: sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==} dependencies: '@types/d3-array': 3.0.3 @@ -4296,61 +4044,61 @@ packages: '@types/d3-zoom': 3.0.1 dev: true - /@types/debug/4.1.7: + /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: '@types/ms': 0.7.31 dev: true - /@types/dompurify/2.4.0: - resolution: {integrity: sha512-IDBwO5IZhrKvHFUl+clZxgf3hn2b/lU6H1KaBShPkQyGJUQ0xwebezIPSuiyGwfz1UzJWQl4M7BDxtHtCCPlTg==} + /@types/dompurify@3.0.2: + resolution: {integrity: sha512-YBL4ziFebbbfQfH5mlC+QTJsvh0oJUrWbmxKMyEdL7emlHJqGR2Qb34TEFKj+VCayBvjKy3xczMFNhugThUsfQ==} dependencies: '@types/trusted-types': 2.0.2 dev: true - /@types/eslint-scope/3.7.4: + /@types/eslint-scope@3.7.4: resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} dependencies: - '@types/eslint': 8.4.10 + '@types/eslint': 8.37.0 '@types/estree': 1.0.0 dev: true - /@types/eslint/8.4.10: - resolution: {integrity: sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==} + /@types/eslint@8.37.0: + resolution: {integrity: sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==} dependencies: '@types/estree': 1.0.0 '@types/json-schema': 7.0.11 dev: true - /@types/estree/0.0.39: + /@types/estree@0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: true - /@types/estree/0.0.51: + /@types/estree@0.0.51: resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} dev: true - /@types/estree/1.0.0: + /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: true - /@types/express-serve-static-core/4.17.31: + /@types/express-serve-static-core@4.17.31: resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: true - /@types/express-serve-static-core/4.17.33: + /@types/express-serve-static-core@4.17.33: resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: true - /@types/express/4.17.14: + /@types/express@4.17.14: resolution: {integrity: sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==} dependencies: '@types/body-parser': 1.19.2 @@ -4359,7 +4107,7 @@ packages: '@types/serve-static': 1.15.0 dev: true - /@types/express/4.17.17: + /@types/express@4.17.17: resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} dependencies: '@types/body-parser': 1.19.2 @@ -4368,263 +4116,296 @@ packages: '@types/serve-static': 1.15.0 dev: true - /@types/flexsearch/0.7.3: + /@types/flexsearch@0.7.3: resolution: {integrity: sha512-HXwADeHEP4exXkCIwy2n1+i0f1ilP1ETQOH5KDOugjkTFZPntWo0Gr8stZOaebkxsdx+k0X/K6obU/+it07ocg==} dev: true - /@types/geojson/7946.0.10: + /@types/fs-extra@11.0.1: + resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} + dependencies: + '@types/jsonfile': 6.1.1 + '@types/node': 18.16.0 + dev: true + + /@types/geojson@7946.0.10: resolution: {integrity: sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==} dev: true - /@types/graceful-fs/4.1.5: + /@types/graceful-fs@4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 dev: true - /@types/http-cache-semantics/4.0.1: + /@types/http-cache-semantics@4.0.1: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} dev: true - /@types/http-proxy/1.17.9: + /@types/http-proxy@1.17.9: resolution: {integrity: sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 dev: true - /@types/istanbul-lib-coverage/2.0.4: + /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true - /@types/istanbul-lib-report/3.0.0: + /@types/istanbul-lib-report@3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 dev: true - /@types/istanbul-reports/3.0.1: + /@types/istanbul-reports@3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/js-yaml/4.0.5: + /@types/js-yaml@4.0.5: resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} dev: true - /@types/jsdom/21.1.0: - resolution: {integrity: sha512-leWreJOdnuIxq9Y70tBVm/bvTuh31DSlF/r4l7Cfi4uhVQqLHD0Q4v301GMisEMwwbMgF7ZKxuZ+Jbd4NcdmRw==} + /@types/jsdom@21.1.1: + resolution: {integrity: sha512-cZFuoVLtzKP3gmq9eNosUL1R50U+USkbLtUQ1bYVgl/lKp0FZM7Cq4aIHAL8oIvQ17uSHi7jXPtfDOdjPwBE7A==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 '@types/tough-cookie': 4.0.2 parse5: 7.1.1 dev: true - /@types/json-schema/7.0.11: + /@types/json-schema@7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true - /@types/keyv/3.1.4: - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + /@types/jsonfile@6.1.1: + resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 dev: true - /@types/linkify-it/3.0.2: + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 18.16.0 + dev: true + + /@types/linkify-it@3.0.2: resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} dev: true - /@types/lodash-es/4.17.6: - resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==} + /@types/lodash-es@4.17.7: + resolution: {integrity: sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ==} dependencies: - '@types/lodash': 4.14.188 + '@types/lodash': 4.14.194 dev: true - /@types/lodash/4.14.188: - resolution: {integrity: sha512-zmEmF5OIM3rb7SbLCFYoQhO4dGt2FRM9AMkxvA3LaADOF1n8in/zGJlWji9fmafLoNyz+FoL6FE0SLtGIArD7w==} + /@types/lodash@4.14.194: + resolution: {integrity: sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==} dev: true - /@types/markdown-it/12.2.3: + /@types/markdown-it@12.2.3: resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} dependencies: '@types/linkify-it': 3.0.2 '@types/mdurl': 1.0.2 dev: true - /@types/mdast/3.0.10: + /@types/mdast@3.0.10: resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} dependencies: '@types/unist': 2.0.6 dev: true - /@types/mdurl/1.0.2: + /@types/mdast@3.0.11: + resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /@types/mdurl@1.0.2: resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} dev: true - /@types/micromatch/4.0.2: + /@types/micromatch@4.0.2: resolution: {integrity: sha512-oqXqVb0ci19GtH0vOA/U2TmHTcRY9kuZl4mqUxe0QmJAlIW13kzhuK5pi1i9+ngav8FjpSb9FVS/GE00GLX1VA==} dependencies: '@types/braces': 3.0.1 dev: true - /@types/mime/3.0.1: + /@types/mime@3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} dev: true - /@types/minimist/1.2.2: + /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/ms/0.7.31: + /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: true - /@types/node-fetch/2.6.2: + /@types/node-fetch@2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 form-data: 3.0.1 dev: true - /@types/node/14.18.29: + /@types/node@14.18.29: resolution: {integrity: sha512-LhF+9fbIX4iPzhsRLpK5H7iPdvW8L4IwGciXQIOEcuF62+9nw/VQVsOViAOOGxY3OlOKGLFv0sWwJXdwQeTn6A==} dev: true - /@types/node/16.11.59: - resolution: {integrity: sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==} + /@types/node@18.16.0: + resolution: {integrity: sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ==} dev: true - /@types/node/18.11.9: - resolution: {integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==} - dev: true - - /@types/normalize-package-data/2.4.1: + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/parse-json/4.0.0: - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + /@types/prettier@2.7.2: + resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} dev: true - /@types/prettier/2.7.1: - resolution: {integrity: sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==} - dev: true + /@types/prop-types@15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + dev: false - /@types/qs/6.9.7: + /@types/qs@6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: true - /@types/range-parser/1.2.4: + /@types/range-parser@1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true - /@types/resolve/1.17.1: + /@types/react@18.2.0: + resolution: {integrity: sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 + dev: false + + /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 dev: true - /@types/responselike/1.0.0: + /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 dev: true - /@types/retry/0.12.0: + /@types/retry@0.12.0: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} dev: true - /@types/rollup-plugin-visualizer/4.2.1: + /@types/rollup-plugin-visualizer@4.2.1: resolution: {integrity: sha512-Fk4y0EgmsSbvbayYhtSI9+cGvgw1rcQ9RlbExkQt4ivXRdiEwFKuRpxNuJCr0JktXIvOPUuPR7GSmtyZu0dujQ==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 rollup: 2.79.1 dev: true - /@types/semver/7.3.12: + /@types/scheduler@0.16.3: + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + dev: false + + /@types/semver@7.3.12: resolution: {integrity: sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==} dev: true - /@types/serve-index/1.9.1: + /@types/serve-index@1.9.1: resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} dependencies: '@types/express': 4.17.14 dev: true - /@types/serve-static/1.15.0: + /@types/serve-static@1.15.0: resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: '@types/mime': 3.0.1 - '@types/node': 18.11.9 + '@types/node': 18.16.0 dev: true - /@types/sinonjs__fake-timers/8.1.1: + /@types/sinonjs__fake-timers@8.1.1: resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} dev: true - /@types/sizzle/2.3.3: + /@types/sizzle@2.3.3: resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} dev: true - /@types/sockjs/0.3.33: + /@types/sockjs@0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 dev: true - /@types/stack-utils/2.0.1: + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/stylis/4.0.2: + /@types/stylis@4.0.2: resolution: {integrity: sha512-wtckGuk1eXUlUz0Qb1eXHG37Z7HWT2GfMdqRf8F/ifddTwadSS9Jwsqi4qtXk7cP7MtoyGVIHPElFCLc6HItbg==} dev: true - /@types/tough-cookie/4.0.2: + /@types/tough-cookie@4.0.2: resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} dev: true - /@types/trusted-types/2.0.2: + /@types/trusted-types@2.0.2: resolution: {integrity: sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==} dev: true - /@types/unist/2.0.6: + /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true - /@types/uuid/9.0.0: - resolution: {integrity: sha512-kr90f+ERiQtKWMz5rP32ltJ/BtULDI5RVO0uavn1HQUOwjx0R1h0rnDYNL0CepF1zL5bSY6FISAfd9tOdDhU5Q==} + /@types/uuid@9.0.1: + resolution: {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==} dev: true - /@types/web-bluetooth/0.0.16: + /@types/web-bluetooth@0.0.16: resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} - /@types/ws/8.5.3: + /@types/ws@8.5.3: resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 dev: true - /@types/yargs-parser/21.0.0: + /@types/ws@8.5.4: + resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} + dependencies: + '@types/node': 18.16.0 + dev: true + + /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true - /@types/yargs/17.0.13: + /@types/yargs@17.0.13: resolution: {integrity: sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==} dependencies: '@types/yargs-parser': 21.0.0 dev: true - /@types/yauzl/2.10.0: + /@types/yauzl@2.10.0: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 dev: true optional: true - /@typescript-eslint/eslint-plugin/5.42.1_qxgr6oy2qtsmmpo3f6iejuryuq: - resolution: {integrity: sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==} + /@typescript-eslint/eslint-plugin@5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-p0QgrEyrxAWBecR56gyn3wkG15TJdI//eetInP3zYRewDh0XS+DhB3VUAd3QqvziFsfaQIoIuZMxZRB7vXYaYw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -4634,51 +4415,25 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.42.1_yygwinqv3a2io74xmwofqb7uka - '@typescript-eslint/scope-manager': 5.42.1 - '@typescript-eslint/type-utils': 5.42.1_yygwinqv3a2io74xmwofqb7uka - '@typescript-eslint/utils': 5.42.1_yygwinqv3a2io74xmwofqb7uka - debug: 4.3.4 - eslint: 8.32.0 + '@eslint-community/regexpp': 4.5.0 + '@typescript-eslint/parser': 5.59.0(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.59.0 + '@typescript-eslint/type-utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.39.0 + grapheme-splitter: 1.0.4 ignore: 5.2.0 natural-compare-lite: 1.4.0 - regexpp: 3.2.0 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.8.4 - typescript: 4.8.4 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/eslint-plugin/5.48.2_azmbqzqvrlvblbdtiwxwvyvjjy: - resolution: {integrity: sha512-sR0Gja9Ky1teIq4qJOl0nC+Tk64/uYdX+mi+5iB//MH8gwyx8e3SOyhEzeLZEFEEfCaLf8KJq+Bd/6je1t+CAg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/parser': 5.48.2_et5x32uxl7z5ldub3ye5rhlyqm - '@typescript-eslint/scope-manager': 5.48.2 - '@typescript-eslint/type-utils': 5.48.2_et5x32uxl7z5ldub3ye5rhlyqm - '@typescript-eslint/utils': 5.48.2_et5x32uxl7z5ldub3ye5rhlyqm - debug: 4.3.4 - eslint: 8.32.0 - ignore: 5.2.0 - natural-compare-lite: 1.4.0 - regexpp: 3.2.0 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser/5.42.1_yygwinqv3a2io74xmwofqb7uka: - resolution: {integrity: sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==} + /@typescript-eslint/parser@5.59.0(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-qK9TZ70eJtjojSUMrrEwA9ZDQ4N0e/AuoOIgXuNBorXYcBDk397D2r5MIe1B3cok/oCtdNC5j+lUUpVB+Dpb+w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4687,54 +4442,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.42.1 - '@typescript-eslint/types': 5.42.1 - '@typescript-eslint/typescript-estree': 5.42.1_typescript@4.8.4 - debug: 4.3.4 - eslint: 8.32.0 - typescript: 4.8.4 + '@typescript-eslint/scope-manager': 5.59.0 + '@typescript-eslint/types': 5.59.0 + '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.0.4) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.39.0 + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.48.2_et5x32uxl7z5ldub3ye5rhlyqm: - resolution: {integrity: sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.48.2 - '@typescript-eslint/types': 5.48.2 - '@typescript-eslint/typescript-estree': 5.48.2_typescript@4.9.5 - debug: 4.3.4 - eslint: 8.32.0 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/scope-manager/5.42.1: - resolution: {integrity: sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ==} + /@typescript-eslint/scope-manager@5.59.0: + resolution: {integrity: sha512-tsoldKaMh7izN6BvkK6zRMINj4Z2d6gGhO2UsI8zGZY3XhLq1DndP3Ycjhi1JwdwPRwtLMW4EFPgpuKhbCGOvQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.42.1 - '@typescript-eslint/visitor-keys': 5.42.1 + '@typescript-eslint/types': 5.59.0 + '@typescript-eslint/visitor-keys': 5.59.0 dev: true - /@typescript-eslint/scope-manager/5.48.2: - resolution: {integrity: sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.48.2 - '@typescript-eslint/visitor-keys': 5.48.2 - dev: true - - /@typescript-eslint/type-utils/5.42.1_yygwinqv3a2io74xmwofqb7uka: - resolution: {integrity: sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==} + /@typescript-eslint/type-utils@5.59.0(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-d/B6VSWnZwu70kcKQSCqjcXpVH+7ABKH8P1KNn4K7j5PXXuycZTPXF44Nui0TEm6rbWGi8kc78xRgOC4n7xFgA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -4743,48 +4470,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.42.1_typescript@4.8.4 - '@typescript-eslint/utils': 5.42.1_yygwinqv3a2io74xmwofqb7uka - debug: 4.3.4 - eslint: 8.32.0 - tsutils: 3.21.0_typescript@4.8.4 - typescript: 4.8.4 + '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.39.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/type-utils/5.48.2_et5x32uxl7z5ldub3ye5rhlyqm: - resolution: {integrity: sha512-QVWx7J5sPMRiOMJp5dYshPxABRoZV1xbRirqSk8yuIIsu0nvMTZesKErEA3Oix1k+uvsk8Cs8TGJ6kQ0ndAcew==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 5.48.2_typescript@4.9.5 - '@typescript-eslint/utils': 5.48.2_et5x32uxl7z5ldub3ye5rhlyqm - debug: 4.3.4 - eslint: 8.32.0 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/types/5.42.1: - resolution: {integrity: sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA==} + /@typescript-eslint/types@5.59.0: + resolution: {integrity: sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types/5.48.2: - resolution: {integrity: sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@typescript-eslint/typescript-estree/5.42.1_typescript@4.8.4: - resolution: {integrity: sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==} + /@typescript-eslint/typescript-estree@5.59.0(typescript@5.0.4): + resolution: {integrity: sha512-sUNnktjmI8DyGzPdZ8dRwW741zopGxltGs/SAPgGL/AAgDpiLsCFLcMNSpbfXfmnNeHmK9h3wGmCkGRGAoUZAg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -4792,432 +4494,328 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.42.1 - '@typescript-eslint/visitor-keys': 5.42.1 - debug: 4.3.4 + '@typescript-eslint/types': 5.59.0 + '@typescript-eslint/visitor-keys': 5.59.0 + debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.8.4 - typescript: 4.8.4 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.42.1_typescript@4.9.5: - resolution: {integrity: sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.42.1 - '@typescript-eslint/visitor-keys': 5.42.1 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree/5.48.2_typescript@4.9.5: - resolution: {integrity: sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.48.2 - '@typescript-eslint/visitor-keys': 5.48.2 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/utils/5.42.1_et5x32uxl7z5ldub3ye5rhlyqm: - resolution: {integrity: sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==} + /@typescript-eslint/utils@5.59.0(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-GGLFd+86drlHSvPgN/el6dRQNYYGOvRSDVydsUaQluwIW3HvbXuxyuD5JETvBt/9qGYe+lOrDk6gRrWOHb/FvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) '@types/json-schema': 7.0.11 '@types/semver': 7.3.12 - '@typescript-eslint/scope-manager': 5.42.1 - '@typescript-eslint/types': 5.42.1 - '@typescript-eslint/typescript-estree': 5.42.1_typescript@4.9.5 - eslint: 8.32.0 + '@typescript-eslint/scope-manager': 5.59.0 + '@typescript-eslint/types': 5.59.0 + '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.0.4) + eslint: 8.39.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.32.0 semver: 7.3.8 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils/5.42.1_yygwinqv3a2io74xmwofqb7uka: - resolution: {integrity: sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@types/json-schema': 7.0.11 - '@types/semver': 7.3.12 - '@typescript-eslint/scope-manager': 5.42.1 - '@typescript-eslint/types': 5.42.1 - '@typescript-eslint/typescript-estree': 5.42.1_typescript@4.8.4 - eslint: 8.32.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.32.0 - semver: 7.3.8 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/utils/5.48.2_et5x32uxl7z5ldub3ye5rhlyqm: - resolution: {integrity: sha512-2h18c0d7jgkw6tdKTlNaM7wyopbLRBiit8oAxoP89YnuBOzCZ8g8aBCaCqq7h208qUTroL7Whgzam7UY3HVLow==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@types/json-schema': 7.0.11 - '@types/semver': 7.3.12 - '@typescript-eslint/scope-manager': 5.48.2 - '@typescript-eslint/types': 5.48.2 - '@typescript-eslint/typescript-estree': 5.48.2_typescript@4.9.5 - eslint: 8.32.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.32.0 - semver: 7.3.8 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/visitor-keys/5.42.1: - resolution: {integrity: sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A==} + /@typescript-eslint/visitor-keys@5.59.0: + resolution: {integrity: sha512-qZ3iXxQhanchCeaExlKPV3gDQFxMUmU35xfd5eCXB6+kUw1TUAbIy2n7QIrwz9s98DQLzNWyHp61fY0da4ZcbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.42.1 - eslint-visitor-keys: 3.3.0 + '@typescript-eslint/types': 5.59.0 + eslint-visitor-keys: 3.4.0 dev: true - /@typescript-eslint/visitor-keys/5.48.2: - resolution: {integrity: sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@unocss/astro@0.51.8(rollup@2.79.1)(vite@4.3.3): + resolution: {integrity: sha512-1cY22psmzeW6f29Os7nXhrIgbjR2QI2qPU+PDEMprWiaVHlIc86WUKNzPIcuKskAQMMhWVCIN/XlCNzxZzXJqw==} dependencies: - '@typescript-eslint/types': 5.48.2 - eslint-visitor-keys: 3.3.0 - dev: true - - /@unocss/astro/0.48.5_rollup@2.79.1+vite@4.1.4: - resolution: {integrity: sha512-3OkMAceJwfa+mUfPEAATRNCXwpI4aLl+upXVsoHDN013pM7st4oC7ZgYHvb8EajuSinng9ffMcPfgrIJK9N5bQ==} - dependencies: - '@unocss/core': 0.48.5 - '@unocss/reset': 0.48.5 - '@unocss/vite': 0.48.5_rollup@2.79.1+vite@4.1.4 + '@unocss/core': 0.51.8 + '@unocss/reset': 0.51.8 + '@unocss/vite': 0.51.8(rollup@2.79.1)(vite@4.3.3) transitivePeerDependencies: - rollup - vite dev: true - /@unocss/cli/0.48.5_rollup@2.79.1: - resolution: {integrity: sha512-xFz5iPc9t3sDDZyPq/1Sy83tpMUFSSPm7FUCVucaJ9LmROFii5yy1L+aILecUMRVfx3VN5TpJ1eqNB3Yqx63Yg==} + /@unocss/cli@0.51.8(rollup@2.79.1): + resolution: {integrity: sha512-vZKct40rIXhp8tIUkBLn9pLq4xWMBi3+wFryBgoZDHSkRwWkuQLqCY5rAsNOv1DG2+tLfKef4guMaFFavDkYzA==} engines: {node: '>=14'} hasBin: true dependencies: - '@ampproject/remapping': 2.2.0 - '@rollup/pluginutils': 5.0.2_rollup@2.79.1 - '@unocss/config': 0.48.5 - '@unocss/core': 0.48.5 - '@unocss/preset-uno': 0.48.5 + '@ampproject/remapping': 2.2.1 + '@rollup/pluginutils': 5.0.2(rollup@2.79.1) + '@unocss/config': 0.51.8 + '@unocss/core': 0.51.8 + '@unocss/preset-uno': 0.51.8 cac: 6.7.14 chokidar: 3.5.3 colorette: 2.0.19 - consola: 2.15.3 + consola: 3.1.0 fast-glob: 3.2.12 - magic-string: 0.27.0 + magic-string: 0.30.0 pathe: 1.1.0 perfect-debounce: 0.1.3 transitivePeerDependencies: - rollup dev: true - /@unocss/config/0.48.5: - resolution: {integrity: sha512-b1HThifrJLUTYDxeaoL02blk/IMCtbode5pv57mVpBY7v29XICkcfe2PW27BQHIsEmI6LdFICjAB0Xn9kwrRyQ==} + /@unocss/config@0.51.8: + resolution: {integrity: sha512-wiCn2aR82BdDMLfywTxUbyugBy1TxEdfND5BuLZxtNIKARnZoQXm+hfLbIBcOvmcWW1p940I6CImNFrSszOULQ==} engines: {node: '>=14'} dependencies: - '@unocss/core': 0.48.5 + '@unocss/core': 0.51.8 unconfig: 0.3.7 dev: true - /@unocss/core/0.48.5: - resolution: {integrity: sha512-goidlxqDEW14yYzLIqyUsoVPvrq3BuxvzY+87tulfHtiHWXd7fITSjHu80Bn0J6LZm1bVn2/D5nfE7ZLU/uW8g==} + /@unocss/core@0.51.8: + resolution: {integrity: sha512-myHRKBphEN3h0OnsUhg2JaFKjFGfqF/jmmzZCCMNU5UmxbheZomXANNLYXVgEP6LHvd4xAF0DEzrOBcDPLf0HQ==} dev: true - /@unocss/inspector/0.48.5: - resolution: {integrity: sha512-zEIAC2nELJNyW9S6Rsg9EAzYlFP+bNBuz53OSQQyikn39vQKFHa0bfsfSvJl/JHZIL7U6H4WqeSppIuiW//WdQ==} + /@unocss/extractor-arbitrary-variants@0.51.8: + resolution: {integrity: sha512-cCsdRLqmt3adcaRtoIP2pC8mYgH3ed8DEES3E7VOWghqLjwLULUMyBS+vy7n9CvnV75kuTKb1bZ+k9eu/rfh2w==} + dependencies: + '@unocss/core': 0.51.8 + dev: true + + /@unocss/inspector@0.51.8: + resolution: {integrity: sha512-g3gLl6h/AErv04jCTQOCtfBDzJ01FG2SnDxLErIm22bnKydP/QB15TyX9AXlUsOcxywcCFHYe73OdPqyMqPEFQ==} dependencies: gzip-size: 6.0.0 sirv: 2.0.2 dev: true - /@unocss/preset-attributify/0.48.5: - resolution: {integrity: sha512-nxYChw4vpppKt1nIFItsFkopdH7gTY19ZE4ieMen3cP27YWC6BSNg5L4QksaLlABPCIqAYHmpH3e41FGZonM+g==} + /@unocss/postcss@0.51.8(postcss@8.4.23): + resolution: {integrity: sha512-IWwxGDfd/pqQMBjp1PKplQIeD6uwUs1qxUkJZXIf/BlGE+dMkjIw6Mp72FwYqkMn71hnjU2CMRTbX7RzkKxkmQ==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 dependencies: - '@unocss/core': 0.48.5 + '@unocss/config': 0.51.8 + '@unocss/core': 0.51.8 + css-tree: 2.3.1 + fast-glob: 3.2.12 + magic-string: 0.30.0 + postcss: 8.4.23 dev: true - /@unocss/preset-icons/0.48.5: - resolution: {integrity: sha512-pXgerhZfSZX2YNXW+1S6UtJEDgAGEz7u5Popx8IBoVmUr8xnFN1+AYZOTNH0KATx4R7s9NyRIr0sxD4DMq8bcA==} + /@unocss/preset-attributify@0.51.8: + resolution: {integrity: sha512-2JkGrutvVwvXAC48vCiEpiYLMXlV1rDigR1lwRrKxQC1s/1/j4Wei2RqY0649CkpWZBvdiJ5oPF38NV9pWOnKw==} dependencies: - '@iconify/utils': 2.1.4 - '@unocss/core': 0.48.5 - ohmyfetch: 0.4.21 + '@unocss/core': 0.51.8 + dev: true + + /@unocss/preset-icons@0.51.8: + resolution: {integrity: sha512-qvHNsLYVJw6js+1+FNaNZm4qLTM+z4VnHHp1NNMtqHTMEOFUsxu+bAL6CIPkwja455F1GxyvYbHpB6eekSwNEA==} + dependencies: + '@iconify/utils': 2.1.5 + '@unocss/core': 0.51.8 + ofetch: 1.0.1 transitivePeerDependencies: - supports-color dev: true - /@unocss/preset-mini/0.48.5: - resolution: {integrity: sha512-jMKUCkbKsgLkEAeaB7qV/ExZ1W9yAnRQ/PwrnGnxbIIAxDIylfPDBL2bR2w2TucHblpqCf6Twb09r1F6qfy3yQ==} + /@unocss/preset-mini@0.51.8: + resolution: {integrity: sha512-eDm70Kuw3gscq2bjjmM7i11ox2siAbzsI9dIIpJtXntuWdzwlhqNk40YH/YnM02OfWVi8QLdWuye4wOA3//Fjw==} dependencies: - '@unocss/core': 0.48.5 + '@unocss/core': 0.51.8 + '@unocss/extractor-arbitrary-variants': 0.51.8 dev: true - /@unocss/preset-tagify/0.48.5: - resolution: {integrity: sha512-ZWwDYBZ/aeN8LaH1AGKyXVye3PNXgT2yzL8fJmWf0VCZtT02cH4AE9GLGeKISOvl47J16oDuE6jd3nd1tBw+vg==} + /@unocss/preset-tagify@0.51.8: + resolution: {integrity: sha512-QUUoyDor2AG5N2nQNI+SZ21HEKfJQxDRlZ+mAwT0NLSli5ZGgDN+BwsHGbffNhi2B0Gti/s5ovIDsQY0WyoYbA==} dependencies: - '@unocss/core': 0.48.5 + '@unocss/core': 0.51.8 dev: true - /@unocss/preset-typography/0.48.5: - resolution: {integrity: sha512-KYVrbOAC2c1frV3QrebQdxNTttZY3ImfuZfhxPhywickNIEHc6Hn5UugZJ5XrfkiMD4aXQ0vDeDUFlXtMPn9ug==} + /@unocss/preset-typography@0.51.8: + resolution: {integrity: sha512-cqHzwHj8cybQutPOXg5g81Lww0gWU0DIVNUpLy5g8qW+w5y4rTlQ4pNw5z1x3CyHUHO2++HApN8m07zJL6RA1w==} dependencies: - '@unocss/core': 0.48.5 + '@unocss/core': 0.51.8 + '@unocss/preset-mini': 0.51.8 dev: true - /@unocss/preset-uno/0.48.5: - resolution: {integrity: sha512-D/vVO1fgFll5IpoE92BVhKFkaejJAhux0DVAtRC/VUwOR0NE3CmRlTct+mBRO938aeuiELxFysuO0hNMDpTmeA==} + /@unocss/preset-uno@0.51.8: + resolution: {integrity: sha512-akBkjSDqFhuiLPPOu+t+bhae1/ZRjcKnmMMGekSBoJvE3CfYsDpkYgzlj+U1NhCtmKXHeDZKD8spUJj5Jvea1g==} dependencies: - '@unocss/core': 0.48.5 - '@unocss/preset-mini': 0.48.5 - '@unocss/preset-wind': 0.48.5 + '@unocss/core': 0.51.8 + '@unocss/preset-mini': 0.51.8 + '@unocss/preset-wind': 0.51.8 dev: true - /@unocss/preset-web-fonts/0.48.5: - resolution: {integrity: sha512-cX2xRQzzuaMD5+f5ea9fjYfnjIGJqERP5Jpo2fiReNEhXFWYRAkFgK5Wcgzx2TLP47NvM4oWJR+pKBoaCJzsaQ==} + /@unocss/preset-web-fonts@0.51.8: + resolution: {integrity: sha512-s9kKEiV21qYTdrfb3uZRc+Eos1e1/UN6lCC4KPqzD5LfdsZgel5a0xD9RpKUoKOnPgzDkvg22yn8rfsC5NBafg==} dependencies: - '@unocss/core': 0.48.5 - ohmyfetch: 0.4.21 + '@unocss/core': 0.51.8 + ofetch: 1.0.1 dev: true - /@unocss/preset-wind/0.48.5: - resolution: {integrity: sha512-uSlViwl+1mJeClxJcwE6QA3SIOnOpL+Nes8VeO4NQADhn8ywhgjouAi2fy/gxQAcGtAV5PODn2jrG2M80+Ghkw==} + /@unocss/preset-wind@0.51.8: + resolution: {integrity: sha512-L8zqVQigmPiclCuUdXwzNpj3CcC0PX38m5DAb9fkYyEdeSMkM2BYsKgR56oxah+0crN1dRTjJsqK45MAjJiVKQ==} dependencies: - '@unocss/core': 0.48.5 - '@unocss/preset-mini': 0.48.5 + '@unocss/core': 0.51.8 + '@unocss/preset-mini': 0.51.8 dev: true - /@unocss/reset/0.48.5: - resolution: {integrity: sha512-+JJT3Btj1oNX4XwKBDPRUYre3NYBNmi0PsC3tqkHN2VphJG0iZl91XNfsveLz8pVpDJPUDdLH4xsqh52WmxU1g==} + /@unocss/reset@0.51.8: + resolution: {integrity: sha512-mVUP2F/ItPKatkRh5tWBNDZG2YqG7oKxfYxQUYbNAv/hiTKPlKc3PX9T4vZKEvJarbzucTIGbYHdzwqExzG9Kw==} dev: true - /@unocss/scope/0.48.5: - resolution: {integrity: sha512-2xPJWUyDUnJkn37n6+a0t4vKb8l07UeGTHM4jxOvKdML4Gi5tsxulyj+lBPP+wLWu9fNiFe7HlEejbh/J13QVw==} + /@unocss/scope@0.51.8: + resolution: {integrity: sha512-4B4nlmcwFGKzAyI8ltSSJIivqu+DHZ3/T9IccuoFgWzdr+whPwxO5x6ydkTaJo9bUyT9mcj+HhFEjmwsA98FmQ==} dev: true - /@unocss/transformer-attributify-jsx/0.48.5: - resolution: {integrity: sha512-GRV3aNXgQ9YBXblwGV4PgVjUZExsAyGViN2LVl1qAUlnN3IgTjBFGGWo9t/I90LEk3Sy1TiOj05iZ9vB0RPq8g==} + /@unocss/transformer-attributify-jsx-babel@0.51.8: + resolution: {integrity: sha512-GJ1NLLAn4MH/u5/qsAbnzY7Qyl1aqWi0fj2ggXcv3XP9KmllRmGymWVJB7lqH7AL5xzJD+tivUEH8m+tsaeZYQ==} dependencies: - '@unocss/core': 0.48.5 + '@unocss/core': 0.51.8 dev: true - /@unocss/transformer-compile-class/0.48.5: - resolution: {integrity: sha512-ZMZ0Z8tJ6TFHyoUPAYY3FG0euJ4OmGlcMVDKfbDPOH0Gxxj2VJ+5Xn57VTy1GjfAKxk4MLnf08THwcCuh0BrZw==} + /@unocss/transformer-attributify-jsx@0.51.8: + resolution: {integrity: sha512-iq4WRj+IHVIRPSH7qaB8PqqlSNSHXkXjPki1n14Bcv1D1ILgDBnH6gRammB/Z7KqAP/k/TCK7bSMeHrQ6iTQoQ==} dependencies: - '@unocss/core': 0.48.5 + '@unocss/core': 0.51.8 dev: true - /@unocss/transformer-directives/0.48.5: - resolution: {integrity: sha512-pl8SekJvkXEBzUbXDaYexeOpT3UWzS/YS4nVzN6gEisLGSpbD5a/yfI3iAA3GVWCH8HrmzUl0FpL3cY5yf44rg==} + /@unocss/transformer-compile-class@0.51.8: + resolution: {integrity: sha512-aSyUDjYGUX1qplby0wt9BcBwMsmKzIDyOkp3DBTlAfBjWbxes8ZytjutIzOMos1CrrHTuB/omCT9apG2JAbgDA==} dependencies: - '@unocss/core': 0.48.5 + '@unocss/core': 0.51.8 + dev: true + + /@unocss/transformer-directives@0.51.8: + resolution: {integrity: sha512-Q1vG0dZYaxbdz0pVnvpuFreGoSqmrk7TgKUHNuJP/XzTi04sriQoDSpC2QMIAuOyU7FyGpSjUORiaBm0/VNURw==} + dependencies: + '@unocss/core': 0.51.8 css-tree: 2.3.1 dev: true - /@unocss/transformer-variant-group/0.48.5: - resolution: {integrity: sha512-j7P/gpW1WzlDRBey4GxHsDbLQt8a8jrOD0PbRwJJCIBg6XrV/gsojgbwGQc/NMEXuwFPBMdLWM52dDYg2+NxYw==} + /@unocss/transformer-variant-group@0.51.8: + resolution: {integrity: sha512-blFQtAntyijFOm+BiiQhroaPwFNX6zYi19wUjY6NdvMAl/g4JzOFTzo+KehQf+lCI3Dvhr8Z2dGtDcnwfqUcDg==} dependencies: - '@unocss/core': 0.48.5 + '@unocss/core': 0.51.8 dev: true - /@unocss/vite/0.48.5_rollup@2.79.1+vite@4.1.4: - resolution: {integrity: sha512-eUZSM9vxTdUe70/aDpxGODjLJtrAa80pmipqgFaZ0B++LsglZMiSZD38/Bw7w5FTLv78ViRgTJ+rGh/SOe+rdw==} + /@unocss/vite@0.51.8(rollup@2.79.1)(vite@4.3.3): + resolution: {integrity: sha512-0mVCgh2Bci2oey6VXGAJBI3x/p5whJiY32BpJaugCmLlZPc6rnWQ8o/FaOTed2EznWAGA8zRRF2l3fEVCURh9g==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 dependencies: - '@ampproject/remapping': 2.2.0 - '@rollup/pluginutils': 5.0.2_rollup@2.79.1 - '@unocss/config': 0.48.5 - '@unocss/core': 0.48.5 - '@unocss/inspector': 0.48.5 - '@unocss/scope': 0.48.5 - '@unocss/transformer-directives': 0.48.5 + '@ampproject/remapping': 2.2.1 + '@rollup/pluginutils': 5.0.2(rollup@2.79.1) + '@unocss/config': 0.51.8 + '@unocss/core': 0.51.8 + '@unocss/inspector': 0.51.8 + '@unocss/scope': 0.51.8 + '@unocss/transformer-directives': 0.51.8 chokidar: 3.5.3 fast-glob: 3.2.12 - magic-string: 0.27.0 - vite: 4.1.4 + magic-string: 0.30.0 + vite: 4.3.3(@types/node@18.16.0) transitivePeerDependencies: - rollup dev: true - /@vite-pwa/vitepress/0.0.4_vite-plugin-pwa@0.14.4: - resolution: {integrity: sha512-+uMmxOe8G5X+9zbeP7htVINv0MVn8tuaKEE96jHXmV4dRb5HJX9U8WbgSJ4QD8ezoeYABjPjagGWOV3l0DMrtw==} + /@vite-pwa/vitepress@0.0.5(vite-plugin-pwa@0.14.7): + resolution: {integrity: sha512-B6xy9wxi9fen+/AnRkY2+XCrbhqh2b/TsVTka6qFQ3zJ8zHSoEUHUucYT3KHMcY5I124G0ZmPKNW+UF9Jx1k4w==} peerDependencies: vite-plugin-pwa: ^0.14.0 dependencies: - vite-plugin-pwa: 0.14.4_qtdhuw7qkuvvectm2wxn5d44j4 + vite-plugin-pwa: 0.14.7(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) dev: true - /@vitejs/plugin-vue/4.0.0_vite@4.1.1+vue@3.2.45: - resolution: {integrity: sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==} + /@vitejs/plugin-vue@4.2.1(vite@4.3.1)(vue@3.2.47): + resolution: {integrity: sha512-ZTZjzo7bmxTRTkb8GSTwkPOYDIP7pwuyV+RV53c9PYUouwcbkIZIvWvNWlX2b1dYZqtOv7D6iUAnJLVNGcLrSw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.1.1 - vue: 3.2.45 - dev: true - - /@vitejs/plugin-vue/4.0.0_vite@4.1.4+vue@3.2.47: - resolution: {integrity: sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.0.0 - vue: ^3.2.25 - dependencies: - vite: 4.1.4 + vite: 4.3.1(@types/node@18.16.0) vue: 3.2.47 dev: true - /@vitest/coverage-c8/0.28.4_vun5xzxu3tkrssf3erdbijyyki: - resolution: {integrity: sha512-btelLBxaWhHnywXRQxDlrvPhGdnuIaD3XulsxcZRIcnpLPbFu39dNTT0IYu2QWP2ZZrV0AmNtdLIfD4c77zMAg==} + /@vitejs/plugin-vue@4.2.1(vite@4.3.3)(vue@3.2.47): + resolution: {integrity: sha512-ZTZjzo7bmxTRTkb8GSTwkPOYDIP7pwuyV+RV53c9PYUouwcbkIZIvWvNWlX2b1dYZqtOv7D6iUAnJLVNGcLrSw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 + vue: ^3.2.25 dependencies: - c8: 7.12.0 + vite: 4.3.3(@types/node@18.16.0) + vue: 3.2.47 + dev: true + + /@vitest/coverage-c8@0.30.1(vitest@0.30.1): + resolution: {integrity: sha512-/Wa3dtSuckpdngAmiCwowaEXXgJkqPrtfvrs9HTB9QoEfNbZWPu4E4cjEn4lJZb4qcGf4fxFtUA2f9DnDNAzBA==} + peerDependencies: + vitest: '>=0.30.0 <1' + dependencies: + c8: 7.13.0 picocolors: 1.0.0 std-env: 3.3.2 - vitest: 0.28.4_vun5xzxu3tkrssf3erdbijyyki - transitivePeerDependencies: - - '@edge-runtime/vm' - - '@vitest/browser' - - '@vitest/ui' - - happy-dom - - jsdom - - less - - sass - - stylus - - sugarss - - supports-color - - terser + vitest: 0.30.1(@vitest/ui@0.30.1)(jsdom@21.1.1) dev: true - /@vitest/expect/0.28.4: - resolution: {integrity: sha512-JqK0NZ4brjvOSL8hXAnIsfi+jxDF7rH/ZWCGCt0FAqRnVFc1hXsfwXksQvEnKqD84avRt3gmeXoK4tNbmkoVsQ==} + /@vitest/expect@0.30.1: + resolution: {integrity: sha512-c3kbEtN8XXJSeN81iDGq29bUzSjQhjES2WR3aColsS4lPGbivwLtas4DNUe0jD9gg/FYGIteqOenfU95EFituw==} dependencies: - '@vitest/spy': 0.28.4 - '@vitest/utils': 0.28.4 + '@vitest/spy': 0.30.1 + '@vitest/utils': 0.30.1 chai: 4.3.7 dev: true - /@vitest/expect/0.28.5: - resolution: {integrity: sha512-gqTZwoUTwepwGIatnw4UKpQfnoyV0Z9Czn9+Lo2/jLIt4/AXLTn+oVZxlQ7Ng8bzcNkR+3DqLJ08kNr8jRmdNQ==} + /@vitest/runner@0.30.1: + resolution: {integrity: sha512-W62kT/8i0TF1UBCNMRtRMOBWJKRnNyv9RrjIgdUryEe0wNpGZvvwPDLuzYdxvgSckzjp54DSpv1xUbv4BQ0qVA==} dependencies: - '@vitest/spy': 0.28.5 - '@vitest/utils': 0.28.5 - chai: 4.3.7 - dev: true - - /@vitest/runner/0.28.4: - resolution: {integrity: sha512-Q8UV6GjDvBSTfUoq0QXVCNpNOUrWu4P2qvRq7ssJWzn0+S0ojbVOxEjMt+8a32X6SdkhF8ak+2nkppsqV0JyNQ==} - dependencies: - '@vitest/utils': 0.28.4 + '@vitest/utils': 0.30.1 + concordance: 5.0.4 p-limit: 4.0.0 pathe: 1.1.0 dev: true - /@vitest/runner/0.28.5: - resolution: {integrity: sha512-NKkHtLB+FGjpp5KmneQjTcPLWPTDfB7ie+MmF1PnUBf/tGe2OjGxWyB62ySYZ25EYp9krR5Bw0YPLS/VWh1QiA==} + /@vitest/snapshot@0.30.1: + resolution: {integrity: sha512-fJZqKrE99zo27uoZA/azgWyWbFvM1rw2APS05yB0JaLwUIg9aUtvvnBf4q7JWhEcAHmSwbrxKFgyBUga6tq9Tw==} dependencies: - '@vitest/utils': 0.28.5 - p-limit: 4.0.0 + magic-string: 0.30.0 pathe: 1.1.0 + pretty-format: 27.5.1 dev: true - /@vitest/spy/0.28.4: - resolution: {integrity: sha512-8WuhfXLlvCXpNXEGJW6Gc+IKWI32435fQJLh43u70HnZ1otJOa2Cmg2Wy2Aym47ZnNCP4NolF+8cUPwd0MigKQ==} + /@vitest/spy@0.30.1: + resolution: {integrity: sha512-YfJeIf37GvTZe04ZKxzJfnNNuNSmTEGnla2OdL60C8od16f3zOfv9q9K0nNii0NfjDJRt/CVN/POuY5/zTS+BA==} dependencies: - tinyspy: 1.0.2 + tinyspy: 2.1.0 dev: true - /@vitest/spy/0.28.5: - resolution: {integrity: sha512-7if6rsHQr9zbmvxN7h+gGh2L9eIIErgf8nSKYDlg07HHimCxp4H6I/X/DPXktVPPLQfiZ1Cw2cbDIx9fSqDjGw==} - dependencies: - tinyspy: 1.0.2 - dev: true - - /@vitest/ui/0.28.4: - resolution: {integrity: sha512-LQfCCFc17n49mwtraV9/NAWl2DUqJS/9ZEa3fqJjoYO+HowdseQ5jvWflpzliCyfrIAh6cXVo1bNzHnDXe0cbw==} + /@vitest/ui@0.30.1: + resolution: {integrity: sha512-Izz4ElDmdvX02KImSC2nCJI6CsGo9aETbKqxli55M0rbbPPAMtF0zDcJIqgEP5V6Y+4Ysf6wvsjLbLCTnaBvKw==} dependencies: + '@vitest/utils': 0.30.1 fast-glob: 3.2.12 + fflate: 0.7.4 flatted: 3.2.7 pathe: 1.1.0 picocolors: 1.0.0 sirv: 2.0.2 dev: true - /@vitest/utils/0.28.4: - resolution: {integrity: sha512-l2QztOLdc2LkR+w/lP52RGh8hW+Ul4KESmCAgVE8q737I7e7bQoAfkARKpkPJ4JQtGpwW4deqlj1732VZD7TFw==} + /@vitest/utils@0.30.1: + resolution: {integrity: sha512-/c8Xv2zUVc+rnNt84QF0Y0zkfxnaGhp87K2dYJMLtLOIckPzuxLVzAtFCicGFdB4NeBHNzTRr1tNn7rCtQcWFA==} dependencies: - cli-truncate: 3.1.0 - diff: 5.1.0 + concordance: 5.0.4 loupe: 2.3.6 - picocolors: 1.0.0 pretty-format: 27.5.1 dev: true - /@vitest/utils/0.28.5: - resolution: {integrity: sha512-UyZdYwdULlOa4LTUSwZ+Paz7nBHGTT72jKwdFSV4IjHF1xsokp+CabMdhjvVhYwkLfO88ylJT46YMilnkSARZA==} - dependencies: - cli-truncate: 3.1.0 - diff: 5.1.0 - loupe: 2.3.6 - picocolors: 1.0.0 - pretty-format: 27.5.1 - dev: true - - /@vue/compiler-core/3.2.45: - resolution: {integrity: sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==} - dependencies: - '@babel/parser': 7.21.2 - '@vue/shared': 3.2.45 - estree-walker: 2.0.2 - source-map: 0.6.1 - dev: true - - /@vue/compiler-core/3.2.47: + /@vue/compiler-core@3.2.47: resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} dependencies: '@babel/parser': 7.21.2 @@ -5225,35 +4823,13 @@ packages: estree-walker: 2.0.2 source-map: 0.6.1 - /@vue/compiler-dom/3.2.45: - resolution: {integrity: sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==} - dependencies: - '@vue/compiler-core': 3.2.45 - '@vue/shared': 3.2.45 - dev: true - - /@vue/compiler-dom/3.2.47: + /@vue/compiler-dom@3.2.47: resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==} dependencies: '@vue/compiler-core': 3.2.47 '@vue/shared': 3.2.47 - /@vue/compiler-sfc/3.2.45: - resolution: {integrity: sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==} - dependencies: - '@babel/parser': 7.19.1 - '@vue/compiler-core': 3.2.45 - '@vue/compiler-dom': 3.2.45 - '@vue/compiler-ssr': 3.2.45 - '@vue/reactivity-transform': 3.2.45 - '@vue/shared': 3.2.45 - estree-walker: 2.0.2 - magic-string: 0.25.9 - postcss: 8.4.20 - source-map: 0.6.1 - dev: true - - /@vue/compiler-sfc/3.2.47: + /@vue/compiler-sfc@3.2.47: resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} dependencies: '@babel/parser': 7.21.2 @@ -5264,37 +4840,20 @@ packages: '@vue/shared': 3.2.47 estree-walker: 2.0.2 magic-string: 0.25.9 - postcss: 8.4.21 + postcss: 8.4.23 source-map: 0.6.1 - /@vue/compiler-ssr/3.2.45: - resolution: {integrity: sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==} - dependencies: - '@vue/compiler-dom': 3.2.45 - '@vue/shared': 3.2.45 - dev: true - - /@vue/compiler-ssr/3.2.47: + /@vue/compiler-ssr@3.2.47: resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==} dependencies: '@vue/compiler-dom': 3.2.47 '@vue/shared': 3.2.47 - /@vue/devtools-api/6.5.0: + /@vue/devtools-api@6.5.0: resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} dev: true - /@vue/reactivity-transform/3.2.45: - resolution: {integrity: sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==} - dependencies: - '@babel/parser': 7.21.2 - '@vue/compiler-core': 3.2.45 - '@vue/shared': 3.2.45 - estree-walker: 2.0.2 - magic-string: 0.25.9 - dev: true - - /@vue/reactivity-transform/3.2.47: + /@vue/reactivity-transform@3.2.47: resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} dependencies: '@babel/parser': 7.21.2 @@ -5303,56 +4862,25 @@ packages: estree-walker: 2.0.2 magic-string: 0.25.9 - /@vue/reactivity/3.2.45: - resolution: {integrity: sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==} - dependencies: - '@vue/shared': 3.2.45 - dev: true - - /@vue/reactivity/3.2.47: + /@vue/reactivity@3.2.47: resolution: {integrity: sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==} dependencies: '@vue/shared': 3.2.47 - /@vue/runtime-core/3.2.45: - resolution: {integrity: sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==} - dependencies: - '@vue/reactivity': 3.2.45 - '@vue/shared': 3.2.45 - dev: true - - /@vue/runtime-core/3.2.47: + /@vue/runtime-core@3.2.47: resolution: {integrity: sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==} dependencies: '@vue/reactivity': 3.2.47 '@vue/shared': 3.2.47 - /@vue/runtime-dom/3.2.45: - resolution: {integrity: sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==} - dependencies: - '@vue/runtime-core': 3.2.45 - '@vue/shared': 3.2.45 - csstype: 2.6.21 - dev: true - - /@vue/runtime-dom/3.2.47: + /@vue/runtime-dom@3.2.47: resolution: {integrity: sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==} dependencies: '@vue/runtime-core': 3.2.47 '@vue/shared': 3.2.47 csstype: 2.6.21 - /@vue/server-renderer/3.2.45_vue@3.2.45: - resolution: {integrity: sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==} - peerDependencies: - vue: 3.2.45 - dependencies: - '@vue/compiler-ssr': 3.2.45 - '@vue/shared': 3.2.45 - vue: 3.2.45 - dev: true - - /@vue/server-renderer/3.2.47_vue@3.2.47: + /@vue/server-renderer@3.2.47(vue@3.2.47): resolution: {integrity: sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==} peerDependencies: vue: 3.2.47 @@ -5361,92 +4889,46 @@ packages: '@vue/shared': 3.2.47 vue: 3.2.47 - /@vue/shared/3.2.45: - resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==} - dev: true - - /@vue/shared/3.2.47: + /@vue/shared@3.2.47: resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} - /@vueuse/core/9.12.0_vue@3.2.45: - resolution: {integrity: sha512-h/Di8Bvf6xRcvS/PvUVheiMYYz3U0tH3X25YxONSaAUBa841ayMwxkuzx/DGUMCW/wHWzD8tRy2zYmOC36r4sg==} + /@vueuse/core@10.1.0(vue@3.2.47): + resolution: {integrity: sha512-3Znoa5m5RO+z4/C9w6DRaKTR3wCVJvD5rav8HTDGsr+7rOZRHtcgFJ8NcCs0ZvIpmev2kExTa311ns5j2RbzDQ==} dependencies: '@types/web-bluetooth': 0.0.16 - '@vueuse/metadata': 9.12.0 - '@vueuse/shared': 9.12.0_vue@3.2.45 - vue-demi: 0.13.11_vue@3.2.45 + '@vueuse/metadata': 10.1.0 + '@vueuse/shared': 10.1.0(vue@3.2.47) + vue-demi: 0.14.0(vue@3.2.47) transitivePeerDependencies: - '@vue/composition-api' - vue - dev: true - /@vueuse/core/9.12.0_vue@3.2.47: - resolution: {integrity: sha512-h/Di8Bvf6xRcvS/PvUVheiMYYz3U0tH3X25YxONSaAUBa841ayMwxkuzx/DGUMCW/wHWzD8tRy2zYmOC36r4sg==} + /@vueuse/metadata@10.1.0: + resolution: {integrity: sha512-cM28HjDEw5FIrPE9rgSPFZvQ0ZYnOLAOr8hl1XM6tFl80U3WAR5ROdnAqiYybniwP5gt9MKKAJAqd/ab2aHkqg==} + + /@vueuse/shared@10.1.0(vue@3.2.47): + resolution: {integrity: sha512-2X52ogu12i9DkKOQ01yeb/BKg9UO87RNnpm5sXkQvyORlbq8ONS5l39MYkjkeVWWjdT0teJru7a2S41dmHmqjQ==} dependencies: - '@types/web-bluetooth': 0.0.16 - '@vueuse/metadata': 9.12.0 - '@vueuse/shared': 9.12.0_vue@3.2.47 - vue-demi: 0.13.11_vue@3.2.47 - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: false - - /@vueuse/core/9.13.0_vue@3.2.47: - resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} - dependencies: - '@types/web-bluetooth': 0.0.16 - '@vueuse/metadata': 9.13.0 - '@vueuse/shared': 9.13.0_vue@3.2.47 - vue-demi: 0.13.11_vue@3.2.47 + vue-demi: 0.14.0(vue@3.2.47) transitivePeerDependencies: - '@vue/composition-api' - vue - /@vueuse/metadata/9.12.0: - resolution: {integrity: sha512-9oJ9MM9lFLlmvxXUqsR1wLt1uF7EVbP5iYaHJYqk+G2PbMjY6EXvZeTjbdO89HgoF5cI6z49o2zT/jD9SVoNpQ==} - - /@vueuse/metadata/9.13.0: - resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} - - /@vueuse/shared/9.12.0_vue@3.2.45: - resolution: {integrity: sha512-TWuJLACQ0BVithVTRbex4Wf1a1VaRuSpVeyEd4vMUWl54PzlE0ciFUshKCXnlLuD0lxIaLK4Ypj3NXYzZh4+SQ==} - dependencies: - vue-demi: 0.13.11_vue@3.2.45 - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: true - - /@vueuse/shared/9.12.0_vue@3.2.47: - resolution: {integrity: sha512-TWuJLACQ0BVithVTRbex4Wf1a1VaRuSpVeyEd4vMUWl54PzlE0ciFUshKCXnlLuD0lxIaLK4Ypj3NXYzZh4+SQ==} - dependencies: - vue-demi: 0.13.11_vue@3.2.47 - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: false - - /@vueuse/shared/9.13.0_vue@3.2.47: - resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} - dependencies: - vue-demi: 0.13.11_vue@3.2.47 - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - /@wdio/config/7.16.11: - resolution: {integrity: sha512-sIk9FINQfXohuDONb8RA1uv+29XvUw6OBHfaaU7/c9gfKiOWiRczdfiLqfySZRwYgEgNhzCw5vHIogTry1h+xQ==} + /@wdio/config@7.30.0(typescript@5.0.4): + resolution: {integrity: sha512-/38rol9WCfFTMtXyd/C856/aexxIZnfVvXg7Fw2WXpqZ9qadLA+R4N35S2703n/RByjK/5XAYtHoljtvh3727w==} engines: {node: '>=12.0.0'} dependencies: - '@wdio/logger': 7.16.0 - '@wdio/types': 7.16.11 + '@wdio/logger': 7.26.0 + '@wdio/types': 7.26.0(typescript@5.0.4) + '@wdio/utils': 7.26.0(typescript@5.0.4) deepmerge: 4.2.2 - glob: 7.2.3 + glob: 8.0.3 + transitivePeerDependencies: + - typescript dev: true - /@wdio/logger/7.16.0: - resolution: {integrity: sha512-/6lOGb2Iow5eSsy7RJOl1kCwsP4eMlG+/QKro5zUJsuyNJSQXf2ejhpkzyKWLgQbHu83WX6cM1014AZuLkzoQg==} + /@wdio/logger@7.26.0: + resolution: {integrity: sha512-kQj9s5JudAG9qB+zAAcYGPHVfATl2oqKgqj47yjehOQ1zzG33xmtL1ArFbQKWhDG32y1A8sN6b0pIqBEIwgg8Q==} engines: {node: '>=12.0.0'} dependencies: chalk: 4.1.2 @@ -5455,48 +4937,56 @@ packages: strip-ansi: 6.0.1 dev: true - /@wdio/protocols/7.16.7: - resolution: {integrity: sha512-Wv40pNQcLiPzQ3o98Mv4A8T1EBQ6k4khglz/e2r16CTm+F3DDYh8eLMAsU5cgnmuwwDKX1EyOiFwieykBn5MCg==} + /@wdio/protocols@7.27.0: + resolution: {integrity: sha512-hT/U22R5i3HhwPjkaKAG0yd59eaOaZB0eibRj2+esCImkb5Y6rg8FirrlYRxIGFVBl0+xZV0jKHzR5+o097nvg==} engines: {node: '>=12.0.0'} dev: true - /@wdio/types/7.16.11: - resolution: {integrity: sha512-OFVTFEB6qdG84Y+cOWIacV0loGMgq2SF/rGGlGxai89V3UQxzCFTYVoAx6odAuSNZ37wmfWCykyAR/lAlMItoQ==} + /@wdio/types@7.26.0(typescript@5.0.4): + resolution: {integrity: sha512-mOTfWAGQ+iT58iaZhJMwlUkdEn3XEWE4jthysMLXFnSuZ2eaODVAiK31SmlS/eUqgSIaupeGqYUrtCuSNbLefg==} engines: {node: '>=12.0.0'} + peerDependencies: + typescript: ^4.6.2 + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@types/node': 16.11.59 + '@types/node': 18.16.0 got: 11.8.5 + typescript: 5.0.4 dev: true - /@wdio/utils/7.16.11: - resolution: {integrity: sha512-qeXHREZJ7mz3C2cWGOmFG6MS6njp1js4f8zca3iqxaorWshwkrlNsps3B1iTHfkvK6oWnmc2Q0o5CrtLZl0LkA==} + /@wdio/utils@7.26.0(typescript@5.0.4): + resolution: {integrity: sha512-pVq2MPXZAYLkKGKIIHktHejnHqg4TYKoNYSi2EDv+I3GlT8VZKXHazKhci82ov0tD+GdF27+s4DWNDCfGYfBdQ==} engines: {node: '>=12.0.0'} dependencies: - '@wdio/logger': 7.16.0 - '@wdio/types': 7.16.11 + '@wdio/logger': 7.26.0 + '@wdio/types': 7.26.0(typescript@5.0.4) p-iteration: 1.1.8 + transitivePeerDependencies: + - typescript dev: true - /@webassemblyjs/ast/1.11.1: + /@webassemblyjs/ast@1.11.1: resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} dependencies: '@webassemblyjs/helper-numbers': 1.11.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.1 dev: true - /@webassemblyjs/floating-point-hex-parser/1.11.1: + /@webassemblyjs/floating-point-hex-parser@1.11.1: resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} dev: true - /@webassemblyjs/helper-api-error/1.11.1: + /@webassemblyjs/helper-api-error@1.11.1: resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} dev: true - /@webassemblyjs/helper-buffer/1.11.1: + /@webassemblyjs/helper-buffer@1.11.1: resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} dev: true - /@webassemblyjs/helper-numbers/1.11.1: + /@webassemblyjs/helper-numbers@1.11.1: resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} dependencies: '@webassemblyjs/floating-point-hex-parser': 1.11.1 @@ -5504,11 +4994,11 @@ packages: '@xtuc/long': 4.2.2 dev: true - /@webassemblyjs/helper-wasm-bytecode/1.11.1: + /@webassemblyjs/helper-wasm-bytecode@1.11.1: resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} dev: true - /@webassemblyjs/helper-wasm-section/1.11.1: + /@webassemblyjs/helper-wasm-section@1.11.1: resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} dependencies: '@webassemblyjs/ast': 1.11.1 @@ -5517,23 +5007,23 @@ packages: '@webassemblyjs/wasm-gen': 1.11.1 dev: true - /@webassemblyjs/ieee754/1.11.1: + /@webassemblyjs/ieee754@1.11.1: resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} dependencies: '@xtuc/ieee754': 1.2.0 dev: true - /@webassemblyjs/leb128/1.11.1: + /@webassemblyjs/leb128@1.11.1: resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} dependencies: '@xtuc/long': 4.2.2 dev: true - /@webassemblyjs/utf8/1.11.1: + /@webassemblyjs/utf8@1.11.1: resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} dev: true - /@webassemblyjs/wasm-edit/1.11.1: + /@webassemblyjs/wasm-edit@1.11.1: resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} dependencies: '@webassemblyjs/ast': 1.11.1 @@ -5546,7 +5036,7 @@ packages: '@webassemblyjs/wast-printer': 1.11.1 dev: true - /@webassemblyjs/wasm-gen/1.11.1: + /@webassemblyjs/wasm-gen@1.11.1: resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} dependencies: '@webassemblyjs/ast': 1.11.1 @@ -5556,7 +5046,7 @@ packages: '@webassemblyjs/utf8': 1.11.1 dev: true - /@webassemblyjs/wasm-opt/1.11.1: + /@webassemblyjs/wasm-opt@1.11.1: resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} dependencies: '@webassemblyjs/ast': 1.11.1 @@ -5565,7 +5055,7 @@ packages: '@webassemblyjs/wasm-parser': 1.11.1 dev: true - /@webassemblyjs/wasm-parser/1.11.1: + /@webassemblyjs/wasm-parser@1.11.1: resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} dependencies: '@webassemblyjs/ast': 1.11.1 @@ -5576,33 +5066,33 @@ packages: '@webassemblyjs/utf8': 1.11.1 dev: true - /@webassemblyjs/wast-printer/1.11.1: + /@webassemblyjs/wast-printer@1.11.1: resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} dependencies: '@webassemblyjs/ast': 1.11.1 '@xtuc/long': 4.2.2 dev: true - /@webpack-cli/configtest/1.2.0_pda42hcaj7d62cr262fr632kue: + /@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.75.0): resolution: {integrity: sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==} peerDependencies: webpack: 4.x.x || 5.x.x webpack-cli: 4.x.x dependencies: - webpack: 5.75.0_webpack-cli@4.10.0 - webpack-cli: 4.10.0_uaydpeuxkjjcxdbyfgk36cjdxi + webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) dev: true - /@webpack-cli/info/1.5.0_webpack-cli@4.10.0: + /@webpack-cli/info@1.5.0(webpack-cli@4.10.0): resolution: {integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==} peerDependencies: webpack-cli: 4.x.x dependencies: envinfo: 7.8.1 - webpack-cli: 4.10.0_uaydpeuxkjjcxdbyfgk36cjdxi + webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) dev: true - /@webpack-cli/serve/1.7.0_ud4agclah7rahur6ntojouq57y: + /@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)(webpack-dev-server@4.11.1): resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==} peerDependencies: webpack-cli: 4.x.x @@ -5611,24 +5101,24 @@ packages: webpack-dev-server: optional: true dependencies: - webpack-cli: 4.10.0_uaydpeuxkjjcxdbyfgk36cjdxi - webpack-dev-server: 4.11.1_pda42hcaj7d62cr262fr632kue + webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) + webpack-dev-server: 4.11.1(webpack-cli@4.10.0)(webpack@5.75.0) dev: true - /@xtuc/ieee754/1.2.0: + /@xtuc/ieee754@1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} dev: true - /@xtuc/long/4.2.2: + /@xtuc/long@4.2.2: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} dev: true - /JSONSelect/0.4.0: + /JSONSelect@0.4.0: resolution: {integrity: sha512-VRLR3Su35MH+XV2lrvh9O7qWoug/TUyj9tLDjn9rtpUCNnILLrHjgd/tB0KrhugCxUpj3UqoLqfYb3fLJdIQQQ==} engines: {node: '>=0.4.7'} dev: true - /JSONStream/1.3.5: + /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true dependencies: @@ -5636,22 +5126,26 @@ packages: through: 2.3.8 dev: true - /JSV/4.0.2: + /JSV@4.0.2: resolution: {integrity: sha512-ZJ6wx9xaKJ3yFUhq5/sk82PJMuUyLk277I8mQeyDgCTjGdjWJIvPfaU5LIXaMuaN2UO1X3kZH4+lgphublZUHw==} dev: true - /abab/2.0.6: + /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: true - /abort-controller/3.0.0: + /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 dev: true - /accepts/1.3.8: + /abstract-logging@2.0.1: + resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} + dev: true + + /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} dependencies: @@ -5659,21 +5153,21 @@ packages: negotiator: 0.6.3 dev: true - /acorn-globals/6.0.0: + /acorn-globals@6.0.0: resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} dependencies: acorn: 7.4.1 acorn-walk: 7.2.0 dev: true - /acorn-globals/7.0.1: + /acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: - acorn: 8.8.1 + acorn: 8.8.2 acorn-walk: 8.2.0 dev: true - /acorn-import-assertions/1.8.0_acorn@8.8.0: + /acorn-import-assertions@1.8.0(acorn@8.8.0): resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} peerDependencies: acorn: ^8 @@ -5681,58 +5175,52 @@ packages: acorn: 8.8.0 dev: true - /acorn-jsx/5.3.2_acorn@8.8.1: + /acorn-jsx@5.3.2(acorn@8.8.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.8.1 + acorn: 8.8.2 dev: true - /acorn-walk/7.2.0: + /acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} dev: true - /acorn-walk/8.2.0: + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} dev: true - /acorn/7.4.1: + /acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /acorn/8.8.0: + /acorn@8.8.0: resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /acorn/8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /acorn/8.8.2: + /acorn@8.8.2: resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /agent-base/6.0.2: + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: true - /aggregate-error/3.1.0: + /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} dependencies: @@ -5740,7 +5228,7 @@ packages: indent-string: 4.0.0 dev: true - /aggregate-error/4.0.1: + /aggregate-error@4.0.1: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} engines: {node: '>=12'} dependencies: @@ -5748,7 +5236,7 @@ packages: indent-string: 5.0.0 dev: true - /ajv-formats/2.1.1_ajv@8.11.0: + /ajv-formats@2.1.1(ajv@8.11.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: ajv: ^8.0.0 @@ -5759,7 +5247,7 @@ packages: ajv: 8.11.0 dev: true - /ajv-keywords/3.5.2_ajv@6.12.6: + /ajv-keywords@3.5.2(ajv@6.12.6): resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: ajv: ^6.9.1 @@ -5767,7 +5255,7 @@ packages: ajv: 6.12.6 dev: true - /ajv-keywords/5.1.0_ajv@8.11.0: + /ajv-keywords@5.1.0(ajv@8.11.0): resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} peerDependencies: ajv: ^8.8.2 @@ -5776,7 +5264,7 @@ packages: fast-deep-equal: 3.1.3 dev: true - /ajv/6.12.6: + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 @@ -5785,7 +5273,7 @@ packages: uri-js: 4.4.1 dev: true - /ajv/8.11.0: + /ajv@8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} dependencies: fast-deep-equal: 3.1.3 @@ -5794,7 +5282,7 @@ packages: uri-js: 4.4.1 dev: true - /algoliasearch/4.14.2: + /algoliasearch@4.14.2: resolution: {integrity: sha512-ngbEQonGEmf8dyEh5f+uOIihv4176dgbuOZspiuhmTTBRBuzWu3KCGHre6uHj5YyuC7pNvQGzB6ZNJyZi0z+Sg==} dependencies: '@algolia/cache-browser-local-storage': 4.14.2 @@ -5813,79 +5301,85 @@ packages: '@algolia/transporter': 4.14.2 dev: true - /amdefine/1.0.1: + /amdefine@1.0.1: resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} engines: {node: '>=0.4.2'} dev: true optional: true - /ansi-colors/4.1.3: + /ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + dependencies: + string-width: 4.2.3 + dev: true + + /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} dev: true - /ansi-escapes/4.3.2: + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 dev: true - /ansi-html-community/0.0.8: + /ansi-html-community@0.0.8: resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} engines: {'0': node >= 0.8.0} hasBin: true dev: true - /ansi-regex/2.1.1: + /ansi-regex@2.1.1: resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} dev: true - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: true - /ansi-regex/6.0.1: + /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} dev: true - /ansi-sequence-parser/1.1.0: + /ansi-sequence-parser@1.1.0: resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} dev: true - /ansi-styles/2.2.1: + /ansi-styles@2.2.1: resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} engines: {node: '>=0.10.0'} dev: true - /ansi-styles/3.2.1: + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 dev: true - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 dev: true - /ansi-styles/5.2.0: + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} dev: true - /ansi-styles/6.1.1: + /ansi-styles@6.1.1: resolution: {integrity: sha512-qDOv24WjnYuL+wbwHdlsYZFy+cgPtrYw0Tn7GLORicQp9BkQLzrgI3Pm4VyR9ERZ41YTn7KlMPuL1n05WdZvmg==} engines: {node: '>=12'} dev: true - /anymatch/3.1.2: + /anymatch@3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} dependencies: @@ -5893,151 +5387,168 @@ packages: picomatch: 2.3.1 dev: true - /app-path/3.3.0: + /app-path@3.3.0: resolution: {integrity: sha512-EAgEXkdcxH1cgEePOSsmUtw9ItPl0KTxnh/pj9ZbhvbKbij9x0oX6PWpGnorDr0DS5AosLgoa5n3T/hZmKQpYA==} engines: {node: '>=8'} dependencies: execa: 1.0.0 dev: true - /appdata-path/1.0.0: + /appdata-path@1.0.0: resolution: {integrity: sha512-ZbH3ezXfnT/YE3NdqduIt4lBV+H0ybvA2Qx3K76gIjQvh8gROpDFdDLpx6B1QJtW7zxisCbpTlCLhKqoR8cDBw==} dev: true - /arch/2.2.0: + /arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true - /arg/4.1.3: + /archy@1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + dev: true + + /are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} + dev: true + + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true - /arg/5.0.2: + /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true - /argparse/1.0.10: + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 dev: true - /argparse/2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /array-flatten/1.1.1: + /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: true - /array-flatten/2.1.2: + /array-flatten@2.1.2: resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} dev: true - /array-ify/1.0.0: + /array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true - /array-timsort/1.0.3: + /array-timsort@1.0.3: resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} dev: true - /array-union/2.1.0: + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: true - /arrify/1.0.1: + /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} dev: true - /arrify/3.0.0: + /arrify@3.0.0: resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} engines: {node: '>=12'} dev: true - /asn1/0.2.6: + /asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} dependencies: safer-buffer: 2.1.2 dev: true - /assert-plus/1.0.0: + /assert-plus@1.0.0: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} dev: true - /assertion-error/1.1.0: + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /ast-types/0.13.4: + /ast-types@0.13.4: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} dependencies: - tslib: 2.4.0 + tslib: 2.5.0 dev: true - /astral-regex/2.0.0: + /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} dev: true - /async/3.2.4: + /async@3.2.4: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} dev: true - /asynckit/0.4.0: + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /at-least-node/1.0.0: + /at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} dev: true - /available-typed-arrays/1.0.5: + /atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + dev: true + + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} dev: true - /aws-sign2/0.7.0: + /avvio@7.2.5: + resolution: {integrity: sha512-AOhBxyLVdpOad3TujtC9kL/9r3HnTkxwQ5ggOsYrvvZP1cCFvzHWJd5XxZDFuTn+IN8vkKSG5SEJrd27vCSbeA==} + dependencies: + archy: 1.0.0 + debug: 4.3.4(supports-color@8.1.1) + fastq: 1.13.0 + queue-microtask: 1.2.3 + transitivePeerDependencies: + - supports-color + dev: true + + /aws-sign2@0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} dev: true - /aws4/1.11.0: + /aws4@1.11.0: resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} dev: true - /axios/0.21.4_debug@4.3.2: - resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} - dependencies: - follow-redirects: 1.15.2_debug@4.3.4 - transitivePeerDependencies: - - debug - dev: true - - /axios/0.27.2_debug@4.3.4: + /axios@0.27.2(debug@4.3.4): resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} dependencies: - follow-redirects: 1.15.2_debug@4.3.4 + follow-redirects: 1.15.2(debug@4.3.4) form-data: 4.0.0 transitivePeerDependencies: - debug dev: true - /babel-jest/29.3.1_@babel+core@7.12.3: - resolution: {integrity: sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==} + /babel-jest@29.5.0(@babel/core@7.12.3): + resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: '@babel/core': 7.12.3 - '@jest/transform': 29.3.1 + '@jest/transform': 29.5.0 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.2.0_@babel+core@7.12.3 + babel-preset-jest: 29.5.0(@babel/core@7.12.3) chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -6045,11 +5556,11 @@ packages: - supports-color dev: true - /babel-plugin-istanbul/6.1.1: + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.0 @@ -6058,123 +5569,138 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist/29.2.0: - resolution: {integrity: sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==} + /babel-plugin-jest-hoist@29.5.0: + resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.18.10 + '@babel/template': 7.20.7 '@babel/types': 7.21.2 '@types/babel__core': 7.1.19 '@types/babel__traverse': 7.18.2 dev: true - /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.12.3: + /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.12.3): resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.21.0 '@babel/core': 7.12.3 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.12.3 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.12.3) semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.12.3: + /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.12.3): resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.12.3 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.12.3) core-js-compat: 3.28.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.12.3: + /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.12.3): resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.12.3 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.12.3 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.12.3) transitivePeerDependencies: - supports-color dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.12.3: + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.12.3): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.12.3 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.3 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.12.3 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.12.3 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.3 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.3 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.3 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.12.3 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.12.3) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.12.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.12.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.12.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.12.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.12.3) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.12.3) dev: true - /babel-preset-jest/29.2.0_@babel+core@7.12.3: - resolution: {integrity: sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==} + /babel-preset-jest@29.5.0(@babel/core@7.12.3): + resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.12.3 - babel-plugin-jest-hoist: 29.2.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.12.3 + babel-plugin-jest-hoist: 29.5.0 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.12.3) dev: true - /bail/2.0.2: + /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} dev: true - /balanced-match/1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /base64-js/1.5.1: + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: true - /batch/0.6.1: + /batch@0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} dev: true - /bcrypt-pbkdf/1.0.2: + /bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} dependencies: tweetnacl: 0.14.5 dev: true - /binary-extensions/2.2.0: + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} dev: true - /binary-searching/2.0.5: + /binary-searching@2.0.5: resolution: {integrity: sha512-v4N2l3RxL+m4zDxyxz3Ne2aTmiPn8ZUpKFpdPtO+ItW1NcTCXA7JeHG5GMBSvoKSkQZ9ycS+EouDVxYB9ufKWA==} dev: true - /blob-util/2.0.2: + /binary@0.3.0: + resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==} + dependencies: + buffers: 0.1.1 + chainsaw: 0.1.0 + dev: true + + /blob-util@2.0.2: resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} dev: true - /bluebird/3.7.2: + /bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} dev: true - /body-parser/1.20.1: + /blueimp-md5@2.19.0: + resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} + dev: true + + /bmpimagejs@1.0.4: + resolution: {integrity: sha512-21oKU7kbRt2OgOOj7rdiNr/yznDNUQ585plxR00rsmECcZr+6O1oCwB8OIoSHk/bDhbG8mFXIdeQuCPHgZ6QBw==} + dev: true + + /body-parser@1.20.1: resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: @@ -6194,11 +5720,11 @@ packages: - supports-color dev: true - /body-scroll-lock/4.0.0-beta.0: + /body-scroll-lock@4.0.0-beta.0: resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} dev: true - /bonjour-service/1.0.14: + /bonjour-service@1.0.14: resolution: {integrity: sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==} dependencies: array-flatten: 2.1.2 @@ -6207,31 +5733,45 @@ packages: multicast-dns: 7.2.5 dev: true - /brace-expansion/1.1.11: + /boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + dev: true + + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: true - /brace-expansion/2.0.1: + /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 dev: true - /braces/3.0.2: + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 dev: true - /browser-process-hrtime/1.0.0: + /browser-process-hrtime@1.0.0: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} dev: true - /browserslist/4.21.4: + /browserslist@4.21.4: resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -6239,10 +5779,10 @@ packages: caniuse-lite: 1.0.30001431 electron-to-chromium: 1.4.284 node-releases: 2.0.6 - update-browserslist-db: 1.0.10_browserslist@4.21.4 + update-browserslist-db: 1.0.10(browserslist@4.21.4) dev: true - /browserslist/4.21.5: + /browserslist@4.21.5: resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -6250,54 +5790,59 @@ packages: caniuse-lite: 1.0.30001457 electron-to-chromium: 1.4.284 node-releases: 2.0.10 - update-browserslist-db: 1.0.10_browserslist@4.21.5 + update-browserslist-db: 1.0.10(browserslist@4.21.5) dev: true - /bser/2.1.1: + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 dev: true - /buffer-crc32/0.2.13: + /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} dev: true - /buffer-from/1.1.2: + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /buffer/5.7.1: + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: true - /builtin-modules/3.3.0: + /buffers@0.1.1: + resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==} + engines: {node: '>=0.2.0'} + dev: true + + /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} dev: true - /busboy/1.6.0: + /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 dev: true - /bytes/3.0.0: + /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} dev: true - /bytes/3.1.2: + /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} dev: true - /c8/7.12.0: - resolution: {integrity: sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==} + /c8@7.13.0: + resolution: {integrity: sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==} engines: {node: '>=10.12.0'} hasBin: true dependencies: @@ -6315,17 +5860,17 @@ packages: yargs-parser: 20.2.9 dev: true - /cac/6.7.14: + /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} dev: true - /cacheable-lookup/5.0.4: + /cacheable-lookup@5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} dev: true - /cacheable-request/7.0.2: + /cacheable-request@7.0.2: resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==} engines: {node: '>=8'} dependencies: @@ -6338,24 +5883,24 @@ packages: responselike: 2.0.1 dev: true - /cachedir/2.3.0: + /cachedir@2.3.0: resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} engines: {node: '>=6'} dev: true - /call-bind/1.0.2: + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.2.0 dev: true - /callsites/3.1.0: + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true - /camelcase-keys/6.2.2: + /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} dependencies: @@ -6364,7 +5909,7 @@ packages: quick-lru: 4.0.1 dev: true - /camelcase-keys/7.0.2: + /camelcase-keys@7.0.2: resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} engines: {node: '>=12'} dependencies: @@ -6374,33 +5919,33 @@ packages: type-fest: 1.4.0 dev: true - /camelcase/5.3.1: + /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} dev: true - /camelcase/6.3.0: + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001431: + /caniuse-lite@1.0.30001431: resolution: {integrity: sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==} dev: true - /caniuse-lite/1.0.30001457: + /caniuse-lite@1.0.30001457: resolution: {integrity: sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA==} dev: true - /caseless/0.12.0: + /caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} dev: true - /ccount/2.0.1: + /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: true - /chai/4.3.7: + /chai@4.3.7: resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} dependencies: @@ -6413,7 +5958,13 @@ packages: type-detect: 4.0.8 dev: true - /chalk/1.1.3: + /chainsaw@0.1.0: + resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} + dependencies: + traverse: 0.3.9 + dev: true + + /chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} engines: {node: '>=0.10.0'} dependencies: @@ -6424,7 +5975,7 @@ packages: supports-color: 2.0.0 dev: true - /chalk/2.4.2: + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: @@ -6433,7 +5984,7 @@ packages: supports-color: 5.5.0 dev: true - /chalk/3.0.0: + /chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} dependencies: @@ -6441,7 +5992,7 @@ packages: supports-color: 7.2.0 dev: true - /chalk/4.1.2: + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: @@ -6449,37 +6000,42 @@ packages: supports-color: 7.2.0 dev: true - /char-regex/1.0.2: + /chalk@5.2.0: + resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} dev: true - /character-entities-legacy/1.1.4: + /character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} dev: true - /character-entities/1.2.4: + /character-entities@1.2.4: resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} dev: true - /character-entities/2.0.2: + /character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} dev: true - /character-reference-invalid/1.1.4: + /character-reference-invalid@1.1.4: resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} dev: true - /check-error/1.0.2: + /check-error@1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true - /check-more-types/2.24.0: + /check-more-types@2.24.0: resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} engines: {node: '>= 0.8.0'} dev: true - /chokidar/3.5.3: + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: @@ -6494,47 +6050,54 @@ packages: fsevents: 2.3.2 dev: true - /chrome-trace-event/1.0.3: + /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} dev: true - /ci-info/3.6.2: + /ci-info@3.6.2: resolution: {integrity: sha512-lVZdhvbEudris15CLytp2u6Y0p5EKfztae9Fqa189MfNmln9F33XuH69v5fvNfiRN5/0eAUz2yJL3mo+nhaRKg==} engines: {node: '>=8'} dev: true - /cjs-module-lexer/1.2.2: + /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true - /cjson/0.3.0: + /cjson@0.3.0: resolution: {integrity: sha512-bBRQcCIHzI1IVH59fR0bwGrFmi3Btb/JNwM/n401i1DnYgWndpsUBiQRAddLflkZage20A2d25OAWZZk0vBRlA==} engines: {node: '>= 0.3.0'} dependencies: jsonlint: 1.6.0 dev: true - /clean-regexp/1.0.0: + /clap@3.1.1: + resolution: {integrity: sha512-vp42956Ax06WwaaheYEqEOgXZ3VKJxgccZ0gJL0HpyiupkIS9RVJFo5eDU1BPeQAOqz+cclndZg4DCqG1sJReQ==} + engines: {node: ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + dependencies: + ansi-colors: 4.1.3 + dev: true + + /clean-regexp@1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} dependencies: escape-string-regexp: 1.0.5 dev: true - /clean-stack/2.2.0: + /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} dev: true - /clean-stack/4.2.0: + /clean-stack@4.2.0: resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} engines: {node: '>=12'} dependencies: escape-string-regexp: 5.0.0 dev: true - /clear-module/4.1.2: + /clear-module@4.1.2: resolution: {integrity: sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==} engines: {node: '>=8'} dependencies: @@ -6542,14 +6105,19 @@ packages: resolve-from: 5.0.0 dev: true - /cli-cursor/3.1.0: + /cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + dev: true + + /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 dev: true - /cli-table3/0.6.3: + /cli-table3@0.6.3: resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} engines: {node: 10.* || >= 12.*} dependencies: @@ -6558,7 +6126,7 @@ packages: '@colors/colors': 1.5.0 dev: true - /cli-truncate/2.1.0: + /cli-truncate@2.1.0: resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} engines: {node: '>=8'} dependencies: @@ -6566,7 +6134,7 @@ packages: string-width: 4.2.3 dev: true - /cli-truncate/3.1.0: + /cli-truncate@3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -6574,7 +6142,7 @@ packages: string-width: 5.1.2 dev: true - /cliui/7.0.4: + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 @@ -6582,7 +6150,16 @@ packages: wrap-ansi: 7.0.0 dev: true - /clone-deep/4.0.1: + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} dependencies: @@ -6591,82 +6168,82 @@ packages: shallow-clone: 3.0.1 dev: true - /clone-response/1.0.3: + /clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} dependencies: mimic-response: 1.0.1 dev: true - /co/4.6.0: + /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true - /collect-v8-coverage/1.0.1: + /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} dev: true - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 dev: true - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 dev: true - /color-name/1.1.3: + /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: true - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true - /colorette/2.0.19: + /colorette@2.0.19: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} dev: true - /colors/0.5.1: + /colors@0.5.1: resolution: {integrity: sha512-XjsuUwpDeY98+yz959OlUK6m7mLBM+1MEG5oaenfuQnNnrQk1WvtcvFgN3FNDP3f2NmZ211t0mNEfSEN1h0eIg==} engines: {node: '>=0.1.90'} dev: true - /combined-stream/1.0.8: + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 dev: true - /commander/2.20.3: + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: true + + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true - /commander/5.1.0: + /commander@5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} dev: true - /commander/7.2.0: + /commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + dev: true + + /commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} - /commander/9.4.0: - resolution: {integrity: sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==} - engines: {node: ^12.20.0 || >=14} - dev: true - - /commander/9.4.1: - resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} - engines: {node: ^12.20.0 || >=14} - dev: true - - /comment-json/4.2.3: + /comment-json@4.2.3: resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} engines: {node: '>= 6'} dependencies: @@ -6677,31 +6254,31 @@ packages: repeat-string: 1.6.1 dev: true - /comment-parser/1.3.1: + /comment-parser@1.3.1: resolution: {integrity: sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==} engines: {node: '>= 12.0.0'} dev: true - /common-tags/1.8.2: + /common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} dev: true - /compare-func/2.0.0: + /compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} dependencies: array-ify: 1.0.0 dot-prop: 5.3.0 dev: true - /compressible/2.0.18: + /compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: true - /compression/1.7.4: + /compression@1.7.4: resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -6716,27 +6293,41 @@ packages: - supports-color dev: true - /concat-map/0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /concurrently/7.5.0: - resolution: {integrity: sha512-5E3mwiS+i2JYBzr5BpXkFxOnleZTMsG+WnE/dCG4/P+oiVXrbmrBwJ2ozn4SxwB2EZDrKR568X+puVohxz3/Mg==} - engines: {node: ^12.20.0 || ^14.13.0 || >=16.0.0} + /concordance@5.0.4: + resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} + engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} + dependencies: + date-time: 3.1.0 + esutils: 2.0.3 + fast-diff: 1.2.0 + js-string-escape: 1.0.1 + lodash: 4.17.21 + md5-hex: 3.0.1 + semver: 7.5.0 + well-known-symbols: 2.0.0 + dev: true + + /concurrently@8.0.1: + resolution: {integrity: sha512-Sh8bGQMEL0TAmAm2meAXMjcASHZa7V0xXQVDBLknCPa9TPtkY9yYs+0cnGGgfdkW0SV1Mlg+hVGfXcoI8d3MJA==} + engines: {node: ^14.13.0 || >=16.0.0} hasBin: true dependencies: chalk: 4.1.2 date-fns: 2.29.3 lodash: 4.17.21 - rxjs: 7.5.6 - shell-quote: 1.7.3 + rxjs: 7.8.0 + shell-quote: 1.8.1 spawn-command: 0.0.2-1 supports-color: 8.1.1 tree-kill: 1.2.2 - yargs: 17.5.1 + yargs: 17.7.2 dev: true - /configstore/5.0.1: + /configstore@5.0.1: resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} engines: {node: '>=8'} dependencies: @@ -6748,28 +6339,28 @@ packages: xdg-basedir: 4.0.0 dev: true - /connect-history-api-fallback/2.0.0: + /connect-history-api-fallback@2.0.0: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} dev: true - /consola/2.15.3: - resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + /consola@3.1.0: + resolution: {integrity: sha512-rrrJE6rP0qzl/Srg+C9x/AE5Kxfux7reVm1Wh0wCjuXvih6DqZgqDZe8auTD28fzJ9TF0mHlSDrPpWlujQRo1Q==} dev: true - /content-disposition/0.5.4: + /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} dependencies: safe-buffer: 5.2.1 dev: true - /content-type/1.0.4: + /content-type@1.0.4: resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} engines: {node: '>= 0.6'} dev: true - /conventional-changelog-angular/5.0.13: + /conventional-changelog-angular@5.0.13: resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} engines: {node: '>=10'} dependencies: @@ -6777,7 +6368,7 @@ packages: q: 1.5.1 dev: true - /conventional-changelog-conventionalcommits/5.0.0: + /conventional-changelog-conventionalcommits@5.0.0: resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==} engines: {node: '>=10'} dependencies: @@ -6786,7 +6377,7 @@ packages: q: 1.5.1 dev: true - /conventional-commits-parser/3.2.4: + /conventional-commits-parser@3.2.4: resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==} engines: {node: '>=10'} hasBin: true @@ -6799,40 +6390,40 @@ packages: through2: 4.0.2 dev: true - /convert-source-map/1.8.0: + /convert-source-map@1.8.0: resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} dependencies: safe-buffer: 5.1.2 dev: true - /convert-source-map/2.0.0: + /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true - /cookie-signature/1.0.6: + /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: true - /cookie/0.5.0: + /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} dev: true - /core-js-compat/3.28.0: + /core-js-compat@3.28.0: resolution: {integrity: sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg==} dependencies: browserslist: 4.21.5 dev: true - /core-util-is/1.0.2: + /core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} dev: true - /core-util-is/1.0.3: + /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cors/2.8.5: + /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} dependencies: @@ -6840,19 +6431,19 @@ packages: vary: 1.1.2 dev: true - /cose-base/1.0.3: + /cose-base@1.0.3: resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} dependencies: layout-base: 1.0.2 dev: false - /cose-base/2.1.0: + /cose-base@2.1.0: resolution: {integrity: sha512-HTMm07dhxq1dIPGWwpiVrIk9n+DH7KYmqWA786mLe8jDS+1ZjGtJGIIsJVKoseZXS6/FxiUWCJ2B7XzqUCuhPw==} dependencies: layout-base: 2.0.1 dev: false - /cosmiconfig-typescript-loader/4.1.0_2uclxasecupgvdn72amnhmyg7y: + /cosmiconfig-typescript-loader@4.1.0(@types/node@18.16.0)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-HbWIuR5O+XO5Oj9SZ5bzgrD4nN+rfhrm2PMb0FVx+t+XIvC45n8F0oTNnztXtspWGw0i2IzHaUWFD5LzV1JB4A==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -6861,35 +6452,23 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 14.18.29 - cosmiconfig: 7.0.1 - ts-node: 10.9.1_yxpazyh7n5pql7jdaglasgwqki - typescript: 4.9.5 + '@types/node': 18.16.0 + cosmiconfig: 8.0.0 + ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) + typescript: 5.0.4 dev: true - /cosmiconfig/7.0.1: - resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} - engines: {node: '>=10'} + /cosmiconfig@8.0.0: + resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} + engines: {node: '>=14'} dependencies: - '@types/parse-json': 4.0.0 import-fresh: 3.3.0 + js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - yaml: 1.10.2 dev: true - /cosmiconfig/7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - dependencies: - '@types/parse-json': 4.0.0 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - dev: true - - /coveralls/3.1.1: + /coveralls@3.1.1: resolution: {integrity: sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==} engines: {node: '>=6'} hasBin: true @@ -6901,7 +6480,7 @@ packages: request: 2.88.2 dev: true - /cp-file/9.1.0: + /cp-file@9.1.0: resolution: {integrity: sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA==} engines: {node: '>=10'} dependencies: @@ -6911,7 +6490,7 @@ packages: p-event: 4.2.0 dev: true - /cpy-cli/4.2.0: + /cpy-cli@4.2.0: resolution: {integrity: sha512-b04b+cbdr29CdpREPKw/itrfjO43Ty0Aj7wRM6M6LoE4GJxZJCk9Xp+Eu1IqztkKh3LxIBt1tDplENsa6KYprg==} engines: {node: '>=12.20'} hasBin: true @@ -6920,13 +6499,13 @@ packages: meow: 10.1.5 dev: true - /cpy/9.0.1: + /cpy@9.0.1: resolution: {integrity: sha512-D9U0DR5FjTCN3oMTcFGktanHnAG5l020yvOCR1zKILmAyPP7I/9pl6NFgRbDcmSENtbK1sQLBz1p9HIOlroiNg==} engines: {node: ^12.20.0 || ^14.17.0 || >=16.0.0} dependencies: arrify: 3.0.0 cp-file: 9.1.0 - globby: 13.1.2 + globby: 13.1.4 junk: 4.0.0 micromatch: 4.0.5 nested-error-stacks: 2.1.1 @@ -6934,11 +6513,11 @@ packages: p-map: 5.5.0 dev: true - /create-require/1.1.1: + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true - /cross-spawn/6.0.5: + /cross-spawn@6.0.5: resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} engines: {node: '>=4.8'} dependencies: @@ -6949,7 +6528,7 @@ packages: which: 1.3.1 dev: true - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -6958,207 +6537,121 @@ packages: which: 2.0.2 dev: true - /crypto-random-string/2.0.0: + /crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} dev: true - /cspell-dictionary/6.14.2: - resolution: {integrity: sha512-j2+uZRru3xFtW7VUOoJCrlXta1DBiPq44yGjN/Npc0wtR/aWA/NOdRysap3jWhBS1t43CiA5fqXyMO7d4wDqxw==} + /cspell-dictionary@6.31.1: + resolution: {integrity: sha512-7+K7aQGarqbpucky26wled7QSCJeg6VkLUWS+hLjyf0Cqc9Zew5xsLa4QjReExWUJx+a97jbiflITZNuWxgMrg==} engines: {node: '>=14'} dependencies: - '@cspell/cspell-pipe': 6.14.2 - '@cspell/cspell-types': 6.14.2 - cspell-trie-lib: 6.14.2 + '@cspell/cspell-pipe': 6.31.1 + '@cspell/cspell-types': 6.31.1 + cspell-trie-lib: 6.31.1 fast-equals: 4.0.3 - gensequence: 4.0.2 + gensequence: 5.0.2 dev: true - /cspell-dictionary/6.14.3: - resolution: {integrity: sha512-yIqJEZZj36j1CmmjAiuQOYZM6T62Ih7k35DhAU1hYVARUEEnFN/Uz72UkDj2SAmURVn2On+bAmZ5zCx0JZzf2g==} - engines: {node: '>=14'} - dependencies: - '@cspell/cspell-pipe': 6.14.3 - '@cspell/cspell-types': 6.14.3 - cspell-trie-lib: 6.14.3 - fast-equals: 4.0.3 - gensequence: 4.0.2 - dev: true - - /cspell-gitignore/6.14.3: - resolution: {integrity: sha512-CZTGxx3msF6p1Z0xgLe5LXXvve7DooSuRMBMdGn230usce1nKoxpPoPxgs+zXeCpi+FanykKnoZkdRvjolMpOA==} + /cspell-gitignore@6.31.1: + resolution: {integrity: sha512-PAcmjN6X89Z8qgjem6HYb+VmvVtKuc+fWs4sk21+jv2MiLk23Bkp+8slSaIDVR//58fxJkMx17PHyo2cDO/69A==} engines: {node: '>=14'} hasBin: true dependencies: - cspell-glob: 6.14.3 + cspell-glob: 6.31.1 find-up: 5.0.0 dev: true - /cspell-glob/6.14.2: - resolution: {integrity: sha512-a9o3lBccEcH2676RGge2YqEORovm+II++D53P6hOW/23ltDe1J509MSY6CJdYdPk/VssOExas6akJ6FbKSCBgw==} + /cspell-glob@6.31.1: + resolution: {integrity: sha512-ygEmr5hgE4QtO5+L3/ihfMKBhPipbapfS22ilksFSChKMc15Regds0z+z/1ZBoe+OFAPneQfIuBxMwQ/fB00GQ==} engines: {node: '>=14'} dependencies: micromatch: 4.0.5 dev: true - /cspell-glob/6.14.3: - resolution: {integrity: sha512-ISwCK8GqM/dnvtaxA17w1MPmMzFLOqdTz+JWIcR4at47T9qd8bNB0X0P4eqyuqgsbKkWbfnSlsYlEjRHTi4a7A==} - engines: {node: '>=14'} - dependencies: - micromatch: 4.0.5 - dev: true - - /cspell-grammar/6.14.2: - resolution: {integrity: sha512-Q9+gwp1U/qnECTqxa7WBMPn6sgBfXPIM68jXg8RgNMAuy1CE+m1eTCM9FBNFNpNKJWjaZPvANLOW5/EStN2A/A==} + /cspell-grammar@6.31.1: + resolution: {integrity: sha512-AsRVP0idcNFVSb9+p9XjMumFj3BUV67WIPWApaAzJl/dYyiIygQObRE+si0/QtFWGNw873b7hNhWZiKjqIdoaQ==} engines: {node: '>=14'} hasBin: true dependencies: - '@cspell/cspell-pipe': 6.14.2 - '@cspell/cspell-types': 6.14.2 + '@cspell/cspell-pipe': 6.31.1 + '@cspell/cspell-types': 6.31.1 dev: true - /cspell-grammar/6.14.3: - resolution: {integrity: sha512-Nz8tYUmstyKcFlXbxdw4N8NsQ2ZY/5ztNfouokk47LKaTAS0LyWlLSkZUxN016fMY2h+C+3dI+jaut2H/rtNew==} - engines: {node: '>=14'} - hasBin: true - dependencies: - '@cspell/cspell-pipe': 6.14.3 - '@cspell/cspell-types': 6.14.3 - dev: true - - /cspell-io/6.14.2: - resolution: {integrity: sha512-QyQ0BBfDvF6B37SlSsmlzRnaGqiIHt7c5NsCNKf3ZfioTWkNI/fiabvSkpNGBAkELP6BPBxjsG+TaS+swZp+Kg==} + /cspell-io@6.31.1: + resolution: {integrity: sha512-deZcpvTYY/NmLfOdOtzcm+nDvJZozKmj4TY3pPpX0HquPX0A/w42bFRT/zZNmRslFl8vvrCZZUog7SOc6ha3uA==} engines: {node: '>=14'} dependencies: - '@cspell/cspell-service-bus': 6.14.2 - node-fetch: 2.6.7 + '@cspell/cspell-service-bus': 6.31.1 + node-fetch: 2.6.9(encoding@0.1.13) transitivePeerDependencies: - encoding dev: true - /cspell-io/6.14.3: - resolution: {integrity: sha512-EbH+qopgWIzr9SZCGDsF4AWYgucN4QzYeAgyXjTbV9RnNIGKOKovMe3vN9nxjOZyPKv2TvmgU+uMXDM61iObRw==} - engines: {node: '>=14'} - dependencies: - '@cspell/cspell-service-bus': 6.14.3 - node-fetch: 2.6.7 - transitivePeerDependencies: - - encoding - dev: true - - /cspell-lib/6.14.2: - resolution: {integrity: sha512-QNsmWix0oFi1CjzFfNG1xAJVl1OC+6kiWvq0A1S8VD3LJhJVvBqSv1vudpL1oS7H2/2yxk9PUC/MajGLi5i5MQ==} + /cspell-lib@6.31.1: + resolution: {integrity: sha512-KgSiulbLExY+z2jGwkO77+aAkyugsPAw7y07j3hTQLpd+0esPCZqrmbo2ItnkvkDNd/c34PqQCr7/044/rz8gw==} engines: {node: '>=14.6'} dependencies: - '@cspell/cspell-bundled-dicts': 6.14.2 - '@cspell/cspell-pipe': 6.14.2 - '@cspell/cspell-types': 6.14.2 - '@cspell/strong-weak-map': 6.14.2 + '@cspell/cspell-bundled-dicts': 6.31.1 + '@cspell/cspell-pipe': 6.31.1 + '@cspell/cspell-types': 6.31.1 + '@cspell/strong-weak-map': 6.31.1 clear-module: 4.1.2 comment-json: 4.2.3 configstore: 5.0.1 - cosmiconfig: 7.0.1 - cspell-dictionary: 6.14.2 - cspell-glob: 6.14.2 - cspell-grammar: 6.14.2 - cspell-io: 6.14.2 - cspell-trie-lib: 6.14.2 + cosmiconfig: 8.0.0 + cspell-dictionary: 6.31.1 + cspell-glob: 6.31.1 + cspell-grammar: 6.31.1 + cspell-io: 6.31.1 + cspell-trie-lib: 6.31.1 fast-equals: 4.0.3 find-up: 5.0.0 - fs-extra: 10.1.0 - gensequence: 4.0.2 + gensequence: 5.0.2 import-fresh: 3.3.0 resolve-from: 5.0.0 resolve-global: 1.0.0 - vscode-languageserver-textdocument: 1.0.7 - vscode-uri: 3.0.6 + vscode-languageserver-textdocument: 1.0.8 + vscode-uri: 3.0.7 transitivePeerDependencies: - encoding dev: true - /cspell-lib/6.14.3: - resolution: {integrity: sha512-RJT5Tbe0UCMCtqDWRujjxq9u23sc2XylIpDP7MnpLx8wLVgFv2WPzESYNRGZqceqZYwBAPnpqS9h2ANxXSi8UQ==} - engines: {node: '>=14.6'} - dependencies: - '@cspell/cspell-bundled-dicts': 6.14.3 - '@cspell/cspell-pipe': 6.14.3 - '@cspell/cspell-types': 6.14.3 - '@cspell/strong-weak-map': 6.14.3 - clear-module: 4.1.2 - comment-json: 4.2.3 - configstore: 5.0.1 - cosmiconfig: 7.1.0 - cspell-dictionary: 6.14.3 - cspell-glob: 6.14.3 - cspell-grammar: 6.14.3 - cspell-io: 6.14.3 - cspell-trie-lib: 6.14.3 - fast-equals: 4.0.3 - find-up: 5.0.0 - fs-extra: 10.1.0 - gensequence: 4.0.2 - import-fresh: 3.3.0 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - vscode-languageserver-textdocument: 1.0.7 - vscode-uri: 3.0.6 - transitivePeerDependencies: - - encoding - dev: true - - /cspell-trie-lib/6.14.2: - resolution: {integrity: sha512-+aTRwFUzBPFbJ8zlDwzB1ew/gP7L6kddoXjmqCNeFx9B5DiwN1KPFRo+uBx21JOkoavnviGU//DpyWSU9Cittw==} + /cspell-trie-lib@6.31.1: + resolution: {integrity: sha512-MtYh7s4Sbr1rKT31P2BK6KY+YfOy3dWsuusq9HnqCXmq6aZ1HyFgjH/9p9uvqGi/TboMqn1KOV8nifhXK3l3jg==} engines: {node: '>=14'} dependencies: - '@cspell/cspell-pipe': 6.14.2 - '@cspell/cspell-types': 6.14.2 - fs-extra: 10.1.0 - gensequence: 4.0.2 + '@cspell/cspell-pipe': 6.31.1 + '@cspell/cspell-types': 6.31.1 + gensequence: 5.0.2 dev: true - /cspell-trie-lib/6.14.3: - resolution: {integrity: sha512-WVa5gbD9glsZ4c60qPD5RTwojKc5ooxw/Gn+HC9CBdWv5rE1AmM1V3yVWhYx2ZMbJufboBrzmSjJB9qdmUl3oA==} - engines: {node: '>=14'} - dependencies: - '@cspell/cspell-pipe': 6.14.3 - '@cspell/cspell-types': 6.14.3 - fs-extra: 10.1.0 - gensequence: 4.0.2 - dev: true - - /cspell/6.14.3: - resolution: {integrity: sha512-DimVpUiw2iOSvO1daOTtOWjmryVZdFnPmjPhyhWZUqakOEgE2MgoBuk3cFzXqb8GsGXHQh5PqiWr1rqIkQ99qA==} + /cspell@6.31.1: + resolution: {integrity: sha512-gyCtpkOpwI/TGibbtIgMBFnAUUp2hnYdvW/9Ky4RcneHtLH0+V/jUEbZD8HbRKz0GVZ6mhKWbNRSEyP9p3Cejw==} engines: {node: '>=14'} hasBin: true dependencies: - '@cspell/cspell-pipe': 6.14.3 + '@cspell/cspell-pipe': 6.31.1 + '@cspell/dynamic-import': 6.31.1 chalk: 4.1.2 - commander: 9.4.1 - cspell-gitignore: 6.14.3 - cspell-glob: 6.14.3 - cspell-lib: 6.14.3 + commander: 10.0.1 + cspell-gitignore: 6.31.1 + cspell-glob: 6.31.1 + cspell-io: 6.31.1 + cspell-lib: 6.31.1 + fast-glob: 3.2.12 fast-json-stable-stringify: 2.1.0 file-entry-cache: 6.0.1 - fs-extra: 10.1.0 get-stdin: 8.0.0 - glob: 8.0.3 imurmurhash: 0.1.4 semver: 7.3.8 strip-ansi: 6.0.1 - vscode-uri: 3.0.6 + vscode-uri: 3.0.7 transitivePeerDependencies: - encoding dev: true - /css-tree/1.0.0-alpha.39: - resolution: {integrity: sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==} - engines: {node: '>=8.0.0'} - dependencies: - mdn-data: 2.0.6 - source-map: 0.6.1 - dev: true - - /css-tree/2.3.1: + /css-tree@2.3.1: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} dependencies: @@ -7166,49 +6659,70 @@ packages: source-map-js: 1.0.2 dev: true - /cssom/0.3.8: + /cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true - /cssom/0.5.0: + /cssom@0.5.0: resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} dev: true - /cssstyle/2.3.0: + /cssstyle@2.3.0: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} dependencies: cssom: 0.3.8 dev: true - /csstype/2.6.21: + /cssstyle@3.0.0: + resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} + engines: {node: '>=14'} + dependencies: + rrweb-cssom: 0.6.0 + dev: true + + /csstree-validator@3.0.0: + resolution: {integrity: sha512-Y5OSq3wI0Xz6L7DCgJQtQ97U+v99SkX9r663VjpvUMJPhEr0A149OxiAGqcnokB5bt81irgnMudspBzujzqn0w==} + engines: {node: ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + hasBin: true + dependencies: + clap: 3.1.1 + css-tree: 2.3.1 + resolve: 1.22.1 + dev: true + + /csstype@2.6.21: resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} - /cypress-image-snapshot/4.0.1_cypress@12.5.1+jest@29.3.1: + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: false + + /cypress-image-snapshot@4.0.1(cypress@12.10.0)(jest@29.5.0): resolution: {integrity: sha512-PBpnhX/XItlx3/DAk5ozsXQHUi72exybBNH5Mpqj1DVmjq+S5Jd9WE5CRa4q5q0zuMZb2V2VpXHth6MjFpgj9Q==} engines: {node: '>=8'} peerDependencies: cypress: ^4.5.0 dependencies: chalk: 2.4.2 - cypress: 12.5.1 + cypress: 12.10.0 fs-extra: 7.0.1 glob: 7.2.3 - jest-image-snapshot: 4.2.0_jest@29.3.1 + jest-image-snapshot: 4.2.0(jest@29.5.0) pkg-dir: 3.0.0 term-img: 4.1.0 transitivePeerDependencies: - jest dev: true - /cypress/12.5.1: - resolution: {integrity: sha512-ZmCmJ3lsyeOpBfh410m5+AO2CO1AxAzFBt7k6/uVbNcrNZje1vdiwYTpj2ksPKg9mjr9lR6V8tmlDNMvr4H/YQ==} + /cypress@12.10.0: + resolution: {integrity: sha512-Y0wPc221xKKW1/4iAFCphkrG2jNR4MjOne3iGn4mcuCaE7Y5EtXL83N8BzRsAht7GYfWVjJ/UeTqEdDKHz39HQ==} engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} hasBin: true requiresBuild: true dependencies: '@cypress/request': 2.88.10 - '@cypress/xvfb': 1.2.4_supports-color@8.1.1 + '@cypress/xvfb': 1.2.4(supports-color@8.1.1) '@types/node': 14.18.29 '@types/sinonjs__fake-timers': 8.1.1 '@types/sizzle': 2.3.3 @@ -7221,25 +6735,25 @@ packages: check-more-types: 2.24.0 cli-cursor: 3.1.0 cli-table3: 0.6.3 - commander: 5.1.0 + commander: 6.2.1 common-tags: 1.8.2 - dayjs: 1.11.5 - debug: 4.3.4_supports-color@8.1.1 + dayjs: 1.11.7 + debug: 4.3.4(supports-color@8.1.1) enquirer: 2.3.6 eventemitter2: 6.4.7 execa: 4.1.0 executable: 4.1.1 - extract-zip: 2.0.1_supports-color@8.1.1 + extract-zip: 2.0.1(supports-color@8.1.1) figures: 3.2.0 fs-extra: 9.1.0 getos: 3.2.1 is-ci: 3.0.1 is-installed-globally: 0.4.0 lazy-ass: 1.6.0 - listr2: 3.14.0_enquirer@2.3.6 + listr2: 3.14.0(enquirer@2.3.6) lodash: 4.17.21 log-symbols: 4.1.0 - minimist: 1.2.6 + minimist: 1.2.8 ospath: 1.2.2 pretty-bytes: 5.6.0 proxy-from-env: 1.0.0 @@ -7251,7 +6765,7 @@ packages: yauzl: 2.10.0 dev: true - /cytoscape-cose-bilkent/4.1.0_cytoscape@3.23.0: + /cytoscape-cose-bilkent@4.1.0(cytoscape@3.23.0): resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} peerDependencies: cytoscape: ^3.2.0 @@ -7260,7 +6774,7 @@ packages: cytoscape: 3.23.0 dev: false - /cytoscape-fcose/2.1.0_cytoscape@3.23.0: + /cytoscape-fcose@2.1.0(cytoscape@3.23.0): resolution: {integrity: sha512-Q3apPl66jf8/2sMsrCjNP247nbDkyIPjA9g5iPMMWNLZgP3/mn9aryF7EFY/oRPEpv7bKJ4jYmCoU5r5/qAc1Q==} peerDependencies: cytoscape: ^3.2.0 @@ -7269,7 +6783,7 @@ packages: cytoscape: 3.23.0 dev: false - /cytoscape/3.23.0: + /cytoscape@3.23.0: resolution: {integrity: sha512-gRZqJj/1kiAVPkrVFvz/GccxsXhF3Qwpptl32gKKypO4IlqnKBjTOu+HbXtEggSGzC5KCaHp3/F7GgENrtsFkA==} engines: {node: '>=0.10'} dependencies: @@ -7277,19 +6791,19 @@ packages: lodash: 4.17.21 dev: false - /d3-array/3.2.0: + /d3-array@3.2.0: resolution: {integrity: sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==} engines: {node: '>=12'} dependencies: internmap: 2.0.3 dev: false - /d3-axis/3.0.0: + /d3-axis@3.0.0: resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} engines: {node: '>=12'} dev: false - /d3-brush/3.0.0: + /d3-brush@3.0.0: resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} engines: {node: '>=12'} dependencies: @@ -7297,41 +6811,41 @@ packages: d3-drag: 3.0.0 d3-interpolate: 3.0.1 d3-selection: 3.0.0 - d3-transition: 3.0.1_d3-selection@3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) dev: false - /d3-chord/3.0.1: + /d3-chord@3.0.1: resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} engines: {node: '>=12'} dependencies: d3-path: 3.0.1 dev: false - /d3-color/3.1.0: + /d3-color@3.1.0: resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} engines: {node: '>=12'} dev: false - /d3-contour/4.0.0: + /d3-contour@4.0.0: resolution: {integrity: sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==} engines: {node: '>=12'} dependencies: d3-array: 3.2.0 dev: false - /d3-delaunay/6.0.2: + /d3-delaunay@6.0.2: resolution: {integrity: sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==} engines: {node: '>=12'} dependencies: delaunator: 5.0.0 dev: false - /d3-dispatch/3.0.1: + /d3-dispatch@3.0.1: resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} engines: {node: '>=12'} dev: false - /d3-drag/3.0.0: + /d3-drag@3.0.0: resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} engines: {node: '>=12'} dependencies: @@ -7339,7 +6853,7 @@ packages: d3-selection: 3.0.0 dev: false - /d3-dsv/3.0.1: + /d3-dsv@3.0.1: resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} engines: {node: '>=12'} hasBin: true @@ -7349,19 +6863,19 @@ packages: rw: 1.3.3 dev: false - /d3-ease/3.0.1: + /d3-ease@3.0.1: resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} engines: {node: '>=12'} dev: false - /d3-fetch/3.0.1: + /d3-fetch@3.0.1: resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} engines: {node: '>=12'} dependencies: d3-dsv: 3.0.1 dev: false - /d3-force/3.0.0: + /d3-force@3.0.0: resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} engines: {node: '>=12'} dependencies: @@ -7370,51 +6884,51 @@ packages: d3-timer: 3.0.1 dev: false - /d3-format/3.1.0: + /d3-format@3.1.0: resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} engines: {node: '>=12'} dev: false - /d3-geo/3.0.1: + /d3-geo@3.0.1: resolution: {integrity: sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==} engines: {node: '>=12'} dependencies: d3-array: 3.2.0 dev: false - /d3-hierarchy/3.1.2: + /d3-hierarchy@3.1.2: resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} engines: {node: '>=12'} dev: false - /d3-interpolate/3.0.1: + /d3-interpolate@3.0.1: resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} engines: {node: '>=12'} dependencies: d3-color: 3.1.0 dev: false - /d3-path/3.0.1: + /d3-path@3.0.1: resolution: {integrity: sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==} engines: {node: '>=12'} dev: false - /d3-polygon/3.0.1: + /d3-polygon@3.0.1: resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} engines: {node: '>=12'} dev: false - /d3-quadtree/3.0.1: + /d3-quadtree@3.0.1: resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} engines: {node: '>=12'} dev: false - /d3-random/3.0.1: + /d3-random@3.0.1: resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} engines: {node: '>=12'} dev: false - /d3-scale-chromatic/3.0.0: + /d3-scale-chromatic@3.0.0: resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} engines: {node: '>=12'} dependencies: @@ -7422,7 +6936,7 @@ packages: d3-interpolate: 3.0.1 dev: false - /d3-scale/4.0.2: + /d3-scale@4.0.2: resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} engines: {node: '>=12'} dependencies: @@ -7433,38 +6947,38 @@ packages: d3-time-format: 4.1.0 dev: false - /d3-selection/3.0.0: + /d3-selection@3.0.0: resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} engines: {node: '>=12'} dev: false - /d3-shape/3.1.0: + /d3-shape@3.1.0: resolution: {integrity: sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==} engines: {node: '>=12'} dependencies: d3-path: 3.0.1 dev: false - /d3-time-format/4.1.0: + /d3-time-format@4.1.0: resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} engines: {node: '>=12'} dependencies: d3-time: 3.0.0 dev: false - /d3-time/3.0.0: + /d3-time@3.0.0: resolution: {integrity: sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==} engines: {node: '>=12'} dependencies: d3-array: 3.2.0 dev: false - /d3-timer/3.0.1: + /d3-timer@3.0.1: resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} engines: {node: '>=12'} dev: false - /d3-transition/3.0.1_d3-selection@3.0.0: + /d3-transition@3.0.1(d3-selection@3.0.0): resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} engines: {node: '>=12'} peerDependencies: @@ -7478,7 +6992,7 @@ packages: d3-timer: 3.0.1 dev: false - /d3-zoom/3.0.0: + /d3-zoom@3.0.0: resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} engines: {node: '>=12'} dependencies: @@ -7486,10 +7000,10 @@ packages: d3-drag: 3.0.0 d3-interpolate: 3.0.1 d3-selection: 3.0.0 - d3-transition: 3.0.1_d3-selection@3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) dev: false - /d3/7.8.2: + /d3@7.8.2: resolution: {integrity: sha512-WXty7qOGSHb7HR7CfOzwN1Gw04MUOzN8qh9ZUsvwycIMb4DYMpY9xczZ6jUorGtO6bR9BPMPaueIKwiDxu9uiQ==} engines: {node: '>=12'} dependencies: @@ -7521,35 +7035,35 @@ packages: d3-time: 3.0.0 d3-time-format: 4.1.0 d3-timer: 3.0.1 - d3-transition: 3.0.1_d3-selection@3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) d3-zoom: 3.0.0 dev: false - /dagre-d3-es/7.0.8: - resolution: {integrity: sha512-eykdoYQ4FwCJinEYS0gPL2f2w+BPbSLvnQSJ3Ye1vAoPjdkq6xIMKBv+UkICd3qZE26wBKIn3p+6n0QC7R1LyA==} + /dagre-d3-es@7.0.10: + resolution: {integrity: sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==} dependencies: d3: 7.8.2 lodash-es: 4.17.21 dev: false - /dargs/7.0.0: + /dargs@7.0.0: resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} engines: {node: '>=8'} dev: true - /dashdash/1.14.1: + /dashdash@1.14.1: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} dependencies: assert-plus: 1.0.0 dev: true - /data-uri-to-buffer/3.0.1: + /data-uri-to-buffer@3.0.1: resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} engines: {node: '>= 6'} dev: true - /data-urls/3.0.2: + /data-urls@3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} dependencies: @@ -7558,16 +7072,31 @@ packages: whatwg-url: 11.0.0 dev: true - /date-fns/2.29.3: + /data-urls@4.0.0: + resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} + engines: {node: '>=14'} + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + dev: true + + /date-fns@2.29.3: resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} engines: {node: '>=0.11'} dev: true - /dayjs/1.11.5: - resolution: {integrity: sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==} + /date-time@3.1.0: + resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} + engines: {node: '>=6'} + dependencies: + time-zone: 1.0.0 dev: true - /debug/2.6.9: + /dayjs@1.11.7: + resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} + + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' @@ -7578,7 +7107,7 @@ packages: ms: 2.0.0 dev: true - /debug/3.2.7_supports-color@8.1.1: + /debug@3.2.7(supports-color@8.1.1): resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' @@ -7590,8 +7119,8 @@ packages: supports-color: 8.1.1 dev: true - /debug/4.3.2: - resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} + /debug@4.3.3: + resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -7602,19 +7131,7 @@ packages: ms: 2.1.2 dev: true - /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /debug/4.3.4_supports-color@8.1.1: + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -7627,7 +7144,7 @@ packages: supports-color: 8.1.1 dev: true - /decamelize-keys/1.1.0: + /decamelize-keys@1.1.0: resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} engines: {node: '>=0.10.0'} dependencies: @@ -7635,75 +7152,71 @@ packages: map-obj: 1.0.1 dev: true - /decamelize/1.2.0: + /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} dev: true - /decamelize/5.0.1: + /decamelize@5.0.1: resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} engines: {node: '>=10'} dev: true - /decimal.js/10.4.1: - resolution: {integrity: sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw==} - dev: true - - /decimal.js/10.4.3: + /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true - /decode-named-character-reference/1.0.2: + /decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: character-entities: 2.0.2 dev: true - /decompress-response/6.0.0: + /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} dependencies: mimic-response: 3.1.0 dev: true - /dedent/0.7.0: + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deep-eql/4.1.3: + /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} dependencies: type-detect: 4.0.8 dev: true - /deep-is/0.1.4: + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /deepmerge/4.2.2: + /deepmerge@4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} dev: true - /default-gateway/6.0.3: + /default-gateway@6.0.3: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} engines: {node: '>= 10'} dependencies: execa: 5.1.1 dev: true - /defer-to-connect/2.0.1: + /defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} dev: true - /define-lazy-prop/2.0.0: + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} dev: true - /define-properties/1.2.0: + /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: @@ -7711,11 +7224,11 @@ packages: object-keys: 1.1.1 dev: true - /defu/6.1.2: + /defu@6.1.2: resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} dev: true - /degenerator/3.0.2: + /degenerator@3.0.2: resolution: {integrity: sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==} engines: {node: '>= 6'} dependencies: @@ -7725,91 +7238,91 @@ packages: vm2: 3.9.11 dev: true - /delaunator/5.0.0: + /delaunator@5.0.0: resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==} dependencies: robust-predicates: 3.0.1 dev: false - /delayed-stream/1.0.0: + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: true - /depd/1.1.2: + /depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} dev: true - /depd/2.0.0: + /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} dev: true - /dequal/2.0.3: + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} dev: true - /destr/1.2.2: + /destr@1.2.2: resolution: {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==} dev: true - /destroy/1.2.0: + /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: true - /detect-newline/3.1.0: + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} dev: true - /detect-node/2.1.0: + /detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} dev: true - /diff-sequences/29.3.1: - resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==} + /diff-sequences@29.4.3: + resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /diff/4.0.2: + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} dev: true - /diff/5.1.0: + /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} dev: true - /dir-glob/3.0.1: + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 dev: true - /dns-equal/1.0.0: + /dns-equal@1.0.0: resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} dev: true - /dns-packet/5.4.0: + /dns-packet@5.4.0: resolution: {integrity: sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==} engines: {node: '>=6'} dependencies: '@leichtgewicht/ip-codec': 2.0.4 dev: true - /doctrine/3.0.0: + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 dev: true - /dom-serializer/2.0.0: + /dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: domelementtype: 2.3.0 @@ -7817,29 +7330,29 @@ packages: entities: 4.4.0 dev: true - /domelementtype/2.3.0: + /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: true - /domexception/4.0.0: + /domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} dependencies: webidl-conversions: 7.0.0 dev: true - /domhandler/5.0.3: + /domhandler@5.0.3: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 dev: true - /dompurify/2.4.3: - resolution: {integrity: sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==} + /dompurify@3.0.2: + resolution: {integrity: sha512-B8c6JdiEpxAKnd8Dm++QQxJL4lfuc757scZtcapj6qjTjrQzyq5iAyznLKVvK+77eYNiFblHBlt7MM0fOeqoKw==} dev: false - /domutils/3.0.1: + /domutils@3.0.1: resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} dependencies: dom-serializer: 2.0.0 @@ -7847,37 +7360,42 @@ packages: domhandler: 5.0.3 dev: true - /dot-prop/5.3.0: + /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} dependencies: is-obj: 2.0.0 dev: true - /duplexer/0.1.2: + /dotenv@16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} + dev: true + + /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: true - /eastasianwidth/0.2.0: + /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /ebnf-parser/0.1.10: + /ebnf-parser@0.1.10: resolution: {integrity: sha512-urvSxVQ6XJcoTpc+/x2pWhhuOX4aljCNQpwzw+ifZvV1andZkAmiJc3Rq1oGEAQmcjiLceyMXOy1l8ms8qs2fQ==} dev: true - /ecc-jsbn/0.1.2: + /ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} dependencies: jsbn: 0.1.1 safer-buffer: 2.1.2 dev: true - /ee-first/1.1.1: + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /ejs/3.1.8: + /ejs@3.1.8: resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} engines: {node: '>=0.10.0'} hasBin: true @@ -7885,39 +7403,45 @@ packages: jake: 10.8.5 dev: true - /electron-to-chromium/1.4.284: + /electron-to-chromium@1.4.284: resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} dev: true - /elkjs/0.8.2: + /elkjs@0.8.2: resolution: {integrity: sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==} dev: false - /emittery/0.13.1: + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} dev: true - /emoji-regex/8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true - /emoji-regex/9.2.2: + /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /encodeurl/1.0.2: + /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} dev: true - /end-of-stream/1.4.4: + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 dev: true - /enhanced-resolve/5.10.0: + /enhanced-resolve@5.10.0: resolution: {integrity: sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==} engines: {node: '>=10.13.0'} dependencies: @@ -7925,36 +7449,36 @@ packages: tapable: 2.2.1 dev: true - /enquirer/2.3.6: + /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 dev: true - /entities/3.0.1: + /entities@3.0.1: resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} engines: {node: '>=0.12'} dev: true - /entities/4.4.0: + /entities@4.4.0: resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} engines: {node: '>=0.12'} dev: true - /envinfo/7.8.1: + /envinfo@7.8.1: resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} engines: {node: '>=4'} hasBin: true dev: true - /error-ex/1.3.2: + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: true - /es-abstract/1.21.1: + /es-abstract@1.21.1: resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==} engines: {node: '>= 0.4'} dependencies: @@ -7981,7 +7505,7 @@ packages: is-string: 1.0.7 is-typed-array: 1.1.10 is-weakref: 1.0.2 - object-inspect: 1.12.2 + object-inspect: 1.12.3 object-keys: 1.1.1 object.assign: 4.1.4 regexp.prototype.flags: 1.4.3 @@ -7993,11 +7517,11 @@ packages: which-typed-array: 1.1.9 dev: true - /es-module-lexer/0.9.3: + /es-module-lexer@0.9.3: resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} dev: true - /es-set-tostringtag/2.0.1: + /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} dependencies: @@ -8006,7 +7530,7 @@ packages: has-tostringtag: 1.0.0 dev: true - /es-to-primitive/1.2.1: + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -8015,126 +7539,66 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild/0.16.17: - resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} + /esbuild@0.17.18: + resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.16.17 - '@esbuild/android-arm64': 0.16.17 - '@esbuild/android-x64': 0.16.17 - '@esbuild/darwin-arm64': 0.16.17 - '@esbuild/darwin-x64': 0.16.17 - '@esbuild/freebsd-arm64': 0.16.17 - '@esbuild/freebsd-x64': 0.16.17 - '@esbuild/linux-arm': 0.16.17 - '@esbuild/linux-arm64': 0.16.17 - '@esbuild/linux-ia32': 0.16.17 - '@esbuild/linux-loong64': 0.16.17 - '@esbuild/linux-mips64el': 0.16.17 - '@esbuild/linux-ppc64': 0.16.17 - '@esbuild/linux-riscv64': 0.16.17 - '@esbuild/linux-s390x': 0.16.17 - '@esbuild/linux-x64': 0.16.17 - '@esbuild/netbsd-x64': 0.16.17 - '@esbuild/openbsd-x64': 0.16.17 - '@esbuild/sunos-x64': 0.16.17 - '@esbuild/win32-arm64': 0.16.17 - '@esbuild/win32-ia32': 0.16.17 - '@esbuild/win32-x64': 0.16.17 + '@esbuild/android-arm': 0.17.18 + '@esbuild/android-arm64': 0.17.18 + '@esbuild/android-x64': 0.17.18 + '@esbuild/darwin-arm64': 0.17.18 + '@esbuild/darwin-x64': 0.17.18 + '@esbuild/freebsd-arm64': 0.17.18 + '@esbuild/freebsd-x64': 0.17.18 + '@esbuild/linux-arm': 0.17.18 + '@esbuild/linux-arm64': 0.17.18 + '@esbuild/linux-ia32': 0.17.18 + '@esbuild/linux-loong64': 0.17.18 + '@esbuild/linux-mips64el': 0.17.18 + '@esbuild/linux-ppc64': 0.17.18 + '@esbuild/linux-riscv64': 0.17.18 + '@esbuild/linux-s390x': 0.17.18 + '@esbuild/linux-x64': 0.17.18 + '@esbuild/netbsd-x64': 0.17.18 + '@esbuild/openbsd-x64': 0.17.18 + '@esbuild/sunos-x64': 0.17.18 + '@esbuild/win32-arm64': 0.17.18 + '@esbuild/win32-ia32': 0.17.18 + '@esbuild/win32-x64': 0.17.18 dev: true - /esbuild/0.17.0: - resolution: {integrity: sha512-4yGk3rD95iS/wGzrx0Ji5czZcx1j2wvfF1iAJaX2FIYLB6sU6wYkDeplpZHzfwQw2yXGXsAoxmO6LnMQkl04Kg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.17.0 - '@esbuild/android-arm64': 0.17.0 - '@esbuild/android-x64': 0.17.0 - '@esbuild/darwin-arm64': 0.17.0 - '@esbuild/darwin-x64': 0.17.0 - '@esbuild/freebsd-arm64': 0.17.0 - '@esbuild/freebsd-x64': 0.17.0 - '@esbuild/linux-arm': 0.17.0 - '@esbuild/linux-arm64': 0.17.0 - '@esbuild/linux-ia32': 0.17.0 - '@esbuild/linux-loong64': 0.17.0 - '@esbuild/linux-mips64el': 0.17.0 - '@esbuild/linux-ppc64': 0.17.0 - '@esbuild/linux-riscv64': 0.17.0 - '@esbuild/linux-s390x': 0.17.0 - '@esbuild/linux-x64': 0.17.0 - '@esbuild/netbsd-x64': 0.17.0 - '@esbuild/openbsd-x64': 0.17.0 - '@esbuild/sunos-x64': 0.17.0 - '@esbuild/win32-arm64': 0.17.0 - '@esbuild/win32-ia32': 0.17.0 - '@esbuild/win32-x64': 0.17.0 - dev: true - - /esbuild/0.17.10: - resolution: {integrity: sha512-n7V3v29IuZy5qgxx25TKJrEm0FHghAlS6QweUcyIgh/U0zYmQcvogWROitrTyZId1mHSkuhhuyEXtI9OXioq7A==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.17.10 - '@esbuild/android-arm64': 0.17.10 - '@esbuild/android-x64': 0.17.10 - '@esbuild/darwin-arm64': 0.17.10 - '@esbuild/darwin-x64': 0.17.10 - '@esbuild/freebsd-arm64': 0.17.10 - '@esbuild/freebsd-x64': 0.17.10 - '@esbuild/linux-arm': 0.17.10 - '@esbuild/linux-arm64': 0.17.10 - '@esbuild/linux-ia32': 0.17.10 - '@esbuild/linux-loong64': 0.17.10 - '@esbuild/linux-mips64el': 0.17.10 - '@esbuild/linux-ppc64': 0.17.10 - '@esbuild/linux-riscv64': 0.17.10 - '@esbuild/linux-s390x': 0.17.10 - '@esbuild/linux-x64': 0.17.10 - '@esbuild/netbsd-x64': 0.17.10 - '@esbuild/openbsd-x64': 0.17.10 - '@esbuild/sunos-x64': 0.17.10 - '@esbuild/win32-arm64': 0.17.10 - '@esbuild/win32-ia32': 0.17.10 - '@esbuild/win32-x64': 0.17.10 - dev: true - - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: true - /escape-html/1.0.3: + /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} dev: true - /escape-string-regexp/1.0.5: + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} dev: true - /escape-string-regexp/2.0.0: + /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} dev: true - /escape-string-regexp/4.0.0: + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: true - /escape-string-regexp/5.0.0: + /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} dev: true - /escodegen/1.14.3: + /escodegen@1.14.3: resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} engines: {node: '>=4.0'} hasBin: true @@ -8147,7 +7611,7 @@ packages: source-map: 0.6.1 dev: true - /escodegen/1.3.3: + /escodegen@1.3.3: resolution: {integrity: sha512-z9FWgKc48wjMlpzF5ymKS1AF8OIgnKLp9VyN7KbdtyrP/9lndwUFqCtMm+TAJmJf7KJFFYc4cFJfVTTGkKEwsA==} engines: {node: '>=0.10.0'} hasBin: true @@ -8159,7 +7623,7 @@ packages: source-map: 0.1.43 dev: true - /escodegen/2.0.0: + /escodegen@2.0.0: resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} engines: {node: '>=6.0'} hasBin: true @@ -8172,32 +7636,32 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier/8.6.0_eslint@8.32.0: - resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} + /eslint-config-prettier@8.8.0(eslint@8.39.0): + resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.32.0 + eslint: 8.39.0 dev: true - /eslint-plugin-cypress/2.12.1_eslint@8.32.0: - resolution: {integrity: sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==} + /eslint-plugin-cypress@2.13.2(eslint@8.39.0): + resolution: {integrity: sha512-LlwjnBTzuKuC0A4H0RxVjs0YeAWK+CD1iM9Dp8un3lzT713ePQxfpPstCD+9HSAss8emuE3b2hCNUST+NrUwKw==} peerDependencies: eslint: '>= 3.2.1' dependencies: - eslint: 8.32.0 + eslint: 8.39.0 globals: 11.12.0 dev: true - /eslint-plugin-html/7.1.0: + /eslint-plugin-html@7.1.0: resolution: {integrity: sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg==} dependencies: htmlparser2: 8.0.1 dev: true - /eslint-plugin-jest/27.1.5_i5clxtuiaceouxhg5syqkw5wwi: - resolution: {integrity: sha512-CK2dekZ5VBdzsOSOH5Fc1rwC+cWXjkcyrmf1RV714nDUDKu+o73TTJiDxpbILG8PtPPpAAl3ywzh5QA7Ft0mjA==} + /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.39.0)(jest@29.5.0)(typescript@5.0.4): + resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': ^5.0.0 @@ -8209,34 +7673,35 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.48.2_azmbqzqvrlvblbdtiwxwvyvjjy - '@typescript-eslint/utils': 5.42.1_et5x32uxl7z5ldub3ye5rhlyqm - eslint: 8.32.0 - jest: 29.3.1_odkjkoia5xunhxkdrka32ib6vi + '@typescript-eslint/eslint-plugin': 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) + eslint: 8.39.0 + jest: 29.5.0(@types/node@18.16.0)(ts-node@10.9.1) transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsdoc/39.6.2_eslint@8.32.0: - resolution: {integrity: sha512-dvgY/W7eUFoAIIiaWHERIMI61ZWqcz9YFjEeyTzdPlrZc3TY/3aZm5aB91NUoTLWYZmO/vFlYSuQi15tF7uE5A==} - engines: {node: ^14 || ^16 || ^17 || ^18 || ^19} + /eslint-plugin-jsdoc@43.0.7(eslint@8.39.0): + resolution: {integrity: sha512-32Sx5I9VzO/bqbtslCu3L1GHIPo+QEliwqwjWq+qzbUv76wrkH6ifUEE0EbkuNEn+cHlSIOrg/IJ1PGNN72QZA==} + engines: {node: ^14 || ^16 || ^17 || ^18 || ^19 || ^20} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@es-joy/jsdoccomment': 0.36.0 + '@es-joy/jsdoccomment': 0.37.1 + are-docs-informative: 0.0.2 comment-parser: 1.3.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint: 8.32.0 - esquery: 1.4.0 - semver: 7.3.8 + eslint: 8.39.0 + esquery: 1.5.0 + semver: 7.5.0 spdx-expression-parse: 3.0.1 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-json/3.1.0: + /eslint-plugin-json@3.1.0: resolution: {integrity: sha512-MrlG2ynFEHe7wDGwbUuFPsaT2b1uhuEFhJ+W1f1u+1C2EkXmTYJp4B1aAdQQ8M+CC3t//N/oRKiIVw14L2HR1g==} engines: {node: '>=12.0'} dependencies: @@ -8244,52 +7709,52 @@ packages: vscode-json-languageservice: 4.2.1 dev: true - /eslint-plugin-lodash/7.4.0_eslint@8.32.0: + /eslint-plugin-lodash@7.4.0(eslint@8.39.0): resolution: {integrity: sha512-Tl83UwVXqe1OVeBRKUeWcfg6/pCW1GTRObbdnbEJgYwjxp5Q92MEWQaH9+dmzbRt6kvYU1Mp893E79nJiCSM8A==} engines: {node: '>=10'} peerDependencies: eslint: '>=2' dependencies: - eslint: 8.32.0 + eslint: 8.39.0 lodash: 4.17.21 dev: true - /eslint-plugin-markdown/3.0.0_eslint@8.32.0: + /eslint-plugin-markdown@3.0.0(eslint@8.39.0): resolution: {integrity: sha512-hRs5RUJGbeHDLfS7ELanT0e29Ocyssf/7kBM+p7KluY5AwngGkDf8Oyu4658/NZSGTTq05FZeWbkxXtbVyHPwg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.32.0 + eslint: 8.39.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-no-only-tests/3.1.0: + /eslint-plugin-no-only-tests@3.1.0: resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==} engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-tsdoc/0.2.17: + /eslint-plugin-tsdoc@0.2.17: resolution: {integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 dev: true - /eslint-plugin-unicorn/45.0.0_eslint@8.32.0: - resolution: {integrity: sha512-iP8cMRxXKHonKioOhnCoCcqVhoqhAp6rB+nsoLjXFDxTHz3btWMAp8xwzjHA0B1K6YV/U/Yvqn1bUXZt8sJPuQ==} + /eslint-plugin-unicorn@46.0.0(eslint@8.39.0): + resolution: {integrity: sha512-j07WkC+PFZwk8J33LYp6JMoHa1lXc1u6R45pbSAipjpfpb7KIGr17VE2D685zCxR5VL4cjrl65kTJflziQWMDA==} engines: {node: '>=14.18'} peerDependencies: eslint: '>=8.28.0' dependencies: '@babel/helper-validator-identifier': 7.19.1 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) ci-info: 3.6.2 clean-regexp: 1.0.0 - eslint: 8.32.0 - eslint-utils: 3.0.0_eslint@8.32.0 - esquery: 1.4.0 + eslint: 8.39.0 + esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.0 jsesc: 3.0.2 @@ -8303,7 +7768,7 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-scope/5.1.1: + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: @@ -8311,54 +7776,41 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope/7.1.1: - resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.32.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.32.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-visitor-keys/2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys/3.3.0: - resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + /eslint-visitor-keys@3.4.0: + resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.32.0: - resolution: {integrity: sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==} + /eslint@8.39.0: + resolution: {integrity: sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.4.1 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) + '@eslint-community/regexpp': 4.5.0 + '@eslint/eslintrc': 2.0.2 + '@eslint/js': 8.39.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.32.0 - eslint-visitor-keys: 3.3.0 - espree: 9.4.0 - esquery: 1.4.0 + eslint-scope: 7.2.0 + eslint-visitor-keys: 3.4.0 + espree: 9.5.1 + esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -8379,7 +7831,6 @@ packages: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.1 - regexpp: 3.2.0 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 @@ -8387,86 +7838,92 @@ packages: - supports-color dev: true - /esno/0.16.3: + /esno@0.16.3: resolution: {integrity: sha512-6slSBEV1lMKcX13DBifvnDFpNno5WXhw4j/ff7RI0y51BZiDqEe5dNhhjhIQ3iCOQuzsm2MbVzmwqbN78BBhPg==} hasBin: true dependencies: tsx: 3.12.3 dev: true - /espree/9.4.0: - resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} + /espree@9.5.1: + resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.8.1 - acorn-jsx: 5.3.2_acorn@8.8.1 - eslint-visitor-keys: 3.3.0 + acorn: 8.8.2 + acorn-jsx: 5.3.2(acorn@8.8.2) + eslint-visitor-keys: 3.4.0 dev: true - /esprima/1.1.1: + /esprima@1.1.1: resolution: {integrity: sha512-qxxB994/7NtERxgXdFgLHIs9M6bhLXc6qtUmWZ3L8+gTQ9qaoyki2887P2IqAYsoENyr8SUbTutStDniOHSDHg==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /esprima/4.0.1: + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true dev: true - /esquery/1.4.0: - resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 dev: true - /esrecurse/4.3.0: + /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 dev: true - /estraverse/1.5.1: + /estraverse@1.5.1: resolution: {integrity: sha512-FpCjJDfmo3vsc/1zKSeqR5k42tcIhxFIlvq+h9j0fO2q/h2uLKyweq7rYJ+0CoVvrGQOxIS5wyBrW/+vF58BUQ==} engines: {node: '>=0.4.0'} dev: true - /estraverse/4.3.0: + /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} dev: true - /estraverse/5.3.0: + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: true - /estree-walker/1.0.1: + /estree-walker@1.0.1: resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} dev: true - /estree-walker/2.0.2: + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - /esutils/1.0.0: + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.0 + dev: true + + /esutils@1.0.0: resolution: {integrity: sha512-x/iYH53X3quDwfHRz4y8rn4XcEwwCJeWsul9pF1zldMbGtgOtMNBEOuYWwB1EQlK2LRa1fev3YAgym/RElp5Cg==} engines: {node: '>=0.10.0'} dev: true - /esutils/2.0.3: + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: true - /etag/1.8.1: + /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} dev: true - /event-stream/3.3.4: + /event-stream@3.3.4: resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} dependencies: duplexer: 0.1.2 @@ -8478,25 +7935,25 @@ packages: through: 2.3.8 dev: true - /event-target-shim/5.0.1: + /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} dev: true - /eventemitter2/6.4.7: + /eventemitter2@6.4.7: resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} dev: true - /eventemitter3/4.0.7: + /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: true - /events/3.3.0: + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} dev: true - /execa/1.0.0: + /execa@1.0.0: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} engines: {node: '>=6'} dependencies: @@ -8509,7 +7966,7 @@ packages: strip-eof: 1.0.0 dev: true - /execa/4.1.0: + /execa@4.1.0: resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} engines: {node: '>=10'} dependencies: @@ -8524,7 +7981,7 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa/5.1.1: + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: @@ -8539,13 +7996,13 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa/6.1.0: - resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /execa@7.1.1: + resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 - human-signals: 3.0.1 + human-signals: 4.3.1 is-stream: 3.0.0 merge-stream: 2.0.0 npm-run-path: 5.1.0 @@ -8554,30 +8011,30 @@ packages: strip-final-newline: 3.0.0 dev: true - /executable/4.1.1: + /executable@4.1.1: resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} engines: {node: '>=4'} dependencies: pify: 2.3.0 dev: true - /exit/0.1.2: + /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} dev: true - /expect/29.3.1: - resolution: {integrity: sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==} + /expect@29.5.0: + resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/expect-utils': 29.3.1 - jest-get-type: 29.2.0 - jest-matcher-utils: 29.3.1 - jest-message-util: 29.3.1 - jest-util: 29.3.1 + '@jest/expect-utils': 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 dev: true - /express/4.18.2: + /express@4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} dependencies: @@ -8616,16 +8073,16 @@ packages: - supports-color dev: true - /extend/3.0.2: + /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: true - /extract-zip/2.0.1_supports-color@8.1.1: + /extract-zip@2.0.1(supports-color@8.1.1): resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} hasBin: true dependencies: - debug: 4.3.4_supports-color@8.1.1 + debug: 4.3.4(supports-color@8.1.1) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -8634,20 +8091,32 @@ packages: - supports-color dev: true - /extsprintf/1.3.0: + /extsprintf@1.3.0: resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} engines: {'0': node >=0.6.0} dev: true - /fast-deep-equal/3.1.3: + /fast-content-type-parse@1.0.0: + resolution: {integrity: sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==} + dev: true + + /fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + dev: true + + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-equals/4.0.3: + /fast-diff@1.2.0: + resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} + dev: true + + /fast-equals@4.0.3: resolution: {integrity: sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==} dev: true - /fast-glob/3.2.12: + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: @@ -8658,83 +8127,133 @@ packages: micromatch: 4.0.5 dev: true - /fast-json-stable-stringify/2.1.0: + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true - /fast-levenshtein/2.0.6: + /fast-json-stringify@2.7.13: + resolution: {integrity: sha512-ar+hQ4+OIurUGjSJD1anvYSDcUflywhKjfxnsW4TBTD7+u0tJufv6DKRWoQk3vI6YBOWMoz0TQtfbe7dxbQmvA==} + engines: {node: '>= 10.0.0'} + dependencies: + ajv: 6.12.6 + deepmerge: 4.2.2 + rfdc: 1.3.0 + string-similarity: 4.0.4 + dev: true + + /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastest-levenshtein/1.0.16: + /fast-redact@3.1.2: + resolution: {integrity: sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==} + engines: {node: '>=6'} + dev: true + + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: true + + /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} dev: true - /fastq/1.13.0: + /fastify-plugin@3.0.1: + resolution: {integrity: sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==} + dev: true + + /fastify@3.29.5: + resolution: {integrity: sha512-FBDgb1gkenZxxh4sTD6AdI6mFnZnsgckpjIXzIvfLSYCa4isfQeD8QWGPib63dxq6btnY0l1j8I0xYhMvUb+sw==} + dependencies: + '@fastify/ajv-compiler': 1.1.0 + '@fastify/error': 2.0.0 + abstract-logging: 2.0.1 + avvio: 7.2.5 + fast-content-type-parse: 1.0.0 + fast-json-stringify: 2.7.13 + find-my-way: 4.5.1 + flatstr: 1.0.12 + light-my-request: 4.12.0 + pino: 6.14.0 + process-warning: 1.0.0 + proxy-addr: 2.0.7 + rfdc: 1.3.0 + secure-json-parse: 2.7.0 + semver: 7.5.0 + tiny-lru: 8.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /fastq@1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: reusify: 1.0.4 dev: true - /fault/2.0.1: + /fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} dependencies: format: 0.2.2 dev: true - /faye-websocket/0.11.4: + /faye-websocket@0.11.4: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} dependencies: websocket-driver: 0.7.4 dev: true - /fb-watchman/2.0.2: + /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 dev: true - /fd-slicer/1.1.0: + /fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: pend: 1.2.0 dev: true - /figures/3.2.0: + /fflate@0.7.4: + resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} + dev: true + + /figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} dependencies: escape-string-regexp: 1.0.5 dev: true - /file-entry-cache/6.0.1: + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 dev: true - /file-uri-to-path/2.0.0: + /file-uri-to-path@2.0.0: resolution: {integrity: sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==} engines: {node: '>= 6'} dev: true - /filelist/1.0.4: + /filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: minimatch: 5.1.6 dev: true - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 dev: true - /finalhandler/1.2.0: + /finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} dependencies: @@ -8749,14 +8268,35 @@ packages: - supports-color dev: true - /find-up/3.0.0: + /find-my-way@4.5.1: + resolution: {integrity: sha512-kE0u7sGoUFbMXcOG/xpkmz4sRLCklERnBcg7Ftuu1iAxsfEt2S46RLJ3Sq7vshsEy2wJT2hZxE58XZK27qa8kg==} + engines: {node: '>=10'} + dependencies: + fast-decode-uri-component: 1.0.1 + fast-deep-equal: 3.1.3 + safe-regex2: 2.0.0 + semver-store: 0.3.0 + dev: true + + /find-process@1.4.7: + resolution: {integrity: sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==} + hasBin: true + dependencies: + chalk: 4.1.2 + commander: 5.1.0 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: true + + /find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} dependencies: locate-path: 3.0.0 dev: true - /find-up/4.1.0: + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: @@ -8764,7 +8304,7 @@ packages: path-exists: 4.0.0 dev: true - /find-up/5.0.0: + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} dependencies: @@ -8772,7 +8312,7 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache/3.0.4: + /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: @@ -8780,15 +8320,19 @@ packages: rimraf: 3.0.2 dev: true - /flatted/3.2.7: + /flatstr@1.0.12: + resolution: {integrity: sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==} + dev: true + + /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true - /flexsearch/0.7.31: + /flexsearch@0.7.31: resolution: {integrity: sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==} dev: true - /follow-redirects/1.15.2_debug@4.3.4: + /follow-redirects@1.15.2(debug@4.3.4): resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} peerDependencies: @@ -8797,16 +8341,16 @@ packages: debug: optional: true dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) dev: true - /for-each/0.3.3: + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 dev: true - /foreground-child/2.0.0: + /foreground-child@2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} dependencies: @@ -8814,11 +8358,19 @@ packages: signal-exit: 3.0.7 dev: true - /forever-agent/0.6.1: + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.0.1 + dev: true + + /forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} dev: true - /form-data/2.3.3: + /form-data@2.3.3: resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} engines: {node: '>= 0.12'} dependencies: @@ -8827,7 +8379,7 @@ packages: mime-types: 2.1.35 dev: true - /form-data/3.0.1: + /form-data@3.0.1: resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} engines: {node: '>= 6'} dependencies: @@ -8836,7 +8388,7 @@ packages: mime-types: 2.1.35 dev: true - /form-data/4.0.0: + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: @@ -8845,35 +8397,35 @@ packages: mime-types: 2.1.35 dev: true - /format/0.2.2: + /format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} dev: true - /forwarded/0.2.0: + /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} dev: true - /fresh/0.5.2: + /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} dev: true - /from/0.1.7: + /from@0.1.7: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} dev: true - /fs-extra/10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} + /fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} dependencies: graceful-fs: 4.2.10 jsonfile: 6.1.0 universalify: 2.0.0 dev: true - /fs-extra/7.0.1: + /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -8882,7 +8434,7 @@ packages: universalify: 0.1.2 dev: true - /fs-extra/8.1.0: + /fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -8891,7 +8443,7 @@ packages: universalify: 0.1.2 dev: true - /fs-extra/9.1.0: + /fs-extra@9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} dependencies: @@ -8901,15 +8453,15 @@ packages: universalify: 2.0.0 dev: true - /fs-monkey/1.0.3: + /fs-monkey@1.0.3: resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} dev: true - /fs.realpath/1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -8917,7 +8469,7 @@ packages: dev: true optional: true - /ftp/0.3.10: + /ftp@0.3.10: resolution: {integrity: sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==} engines: {node: '>=0.8.0'} dependencies: @@ -8925,11 +8477,11 @@ packages: xregexp: 2.0.0 dev: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true - /function.prototype.name/1.1.5: + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: @@ -8939,30 +8491,30 @@ packages: functions-have-names: 1.2.3 dev: true - /functions-have-names/1.2.3: + /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true - /gensequence/4.0.2: - resolution: {integrity: sha512-mQiFskYFPFDSUpBJ/n3ebAV2Ufu6DZGvUPXzyWYzFfJr6/DyOOZVnjx6VTWE4y0RLvYWnc5tZq5sCjzEWhRjqQ==} + /gensequence@5.0.2: + resolution: {integrity: sha512-JlKEZnFc6neaeSVlkzBGGgkIoIaSxMgvdamRoPN8r3ozm2r9dusqxeKqYQ7lhzmj2UhFQP8nkyfCaiLQxiLrDA==} engines: {node: '>=14'} dev: true - /gensync/1.0.0-beta.2: + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} dev: true - /get-caller-file/2.0.5: + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-func-name/2.0.0: + /get-func-name@2.0.0: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true - /get-intrinsic/1.2.0: + /get-intrinsic@1.2.0: resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} dependencies: function-bind: 1.1.1 @@ -8970,45 +8522,45 @@ packages: has-symbols: 1.0.3 dev: true - /get-own-enumerable-property-symbols/3.0.2: + /get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} dev: true - /get-package-type/0.1.0: + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} dev: true - /get-stdin/5.0.1: + /get-stdin@5.0.1: resolution: {integrity: sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA==} engines: {node: '>=0.12.0'} dev: true - /get-stdin/8.0.0: + /get-stdin@8.0.0: resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} engines: {node: '>=10'} dev: true - /get-stream/4.1.0: + /get-stream@4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} dependencies: pump: 3.0.0 dev: true - /get-stream/5.2.0: + /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} dependencies: pump: 3.0.0 dev: true - /get-stream/6.0.1: + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: true - /get-symbol-description/1.0.0: + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: @@ -9016,17 +8568,17 @@ packages: get-intrinsic: 1.2.0 dev: true - /get-tsconfig/4.4.0: + /get-tsconfig@4.4.0: resolution: {integrity: sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==} dev: true - /get-uri/3.0.2: + /get-uri@3.0.2: resolution: {integrity: sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==} engines: {node: '>= 6'} dependencies: '@tootallnate/once': 1.1.2 data-uri-to-buffer: 3.0.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) file-uri-to-path: 2.0.0 fs-extra: 8.1.0 ftp: 0.3.10 @@ -9034,19 +8586,19 @@ packages: - supports-color dev: true - /getos/3.2.1: + /getos@3.2.1: resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} dependencies: async: 3.2.4 dev: true - /getpass/0.1.7: + /getpass@0.1.7: resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} dependencies: assert-plus: 1.0.0 dev: true - /git-raw-commits/2.0.11: + /git-raw-commits@2.0.11: resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} engines: {node: '>=10'} hasBin: true @@ -9058,25 +8610,37 @@ packages: through2: 4.0.2 dev: true - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 dev: true - /glob-parent/6.0.2: + /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: true - /glob-to-regexp/0.4.1: + /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: true - /glob/7.2.3: + /glob@10.2.2: + resolution: {integrity: sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.1.1 + minimatch: 9.0.0 + minipass: 5.0.0 + path-scurry: 1.7.0 + dev: true + + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 @@ -9087,51 +8651,55 @@ packages: path-is-absolute: 1.0.1 dev: true - /glob/8.0.3: + /glob@8.0.3: resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} engines: {node: '>=12'} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 5.1.0 + minimatch: 5.1.6 once: 1.4.0 dev: true - /global-dirs/0.1.1: + /global-dirs@0.1.1: resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} engines: {node: '>=4'} dependencies: ini: 1.3.8 dev: true - /global-dirs/3.0.0: + /global-dirs@3.0.0: resolution: {integrity: sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==} engines: {node: '>=10'} dependencies: ini: 2.0.0 dev: true - /globals/11.12.0: + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} dev: true - /globals/13.19.0: + /globals@13.19.0: resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true - /globalthis/1.0.3: + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.0 dev: true - /globby/11.1.0: + /globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: true + + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: @@ -9143,8 +8711,8 @@ packages: slash: 3.0.0 dev: true - /globby/13.1.2: - resolution: {integrity: sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==} + /globby@13.1.4: + resolution: {integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 @@ -9154,17 +8722,21 @@ packages: slash: 4.0.0 dev: true - /glur/1.1.2: + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true + + /glur@1.1.2: resolution: {integrity: sha512-l+8esYHTKOx2G/Aao4lEQ0bnHWg4fWtJbVoZZT9Knxi01pB8C80BR85nONLFwkkQoFRCmXY+BUcGZN3yZ2QsRA==} dev: true - /gopd/1.0.1: + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.0 dev: true - /got/11.8.5: + /got@11.8.5: resolution: {integrity: sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==} engines: {node: '>=10.19.0'} dependencies: @@ -9181,31 +8753,31 @@ packages: responselike: 2.0.1 dev: true - /graceful-fs/4.2.10: + /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: true - /grapheme-splitter/1.0.4: + /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /gzip-size/6.0.0: + /gzip-size@6.0.0: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} dependencies: duplexer: 0.1.2 dev: true - /handle-thing/2.0.1: + /handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} dev: true - /handlebars/4.7.7: + /handlebars@4.7.7: resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} engines: {node: '>=0.4.7'} hasBin: true dependencies: - minimist: 1.2.6 + minimist: 1.2.8 neo-async: 2.6.2 source-map: 0.6.1 wordwrap: 1.0.0 @@ -9213,12 +8785,12 @@ packages: uglify-js: 3.17.3 dev: true - /har-schema/2.0.0: + /har-schema@2.0.0: resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} engines: {node: '>=4'} dev: true - /har-validator/5.1.5: + /har-validator@5.1.5: resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} engines: {node: '>=6'} deprecated: this library is no longer supported @@ -9227,83 +8799,83 @@ packages: har-schema: 2.0.0 dev: true - /hard-rejection/2.1.0: + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} dev: true - /has-ansi/2.0.0: + /has-ansi@2.0.0: resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} engines: {node: '>=0.10.0'} dependencies: ansi-regex: 2.1.1 dev: true - /has-bigints/1.0.2: + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true - /has-flag/3.0.0: + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} dev: true - /has-flag/4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} dev: true - /has-own-prop/2.0.0: + /has-own-prop@2.0.0: resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} engines: {node: '>=8'} dev: true - /has-property-descriptors/1.0.0: + /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.2.0 dev: true - /has-proto/1.0.1: + /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} dev: true - /has-symbols/1.0.3: + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: true - /has-tostringtag/1.0.0: + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 dev: true - /heap/0.2.7: + /heap@0.2.7: resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} dev: false - /hosted-git-info/2.8.9: + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true - /hosted-git-info/4.1.0: + /hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} dependencies: lru-cache: 6.0.0 dev: true - /hpack.js/2.1.6: + /hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} dependencies: inherits: 2.0.4 @@ -9312,22 +8884,22 @@ packages: wbuf: 1.7.3 dev: true - /html-encoding-sniffer/3.0.0: + /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 dev: true - /html-entities/2.3.3: + /html-entities@2.3.3: resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} dev: true - /html-escaper/2.0.2: + /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /htmlparser2/8.0.1: + /htmlparser2@8.0.1: resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} dependencies: domelementtype: 2.3.0 @@ -9336,15 +8908,15 @@ packages: entities: 4.4.0 dev: true - /http-cache-semantics/4.1.0: + /http-cache-semantics@4.1.0: resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} dev: true - /http-deceiver/1.2.7: + /http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} dev: true - /http-errors/1.6.3: + /http-errors@1.6.3: resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} engines: {node: '>= 0.6'} dependencies: @@ -9354,7 +8926,7 @@ packages: statuses: 1.5.0 dev: true - /http-errors/2.0.0: + /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} dependencies: @@ -9365,33 +8937,33 @@ packages: toidentifier: 1.0.1 dev: true - /http-parser-js/0.5.8: + /http-parser-js@0.5.8: resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} dev: true - /http-proxy-agent/4.0.1: + /http-proxy-agent@4.0.1: resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} engines: {node: '>= 6'} dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: true - /http-proxy-agent/5.0.0: + /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: true - /http-proxy-middleware/2.0.6_@types+express@4.17.14: + /http-proxy-middleware@2.0.6(@types/express@4.17.14): resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -9410,18 +8982,18 @@ packages: - debug dev: true - /http-proxy/1.18.1: + /http-proxy@1.18.1: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.2_debug@4.3.4 + follow-redirects: 1.15.2(debug@4.3.4) requires-port: 1.0.0 transitivePeerDependencies: - debug dev: true - /http-signature/1.2.0: + /http-signature@1.2.0: resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} engines: {node: '>=0.8', npm: '>=1.3.7'} dependencies: @@ -9430,7 +9002,7 @@ packages: sshpk: 1.17.0 dev: true - /http-signature/1.3.6: + /http-signature@1.3.6: resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} engines: {node: '>=0.10'} dependencies: @@ -9439,7 +9011,7 @@ packages: sshpk: 1.17.0 dev: true - /http2-wrapper/1.0.3: + /http2-wrapper@1.0.3: resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} engines: {node: '>=10.19.0'} dependencies: @@ -9447,7 +9019,7 @@ packages: resolve-alpn: 1.2.1 dev: true - /https-localhost/4.7.1: + /https-localhost@4.7.1: resolution: {integrity: sha512-rl+NFV0l67/0W7fZwk4LB5gS6HdhtSFLpCpf1N+KD5WQAXtPXX1QE8H0cP8VNJii18rtpTkE9eAHdUfJ0goAnQ==} hasBin: true dependencies: @@ -9461,64 +9033,64 @@ packages: - supports-color dev: true - /https-proxy-agent/5.0.1: + /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: true - /human-signals/1.1.1: + /human-signals@1.1.1: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} dev: true - /human-signals/2.1.0: + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} dev: true - /human-signals/3.0.1: - resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} - engines: {node: '>=12.20.0'} + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} dev: true - /husky/8.0.2: - resolution: {integrity: sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==} + /husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} hasBin: true dev: true - /iconv-lite/0.4.24: + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true - /iconv-lite/0.6.3: + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - /idb/7.1.1: + /idb@7.1.1: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} dev: true - /ieee754/1.2.1: + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true - /ignore/5.2.0: + /ignore@5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} dev: true - /import-fresh/3.3.0: + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: @@ -9526,7 +9098,7 @@ packages: resolve-from: 4.0.0 dev: true - /import-local/3.1.0: + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true @@ -9535,46 +9107,55 @@ packages: resolve-cwd: 3.0.0 dev: true - /imurmurhash/0.1.4: + /import-meta-resolve@2.2.2: + resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==} + dev: true + + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} dev: true - /indent-string/4.0.0: + /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} dev: true - /indent-string/5.0.0: + /indent-string@5.0.0: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} dev: true - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: true - /inherits/2.0.3: + /inherits@2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} dev: true - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - /ini/1.3.8: + /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true - /ini/2.0.0: + /ini@2.0.0: resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} engines: {node: '>=10'} dev: true - /internal-slot/1.0.5: + /ini@3.0.1: + resolution: {integrity: sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dev: true + + /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: @@ -9583,46 +9164,46 @@ packages: side-channel: 1.0.4 dev: true - /internmap/2.0.3: + /internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} dev: false - /interpret/2.2.0: + /interpret@2.2.0: resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} engines: {node: '>= 0.10'} dev: true - /ip/1.1.8: + /ip@1.1.8: resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} dev: true - /ip/2.0.0: + /ip@2.0.0: resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} dev: true - /ipaddr.js/1.9.1: + /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} dev: true - /ipaddr.js/2.0.1: + /ipaddr.js@2.0.1: resolution: {integrity: sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==} engines: {node: '>= 10'} dev: true - /is-alphabetical/1.0.4: + /is-alphabetical@1.0.4: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} dev: true - /is-alphanumerical/1.0.4: + /is-alphanumerical@1.0.4: resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} dependencies: is-alphabetical: 1.0.4 is-decimal: 1.0.4 dev: true - /is-array-buffer/3.0.1: + /is-array-buffer@3.0.1: resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} dependencies: call-bind: 1.0.2 @@ -9630,24 +9211,24 @@ packages: is-typed-array: 1.1.10 dev: true - /is-arrayish/0.2.1: + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true - /is-bigint/1.0.4: + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 dev: true - /is-binary-path/2.1.0: + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 dev: true - /is-boolean-object/1.1.2: + /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: @@ -9655,85 +9236,85 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-buffer/2.0.5: + /is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} dev: true - /is-builtin-module/3.2.0: + /is-builtin-module@3.2.0: resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} engines: {node: '>=6'} dependencies: builtin-modules: 3.3.0 dev: true - /is-callable/1.2.7: + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: true - /is-ci/3.0.1: + /is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: ci-info: 3.6.2 dev: true - /is-core-module/2.10.0: + /is-core-module@2.10.0: resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} dependencies: has: 1.0.3 dev: true - /is-date-object/1.0.5: + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-decimal/1.0.4: + /is-decimal@1.0.4: resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} dev: true - /is-docker/2.2.1: + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true dev: true - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: true - /is-fullwidth-code-point/3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} dev: true - /is-fullwidth-code-point/4.0.0: + /is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} dev: true - /is-generator-fn/2.1.0: + /is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} dev: true - /is-glob/4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: true - /is-hexadecimal/1.0.4: + /is-hexadecimal@1.0.4: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} dev: true - /is-installed-globally/0.4.0: + /is-installed-globally@0.4.0: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} engines: {node: '>=10'} dependencies: @@ -9741,69 +9322,74 @@ packages: is-path-inside: 3.0.3 dev: true - /is-module/1.0.0: + /is-localhost-ip@2.0.0: + resolution: {integrity: sha512-vlgs2cSgMOfnKU8c1ewgKPyum9rVrjjLLW2HBdL5i0iAJjOs8NY55ZBd/hqUTaYR0EO9CKZd3hVSC2HlIbygTQ==} + engines: {node: '>=12'} + dev: true + + /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true - /is-negative-zero/2.0.2: + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: true - /is-number-object/1.0.7: + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: true - /is-obj/1.0.1: + /is-obj@1.0.1: resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} engines: {node: '>=0.10.0'} dev: true - /is-obj/2.0.0: + /is-obj@2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} dev: true - /is-path-inside/3.0.3: + /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} dev: true - /is-plain-obj/1.1.0: + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} dev: true - /is-plain-obj/3.0.0: + /is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} dev: true - /is-plain-obj/4.1.0: + /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} dev: true - /is-plain-object/2.0.4: + /is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 dev: true - /is-potential-custom-element-name/1.0.1: + /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true - /is-regex/1.1.4: + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: @@ -9811,54 +9397,54 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-regexp/1.0.0: + /is-regexp@1.0.0: resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} engines: {node: '>=0.10.0'} dev: true - /is-shared-array-buffer/1.0.2: + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 dev: true - /is-stream/1.1.0: + /is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} dev: true - /is-stream/2.0.1: + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} dev: true - /is-stream/3.0.0: + /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-string/1.0.7: + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-symbol/1.0.4: + /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /is-text-path/1.0.1: + /is-text-path@1.0.1: resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} engines: {node: '>=0.10.0'} dependencies: text-extensions: 1.9.0 dev: true - /is-typed-array/1.1.10: + /is-typed-array@1.1.10: resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} engines: {node: '>= 0.4'} dependencies: @@ -9869,55 +9455,55 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-typedarray/1.0.0: + /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: true - /is-unicode-supported/0.1.0: + /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} dev: true - /is-weakref/1.0.2: + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true - /is-wsl/2.2.0: + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 dev: true - /isarray/0.0.1: + /isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} dev: true - /isarray/1.0.0: + /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true - /isexe/2.0.0: + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /isobject/3.0.1: + /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} dev: true - /isstream/0.1.2: + /isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} dev: true - /istanbul-lib-coverage/3.2.0: + /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} dev: true - /istanbul-lib-instrument/5.2.0: + /istanbul-lib-instrument@5.2.0: resolution: {integrity: sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==} engines: {node: '>=8'} dependencies: @@ -9930,7 +9516,7 @@ packages: - supports-color dev: true - /istanbul-lib-report/3.0.0: + /istanbul-lib-report@3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} dependencies: @@ -9939,18 +9525,18 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps/4.0.1: + /istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: - supports-color dev: true - /istanbul-reports/3.1.5: + /istanbul-reports@3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: @@ -9958,7 +9544,7 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /iterm2-version/4.2.0: + /iterm2-version@4.2.0: resolution: {integrity: sha512-IoiNVk4SMPu6uTcK+1nA5QaHNok2BMDLjSl5UomrOixe5g4GkylhPwuiGdw00ysSCrXAKNMfFTu+u/Lk5f6OLQ==} engines: {node: '>=8'} dependencies: @@ -9966,7 +9552,16 @@ packages: plist: 3.0.6 dev: true - /jake/10.8.5: + /jackspeak@2.1.1: + resolution: {integrity: sha512-juf9stUEwUaILepraGOWIJTLwg48bUnBmRqd2ln2Os1sW987zeoj/hzhbvRB95oMuS2ZTpjULmdwHNX4rzZIZw==} + engines: {node: '>=14'} + dependencies: + cliui: 8.0.1 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jake@10.8.5: resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} engines: {node: '>=10'} hasBin: true @@ -9977,43 +9572,44 @@ packages: minimatch: 3.1.2 dev: true - /jest-changed-files/29.2.0: - resolution: {integrity: sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==} + /jest-changed-files@29.5.0: + resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 p-limit: 3.1.0 dev: true - /jest-circus/29.3.1: - resolution: {integrity: sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==} + /jest-circus@29.5.0: + resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/expect': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.0 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 is-generator-fn: 2.1.0 - jest-each: 29.3.1 - jest-matcher-utils: 29.3.1 - jest-message-util: 29.3.1 - jest-runtime: 29.3.1 - jest-snapshot: 29.3.1 - jest-util: 29.3.1 + jest-each: 29.5.0 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 p-limit: 3.1.0 - pretty-format: 29.3.1 + pretty-format: 29.5.0 + pure-rand: 6.0.2 slash: 3.0.0 stack-utils: 2.0.5 transitivePeerDependencies: - supports-color dev: true - /jest-cli/29.3.1_odkjkoia5xunhxkdrka32ib6vi: - resolution: {integrity: sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==} + /jest-cli@29.5.0(@types/node@18.16.0)(ts-node@10.9.1): + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -10022,26 +9618,26 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.3.1_ts-node@10.9.1 - '@jest/test-result': 29.3.1 - '@jest/types': 29.3.1 + '@jest/core': 29.5.0(ts-node@10.9.1) + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.3.1_odkjkoia5xunhxkdrka32ib6vi - jest-util: 29.3.1 - jest-validate: 29.3.1 + jest-config: 29.5.0(@types/node@18.16.0)(ts-node@10.9.1) + jest-util: 29.5.0 + jest-validate: 29.5.0 prompts: 2.4.2 - yargs: 17.5.1 + yargs: 17.7.2 transitivePeerDependencies: - '@types/node' - supports-color - ts-node dev: true - /jest-config/29.3.1_odkjkoia5xunhxkdrka32ib6vi: - resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} + /jest-config@29.5.0(@types/node@18.16.0)(ts-node@10.9.1): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -10053,98 +9649,98 @@ packages: optional: true dependencies: '@babel/core': 7.12.3 - '@jest/test-sequencer': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 - babel-jest: 29.3.1_@babel+core@7.12.3 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.0 + babel-jest: 29.5.0(@babel/core@7.12.3) chalk: 4.1.2 ci-info: 3.6.2 deepmerge: 4.2.2 glob: 7.2.3 graceful-fs: 4.2.10 - jest-circus: 29.3.1 - jest-environment-node: 29.3.1 - jest-get-type: 29.2.0 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-runner: 29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.3.1 + pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1_w6ufic3jqylcjznzspnj4wjqfe + ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) transitivePeerDependencies: - supports-color dev: true - /jest-diff/29.3.1: - resolution: {integrity: sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==} + /jest-diff@29.5.0: + resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - diff-sequences: 29.3.1 - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 dev: true - /jest-docblock/29.2.0: - resolution: {integrity: sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==} + /jest-docblock@29.4.3: + resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each/29.3.1: - resolution: {integrity: sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==} + /jest-each@29.5.0: + resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.5.0 chalk: 4.1.2 - jest-get-type: 29.2.0 - jest-util: 29.3.1 - pretty-format: 29.3.1 + jest-get-type: 29.4.3 + jest-util: 29.5.0 + pretty-format: 29.5.0 dev: true - /jest-environment-node/29.3.1: - resolution: {integrity: sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==} + /jest-environment-node@29.5.0: + resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/fake-timers': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 - jest-mock: 29.3.1 - jest-util: 29.3.1 + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.0 + jest-mock: 29.5.0 + jest-util: 29.5.0 dev: true - /jest-get-type/29.2.0: - resolution: {integrity: sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==} + /jest-get-type@29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map/29.3.1: - resolution: {integrity: sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==} + /jest-haste-map@29.5.0: + resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.5 - '@types/node': 18.11.9 + '@types/node': 18.16.0 anymatch: 3.1.2 fb-watchman: 2.0.2 graceful-fs: 4.2.10 - jest-regex-util: 29.2.0 - jest-util: 29.3.1 - jest-worker: 29.3.1 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + jest-worker: 29.5.0 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 dev: true - /jest-image-snapshot/4.2.0_jest@29.3.1: + /jest-image-snapshot@4.2.0(jest@29.5.0): resolution: {integrity: sha512-6aAqv2wtfOgxiJeBayBCqHo1zX+A12SUNNzo7rIxiXh6W6xYVu8QyHWkada8HeRi+QUTHddp0O0Xa6kmQr+xbQ==} engines: {node: '>= 10.14.2'} peerDependencies: @@ -10153,7 +9749,7 @@ packages: chalk: 1.1.3 get-stdin: 5.0.1 glur: 1.1.2 - jest: 29.3.1_odkjkoia5xunhxkdrka32ib6vi + jest: 29.5.0(@types/node@18.16.0)(ts-node@10.9.1) lodash: 4.17.21 mkdirp: 0.5.6 pixelmatch: 5.3.0 @@ -10162,49 +9758,49 @@ packages: ssim.js: 3.5.0 dev: true - /jest-leak-detector/29.3.1: - resolution: {integrity: sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==} + /jest-leak-detector@29.5.0: + resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 dev: true - /jest-matcher-utils/29.3.1: - resolution: {integrity: sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==} + /jest-matcher-utils@29.5.0: + resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 29.3.1 - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 dev: true - /jest-message-util/29.3.1: - resolution: {integrity: sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==} + /jest-message-util@29.5.0: + resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.18.6 - '@jest/types': 29.3.1 + '@jest/types': 29.5.0 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.10 micromatch: 4.0.5 - pretty-format: 29.3.1 + pretty-format: 29.5.0 slash: 3.0.0 stack-utils: 2.0.5 dev: true - /jest-mock/29.3.1: - resolution: {integrity: sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==} + /jest-mock@29.5.0: + resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@types/node': 18.11.9 - jest-util: 29.3.1 + '@jest/types': 29.5.0 + '@types/node': 18.16.0 + jest-util: 29.5.0 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@29.3.1: + /jest-pnp-resolver@1.2.2(jest-resolve@29.5.0): resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -10213,198 +9809,197 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 29.3.1 + jest-resolve: 29.5.0 dev: true - /jest-regex-util/29.2.0: - resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} + /jest-regex-util@29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/29.3.1: - resolution: {integrity: sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==} + /jest-resolve-dependencies@29.5.0: + resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-regex-util: 29.2.0 - jest-snapshot: 29.3.1 + jest-regex-util: 29.4.3 + jest-snapshot: 29.5.0 transitivePeerDependencies: - supports-color dev: true - /jest-resolve/29.3.1: - resolution: {integrity: sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==} + /jest-resolve@29.5.0: + resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 - jest-pnp-resolver: 1.2.2_jest-resolve@29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 + jest-haste-map: 29.5.0 + jest-pnp-resolver: 1.2.2(jest-resolve@29.5.0) + jest-util: 29.5.0 + jest-validate: 29.5.0 resolve: 1.22.1 - resolve.exports: 1.1.0 + resolve.exports: 2.0.2 slash: 3.0.0 dev: true - /jest-runner/29.3.1: - resolution: {integrity: sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==} + /jest-runner@29.5.0: + resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.3.1 - '@jest/environment': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 + '@jest/console': 29.5.0 + '@jest/environment': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.0 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 - jest-docblock: 29.2.0 - jest-environment-node: 29.3.1 - jest-haste-map: 29.3.1 - jest-leak-detector: 29.3.1 - jest-message-util: 29.3.1 - jest-resolve: 29.3.1 - jest-runtime: 29.3.1 - jest-util: 29.3.1 - jest-watcher: 29.3.1 - jest-worker: 29.3.1 + jest-docblock: 29.4.3 + jest-environment-node: 29.5.0 + jest-haste-map: 29.5.0 + jest-leak-detector: 29.5.0 + jest-message-util: 29.5.0 + jest-resolve: 29.5.0 + jest-runtime: 29.5.0 + jest-util: 29.5.0 + jest-watcher: 29.5.0 + jest-worker: 29.5.0 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color dev: true - /jest-runtime/29.3.1: - resolution: {integrity: sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==} + /jest-runtime@29.5.0: + resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/fake-timers': 29.3.1 - '@jest/globals': 29.3.1 - '@jest/source-map': 29.2.0 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/globals': 29.5.0 + '@jest/source-map': 29.4.3 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.0 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 glob: 7.2.3 graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 - jest-message-util: 29.3.1 - jest-mock: 29.3.1 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-snapshot: 29.3.1 - jest-util: 29.3.1 + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /jest-snapshot/29.3.1: - resolution: {integrity: sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==} + /jest-snapshot@29.5.0: + resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.12.3 - '@babel/generator': 7.19.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.12.3 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.12.3 - '@babel/traverse': 7.19.1 + '@babel/generator': 7.21.1 + '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.12.3) + '@babel/plugin-syntax-typescript': 7.18.6(@babel/core@7.12.3) + '@babel/traverse': 7.21.2 '@babel/types': 7.21.2 - '@jest/expect-utils': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 + '@jest/expect-utils': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 '@types/babel__traverse': 7.18.2 - '@types/prettier': 2.7.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.12.3 + '@types/prettier': 2.7.2 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.12.3) chalk: 4.1.2 - expect: 29.3.1 + expect: 29.5.0 graceful-fs: 4.2.10 - jest-diff: 29.3.1 - jest-get-type: 29.2.0 - jest-haste-map: 29.3.1 - jest-matcher-utils: 29.3.1 - jest-message-util: 29.3.1 - jest-util: 29.3.1 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 natural-compare: 1.4.0 - pretty-format: 29.3.1 - semver: 7.3.8 + pretty-format: 29.5.0 + semver: 7.5.0 transitivePeerDependencies: - supports-color dev: true - /jest-util/29.3.1: - resolution: {integrity: sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==} + /jest-util@29.5.0: + resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@types/node': 18.11.9 + '@jest/types': 29.5.0 + '@types/node': 18.16.0 chalk: 4.1.2 ci-info: 3.6.2 graceful-fs: 4.2.10 picomatch: 2.3.1 dev: true - /jest-validate/29.3.1: - resolution: {integrity: sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==} + /jest-validate@29.5.0: + resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.5.0 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 29.2.0 + jest-get-type: 29.4.3 leven: 3.1.0 - pretty-format: 29.3.1 + pretty-format: 29.5.0 dev: true - /jest-watcher/29.3.1: - resolution: {integrity: sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==} + /jest-watcher@29.5.0: + resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.3.1 + jest-util: 29.5.0 string-length: 4.0.2 dev: true - /jest-worker/26.6.2: + /jest-worker@26.6.2: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true - /jest-worker/27.5.1: + /jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest-worker/29.3.1: - resolution: {integrity: sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==} + /jest-worker@29.5.0: + resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.11.9 - jest-util: 29.3.1 + '@types/node': 18.16.0 + jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.3.1_odkjkoia5xunhxkdrka32ib6vi: - resolution: {integrity: sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==} + /jest@29.5.0(@types/node@18.16.0)(ts-node@10.9.1): + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -10413,17 +10008,17 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.3.1_ts-node@10.9.1 - '@jest/types': 29.3.1 + '@jest/core': 29.5.0(ts-node@10.9.1) + '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.3.1_odkjkoia5xunhxkdrka32ib6vi + jest-cli: 29.5.0(@types/node@18.16.0)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color - ts-node dev: true - /jison-lex/0.3.4: + /jison-lex@0.3.4: resolution: {integrity: sha512-EBh5wrXhls1cUwROd5DcDHR1sG7CdsCFSqY1027+YA1RGxz+BX2TDLAhdsQf40YEtFDGoiO0Qm8PpnBl2EzDJw==} engines: {node: '>=0.4'} hasBin: true @@ -10432,7 +10027,7 @@ packages: nomnom: 1.5.2 dev: true - /jison/0.4.18: + /jison@0.4.18: resolution: {integrity: sha512-FKkCiJvozgC7VTHhMJ00a0/IApSxhlGsFIshLW6trWJ8ONX2TQJBBz6DlcO1Gffy4w9LT+uL+PA+CVnUSJMF7w==} engines: {node: '>=0.4'} hasBin: true @@ -10447,25 +10042,15 @@ packages: nomnom: 1.5.2 dev: true - /jiti/1.17.1: - resolution: {integrity: sha512-NZIITw8uZQFuzQimqjUxIrIcEdxYDFIe/0xYfIlVXTkiBjjyBEvgasj5bb0/cHtPRD/NziPbT312sFrkI5ALpw==} + /jiti@1.18.2: + resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} hasBin: true - /jju/1.4.0: + /jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true - /joi/17.6.0: - resolution: {integrity: sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==} - dependencies: - '@hapi/hoek': 9.3.0 - '@hapi/topo': 5.1.0 - '@sideway/address': 4.1.4 - '@sideway/formula': 3.0.0 - '@sideway/pinpoint': 2.0.0 - dev: true - - /joi/17.7.1: + /joi@17.7.1: resolution: {integrity: sha512-teoLhIvWE298R6AeJywcjR4sX2hHjB3/xJX4qPjg+gTg+c0mzUDsziYlqPmLomq9gVsfaMcgPaGc7VxtD/9StA==} dependencies: '@hapi/hoek': 9.3.0 @@ -10475,23 +10060,27 @@ packages: '@sideway/pinpoint': 2.0.0 dev: true - /jpeg-js/0.4.4: + /jpeg-js@0.4.4: resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==} dev: true - /js-base64/3.7.2: - resolution: {integrity: sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==} + /js-base64@3.7.5: + resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==} dev: true - /js-sdsl/4.1.4: + /js-sdsl@4.1.4: resolution: {integrity: sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==} dev: true - /js-tokens/4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + /js-string-escape@1.0.1: + resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} + engines: {node: '>= 0.8'} dev: true - /js-yaml/3.14.1: + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true dependencies: @@ -10499,24 +10088,24 @@ packages: esprima: 4.0.1 dev: true - /js-yaml/4.1.0: + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 dev: true - /jsbn/0.1.1: + /jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} dev: true - /jsdoc-type-pratt-parser/3.1.0: - resolution: {integrity: sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw==} + /jsdoc-type-pratt-parser@4.0.0: + resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} engines: {node: '>=12.0.0'} dev: true - /jsdom/21.1.0: - resolution: {integrity: sha512-m0lzlP7qOtthD918nenK3hdItSd2I+V3W9IrBcB36sqDwG+KnUs66IF5GY7laGWUnlM9vTsD0W1QwSEBYWWcJg==} + /jsdom@21.1.1: + resolution: {integrity: sha512-Jjgdmw48RKcdAIQyUD1UdBh2ecH7VqwaXPN3ehoZN6MqgVbMn+lRm1aAT1AsdJRAJpwfa4IpwgzySn61h2qu3w==} engines: {node: '>=14'} peerDependencies: canvas: ^2.5.0 @@ -10525,11 +10114,10 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.8.1 + acorn: 8.8.2 acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 + cssstyle: 3.0.0 + data-urls: 4.0.0 decimal.js: 10.4.3 domexception: 4.0.0 escodegen: 2.0.0 @@ -10539,7 +10127,8 @@ packages: https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.2 - parse5: 7.1.1 + parse5: 7.1.2 + rrweb-cssom: 0.6.0 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 4.1.2 @@ -10547,8 +10136,8 @@ packages: webidl-conversions: 7.0.0 whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - ws: 8.12.0 + whatwg-url: 12.0.1 + ws: 8.13.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -10556,68 +10145,68 @@ packages: - utf-8-validate dev: true - /jsesc/0.5.0: + /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true dev: true - /jsesc/2.5.2: + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true dev: true - /jsesc/3.0.2: + /jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} hasBin: true dev: true - /json-buffer/3.0.1: + /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true - /json-parse-even-better-errors/2.3.1: + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true - /json-schema-traverse/0.4.1: + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true - /json-schema-traverse/1.0.0: + /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true - /json-schema/0.4.0: + /json-schema@0.4.0: resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} dev: true - /json-stable-stringify-without-jsonify/1.0.1: + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json-stringify-safe/5.0.1: + /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: true - /json5/2.2.1: + /json5@2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} engines: {node: '>=6'} hasBin: true dev: true - /jsonc-parser/3.2.0: + /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true - /jsonfile/4.0.0: + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.10 dev: true - /jsonfile/6.1.0: + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.0 @@ -10625,7 +10214,7 @@ packages: graceful-fs: 4.2.10 dev: true - /jsonlint/1.6.0: + /jsonlint@1.6.0: resolution: {integrity: sha512-x6YLBe6NjdpmIeiklwQOxsZuYj/SOWkT33GlTpaG1UdFGjdWjPcxJ1CWZAX3wA7tarz8E2YHF6KiW5HTapPlXw==} engines: {node: '>= 0.6'} hasBin: true @@ -10634,17 +10223,17 @@ packages: nomnom: 1.5.2 dev: true - /jsonparse/1.3.1: + /jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} dev: true - /jsonpointer/5.0.1: + /jsonpointer@5.0.1: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} dev: true - /jsprim/1.4.2: + /jsprim@1.4.2: resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} engines: {node: '>=0.6.0'} dependencies: @@ -10654,7 +10243,7 @@ packages: verror: 1.10.0 dev: true - /jsprim/2.0.2: + /jsprim@2.0.2: resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} engines: {'0': node >=0.6.0} dependencies: @@ -10664,69 +10253,69 @@ packages: verror: 1.10.0 dev: true - /junk/4.0.0: + /junk@4.0.0: resolution: {integrity: sha512-ojtSU++zLJ3jQG9bAYjg94w+/DOJtRyD7nPaerMFrBhmdVmiV5/exYH5t4uHga4G/95nT6hr1OJoKIFbYbrW5w==} engines: {node: '>=12.20'} dev: true - /keyv/4.5.0: + /keyv@4.5.0: resolution: {integrity: sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA==} dependencies: json-buffer: 3.0.1 dev: true - /khroma/2.0.0: + /khroma@2.0.0: resolution: {integrity: sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==} dev: false - /kind-of/6.0.3: + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} dev: true - /kleur/3.0.3: + /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} dev: true - /kleur/4.1.5: + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} dev: true - /kolorist/1.7.0: + /kolorist@1.7.0: resolution: {integrity: sha512-ymToLHqL02udwVdbkowNpzjFd6UzozMtshPQKVi5k1EjKRqKqBrOnE9QbLEb0/pV76SAiIT13hdL8R6suc+f3g==} dev: true - /ky/0.28.7: - resolution: {integrity: sha512-a23i6qSr/ep15vdtw/zyEQIDLoUaKDg9Jf04CYl/0ns/wXNYna26zJpI+MeIFaPeDvkrjLPrKtKOiiI3IE53RQ==} + /ky@0.30.0: + resolution: {integrity: sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==} engines: {node: '>=12'} dev: true - /layout-base/1.0.2: + /layout-base@1.0.2: resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} dev: false - /layout-base/2.0.1: + /layout-base@2.0.1: resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} dev: false - /lazy-ass/1.6.0: + /lazy-ass@1.6.0: resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} engines: {node: '> 0.8'} dev: true - /lcov-parse/1.0.0: + /lcov-parse@1.0.0: resolution: {integrity: sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==} hasBin: true dev: true - /leven/3.1.0: + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} dev: true - /levn/0.3.0: + /levn@0.3.0: resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} dependencies: @@ -10734,7 +10323,7 @@ packages: type-check: 0.3.2 dev: true - /levn/0.4.1: + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -10742,49 +10331,58 @@ packages: type-check: 0.4.0 dev: true - /lex-parser/0.1.4: + /lex-parser@0.1.4: resolution: {integrity: sha512-DuAEISsr1H4LOpmFLkyMc8YStiRWZCO8hMsoXAXSbgyfvs2WQhSt0+/FBv3ZU/JBFZMGcE+FWzEBSzwUU7U27w==} dev: true - /lilconfig/2.0.5: - resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} + /light-my-request@4.12.0: + resolution: {integrity: sha512-0y+9VIfJEsPVzK5ArSIJ8Dkxp8QMP7/aCuxCUtG/tr9a2NoOf/snATE/OUc05XUplJCEnRh6gTkH7xh9POt1DQ==} + dependencies: + ajv: 8.11.0 + cookie: 0.5.0 + process-warning: 1.0.0 + set-cookie-parser: 2.6.0 + dev: true + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} dev: true - /lines-and-columns/1.2.4: + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true - /linkify-it/4.0.1: + /linkify-it@4.0.1: resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} dependencies: uc.micro: 1.0.6 dev: true - /lint-staged/13.0.3: - resolution: {integrity: sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug==} + /lint-staged@13.2.1: + resolution: {integrity: sha512-8gfzinVXoPfga5Dz/ZOn8I2GOhf81Wvs+KwbEXQn/oWZAvCVS2PivrXfVbFJc93zD16uC0neS47RXHIjXKYZQw==} engines: {node: ^14.13.1 || >=16.0.0} hasBin: true dependencies: + chalk: 5.2.0 cli-truncate: 3.1.0 - colorette: 2.0.19 - commander: 9.4.0 - debug: 4.3.4 - execa: 6.1.0 - lilconfig: 2.0.5 - listr2: 4.0.5 + commander: 10.0.1 + debug: 4.3.4(supports-color@8.1.1) + execa: 7.1.1 + lilconfig: 2.1.0 + listr2: 5.0.8 micromatch: 4.0.5 normalize-path: 3.0.0 - object-inspect: 1.12.2 + object-inspect: 1.12.3 pidtree: 0.6.0 string-argv: 0.3.1 - yaml: 2.1.1 + yaml: 2.2.2 transitivePeerDependencies: - enquirer - supports-color dev: true - /listr2/3.14.0_enquirer@2.3.6: + /listr2@3.14.0(enquirer@2.3.6): resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} engines: {node: '>=10.0.0'} peerDependencies: @@ -10799,14 +10397,14 @@ packages: log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.3.0 - rxjs: 7.5.6 + rxjs: 7.8.0 through: 2.3.8 wrap-ansi: 7.0.0 dev: true - /listr2/4.0.5: - resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} - engines: {node: '>=12'} + /listr2@5.0.8: + resolution: {integrity: sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==} + engines: {node: ^14.13.1 || >=16.0.0} peerDependencies: enquirer: '>= 2.3.0 < 3' peerDependenciesMeta: @@ -10818,27 +10416,22 @@ packages: log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.3.0 - rxjs: 7.5.6 + rxjs: 7.8.0 through: 2.3.8 wrap-ansi: 7.0.0 dev: true - /loader-runner/4.3.0: + /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} dev: true - /local-pkg/0.4.2: - resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} - engines: {node: '>=14'} - dev: true - - /local-pkg/0.4.3: + /local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} dev: true - /locate-path/3.0.0: + /locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} dependencies: @@ -10846,49 +10439,85 @@ packages: path-exists: 3.0.0 dev: true - /locate-path/5.0.0: + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 dev: true - /locate-path/6.0.0: + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 dev: true - /lodash-es/4.17.21: + /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} dev: false - /lodash.debounce/4.0.8: + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + + /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: true - /lodash.merge/4.6.2: + /lodash.isfunction@3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} + dev: true + + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + + /lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + dev: true + + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /lodash.once/4.1.1: + /lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + dev: true + + /lodash.once@4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} dev: true - /lodash.sortby/4.7.0: + /lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + dev: true + + /lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} dev: true - /lodash/4.17.21: + /lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + dev: true + + /lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: true + + /lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + dev: true + + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - /log-driver/1.2.7: + /log-driver@1.2.7: resolution: {integrity: sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==} engines: {node: '>=0.8.6'} dev: true - /log-symbols/4.1.0: + /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} dependencies: @@ -10896,7 +10525,7 @@ packages: is-unicode-supported: 0.1.0 dev: true - /log-update/4.0.0: + /log-update@4.0.0: resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} engines: {node: '>=10'} dependencies: @@ -10906,91 +10535,113 @@ packages: wrap-ansi: 6.2.0 dev: true - /loglevel-plugin-prefix/0.8.4: + /loglevel-plugin-prefix@0.8.4: resolution: {integrity: sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==} dev: true - /loglevel/1.8.0: + /loglevel@1.8.0: resolution: {integrity: sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==} engines: {node: '>= 0.6.0'} dev: true - /longest-streak/3.0.1: + /longest-streak@3.0.1: resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==} dev: true - /loupe/2.3.6: + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: get-func-name: 2.0.0 dev: true - /lowercase-keys/2.0.0: + /lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} dev: true - /lru-cache/5.1.1: + /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 dev: true - /lru-cache/6.0.0: + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 dev: true - /lunr/2.3.9: + /lru-cache@9.1.1: + resolution: {integrity: sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==} + engines: {node: 14 || >=16.14} + dev: true + + /lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} dev: true - /magic-string/0.25.9: + /magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 - /magic-string/0.27.0: + /magic-string@0.27.0: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /make-dir/3.1.0: + /magic-string@0.30.0: + resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: semver: 6.3.0 dev: true - /make-error/1.3.6: + /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /makeerror/1.0.12: + /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 dev: true - /map-obj/1.0.1: + /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} dev: true - /map-obj/4.3.0: + /map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} dev: true - /map-stream/0.1.0: + /map-stream@0.1.0: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} dev: true - /markdown-it/13.0.1: + /mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + dev: true + + /markdown-it@13.0.1: resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==} hasBin: true dependencies: @@ -11001,17 +10652,24 @@ packages: uc.micro: 1.0.6 dev: true - /markdown-table/3.0.3: + /markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} dev: true - /marked/4.1.1: - resolution: {integrity: sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==} + /marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} hasBin: true dev: true - /mdast-util-find-and-replace/2.2.1: + /md5-hex@3.0.1: + resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} + engines: {node: '>=8'} + dependencies: + blueimp-md5: 2.19.0 + dev: true + + /mdast-util-find-and-replace@2.2.1: resolution: {integrity: sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==} dependencies: escape-string-regexp: 5.0.0 @@ -11019,10 +10677,10 @@ packages: unist-util-visit-parents: 5.1.1 dev: true - /mdast-util-from-markdown/0.8.5: + /mdast-util-from-markdown@0.8.5: resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.11 mdast-util-to-string: 2.0.0 micromark: 2.11.4 parse-entities: 2.0.0 @@ -11031,10 +10689,10 @@ packages: - supports-color dev: true - /mdast-util-from-markdown/1.2.0: + /mdast-util-from-markdown@1.2.0: resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.11 '@types/unist': 2.0.6 decode-named-character-reference: 1.0.2 mdast-util-to-string: 3.1.0 @@ -11050,40 +10708,40 @@ packages: - supports-color dev: true - /mdast-util-frontmatter/1.0.0: + /mdast-util-frontmatter@1.0.0: resolution: {integrity: sha512-7itKvp0arEVNpCktOET/eLFAYaZ+0cNjVtFtIPxgQ5tV+3i+D4SDDTjTzPWl44LT59PC+xdx+glNTawBdF98Mw==} dependencies: micromark-extension-frontmatter: 1.0.0 dev: true - /mdast-util-gfm-autolink-literal/1.0.2: + /mdast-util-gfm-autolink-literal@1.0.2: resolution: {integrity: sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.11 ccount: 2.0.1 mdast-util-find-and-replace: 2.2.1 micromark-util-character: 1.1.0 dev: true - /mdast-util-gfm-footnote/1.0.1: + /mdast-util-gfm-footnote@1.0.1: resolution: {integrity: sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.11 mdast-util-to-markdown: 1.3.0 micromark-util-normalize-identifier: 1.0.0 dev: true - /mdast-util-gfm-strikethrough/1.0.2: + /mdast-util-gfm-strikethrough@1.0.2: resolution: {integrity: sha512-T/4DVHXcujH6jx1yqpcAYYwd+z5lAYMw4Ls6yhTfbMMtCt0PHY4gEfhW9+lKsLBtyhUGKRIzcUA2FATVqnvPDA==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.11 mdast-util-to-markdown: 1.3.0 dev: true - /mdast-util-gfm-table/1.0.6: + /mdast-util-gfm-table@1.0.6: resolution: {integrity: sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.11 markdown-table: 3.0.3 mdast-util-from-markdown: 1.2.0 mdast-util-to-markdown: 1.3.0 @@ -11091,14 +10749,14 @@ packages: - supports-color dev: true - /mdast-util-gfm-task-list-item/1.0.1: + /mdast-util-gfm-task-list-item@1.0.1: resolution: {integrity: sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.11 mdast-util-to-markdown: 1.3.0 dev: true - /mdast-util-gfm/2.0.1: + /mdast-util-gfm@2.0.1: resolution: {integrity: sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==} dependencies: mdast-util-from-markdown: 1.2.0 @@ -11112,10 +10770,10 @@ packages: - supports-color dev: true - /mdast-util-to-markdown/1.3.0: + /mdast-util-to-markdown@1.3.0: resolution: {integrity: sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.11 '@types/unist': 2.0.6 longest-streak: 3.0.1 mdast-util-to-string: 3.1.0 @@ -11124,39 +10782,35 @@ packages: zwitch: 2.0.2 dev: true - /mdast-util-to-string/2.0.0: + /mdast-util-to-string@2.0.0: resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} dev: true - /mdast-util-to-string/3.1.0: + /mdast-util-to-string@3.1.0: resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} dev: true - /mdn-data/2.0.30: + /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} dev: true - /mdn-data/2.0.6: - resolution: {integrity: sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==} - dev: true - - /mdurl/1.0.1: + /mdurl@1.0.1: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} dev: true - /media-typer/0.3.0: + /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} dev: true - /memfs/3.4.11: + /memfs@3.4.11: resolution: {integrity: sha512-GvsCITGAyDCxxsJ+X6prJexFQEhOCJaIlUbsAvjzSI5o5O7j2dle3jWvz5Z5aOdpOxW6ol3vI1+0ut+641F1+w==} engines: {node: '>= 4.0.0'} dependencies: fs-monkey: 1.0.3 dev: true - /meow/10.1.5: + /meow@10.1.5: resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -11174,7 +10828,7 @@ packages: yargs-parser: 20.2.9 dev: true - /meow/8.1.2: + /meow@8.1.2: resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} engines: {node: '>=10'} dependencies: @@ -11191,25 +10845,25 @@ packages: yargs-parser: 20.2.9 dev: true - /merge-descriptors/1.0.1: + /merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} dev: true - /merge-stream/2.0.0: + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true - /merge2/1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} dev: true - /methods/1.1.2: + /methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} dev: true - /micromark-core-commonmark/1.0.6: + /micromark-core-commonmark@1.0.6: resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} dependencies: decode-named-character-reference: 1.0.2 @@ -11230,7 +10884,7 @@ packages: uvu: 0.5.6 dev: true - /micromark-extension-frontmatter/1.0.0: + /micromark-extension-frontmatter@1.0.0: resolution: {integrity: sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==} dependencies: fault: 2.0.1 @@ -11238,7 +10892,7 @@ packages: micromark-util-symbol: 1.0.1 dev: true - /micromark-extension-gfm-autolink-literal/1.0.3: + /micromark-extension-gfm-autolink-literal@1.0.3: resolution: {integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==} dependencies: micromark-util-character: 1.1.0 @@ -11248,7 +10902,7 @@ packages: uvu: 0.5.6 dev: true - /micromark-extension-gfm-footnote/1.0.4: + /micromark-extension-gfm-footnote@1.0.4: resolution: {integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==} dependencies: micromark-core-commonmark: 1.0.6 @@ -11261,7 +10915,7 @@ packages: uvu: 0.5.6 dev: true - /micromark-extension-gfm-strikethrough/1.0.4: + /micromark-extension-gfm-strikethrough@1.0.4: resolution: {integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==} dependencies: micromark-util-chunked: 1.0.0 @@ -11272,7 +10926,7 @@ packages: uvu: 0.5.6 dev: true - /micromark-extension-gfm-table/1.0.5: + /micromark-extension-gfm-table@1.0.5: resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==} dependencies: micromark-factory-space: 1.0.0 @@ -11282,13 +10936,13 @@ packages: uvu: 0.5.6 dev: true - /micromark-extension-gfm-tagfilter/1.0.1: + /micromark-extension-gfm-tagfilter@1.0.1: resolution: {integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==} dependencies: micromark-util-types: 1.0.2 dev: true - /micromark-extension-gfm-task-list-item/1.0.3: + /micromark-extension-gfm-task-list-item@1.0.3: resolution: {integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==} dependencies: micromark-factory-space: 1.0.0 @@ -11298,7 +10952,7 @@ packages: uvu: 0.5.6 dev: true - /micromark-extension-gfm/2.0.1: + /micromark-extension-gfm@2.0.1: resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} dependencies: micromark-extension-gfm-autolink-literal: 1.0.3 @@ -11311,7 +10965,7 @@ packages: micromark-util-types: 1.0.2 dev: true - /micromark-factory-destination/1.0.0: + /micromark-factory-destination@1.0.0: resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} dependencies: micromark-util-character: 1.1.0 @@ -11319,7 +10973,7 @@ packages: micromark-util-types: 1.0.2 dev: true - /micromark-factory-label/1.0.2: + /micromark-factory-label@1.0.2: resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} dependencies: micromark-util-character: 1.1.0 @@ -11328,14 +10982,14 @@ packages: uvu: 0.5.6 dev: true - /micromark-factory-space/1.0.0: + /micromark-factory-space@1.0.0: resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} dependencies: micromark-util-character: 1.1.0 micromark-util-types: 1.0.2 dev: true - /micromark-factory-title/1.0.2: + /micromark-factory-title@1.0.2: resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} dependencies: micromark-factory-space: 1.0.0 @@ -11345,7 +10999,7 @@ packages: uvu: 0.5.6 dev: true - /micromark-factory-whitespace/1.0.0: + /micromark-factory-whitespace@1.0.0: resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} dependencies: micromark-factory-space: 1.0.0 @@ -11354,20 +11008,20 @@ packages: micromark-util-types: 1.0.2 dev: true - /micromark-util-character/1.1.0: + /micromark-util-character@1.1.0: resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} dependencies: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 dev: true - /micromark-util-chunked/1.0.0: + /micromark-util-chunked@1.0.0: resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} dependencies: micromark-util-symbol: 1.0.1 dev: true - /micromark-util-classify-character/1.0.0: + /micromark-util-classify-character@1.0.0: resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} dependencies: micromark-util-character: 1.1.0 @@ -11375,20 +11029,20 @@ packages: micromark-util-types: 1.0.2 dev: true - /micromark-util-combine-extensions/1.0.0: + /micromark-util-combine-extensions@1.0.0: resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} dependencies: micromark-util-chunked: 1.0.0 micromark-util-types: 1.0.2 dev: true - /micromark-util-decode-numeric-character-reference/1.0.0: + /micromark-util-decode-numeric-character-reference@1.0.0: resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} dependencies: micromark-util-symbol: 1.0.1 dev: true - /micromark-util-decode-string/1.0.2: + /micromark-util-decode-string@1.0.2: resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} dependencies: decode-named-character-reference: 1.0.2 @@ -11397,27 +11051,27 @@ packages: micromark-util-symbol: 1.0.1 dev: true - /micromark-util-encode/1.0.1: + /micromark-util-encode@1.0.1: resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} dev: true - /micromark-util-html-tag-name/1.1.0: + /micromark-util-html-tag-name@1.1.0: resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} dev: true - /micromark-util-normalize-identifier/1.0.0: + /micromark-util-normalize-identifier@1.0.0: resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} dependencies: micromark-util-symbol: 1.0.1 dev: true - /micromark-util-resolve-all/1.0.0: + /micromark-util-resolve-all@1.0.0: resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} dependencies: micromark-util-types: 1.0.2 dev: true - /micromark-util-sanitize-uri/1.0.0: + /micromark-util-sanitize-uri@1.0.0: resolution: {integrity: sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==} dependencies: micromark-util-character: 1.1.0 @@ -11425,7 +11079,7 @@ packages: micromark-util-symbol: 1.0.1 dev: true - /micromark-util-subtokenize/1.0.2: + /micromark-util-subtokenize@1.0.2: resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} dependencies: micromark-util-chunked: 1.0.0 @@ -11434,28 +11088,28 @@ packages: uvu: 0.5.6 dev: true - /micromark-util-symbol/1.0.1: + /micromark-util-symbol@1.0.1: resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} dev: true - /micromark-util-types/1.0.2: + /micromark-util-types@1.0.2: resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} dev: true - /micromark/2.11.4: + /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) parse-entities: 2.0.0 transitivePeerDependencies: - supports-color dev: true - /micromark/3.0.10: + /micromark@3.0.10: resolution: {integrity: sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==} dependencies: '@types/debug': 4.1.7 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.0.6 micromark-factory-space: 1.0.0 @@ -11475,7 +11129,7 @@ packages: - supports-color dev: true - /micromatch/4.0.5: + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: @@ -11483,74 +11137,81 @@ packages: picomatch: 2.3.1 dev: true - /mime-db/1.52.0: + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} dev: true - /mime-types/2.1.35: + /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: true - /mime/1.6.0: + /mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true dev: true - /mimic-fn/2.1.0: + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} dev: true - /mimic-fn/4.0.0: + /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} dev: true - /mimic-response/1.0.1: + /mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} dev: true - /mimic-response/3.1.0: + /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} dev: true - /min-indent/1.0.1: + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} dev: true - /minimalistic-assert/1.0.1: + /minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} dev: true - /minimatch/3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: true - /minimatch/5.1.0: - resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimatch/5.1.6: + /minimatch@5.1.6: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 dev: true - /minimist-options/4.1.0: + /minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.0: + resolution: {integrity: sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} dependencies: @@ -11559,57 +11220,62 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.6: + /minimist@1.2.6: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} dev: true - /minimist/1.2.8: + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /mkdirp/0.5.6: + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: true + + /minisearch@6.0.1: + resolution: {integrity: sha512-Ly1w0nHKnlhAAh6/BF/+9NgzXfoJxaJ8nhopFhQ3NcvFJrFIL+iCg9gw9e9UMBD+XIsp/RyznJ/o5UIe5Kw+kg==} + dev: true + + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true dependencies: - minimist: 1.2.6 + minimist: 1.2.8 dev: true - /mlly/1.1.0: - resolution: {integrity: sha512-cwzBrBfwGC1gYJyfcy8TcZU1f+dbH/T+TuOhtYP2wLv/Fb51/uV7HJQfBPtEupZ2ORLRU1EKFS/QfS3eo9+kBQ==} + /mlly@1.2.0: + resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==} dependencies: - acorn: 8.8.1 + acorn: 8.8.2 pathe: 1.1.0 - pkg-types: 1.0.1 - ufo: 1.0.1 + pkg-types: 1.0.2 + ufo: 1.1.1 dev: true - /moment-mini/2.29.4: - resolution: {integrity: sha512-uhXpYwHFeiTbY9KSgPPRoo1nt8OxNVdMVoTBYHfSEKeRkIkwGpO+gERmhuhBtzfaeOyTkykSrm2+noJBgqt3Hg==} - dev: false - - /mri/1.2.0: + /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} dev: true - /mrmime/1.0.1: + /mrmime@1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} engines: {node: '>=10'} dev: true - /ms/2.0.0: + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true - /ms/2.1.2: + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /ms/2.1.3: + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /multicast-dns/7.2.5: + /multicast-dns@7.2.5: resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} hasBin: true dependencies: @@ -11617,46 +11283,54 @@ packages: thunky: 1.1.0 dev: true - /nanoid/3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /natural-compare-lite/1.4.0: + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true - /natural-compare/1.4.0: + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /negotiator/0.6.3: + /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} dev: true - /neo-async/2.6.2: + /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true - /nested-error-stacks/2.1.1: + /nested-error-stacks@2.1.1: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /netmask/2.0.2: + /netmask@2.0.2: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} dev: true - /nice-try/1.0.5: + /nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: true - /node-fetch-native/0.1.8: + /node-cleanup@2.1.2: + resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} + dev: true + + /node-fetch-native@0.1.8: resolution: {integrity: sha512-ZNaury9r0NxaT2oL65GvdGDy+5PlSaHTovT6JV5tOW07k1TQmgC0olZETa4C9KZg0+6zBr99ctTYa3Utqj9P/Q==} dev: true - /node-fetch/2.6.7: + /node-fetch-native@1.1.0: + resolution: {integrity: sha512-nl5goFCig93JZ9FIV8GHT9xpNqXbxQUzkOmKIMKmncsBH9jhg7qKex8hirpymkBFmNQ114chEEG5lS4wgK2I+Q==} + dev: true + + /node-fetch@2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} peerDependencies: @@ -11668,24 +11342,37 @@ packages: whatwg-url: 5.0.0 dev: true - /node-forge/1.3.1: + /node-fetch@2.6.9(encoding@0.1.13): + resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + encoding: 0.1.13 + whatwg-url: 5.0.0 + dev: true + + /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} dev: true - /node-int64/0.4.0: + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-releases/2.0.10: + /node-releases@2.0.10: resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} dev: true - /node-releases/2.0.6: + /node-releases@2.0.6: resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} dev: true - /nomnom/1.5.2: + /nomnom@1.5.2: resolution: {integrity: sha512-fiVbT7BqxiQqjlR9U3FDGOSERFCKoXVCdxV2FwZuNN7/cmJ42iQx35nUFOAFDcyvemu9Adp+IlsCGlKQYLmBKw==} deprecated: Package no longer supported. Contact support@npmjs.com for more info. dependencies: @@ -11693,11 +11380,11 @@ packages: underscore: 1.1.7 dev: true - /non-layered-tidy-tree-layout/2.0.2: + /non-layered-tidy-tree-layout@2.0.2: resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==} dev: false - /normalize-package-data/2.5.0: + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 @@ -11706,70 +11393,73 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data/3.0.3: + /normalize-package-data@3.0.3: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 is-core-module: 2.10.0 - semver: 7.3.8 + semver: 7.5.0 validate-npm-package-license: 3.0.4 dev: true - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true - /normalize-url/6.1.0: + /normalize-url@6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} dev: true - /npm-run-path/2.0.2: + /npm-run-path@2.0.2: resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} engines: {node: '>=4'} dependencies: path-key: 2.0.1 dev: true - /npm-run-path/4.0.1: + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 dev: true - /npm-run-path/5.1.0: + /npm-run-path@5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 dev: true - /nwsapi/2.2.2: + /nwsapi@2.2.2: resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} dev: true - /oauth-sign/0.9.0: + /oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} dev: true - /object-assign/4.1.1: + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - dev: true - /object-inspect/1.12.2: + /object-inspect@1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} dev: true - /object-keys/1.1.1: + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: true + + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} dev: true - /object.assign/4.1.4: + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: @@ -11779,11 +11469,19 @@ packages: object-keys: 1.1.1 dev: true - /obuf/1.1.2: + /obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} dev: true - /ohmyfetch/0.4.21: + /ofetch@1.0.1: + resolution: {integrity: sha512-icBz2JYfEpt+wZz1FRoGcrMigjNKjzvufE26m9+yUiacRQRHwnNlGRPiDnW4op7WX/MR6aniwS8xw8jyVelF2g==} + dependencies: + destr: 1.2.2 + node-fetch-native: 1.1.0 + ufo: 1.1.1 + dev: true + + /ohmyfetch@0.4.21: resolution: {integrity: sha512-VG7f/JRvqvBOYvL0tHyEIEG7XHWm7OqIfAs6/HqwWwDfjiJ1g0huIpe5sFEmyb+7hpFa1EGNH2aERWR72tlClw==} dependencies: destr: 1.2.2 @@ -11792,39 +11490,39 @@ packages: undici: 5.14.0 dev: true - /on-finished/2.4.1: + /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 dev: true - /on-headers/1.0.2: + /on-headers@1.0.2: resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} engines: {node: '>= 0.8'} dev: true - /once/1.4.0: + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: true - /onetime/5.1.2: + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 dev: true - /onetime/6.0.0: + /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 dev: true - /open/8.4.0: + /open@8.4.0: resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} engines: {node: '>=12'} dependencies: @@ -11833,7 +11531,7 @@ packages: is-wsl: 2.2.0 dev: true - /optionator/0.8.3: + /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} dependencies: @@ -11845,7 +11543,7 @@ packages: word-wrap: 1.2.3 dev: true - /optionator/0.9.1: + /optionator@0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} dependencies: @@ -11857,96 +11555,96 @@ packages: word-wrap: 1.2.3 dev: true - /ospath/1.2.2: + /ospath@1.2.2: resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} dev: true - /p-cancelable/2.1.1: + /p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} dev: true - /p-event/4.2.0: + /p-event@4.2.0: resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==} engines: {node: '>=8'} dependencies: p-timeout: 3.2.0 dev: true - /p-filter/3.0.0: + /p-filter@3.0.0: resolution: {integrity: sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-map: 5.5.0 dev: true - /p-finally/1.0.0: + /p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} dev: true - /p-iteration/1.1.8: + /p-iteration@1.1.8: resolution: {integrity: sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==} engines: {node: '>=8.0.0'} dev: true - /p-limit/2.3.0: + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 dev: true - /p-limit/3.1.0: + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 dev: true - /p-limit/4.0.0: + /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 dev: true - /p-locate/3.0.0: + /p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} dependencies: p-limit: 2.3.0 dev: true - /p-locate/4.1.0: + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 dev: true - /p-locate/5.0.0: + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 dev: true - /p-map/4.0.0: + /p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 dev: true - /p-map/5.5.0: + /p-map@5.5.0: resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} engines: {node: '>=12'} dependencies: aggregate-error: 4.0.1 dev: true - /p-retry/4.6.2: + /p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} dependencies: @@ -11954,25 +11652,25 @@ packages: retry: 0.13.1 dev: true - /p-timeout/3.2.0: + /p-timeout@3.2.0: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} dependencies: p-finally: 1.0.0 dev: true - /p-try/2.2.0: + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} dev: true - /pac-proxy-agent/5.0.0: + /pac-proxy-agent@5.0.0: resolution: {integrity: sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==} engines: {node: '>= 8'} dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) get-uri: 3.0.2 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 @@ -11983,7 +11681,7 @@ packages: - supports-color dev: true - /pac-resolver/5.0.1: + /pac-resolver@5.0.1: resolution: {integrity: sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==} engines: {node: '>= 8'} dependencies: @@ -11992,25 +11690,25 @@ packages: netmask: 2.0.2 dev: true - /pako/1.0.11: + /pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} dev: true - /parent-module/1.0.1: + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 dev: true - /parent-module/2.0.0: + /parent-module@2.0.0: resolution: {integrity: sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==} engines: {node: '>=8'} dependencies: callsites: 3.1.0 dev: true - /parse-entities/2.0.0: + /parse-entities@2.0.0: resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} dependencies: character-entities: 1.2.4 @@ -12021,7 +11719,7 @@ packages: is-hexadecimal: 1.0.4 dev: true - /parse-json/5.2.0: + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: @@ -12031,148 +11729,179 @@ packages: lines-and-columns: 1.2.4 dev: true - /parse5/6.0.1: + /parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} dev: true - /parse5/7.1.1: + /parse5@7.1.1: resolution: {integrity: sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==} dependencies: entities: 4.4.0 dev: true - /parseurl/1.3.3: + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.4.0 + dev: true + + /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} dev: true - /path-browserify/1.0.1: + /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} dev: true - /path-exists/3.0.0: + /path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} dev: true - /path-exists/4.0.0: + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} dev: true - /path-is-absolute/1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} dev: true - /path-key/2.0.1: + /path-key@2.0.1: resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} engines: {node: '>=4'} dev: true - /path-key/3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} dev: true - /path-key/4.0.0: + /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} dev: true - /path-parse/1.0.7: + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-to-regexp/0.1.7: + /path-scurry@1.7.0: + resolution: {integrity: sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 9.1.1 + minipass: 5.0.0 + dev: true + + /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: true - /path-type/4.0.0: + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true - /pathe/1.1.0: + /pathe@1.1.0: resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} dev: true - /pathval/1.1.1: + /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true - /pause-stream/0.0.11: + /pause-stream@0.0.11: resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} dependencies: through: 2.3.8 dev: true - /pend/1.2.0: + /pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true - /perfect-debounce/0.1.3: + /perfect-debounce@0.1.3: resolution: {integrity: sha512-NOT9AcKiDGpnV/HBhI22Str++XWcErO/bALvHCuhv33owZW/CjH8KAFLZDCmu3727sihe0wTxpDhyGc6M8qacQ==} dev: true - /performance-now/2.1.0: + /performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true - /picocolors/1.0.0: + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true - /pidtree/0.6.0: + /pidtree@0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} engines: {node: '>=0.10'} hasBin: true dev: true - /pify/2.3.0: + /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} dev: true - /pirates/4.0.5: + /pino-std-serializers@3.2.0: + resolution: {integrity: sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==} + dev: true + + /pino@6.14.0: + resolution: {integrity: sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==} + hasBin: true + dependencies: + fast-redact: 3.1.2 + fast-safe-stringify: 2.1.1 + flatstr: 1.0.12 + pino-std-serializers: 3.2.0 + process-warning: 1.0.0 + quick-format-unescaped: 4.0.4 + sonic-boom: 1.4.1 + dev: true + + /pirates@4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} dev: true - /pixelmatch/5.3.0: + /pixelmatch@5.3.0: resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==} hasBin: true dependencies: pngjs: 6.0.0 dev: true - /pkg-dir/3.0.0: + /pkg-dir@3.0.0: resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} engines: {node: '>=6'} dependencies: find-up: 3.0.0 dev: true - /pkg-dir/4.2.0: + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 dev: true - /pkg-types/1.0.1: - resolution: {integrity: sha512-jHv9HB+Ho7dj6ItwppRDDl0iZRYBD0jsakHXtFgoLr+cHSF6xC+QL54sJmWxyGxOLYSHm0afhXhXcQDQqH9z8g==} + /pkg-types@1.0.2: + resolution: {integrity: sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==} dependencies: jsonc-parser: 3.2.0 - mlly: 1.1.0 + mlly: 1.2.0 pathe: 1.1.0 dev: true - /plist/3.0.6: + /plist@3.0.6: resolution: {integrity: sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==} engines: {node: '>=6'} dependencies: @@ -12180,67 +11909,67 @@ packages: xmlbuilder: 15.1.1 dev: true - /pluralize/8.0.0: + /pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} dev: true - /png-async/0.9.4: + /png-async@0.9.4: resolution: {integrity: sha512-B//AXX9TkneKfgtOpT1mdUnnhk2BImGD+a98vImsMU8uo1dBeHyW/kM2erWZ/CsYteTPU/xKG+t6T62heHkC3A==} dev: true - /pngjs/3.4.0: + /pngjs@3.4.0: resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} engines: {node: '>=4.0.0'} dev: true - /pngjs/6.0.0: + /pngjs@6.0.0: resolution: {integrity: sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==} engines: {node: '>=12.13.0'} dev: true - /pnpm/7.15.0: - resolution: {integrity: sha512-GGQ5+MCwD0bpq+65uitpgO1+ZusZ1keO5ebG/CH6ciu1ohnZj5Y3X374Ow/CBApa+Jw2/NUifVRz2fW4JChftA==} - engines: {node: '>=14.6'} + /pnpm@8.3.1: + resolution: {integrity: sha512-0mT2ZAv08J3nz8xUdWhRW88GE89IWgPo/xZhb6acQXK2+aCikl7kT7Bg31ZcnJqOrwYXSed68xjLd/ZoSnBR8w==} + engines: {node: '>=16.14'} hasBin: true dev: true - /postcss-value-parser/4.2.0: + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - /postcss/8.4.20: - resolution: {integrity: sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /postcss/8.4.21: + /postcss@8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /postcss@8.4.23: + resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 - /preact/10.11.0: + /preact@10.11.0: resolution: {integrity: sha512-Fk6+vB2kb6mSJfDgODq0YDhMfl0HNtK5+Uc9QqECO4nlyPAQwCI+BKyWO//idA7ikV7o+0Fm6LQmNuQi1wXI1w==} dev: true - /prelude-ls/1.1.2: + /prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} dev: true - /prelude-ls/1.2.1: + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true - /prettier-plugin-jsdoc/0.4.2_prettier@2.7.1: + /prettier-plugin-jsdoc@0.4.2(prettier@2.8.8): resolution: {integrity: sha512-w2jnAQm3z0GAG0bhzVJeehzDtrhGMSxJjit5ApCc2oxWfc7+jmLAkbtdOXaSpfwZz3IWkk+PiQPeRrLNpbM+Mw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -12249,28 +11978,28 @@ packages: binary-searching: 2.0.5 comment-parser: 1.3.1 mdast-util-from-markdown: 1.2.0 - prettier: 2.7.1 + prettier: 2.8.8 transitivePeerDependencies: - supports-color dev: true - /prettier/2.7.1: - resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true dev: true - /pretty-bytes/5.6.0: + /pretty-bytes@5.6.0: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} dev: true - /pretty-bytes/6.1.0: + /pretty-bytes@6.1.0: resolution: {integrity: sha512-Rk753HI8f4uivXi4ZCIYdhmG1V+WKzvRMg/X+M42a6t7D07RcmopXJMDNk6N++7Bl75URRGsb40ruvg7Hcp2wQ==} engines: {node: ^14.13.1 || >=16.0.0} dev: true - /pretty-format/27.5.1: + /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -12279,20 +12008,24 @@ packages: react-is: 17.0.2 dev: true - /pretty-format/29.3.1: - resolution: {integrity: sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==} + /pretty-format@29.5.0: + resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.0.0 + '@jest/schemas': 29.4.3 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true - /process-nextick-args/2.0.1: + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /prompts/2.4.2: + /process-warning@1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + dev: true + + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: @@ -12300,7 +12033,14 @@ packages: sisteransi: 1.0.5 dev: true - /proxy-addr/2.0.7: + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} dependencies: @@ -12308,12 +12048,12 @@ packages: ipaddr.js: 1.9.1 dev: true - /proxy-agent/5.0.0: + /proxy-agent@5.0.0: resolution: {integrity: sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==} engines: {node: '>= 8'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 lru-cache: 5.1.1 @@ -12324,15 +12064,15 @@ packages: - supports-color dev: true - /proxy-from-env/1.0.0: + /proxy-from-env@1.0.0: resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} dev: true - /proxy-from-env/1.1.0: + /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: true - /ps-tree/1.2.0: + /ps-tree@1.2.0: resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} engines: {node: '>= 0.10'} hasBin: true @@ -12340,69 +12080,82 @@ packages: event-stream: 3.3.4 dev: true - /psl/1.9.0: + /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true - /pump/3.0.0: + /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 dev: true - /punycode/2.1.1: + /punycode@2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} dev: true - /q/1.5.1: + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: true + + /pure-rand@6.0.2: + resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} + dev: true + + /q@1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: true - /qs/6.11.0: + /qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} dependencies: side-channel: 1.0.4 dev: true - /qs/6.5.3: + /qs@6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} engines: {node: '>=0.6'} dev: true - /querystringify/2.2.0: + /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /quick-lru/4.0.1: + /quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + dev: true + + /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} dev: true - /quick-lru/5.1.1: + /quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} dev: true - /randombytes/2.1.0: + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 dev: true - /range-parser/1.2.1: + /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} dev: true - /raw-body/2.5.1: + /raw-body@2.5.1: resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} engines: {node: '>= 0.8'} dependencies: @@ -12412,15 +12165,37 @@ packages: unpipe: 1.0.0 dev: true - /react-is/17.0.2: + /react-dom@16.14.0(react@16.14.0): + resolution: {integrity: sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==} + peerDependencies: + react: ^16.14.0 + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + prop-types: 15.8.1 + react: 16.14.0 + scheduler: 0.19.1 + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true - /react-is/18.2.0: + /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /read-pkg-up/7.0.1: + /react@16.14.0: + resolution: {integrity: sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + prop-types: 15.8.1 + + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} dependencies: @@ -12429,7 +12204,7 @@ packages: type-fest: 0.8.1 dev: true - /read-pkg-up/8.0.0: + /read-pkg-up@8.0.0: resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==} engines: {node: '>=12'} dependencies: @@ -12438,7 +12213,7 @@ packages: type-fest: 1.4.0 dev: true - /read-pkg/5.2.0: + /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: @@ -12448,7 +12223,7 @@ packages: type-fest: 0.6.0 dev: true - /read-pkg/6.0.0: + /read-pkg@6.0.0: resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} engines: {node: '>=12'} dependencies: @@ -12458,7 +12233,7 @@ packages: type-fest: 1.4.0 dev: true - /readable-stream/1.1.14: + /readable-stream@1.1.14: resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} dependencies: core-util-is: 1.0.3 @@ -12467,7 +12242,7 @@ packages: string_decoder: 0.10.31 dev: true - /readable-stream/2.3.7: + /readable-stream@2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} dependencies: core-util-is: 1.0.3 @@ -12479,7 +12254,7 @@ packages: util-deprecate: 1.0.2 dev: true - /readable-stream/3.6.0: + /readable-stream@3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} dependencies: @@ -12488,21 +12263,21 @@ packages: util-deprecate: 1.0.2 dev: true - /readdirp/3.6.0: + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 dev: true - /rechoir/0.7.1: + /rechoir@0.7.1: resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==} engines: {node: '>= 0.10'} dependencies: resolve: 1.22.1 dev: true - /redent/3.0.0: + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} dependencies: @@ -12510,7 +12285,7 @@ packages: strip-indent: 3.0.0 dev: true - /redent/4.0.0: + /redent@4.0.0: resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} engines: {node: '>=12'} dependencies: @@ -12518,33 +12293,33 @@ packages: strip-indent: 4.0.0 dev: true - /regenerate-unicode-properties/10.1.0: + /regenerate-unicode-properties@10.1.0: resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} dependencies: regenerate: 1.4.2 dev: true - /regenerate/1.4.2: + /regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} dev: true - /regenerator-runtime/0.13.11: + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: true - /regenerator-transform/0.15.1: + /regenerator-transform@0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: '@babel/runtime': 7.21.0 dev: true - /regexp-tree/0.1.24: + /regexp-tree@0.1.24: resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} hasBin: true dev: true - /regexp.prototype.flags/1.4.3: + /regexp.prototype.flags@1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} dependencies: @@ -12553,12 +12328,7 @@ packages: functions-have-names: 1.2.3 dev: true - /regexpp/3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true - - /regexpu-core/5.3.1: + /regexpu-core@5.3.1: resolution: {integrity: sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==} engines: {node: '>=4'} dependencies: @@ -12570,14 +12340,14 @@ packages: unicode-match-property-value-ecmascript: 2.1.0 dev: true - /regjsparser/0.9.1: + /regjsparser@0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true dependencies: jsesc: 0.5.0 dev: true - /remark-frontmatter/4.0.1: + /remark-frontmatter@4.0.1: resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==} dependencies: '@types/mdast': 3.0.10 @@ -12586,7 +12356,7 @@ packages: unified: 10.1.2 dev: true - /remark-gfm/3.0.1: + /remark-gfm@3.0.1: resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} dependencies: '@types/mdast': 3.0.10 @@ -12597,25 +12367,25 @@ packages: - supports-color dev: true - /remark-parse/10.0.1: + /remark-parse@10.0.1: resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.11 mdast-util-from-markdown: 1.2.0 unified: 10.1.2 transitivePeerDependencies: - supports-color dev: true - /remark-stringify/10.0.2: + /remark-stringify@10.0.2: resolution: {integrity: sha512-6wV3pvbPvHkbNnWB0wdDvVFHOe1hBRAx1Q/5g/EpH4RppAII6J8Gnwe7VbHuXaoKIF6LAg6ExTel/+kNqSQ7lw==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.11 mdast-util-to-markdown: 1.3.0 unified: 10.1.2 dev: true - /remark/14.0.2: + /remark@14.0.2: resolution: {integrity: sha512-A3ARm2V4BgiRXaUo5K0dRvJ1lbogrbXnhkJRmD0yw092/Yl0kOCZt1k9ZeElEwkZsWGsMumz6qL5MfNJH9nOBA==} dependencies: '@types/mdast': 3.0.10 @@ -12626,18 +12396,18 @@ packages: - supports-color dev: true - /repeat-string/1.6.1: + /repeat-string@1.6.1: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} dev: true - /request-progress/3.0.0: + /request-progress@3.0.0: resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} dependencies: throttleit: 1.0.0 dev: true - /request/2.88.2: + /request@2.88.2: resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} engines: {node: '>= 6'} deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 @@ -12664,61 +12434,61 @@ packages: uuid: 3.4.0 dev: true - /require-directory/2.1.1: + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: true - /require-from-string/2.0.2: + /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} dev: true - /requires-port/1.0.0: + /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true - /resolve-alpn/1.2.1: + /resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} dev: true - /resolve-cwd/3.0.0: + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 dev: true - /resolve-from/4.0.0: + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true - /resolve-from/5.0.0: + /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} dev: true - /resolve-global/1.0.0: + /resolve-global@1.0.0: resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} engines: {node: '>=8'} dependencies: global-dirs: 0.1.1 dev: true - /resolve.exports/1.1.0: - resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} dev: true - /resolve/1.19.0: + /resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: is-core-module: 2.10.0 path-parse: 1.0.7 dev: true - /resolve/1.22.1: + /resolve@1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: @@ -12727,13 +12497,13 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /responselike/2.0.1: + /responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} dependencies: lowercase-keys: 2.0.0 dev: true - /restore-cursor/3.1.0: + /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} dependencies: @@ -12741,45 +12511,52 @@ packages: signal-exit: 3.0.7 dev: true - /retry/0.13.1: + /ret@0.2.2: + resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} + engines: {node: '>=4'} + dev: true + + /retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} dev: true - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rfdc/1.3.0: + /rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} dev: true - /rimraf/2.7.1: + /rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true dependencies: glob: 7.2.3 dev: true - /rimraf/3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 dev: true - /rimraf/4.1.2: - resolution: {integrity: sha512-BlIbgFryTbw3Dz6hyoWFhKk+unCcHMSkZGrTFVAx2WmttdBSonsdtRlwiuTbDqTKr+UlXIUqJVS4QT5tUzGENQ==} + /rimraf@5.0.0: + resolution: {integrity: sha512-Jf9llaP+RvaEVS5nPShYFhtXIrb3LRKP281ib3So0KkeZKo2wIKyq0Re7TOSwanasA423PSr6CCIL4bP6T040g==} engines: {node: '>=14'} hasBin: true + dependencies: + glob: 10.2.2 dev: true - /robust-predicates/3.0.1: + /robust-predicates@3.0.1: resolution: {integrity: sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==} dev: false - /rollup-plugin-terser/7.0.2_rollup@2.79.1: + /rollup-plugin-terser@7.0.2(rollup@2.79.1): resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser peerDependencies: @@ -12792,8 +12569,8 @@ packages: terser: 5.15.1 dev: true - /rollup-plugin-visualizer/5.8.3: - resolution: {integrity: sha512-QGJk4Bqe4AOat5AjipOh8esZH1nck5X2KFpf4VytUdSUuuuSwvIQZjMGgjcxe/zXexltqaXp5Vx1V3LmnQH15Q==} + /rollup-plugin-visualizer@5.9.0: + resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} engines: {node: '>=14'} hasBin: true peerDependencies: @@ -12803,11 +12580,12 @@ packages: optional: true dependencies: open: 8.4.0 + picomatch: 2.3.1 source-map: 0.7.4 - yargs: 17.5.1 + yargs: 17.7.2 dev: true - /rollup/2.79.1: + /rollup@2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} hasBin: true @@ -12815,52 +12593,50 @@ packages: fsevents: 2.3.2 dev: true - /rollup/3.15.0: - resolution: {integrity: sha512-F9hrCAhnp5/zx/7HYmftvsNBkMfLfk/dXUh73hPSM2E3CRgap65orDNJbLetoiUFwSAk6iHPLvBrZ5iHYvzqsg==} + /rollup@3.21.0: + resolution: {integrity: sha512-ANPhVcyeHvYdQMUyCbczy33nbLzI7RzrBje4uvNiTDJGIMtlKoOStmympwr9OtS1LZxiDmE2wvxHyVhoLtf1KQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 dev: true - /run-parallel/1.2.0: + /rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + dev: true + + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true - /rw/1.3.3: + /rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} dev: false - /rxjs/7.5.6: - resolution: {integrity: sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==} - dependencies: - tslib: 2.4.0 - dev: true - - /rxjs/7.8.0: + /rxjs@7.8.0: resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} dependencies: tslib: 2.4.0 dev: true - /sade/1.8.1: + /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} dependencies: mri: 1.2.0 dev: true - /safe-buffer/5.1.2: + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true - /safe-buffer/5.2.1: + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safe-regex-test/1.0.0: + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 @@ -12868,70 +12644,90 @@ packages: is-regex: 1.1.4 dev: true - /safe-regex/2.1.1: + /safe-regex2@2.0.0: + resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} + dependencies: + ret: 0.2.2 + dev: true + + /safe-regex@2.1.1: resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} dependencies: regexp-tree: 0.1.24 dev: true - /safer-buffer/2.1.2: + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /saxes/5.0.1: + /saxes@5.0.1: resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} engines: {node: '>=10'} dependencies: xmlchars: 2.2.0 dev: true - /saxes/6.0.0: + /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 dev: true - /schema-utils/3.1.1: + /scheduler@0.19.1: + resolution: {integrity: sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + + /schema-utils@3.1.1: resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} engines: {node: '>= 10.13.0'} dependencies: '@types/json-schema': 7.0.11 ajv: 6.12.6 - ajv-keywords: 3.5.2_ajv@6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) dev: true - /schema-utils/4.0.0: + /schema-utils@4.0.0: resolution: {integrity: sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==} engines: {node: '>= 12.13.0'} dependencies: '@types/json-schema': 7.0.11 ajv: 8.11.0 - ajv-formats: 2.1.1_ajv@8.11.0 - ajv-keywords: 5.1.0_ajv@8.11.0 + ajv-formats: 2.1.1(ajv@8.11.0) + ajv-keywords: 5.1.0(ajv@8.11.0) dev: true - /select-hose/2.0.0: + /secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + dev: true + + /select-hose@2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} dev: true - /selfsigned/2.1.1: + /selfsigned@2.1.1: resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==} engines: {node: '>=10'} dependencies: node-forge: 1.3.1 dev: true - /semver/5.7.1: + /semver-store@0.3.0: + resolution: {integrity: sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg==} + dev: true + + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true dev: true - /semver/6.3.0: + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true dev: true - /semver/7.3.7: + /semver@7.3.7: resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} engines: {node: '>=10'} hasBin: true @@ -12939,7 +12735,7 @@ packages: lru-cache: 6.0.0 dev: true - /semver/7.3.8: + /semver@7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} hasBin: true @@ -12947,7 +12743,15 @@ packages: lru-cache: 6.0.0 dev: true - /send/0.18.0: + /semver@7.5.0: + resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} dependencies: @@ -12968,19 +12772,19 @@ packages: - supports-color dev: true - /serialize-javascript/4.0.0: + /serialize-javascript@4.0.0: resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} dependencies: randombytes: 2.1.0 dev: true - /serialize-javascript/6.0.0: + /serialize-javascript@6.0.0: resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: randombytes: 2.1.0 dev: true - /serve-index/1.9.1: + /serve-index@1.9.1: resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} engines: {node: '>= 0.8.0'} dependencies: @@ -12995,7 +12799,7 @@ packages: - supports-color dev: true - /serve-static/1.15.0: + /serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} dependencies: @@ -13007,58 +12811,54 @@ packages: - supports-color dev: true - /setprototypeof/1.1.0: + /set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + dev: true + + /setprototypeof@1.1.0: resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} dev: true - /setprototypeof/1.2.0: + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: true - /shallow-clone/3.0.1: + /shallow-clone@3.0.1: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} dependencies: kind-of: 6.0.3 dev: true - /shebang-command/1.2.0: + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 dev: true - /shebang-command/2.0.0: + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 dev: true - /shebang-regex/1.0.0: + /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} dev: true - /shebang-regex/3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} dev: true - /shell-quote/1.7.3: - resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==} + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: true - /shiki/0.11.1: - resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==} - dependencies: - jsonc-parser: 3.2.0 - vscode-oniguruma: 1.6.2 - vscode-textmate: 6.0.0 - dev: true - - /shiki/0.14.1: + /shiki@0.14.1: resolution: {integrity: sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==} dependencies: ansi-sequence-parser: 1.1.0 @@ -13067,7 +12867,7 @@ packages: vscode-textmate: 8.0.0 dev: true - /side-channel/1.0.4: + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 @@ -13075,15 +12875,20 @@ packages: object-inspect: 1.12.2 dev: true - /siginfo/2.0.0: + /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true - /signal-exit/3.0.7: + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /sirv/2.0.2: + /signal-exit@4.0.1: + resolution: {integrity: sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==} + engines: {node: '>=14'} + dev: true + + /sirv@2.0.2: resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} engines: {node: '>= 10'} dependencies: @@ -13092,21 +12897,21 @@ packages: totalist: 3.0.0 dev: true - /sisteransi/1.0.5: + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true - /slash/3.0.0: + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: true - /slash/4.0.0: + /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} dev: true - /slice-ansi/3.0.0: + /slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} dependencies: @@ -13115,7 +12920,7 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /slice-ansi/4.0.0: + /slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} dependencies: @@ -13124,7 +12929,7 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /slice-ansi/5.0.0: + /slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} dependencies: @@ -13132,12 +12937,12 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true - /smart-buffer/4.2.0: + /smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} dev: true - /sockjs/0.3.24: + /sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} dependencies: faye-websocket: 0.11.4 @@ -13145,18 +12950,18 @@ packages: websocket-driver: 0.7.4 dev: true - /socks-proxy-agent/5.0.1: + /socks-proxy-agent@5.0.1: resolution: {integrity: sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==} engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) socks: 2.7.0 transitivePeerDependencies: - supports-color dev: true - /socks/2.7.0: + /socks@2.7.0: resolution: {integrity: sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==} engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} dependencies: @@ -13164,25 +12969,32 @@ packages: smart-buffer: 4.2.0 dev: true - /source-map-js/1.0.2: + /sonic-boom@1.4.1: + resolution: {integrity: sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==} + dependencies: + atomic-sleep: 1.0.0 + flatstr: 1.0.12 + dev: true + + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - /source-map-support/0.5.13: + /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map-support/0.5.21: + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map/0.1.43: + /source-map@0.1.43: resolution: {integrity: sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==} engines: {node: '>=0.8.0'} requiresBuild: true @@ -13191,61 +13003,61 @@ packages: dev: true optional: true - /source-map/0.5.7: + /source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} dev: true - /source-map/0.6.1: + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - /source-map/0.7.4: + /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} dev: true - /source-map/0.8.0-beta.0: + /source-map@0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} engines: {node: '>= 8'} dependencies: whatwg-url: 7.1.0 dev: true - /sourcemap-codec/1.4.8: + /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead - /spawn-command/0.0.2-1: + /spawn-command@0.0.2-1: resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} dev: true - /spdx-correct/3.1.1: + /spdx-correct@3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.12 dev: true - /spdx-exceptions/2.3.0: + /spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} dev: true - /spdx-expression-parse/3.0.1: + /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.12 dev: true - /spdx-license-ids/3.0.12: + /spdx-license-ids@3.0.12: resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} dev: true - /spdy-transport/3.0.0: + /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -13255,11 +13067,11 @@ packages: - supports-color dev: true - /spdy/4.0.2: + /spdy@4.0.2: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -13268,23 +13080,23 @@ packages: - supports-color dev: true - /split/0.3.3: - resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} - dependencies: - through: 2.3.8 - dev: true - - /split2/3.2.2: + /split2@3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} dependencies: readable-stream: 3.6.0 dev: true - /sprintf-js/1.0.3: + /split@0.3.3: + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} + dependencies: + through: 2.3.8 + dev: true + + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /sshpk/1.17.0: + /sshpk@1.17.0: resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} engines: {node: '>=0.10.0'} hasBin: true @@ -13300,85 +13112,69 @@ packages: tweetnacl: 0.14.5 dev: true - /ssim.js/3.5.0: + /ssim.js@3.5.0: resolution: {integrity: sha512-Aj6Jl2z6oDmgYFFbQqK7fght19bXdOxY7Tj03nF+03M9gCBAjeIiO8/PlEGMfKDwYpw4q6iBqVq2YuREorGg/g==} dev: true - /stack-utils/2.0.5: + /stack-utils@2.0.5: resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 dev: true - /stackback/0.0.2: + /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /start-server-and-test/1.14.0: - resolution: {integrity: sha512-on5ELuxO2K0t8EmNj9MtVlFqwBMxfWOhu4U7uZD1xccVpFlOQKR93CSe0u98iQzfNxRyaNTb/CdadbNllplTsw==} - engines: {node: '>=6'} - hasBin: true - dependencies: - bluebird: 3.7.2 - check-more-types: 2.24.0 - debug: 4.3.2 - execa: 5.1.1 - lazy-ass: 1.6.0 - ps-tree: 1.2.0 - wait-on: 6.0.0_debug@4.3.2 - transitivePeerDependencies: - - supports-color - dev: true - - /start-server-and-test/1.15.4: - resolution: {integrity: sha512-ucQtp5+UCr0m4aHlY+aEV2JSYNTiMZKdSKK/bsIr6AlmwAWDYDnV7uGlWWEtWa7T4XvRI5cPYcPcQgeLqpz+Tg==} + /start-server-and-test@2.0.0: + resolution: {integrity: sha512-UqKLw0mJbfrsG1jcRLTUlvuRi9sjNuUiDOLI42r7R5fA9dsFoywAy9DoLXNYys9B886E4RCKb+qM1Gzu96h7DQ==} engines: {node: '>=6'} hasBin: true dependencies: arg: 5.0.2 bluebird: 3.7.2 check-more-types: 2.24.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) execa: 5.1.1 lazy-ass: 1.6.0 ps-tree: 1.2.0 - wait-on: 7.0.1_debug@4.3.4 + wait-on: 7.0.1(debug@4.3.4) transitivePeerDependencies: - supports-color dev: true - /statuses/1.5.0: + /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} dev: true - /statuses/2.0.1: + /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} dev: true - /std-env/3.3.2: + /std-env@3.3.2: resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==} dev: true - /stream-combiner/0.0.4: + /stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} dependencies: duplexer: 0.1.2 dev: true - /streamsearch/1.1.0: + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} dev: true - /string-argv/0.3.1: + /string-argv@0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} dev: true - /string-length/4.0.2: + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} dependencies: @@ -13386,7 +13182,11 @@ packages: strip-ansi: 6.0.1 dev: true - /string-width/4.2.3: + /string-similarity@4.0.4: + resolution: {integrity: sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==} + dev: true + + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -13395,7 +13195,7 @@ packages: strip-ansi: 6.0.1 dev: true - /string-width/5.1.2: + /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} dependencies: @@ -13404,7 +13204,7 @@ packages: strip-ansi: 7.0.1 dev: true - /string.prototype.matchall/4.0.8: + /string.prototype.matchall@4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 @@ -13417,7 +13217,7 @@ packages: side-channel: 1.0.4 dev: true - /string.prototype.trimend/1.0.6: + /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 @@ -13425,7 +13225,7 @@ packages: es-abstract: 1.21.1 dev: true - /string.prototype.trimstart/1.0.6: + /string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 @@ -13433,23 +13233,23 @@ packages: es-abstract: 1.21.1 dev: true - /string_decoder/0.10.31: + /string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} dev: true - /string_decoder/1.1.1: + /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 dev: true - /string_decoder/1.3.0: + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 dev: true - /stringify-object/3.3.0: + /stringify-object@3.3.0: resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} engines: {node: '>=4'} dependencies: @@ -13458,127 +13258,147 @@ packages: is-regexp: 1.0.0 dev: true - /strip-ansi/3.0.1: + /strip-ansi@3.0.1: resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} engines: {node: '>=0.10.0'} dependencies: ansi-regex: 2.1.1 dev: true - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: true - /strip-ansi/7.0.1: + /strip-ansi@7.0.1: resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 dev: true - /strip-bom/4.0.0: + /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} dev: true - /strip-comments/2.0.1: + /strip-comments@2.0.1: resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} engines: {node: '>=10'} dev: true - /strip-eof/1.0.0: + /strip-eof@1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} dev: true - /strip-final-newline/2.0.0: + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} dev: true - /strip-final-newline/3.0.0: + /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} dev: true - /strip-indent/3.0.0: + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 dev: true - /strip-indent/4.0.0: + /strip-indent@4.0.0: resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} engines: {node: '>=12'} dependencies: min-indent: 1.0.1 dev: true - /strip-json-comments/3.1.1: + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: true - /strip-literal/1.0.0: - resolution: {integrity: sha512-5o4LsH1lzBzO9UFH63AJ2ad2/S2AVx6NtjOcaz+VTT2h1RiRvbipW72z8M/lxEhcPHDBQwpDrnTF7sXy/7OwCQ==} + /strip-literal@1.0.1: + resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} dependencies: - acorn: 8.8.1 + acorn: 8.8.2 dev: true - /stylis/4.1.2: - resolution: {integrity: sha512-Nn2CCrG2ZaFziDxaZPN43CXqn+j7tcdjPFCkRBkFue8QYXC2HdEwnw5TCBo4yQZ2WxKYeSi0fdoOrtEqgDrXbA==} + /stylis@4.1.3: + resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} dev: false - /supports-color/2.0.0: + /supports-color@2.0.0: resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} engines: {node: '>=0.8.0'} dev: true - /supports-color/5.5.0: + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 dev: true - /supports-color/7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 dev: true - /supports-color/8.1.1: + /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} dependencies: has-flag: 4.0.0 dev: true - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: true - /symbol-tree/3.2.4: + /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /tapable/2.2.1: + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.3.1 + tslib: 2.5.0 + dev: true + + /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} dev: true - /temp-dir/2.0.0: + /teen_process@1.16.0: + resolution: {integrity: sha512-RnW7HHZD1XuhSTzD3djYOdIl1adE3oNEprE3HOFFxWs5m4FZsqYRhKJ4mDU2udtNGMLUS7jV7l8vVRLWAvmPDw==} + engines: {'0': node} + dependencies: + '@babel/runtime': 7.21.0 + bluebird: 3.7.2 + lodash: 4.17.21 + shell-quote: 1.8.1 + source-map-support: 0.5.21 + which: 2.0.2 + dev: true + + /temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} dev: true - /tempy/0.6.0: + /tempy@0.6.0: resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} engines: {node: '>=10'} dependencies: @@ -13588,7 +13408,7 @@ packages: unique-string: 2.0.0 dev: true - /term-img/4.1.0: + /term-img@4.1.0: resolution: {integrity: sha512-DFpBhaF5j+2f7kheKFc1ajsAUUDGOaNPpKPtiIMxlbfud6mvfFZuWGnTRpaujUa5J7yl6cIw/h6nyr4mSsENPg==} engines: {node: '>=8'} dependencies: @@ -13596,7 +13416,7 @@ packages: iterm2-version: 4.2.0 dev: true - /terser-webpack-plugin/5.3.6_webpack@5.75.0: + /terser-webpack-plugin@5.3.6(esbuild@0.17.18)(webpack@5.75.0): resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -13613,14 +13433,15 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.15 + esbuild: 0.17.18 jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.0 terser: 5.15.1 - webpack: 5.75.0_webpack-cli@4.10.0 + webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) dev: true - /terser/5.15.1: + /terser@5.15.1: resolution: {integrity: sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==} engines: {node: '>=10'} hasBin: true @@ -13631,7 +13452,7 @@ packages: source-map-support: 0.5.21 dev: true - /test-exclude/6.0.0: + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: @@ -13640,84 +13461,105 @@ packages: minimatch: 3.1.2 dev: true - /text-extensions/1.9.0: + /text-extensions@1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} dev: true - /text-table/0.2.0: + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /throat/6.0.1: + /throat@6.0.1: resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==} dev: true - /throttleit/1.0.0: + /throat@6.0.2: + resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} + dev: true + + /throttleit@1.0.0: resolution: {integrity: sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==} dev: true - /through/2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true - - /through2/4.0.2: + /through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} dependencies: readable-stream: 3.6.0 dev: true - /thunky/1.1.0: + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} dev: true - /tinybench/2.3.1: - resolution: {integrity: sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==} + /time-zone@1.0.0: + resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} + engines: {node: '>=4'} dev: true - /tinypool/0.3.1: - resolution: {integrity: sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==} + /tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: true + + /tiny-lru@8.0.2: + resolution: {integrity: sha512-ApGvZ6vVvTNdsmt676grvCkUCGwzG9IqXma5Z07xJgiC5L7akUMof5U8G2JTI9Rz/ovtVhJBlY6mNhEvtjzOIg==} + engines: {node: '>=6'} + dev: true + + /tinybench@2.4.0: + resolution: {integrity: sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==} + dev: true + + /tinypool@0.4.0: + resolution: {integrity: sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==} engines: {node: '>=14.0.0'} dev: true - /tinyspy/1.0.2: - resolution: {integrity: sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==} + /tinyspy@2.1.0: + resolution: {integrity: sha512-7eORpyqImoOvkQJCSkL0d0mB4NHHIFAy4b1u8PHdDa7SjGS2njzl6/lyGoZLm+eyYEtlUmFGE0rFj66SWxZgQQ==} engines: {node: '>=14.0.0'} dev: true - /tmp/0.2.1: + /tmp@0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} engines: {node: '>=8.17.0'} dependencies: rimraf: 3.0.2 dev: true - /tmpl/1.0.5: + /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true - /to-fast-properties/2.0.0: + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - /to-regex-range/5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 dev: true - /toidentifier/1.0.1: + /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} dev: true - /totalist/3.0.0: + /totalist@3.0.0: resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} engines: {node: '>=6'} dev: true - /tough-cookie/2.5.0: + /tough-cookie@2.5.0: resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} engines: {node: '>=0.8'} dependencies: @@ -13725,7 +13567,7 @@ packages: punycode: 2.1.1 dev: true - /tough-cookie/4.1.2: + /tough-cookie@4.1.2: resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} engines: {node: '>=6'} dependencies: @@ -13735,48 +13577,59 @@ packages: url-parse: 1.5.10 dev: true - /tr46/0.0.3: + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true - /tr46/1.0.1: + /tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: - punycode: 2.1.1 + punycode: 2.3.0 dev: true - /tr46/3.0.0: + /tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} dependencies: - punycode: 2.1.1 + punycode: 2.3.0 dev: true - /tree-kill/1.2.2: + /tr46@4.1.1: + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} + engines: {node: '>=14'} + dependencies: + punycode: 2.3.0 + dev: true + + /traverse@0.3.9: + resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==} + dev: true + + /tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true dev: true - /trim-newlines/3.0.1: + /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} dev: true - /trim-newlines/4.0.2: + /trim-newlines@4.0.2: resolution: {integrity: sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==} engines: {node: '>=12'} dev: true - /trough/2.1.0: + /trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: true - /ts-dedent/2.2.0: + /ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} dev: false - /ts-node/10.9.1_w6ufic3jqylcjznzspnj4wjqfe: + /ts-node@10.9.1(@types/node@18.16.0)(typescript@5.0.4): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -13795,78 +13648,41 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.11.9 + '@types/node': 18.16.0 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.9.5 + typescript: 5.0.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /ts-node/10.9.1_yxpazyh7n5pql7jdaglasgwqki: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 14.18.29 - acorn: 8.8.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - - /tslib/1.14.1: + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib/2.4.0: + /tslib@2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} dev: true - /tsutils/3.21.0_typescript@4.8.4: + /tslib@2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + dev: true + + /tsutils@3.21.0(typescript@5.0.4): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.8.4 + typescript: 5.0.4 dev: true - /tsutils/3.21.0_typescript@4.9.5: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 4.9.5 - dev: true - - /tsx/3.12.3: + /tsx@3.12.3: resolution: {integrity: sha512-Wc5BFH1xccYTXaQob+lEcimkcb/Pq+0en2s+ruiX0VEIC80nV7/0s7XRahx8NnsoCnpCVUPz8wrqVSPi760LkA==} hasBin: true dependencies: @@ -13877,71 +13693,71 @@ packages: fsevents: 2.3.2 dev: true - /tunnel-agent/0.6.0: + /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: safe-buffer: 5.2.1 dev: true - /tweetnacl/0.14.5: + /tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} dev: true - /type-check/0.3.2: + /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 dev: true - /type-check/0.4.0: + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 dev: true - /type-detect/4.0.8: + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} dev: true - /type-fest/0.16.0: + /type-fest@0.16.0: resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} engines: {node: '>=10'} dev: true - /type-fest/0.18.1: + /type-fest@0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} dev: true - /type-fest/0.20.2: + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} dev: true - /type-fest/0.21.3: + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} dev: true - /type-fest/0.6.0: + /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} dev: true - /type-fest/0.8.1: + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} dev: true - /type-fest/1.4.0: + /type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} dev: true - /type-is/1.6.18: + /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} dependencies: @@ -13949,7 +13765,7 @@ packages: mime-types: 2.1.35 dev: true - /typed-array-length/1.0.4: + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 @@ -13957,67 +13773,70 @@ packages: is-typed-array: 1.1.10 dev: true - /typedarray-to-buffer/3.1.5: + /typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 dev: true - /typedoc-plugin-markdown/3.13.6_typedoc@0.23.18: - resolution: {integrity: sha512-ISSc9v3BK7HkokxSBuJPttXox4tJ6hP0N9wfSIk0fmLN67+eqtAxbk97gs2nDiuha+RTO5eW9gdeAb+RPP0mgg==} + /typedoc-plugin-markdown@3.15.2(typedoc@0.24.5): + resolution: {integrity: sha512-OPXAL9hhdoVJzH/UaKAz6CBS/s8KlYyLWwnxF7ap0fQCuaMMWShA1JBq4n1SXbiGjx+7DOhOfTKQ5OzwryN3Vw==} peerDependencies: - typedoc: '>=0.23.0' + typedoc: '>=0.24.0' dependencies: handlebars: 4.7.7 - typedoc: 0.23.18_typescript@4.8.4 + typedoc: 0.24.5(typescript@5.0.4) + typedoc-plugin-mdn-links: 3.0.3(typedoc@0.24.5) dev: true - /typedoc/0.23.18_typescript@4.8.4: - resolution: {integrity: sha512-0Tq/uFkUuWyRYyjOShTkhsOm6u5E8wf0i6L76/k5znEaxvWKHGeT2ywZThGrDrryV/skO/REM824D1gm8ccQuA==} + /typedoc-plugin-mdn-links@3.0.3(typedoc@0.24.5): + resolution: {integrity: sha512-NXhIpwQnsg7BcyMCHVqj3tUK+DL4g3Bt96JbFl4APzTGFkA+iM6GfZ/fn3TAqJ8O0CXG5R9BfWxolw1m1omNuQ==} + peerDependencies: + typedoc: '>= 0.23.14 || 0.24.x' + dependencies: + typedoc: 0.24.5(typescript@5.0.4) + dev: true + + /typedoc@0.24.5(typescript@5.0.4): + resolution: {integrity: sha512-tE1YDRxOTwJ33HltVazKiADqy/CasUmd2UVMnGOS2kX5Oj7q4rDVsIlcC0j03K1h3lEkGtvEyusBF7Psz4F4kA==} engines: {node: '>= 14.14'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x dependencies: lunr: 2.3.9 - marked: 4.1.1 - minimatch: 5.1.0 - shiki: 0.11.1 - typescript: 4.8.4 + marked: 4.3.0 + minimatch: 9.0.0 + shiki: 0.14.1 + typescript: 5.0.4 dev: true - /typescript/4.8.4: - resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} - engines: {node: '>=4.2.0'} + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} hasBin: true dev: true - /typescript/4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /uc.micro/1.0.6: + /uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} dev: true - /ufo/0.8.6: + /ufo@0.8.6: resolution: {integrity: sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==} dev: true - /ufo/1.0.1: - resolution: {integrity: sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==} + /ufo@1.1.1: + resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==} dev: true - /uglify-js/3.17.3: + /uglify-js@3.17.3: resolution: {integrity: sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true dev: true - /unbox-primitive/1.0.2: + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 @@ -14026,31 +13845,31 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /unconfig/0.3.7: + /unconfig@0.3.7: resolution: {integrity: sha512-1589b7oGa8ILBYpta7TndM5mLHLzHUqBfhszeZxuUBrjO/RoQ52VGVWsS3w0C0GLNxO9RPmqkf6BmIvBApaRdA==} dependencies: '@antfu/utils': 0.5.2 defu: 6.1.2 - jiti: 1.17.1 + jiti: 1.18.2 dev: true - /underscore/1.1.7: + /underscore@1.1.7: resolution: {integrity: sha512-w4QtCHoLBXw1mjofIDoMyexaEdWGMedWNDhlWTtT1V1lCRqi65Pnoygkh6+WRdr+Bm8ldkBNkNeCsXGMlQS9HQ==} dev: true - /undici/5.14.0: + /undici@5.14.0: resolution: {integrity: sha512-yJlHYw6yXPPsuOH0x2Ib1Km61vu4hLiRRQoafs+WUgX1vO64vgnxiCEN9dpIrhZyHFsai3F0AEj4P9zy19enEQ==} engines: {node: '>=12.18'} dependencies: busboy: 1.6.0 dev: true - /unicode-canonical-property-names-ecmascript/2.0.0: + /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} dev: true - /unicode-match-property-ecmascript/2.0.0: + /unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} dependencies: @@ -14058,17 +13877,17 @@ packages: unicode-property-aliases-ecmascript: 2.1.0 dev: true - /unicode-match-property-value-ecmascript/2.1.0: + /unicode-match-property-value-ecmascript@2.1.0: resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} engines: {node: '>=4'} dev: true - /unicode-property-aliases-ecmascript/2.1.0: + /unicode-property-aliases-ecmascript@2.1.0: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} dev: true - /unified/10.1.2: + /unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} dependencies: '@types/unist': 2.0.6 @@ -14080,41 +13899,41 @@ packages: vfile: 5.3.5 dev: true - /unique-string/2.0.0: + /unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} dependencies: crypto-random-string: 2.0.0 dev: true - /unist-util-flatmap/1.0.0: + /unist-util-flatmap@1.0.0: resolution: {integrity: sha512-IG32jcKJlhARCYT2LsYPJWdoXYkzz3ESAdl1aa2hn9Auh+cgUmU6wgkII4yCc/1GgeWibRdELdCZh/p3QKQ1dQ==} dev: true - /unist-util-is/5.1.1: + /unist-util-is@5.1.1: resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==} dev: true - /unist-util-stringify-position/2.0.3: + /unist-util-stringify-position@2.0.3: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} dependencies: '@types/unist': 2.0.6 dev: true - /unist-util-stringify-position/3.0.2: + /unist-util-stringify-position@3.0.2: resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} dependencies: '@types/unist': 2.0.6 dev: true - /unist-util-visit-parents/5.1.1: + /unist-util-visit-parents@5.1.1: resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} dependencies: '@types/unist': 2.0.6 unist-util-is: 5.1.1 dev: true - /unist-util-visit/4.1.1: + /unist-util-visit@4.1.1: resolution: {integrity: sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==} dependencies: '@types/unist': 2.0.6 @@ -14122,76 +13941,83 @@ packages: unist-util-visit-parents: 5.1.1 dev: true - /universalify/0.1.2: + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} dev: true - /universalify/0.2.0: + /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} dev: true - /universalify/2.0.0: + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} dev: true - /unocss/0.48.5_rollup@2.79.1+vite@4.1.4: - resolution: {integrity: sha512-OK24OS2IO4oJa/jtfoxUIciY6M05Nx16M6pzfCqzcglvaIIM/rpsA2D3dYmC3f3IeBuC31FpB59cM05CF7E0bQ==} + /unocss@0.51.8(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3): + resolution: {integrity: sha512-uty78ilhQ/HxvjIDLRZ0J6Kb6fSfTKv0afyP7iWQmqoG/qTBR33ambnuTmi2Dt5GzCxAY6tyCaWjK/FZ7mfEYg==} engines: {node: '>=14'} peerDependencies: - '@unocss/webpack': 0.48.5 + '@unocss/webpack': 0.51.8 peerDependenciesMeta: '@unocss/webpack': optional: true dependencies: - '@unocss/astro': 0.48.5_rollup@2.79.1+vite@4.1.4 - '@unocss/cli': 0.48.5_rollup@2.79.1 - '@unocss/core': 0.48.5 - '@unocss/preset-attributify': 0.48.5 - '@unocss/preset-icons': 0.48.5 - '@unocss/preset-mini': 0.48.5 - '@unocss/preset-tagify': 0.48.5 - '@unocss/preset-typography': 0.48.5 - '@unocss/preset-uno': 0.48.5 - '@unocss/preset-web-fonts': 0.48.5 - '@unocss/preset-wind': 0.48.5 - '@unocss/reset': 0.48.5 - '@unocss/transformer-attributify-jsx': 0.48.5 - '@unocss/transformer-compile-class': 0.48.5 - '@unocss/transformer-directives': 0.48.5 - '@unocss/transformer-variant-group': 0.48.5 - '@unocss/vite': 0.48.5_rollup@2.79.1+vite@4.1.4 + '@unocss/astro': 0.51.8(rollup@2.79.1)(vite@4.3.3) + '@unocss/cli': 0.51.8(rollup@2.79.1) + '@unocss/core': 0.51.8 + '@unocss/extractor-arbitrary-variants': 0.51.8 + '@unocss/postcss': 0.51.8(postcss@8.4.23) + '@unocss/preset-attributify': 0.51.8 + '@unocss/preset-icons': 0.51.8 + '@unocss/preset-mini': 0.51.8 + '@unocss/preset-tagify': 0.51.8 + '@unocss/preset-typography': 0.51.8 + '@unocss/preset-uno': 0.51.8 + '@unocss/preset-web-fonts': 0.51.8 + '@unocss/preset-wind': 0.51.8 + '@unocss/reset': 0.51.8 + '@unocss/transformer-attributify-jsx': 0.51.8 + '@unocss/transformer-attributify-jsx-babel': 0.51.8 + '@unocss/transformer-compile-class': 0.51.8 + '@unocss/transformer-directives': 0.51.8 + '@unocss/transformer-variant-group': 0.51.8 + '@unocss/vite': 0.51.8(rollup@2.79.1)(vite@4.3.3) transitivePeerDependencies: + - postcss - rollup - supports-color - vite dev: true - /unpipe/1.0.0: + /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} dev: true - /unplugin-vue-components/0.22.12_rollup@2.79.1+vue@3.2.47: - resolution: {integrity: sha512-FxyzsuBvMCYPIk+8cgscGBQ345tvwVu+qY5IhE++eorkyvA4Z1TiD/HCiim+Kbqozl10i4K+z+NCa2WO2jexRA==} + /unplugin-vue-components@0.24.1(rollup@2.79.1)(vue@3.2.47): + resolution: {integrity: sha512-T3A8HkZoIE1Cja95xNqolwza0yD5IVlgZZ1PVAGvVCx8xthmjsv38xWRCtHtwl+rvZyL9uif42SRkDGw9aCfMA==} engines: {node: '>=14'} peerDependencies: '@babel/parser': ^7.15.8 + '@nuxt/kit': ^3.2.2 vue: 2 || 3 peerDependenciesMeta: '@babel/parser': optional: true + '@nuxt/kit': + optional: true dependencies: '@antfu/utils': 0.7.2 - '@rollup/pluginutils': 5.0.2_rollup@2.79.1 + '@rollup/pluginutils': 5.0.2(rollup@2.79.1) chokidar: 3.5.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) fast-glob: 3.2.12 local-pkg: 0.4.3 - magic-string: 0.27.0 - minimatch: 5.1.6 + magic-string: 0.30.0 + minimatch: 7.4.6 resolve: 1.22.1 unplugin: 1.1.0 vue: 3.2.47 @@ -14200,7 +14026,7 @@ packages: - supports-color dev: true - /unplugin/1.1.0: + /unplugin@1.1.0: resolution: {integrity: sha512-I8obQ8Rs/hnkxokRV6g8JKOQFgYNnTd9DL58vcSt5IJ9AkK8wbrtsnzD5hi4BJlvcY536JzfEXj9L6h7j559/A==} dependencies: acorn: 8.8.2 @@ -14209,17 +14035,17 @@ packages: webpack-virtual-modules: 0.5.0 dev: true - /untildify/4.0.0: + /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} dev: true - /upath/1.2.0: + /upath@1.2.0: resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} engines: {node: '>=4'} dev: true - /update-browserslist-db/1.0.10_browserslist@4.21.4: + /update-browserslist-db@1.0.10(browserslist@4.21.4): resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: @@ -14230,7 +14056,7 @@ packages: picocolors: 1.0.0 dev: true - /update-browserslist-db/1.0.10_browserslist@4.21.5: + /update-browserslist-db@1.0.10(browserslist@4.21.5): resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: @@ -14241,45 +14067,45 @@ packages: picocolors: 1.0.0 dev: true - /uri-js/4.4.1: + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 dev: true - /url-parse/1.5.10: + /url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 dev: true - /util-deprecate/1.0.2: + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /utils-merge/1.0.1: + /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} dev: true - /uuid/3.4.0: + /uuid@3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. hasBin: true dev: true - /uuid/8.3.2: + /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true dev: true - /uuid/9.0.0: + /uuid@9.0.0: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true dev: false - /uvu/0.5.6: + /uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} engines: {node: '>=8'} hasBin: true @@ -14290,32 +14116,32 @@ packages: sade: 1.8.1 dev: true - /v8-compile-cache-lib/3.0.1: + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true - /v8-to-istanbul/9.0.1: + /v8-to-istanbul@9.0.1: resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.15 + '@jridgewell/trace-mapping': 0.3.17 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.8.0 dev: true - /validate-npm-package-license/3.0.4: + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.1.1 spdx-expression-parse: 3.0.1 dev: true - /vary/1.1.2: + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: true - /verror/1.10.0: + /verror@1.10.0: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} dependencies: @@ -14324,14 +14150,14 @@ packages: extsprintf: 1.3.0 dev: true - /vfile-message/3.1.2: + /vfile-message@3.1.2: resolution: {integrity: sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==} dependencies: '@types/unist': 2.0.6 unist-util-stringify-position: 3.0.2 dev: true - /vfile/5.3.5: + /vfile@5.3.5: resolution: {integrity: sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==} dependencies: '@types/unist': 2.0.6 @@ -14340,19 +14166,17 @@ packages: vfile-message: 3.1.2 dev: true - /vite-node/0.28.4_@types+node@18.11.9: - resolution: {integrity: sha512-KM0Q0uSG/xHHKOJvVHc5xDBabgt0l70y7/lWTR7Q0pR5/MrYxadT+y32cJOE65FfjGmJgxpVEEY+69btJgcXOQ==} - engines: {node: '>=v14.16.0'} + /vite-node@0.30.1(@types/node@18.16.0): + resolution: {integrity: sha512-vTikpU/J7e6LU/8iM3dzBo8ZhEiKZEKRznEMm+mJh95XhWaPrJQraT/QsT2NWmuEf+zgAoMe64PKT7hfZ1Njmg==} + engines: {node: '>=v14.18.0'} hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4 - mlly: 1.1.0 + debug: 4.3.4(supports-color@8.1.1) + mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 - source-map: 0.6.1 - source-map-support: 0.5.21 - vite: 4.1.4_@types+node@18.11.9 + vite: 4.3.3(@types/node@18.16.0) transitivePeerDependencies: - '@types/node' - less @@ -14363,50 +14187,27 @@ packages: - terser dev: true - /vite-node/0.28.5_@types+node@18.11.9: - resolution: {integrity: sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==} - engines: {node: '>=v14.16.0'} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.4 - mlly: 1.1.0 - pathe: 1.1.0 - picocolors: 1.0.0 - source-map: 0.6.1 - source-map-support: 0.5.21 - vite: 4.1.4_@types+node@18.11.9 - transitivePeerDependencies: - - '@types/node' - - less - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vite-plugin-pwa/0.14.4_qtdhuw7qkuvvectm2wxn5d44j4: - resolution: {integrity: sha512-M7Ct0so8OlouMkTWgXnl8W1xU95glITSKIe7qswZf1tniAstO2idElGCnsrTJ5NPNSx1XqfTCOUj8j94S6FD7Q==} + /vite-plugin-pwa@0.14.7(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4): + resolution: {integrity: sha512-dNJaf0fYOWncmjxv9HiSa2xrSjipjff7IkYE5oIUJ2x5HKu3cXgA8LRgzOwTc5MhwyFYRSU0xyN0Phbx3NsQYw==} peerDependencies: vite: ^3.1.0 || ^4.0.0 workbox-build: ^6.5.4 workbox-window: ^6.5.4 dependencies: - '@rollup/plugin-replace': 5.0.2_rollup@3.15.0 - debug: 4.3.4 + '@rollup/plugin-replace': 5.0.2(rollup@3.21.0) + debug: 4.3.4(supports-color@8.1.1) fast-glob: 3.2.12 pretty-bytes: 6.1.0 - rollup: 3.15.0 - vite: 4.1.4 + rollup: 3.21.0 + vite: 4.3.3(@types/node@18.16.0) workbox-build: 6.5.4 workbox-window: 6.5.4 transitivePeerDependencies: - supports-color dev: true - /vite/4.1.1: - resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} + /vite@4.3.1(@types/node@18.16.0): + resolution: {integrity: sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -14430,16 +14231,16 @@ packages: terser: optional: true dependencies: - esbuild: 0.16.17 + '@types/node': 18.16.0 + esbuild: 0.17.18 postcss: 8.4.21 - resolve: 1.22.1 - rollup: 3.15.0 + rollup: 3.21.0 optionalDependencies: fsevents: 2.3.2 dev: true - /vite/4.1.1_@types+node@18.11.9: - resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} + /vite@4.3.3(@types/node@18.16.0): + resolution: {integrity: sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -14463,137 +14264,45 @@ packages: terser: optional: true dependencies: - '@types/node': 18.11.9 - esbuild: 0.16.17 - postcss: 8.4.21 - resolve: 1.22.1 - rollup: 3.15.0 + '@types/node': 18.16.0 + esbuild: 0.17.18 + postcss: 8.4.23 + rollup: 3.21.0 optionalDependencies: fsevents: 2.3.2 dev: true - /vite/4.1.4: - resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.16.17 - postcss: 8.4.21 - resolve: 1.22.1 - rollup: 3.15.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /vite/4.1.4_@types+node@18.11.9: - resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 18.11.9 - esbuild: 0.16.17 - postcss: 8.4.21 - resolve: 1.22.1 - rollup: 3.15.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /vitepress-plugin-search/1.0.4-alpha.19_izgnxokfetdl4ncj36u4rk6qgu: - resolution: {integrity: sha512-WFOPn5dStyMINd+rVjNxbEmGa7U+qGHLxLnda56EG+ATil1i0yOauGhJEh5LPMvuCUVIA9tInJnFXklOBb39dA==} + /vitepress-plugin-search@1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-alpha.72)(vue@3.2.47): + resolution: {integrity: sha512-zG+ev9pw1Mg7htABlFCNXb8XwnKN+qfTKw+vU0Ers6RIrABx+45EAAFBoaL1mEpl1FRFn1o/dQ7F4b8GP6HdGQ==} engines: {node: ^14.13.1 || ^16.7.0 || >=18} peerDependencies: flexsearch: ^0.7.31 - vitepress: ^1.0.0-alpha.13 + vitepress: ^1.0.0-alpha.65 vue: '3' dependencies: '@types/flexsearch': 0.7.3 '@types/markdown-it': 12.2.3 flexsearch: 0.7.31 + glob-to-regexp: 0.4.1 markdown-it: 13.0.1 - vitepress: 1.0.0-alpha.46_tbpndr44ulefs3hehwpi2mkf2y + vitepress: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0) vue: 3.2.47 dev: true - /vitepress/1.0.0-alpha.46_tbpndr44ulefs3hehwpi2mkf2y: - resolution: {integrity: sha512-HiKiHzC0iTPsRsKs8XcsMeMzCpcCt5LWcX9mpDr288Ju+nQf1G8A2+Wm44ZkBsVv4EHxFK4ChmWyZrL1OJUXpg==} + /vitepress@1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0): + resolution: {integrity: sha512-Ou7fNE/OVYLrKGQMHSTVG6AcNsdv7tm4ACrdhx93SPMzEDj8UgIb4RFa5CTTowaYf3jeDGi2EAJlzXVC+IE3dg==} hasBin: true dependencies: '@docsearch/css': 3.3.3 - '@docsearch/js': 3.3.3_tbpndr44ulefs3hehwpi2mkf2y - '@vitejs/plugin-vue': 4.0.0_vite@4.1.1+vue@3.2.45 + '@docsearch/js': 3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0) + '@vitejs/plugin-vue': 4.2.1(vite@4.3.1)(vue@3.2.47) '@vue/devtools-api': 6.5.0 - '@vueuse/core': 9.12.0_vue@3.2.45 + '@vueuse/core': 10.1.0(vue@3.2.47) body-scroll-lock: 4.0.0-beta.0 + mark.js: 8.11.1 + minisearch: 6.0.1 shiki: 0.14.1 - vite: 4.1.1 - vue: 3.2.45 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/node' - - '@types/react' - - '@vue/composition-api' - - less - - react - - react-dom - - sass - - stylus - - sugarss - - terser - dev: true - - /vitepress/1.0.0-alpha.47_tbpndr44ulefs3hehwpi2mkf2y: - resolution: {integrity: sha512-vj+LOY0WJtKSk98HV4qqG6p4MofmF+C8yrWHiiw+GCMfr6C+610U5D7oD2OruroIafsON6F4nBDWGK8ZyGIpXQ==} - hasBin: true - dependencies: - '@docsearch/css': 3.3.3 - '@docsearch/js': 3.3.3_tbpndr44ulefs3hehwpi2mkf2y - '@vitejs/plugin-vue': 4.0.0_vite@4.1.4+vue@3.2.47 - '@vue/devtools-api': 6.5.0 - '@vueuse/core': 9.13.0_vue@3.2.47 - body-scroll-lock: 4.0.0-beta.0 - shiki: 0.14.1 - vite: 4.1.4 + vite: 4.3.1(@types/node@18.16.0) vue: 3.2.47 transitivePeerDependencies: - '@algolia/client-search' @@ -14609,9 +14318,38 @@ packages: - terser dev: true - /vitest/0.28.4_vun5xzxu3tkrssf3erdbijyyki: - resolution: {integrity: sha512-sfWIy0AdlbyGRhunm+TLQEJrFH9XuRPdApfubsyLcDbCRrUX717BRQKInTgzEfyl2Ipi1HWoHB84Nqtcwxogcg==} - engines: {node: '>=v14.16.0'} + /vitepress@1.0.0-alpha.74(@algolia/client-search@4.14.2)(@types/node@18.16.0): + resolution: {integrity: sha512-n5UHqsLJKaJ3V6BSiofS5ZVhtxzarNIn3/kyOzUp/vePmVbQyX/pZ6/MhZgNr0g5t4E55j7XM3AHf/Fo0hnrpw==} + hasBin: true + dependencies: + '@docsearch/css': 3.3.3 + '@docsearch/js': 3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0) + '@vitejs/plugin-vue': 4.2.1(vite@4.3.3)(vue@3.2.47) + '@vue/devtools-api': 6.5.0 + '@vueuse/core': 10.1.0(vue@3.2.47) + body-scroll-lock: 4.0.0-beta.0 + mark.js: 8.11.1 + minisearch: 6.0.1 + shiki: 0.14.1 + vite: 4.3.3(@types/node@18.16.0) + vue: 3.2.47 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - less + - react + - react-dom + - sass + - stylus + - sugarss + - terser + dev: true + + /vitest@0.30.1(@vitest/ui@0.30.1)(jsdom@21.1.1): + resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} + engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: '@edge-runtime/vm': '*' @@ -14619,6 +14357,9 @@ packages: '@vitest/ui': '*' happy-dom: '*' jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -14630,32 +14371,40 @@ packages: optional: true jsdom: optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true dependencies: '@types/chai': 4.3.4 '@types/chai-subset': 1.3.3 - '@types/node': 18.11.9 - '@vitest/expect': 0.28.4 - '@vitest/runner': 0.28.4 - '@vitest/spy': 0.28.4 - '@vitest/ui': 0.28.4 - '@vitest/utils': 0.28.4 - acorn: 8.8.1 + '@types/node': 18.16.0 + '@vitest/expect': 0.30.1 + '@vitest/runner': 0.30.1 + '@vitest/snapshot': 0.30.1 + '@vitest/spy': 0.30.1 + '@vitest/ui': 0.30.1 + '@vitest/utils': 0.30.1 + acorn: 8.8.2 acorn-walk: 8.2.0 cac: 6.7.14 chai: 4.3.7 - debug: 4.3.4 - jsdom: 21.1.0 - local-pkg: 0.4.2 + concordance: 5.0.4 + debug: 4.3.4(supports-color@8.1.1) + jsdom: 21.1.1 + local-pkg: 0.4.3 + magic-string: 0.30.0 pathe: 1.1.0 picocolors: 1.0.0 source-map: 0.6.1 std-env: 3.3.2 - strip-literal: 1.0.0 - tinybench: 2.3.1 - tinypool: 0.3.1 - tinyspy: 1.0.2 - vite: 4.1.4_@types+node@18.11.9 - vite-node: 0.28.4_@types+node@18.11.9 + strip-literal: 1.0.1 + tinybench: 2.4.0 + tinypool: 0.4.0 + vite: 4.3.3(@types/node@18.16.0) + vite-node: 0.30.1(@types/node@18.16.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -14666,73 +14415,16 @@ packages: - terser dev: true - /vitest/0.28.5_vun5xzxu3tkrssf3erdbijyyki: - resolution: {integrity: sha512-pyCQ+wcAOX7mKMcBNkzDwEHRGqQvHUl0XnoHR+3Pb1hytAHISgSxv9h0gUiSiYtISXUU3rMrKiKzFYDrI6ZIHA==} - engines: {node: '>=v14.16.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - dependencies: - '@types/chai': 4.3.4 - '@types/chai-subset': 1.3.3 - '@types/node': 18.11.9 - '@vitest/expect': 0.28.5 - '@vitest/runner': 0.28.5 - '@vitest/spy': 0.28.5 - '@vitest/ui': 0.28.4 - '@vitest/utils': 0.28.5 - acorn: 8.8.1 - acorn-walk: 8.2.0 - cac: 6.7.14 - chai: 4.3.7 - debug: 4.3.4 - jsdom: 21.1.0 - local-pkg: 0.4.2 - pathe: 1.1.0 - picocolors: 1.0.0 - source-map: 0.6.1 - std-env: 3.3.2 - strip-literal: 1.0.0 - tinybench: 2.3.1 - tinypool: 0.3.1 - tinyspy: 1.0.2 - vite: 4.1.4_@types+node@18.11.9 - vite-node: 0.28.5_@types+node@18.11.9 - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vm2/3.9.11: + /vm2@3.9.11: resolution: {integrity: sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==} engines: {node: '>=6.0'} hasBin: true dependencies: - acorn: 8.8.1 + acorn: 8.8.2 acorn-walk: 8.2.0 dev: true - /vscode-json-languageservice/4.2.1: + /vscode-json-languageservice@4.2.1: resolution: {integrity: sha512-xGmv9QIWs2H8obGbWg+sIPI/3/pFgj/5OWBhNzs00BkYQ9UaB2F6JJaGB/2/YOZJ3BvLXQTC4Q7muqU25QgAhA==} dependencies: jsonc-parser: 3.2.0 @@ -14742,55 +14434,40 @@ packages: vscode-uri: 3.0.6 dev: true - /vscode-languageserver-textdocument/1.0.7: + /vscode-languageserver-textdocument@1.0.7: resolution: {integrity: sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg==} dev: true - /vscode-languageserver-types/3.17.2: + /vscode-languageserver-textdocument@1.0.8: + resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} + dev: true + + /vscode-languageserver-types@3.17.2: resolution: {integrity: sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==} dev: true - /vscode-nls/5.2.0: + /vscode-nls@5.2.0: resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} dev: true - /vscode-oniguruma/1.6.2: - resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==} - dev: true - - /vscode-oniguruma/1.7.0: + /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} dev: true - /vscode-textmate/6.0.0: - resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} - dev: true - - /vscode-textmate/8.0.0: + /vscode-textmate@8.0.0: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: true - /vscode-uri/3.0.6: + /vscode-uri@3.0.6: resolution: {integrity: sha512-fmL7V1eiDBFRRnu+gfRWTzyPpNIHJTc4mWnFkwBUmO9U3KPgJAmTx7oxi2bl/Rh6HLdU7+4C9wlj0k2E4AdKFQ==} dev: true - /vue-demi/0.13.11_vue@3.2.45: - resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true - dependencies: - vue: 3.2.45 + /vscode-uri@3.0.7: + resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} dev: true - /vue-demi/0.13.11_vue@3.2.47: - resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} + /vue-demi@0.14.0(vue@3.2.47): + resolution: {integrity: sha512-gt58r2ogsNQeVoQ3EhoUAvUsH9xviydl0dWJj7dabBC/2L4uBId7ujtCwDRD0JhkGsV1i0CtfLAeyYKBht9oWg==} engines: {node: '>=12'} hasBin: true requiresBuild: true @@ -14803,66 +14480,42 @@ packages: dependencies: vue: 3.2.47 - /vue/3.2.45: - resolution: {integrity: sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==} - dependencies: - '@vue/compiler-dom': 3.2.45 - '@vue/compiler-sfc': 3.2.45 - '@vue/runtime-dom': 3.2.45 - '@vue/server-renderer': 3.2.45_vue@3.2.45 - '@vue/shared': 3.2.45 - dev: true - - /vue/3.2.47: + /vue@3.2.47: resolution: {integrity: sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==} dependencies: '@vue/compiler-dom': 3.2.47 '@vue/compiler-sfc': 3.2.47 '@vue/runtime-dom': 3.2.47 - '@vue/server-renderer': 3.2.47_vue@3.2.47 + '@vue/server-renderer': 3.2.47(vue@3.2.47) '@vue/shared': 3.2.47 - /w3c-hr-time/1.0.2: + /w3c-hr-time@1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} deprecated: Use your platform's native performance.now() and performance.timeOrigin. dependencies: browser-process-hrtime: 1.0.0 dev: true - /w3c-xmlserializer/3.0.0: + /w3c-xmlserializer@3.0.0: resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} engines: {node: '>=12'} dependencies: xml-name-validator: 4.0.0 dev: true - /w3c-xmlserializer/4.0.0: + /w3c-xmlserializer@4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} dependencies: xml-name-validator: 4.0.0 dev: true - /wait-on/6.0.0_debug@4.3.2: - resolution: {integrity: sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw==} - engines: {node: '>=10.0.0'} - hasBin: true - dependencies: - axios: 0.21.4_debug@4.3.2 - joi: 17.6.0 - lodash: 4.17.21 - minimist: 1.2.6 - rxjs: 7.5.6 - transitivePeerDependencies: - - debug - dev: true - - /wait-on/7.0.1_debug@4.3.4: + /wait-on@7.0.1(debug@4.3.4): resolution: {integrity: sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog==} engines: {node: '>=12.0.0'} hasBin: true dependencies: - axios: 0.27.2_debug@4.3.4 + axios: 0.27.2(debug@4.3.4) joi: 17.7.1 lodash: 4.17.21 minimist: 1.2.8 @@ -14871,13 +14524,13 @@ packages: - debug dev: true - /walker/1.0.8: + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 dev: true - /watchpack/2.4.0: + /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} dependencies: @@ -14885,45 +14538,47 @@ packages: graceful-fs: 4.2.10 dev: true - /wbuf/1.7.3: + /wbuf@1.7.3: resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} dependencies: minimalistic-assert: 1.0.1 dev: true - /web-worker/1.2.0: + /web-worker@1.2.0: resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==} dev: false - /webdriver/7.16.11: - resolution: {integrity: sha512-6nBOXae4xuBH4Nqvi/zvtwjnxSLTONBpxOiRJtQ68CYTYv5+w3m8CsaWy3HbK/0XXa++NYl62bDNn70OGEKb+Q==} + /webdriver@7.30.0(typescript@5.0.4): + resolution: {integrity: sha512-bQE4oVgjjg5sb3VkCD+Eb8mscEvf3TioP0mnEZK0f5OJUNI045gMCJgpX8X4J8ScGyEhzlhn1KvlAn3yzxjxog==} engines: {node: '>=12.0.0'} dependencies: - '@types/node': 16.11.59 - '@wdio/config': 7.16.11 - '@wdio/logger': 7.16.0 - '@wdio/protocols': 7.16.7 - '@wdio/types': 7.16.11 - '@wdio/utils': 7.16.11 + '@types/node': 18.16.0 + '@wdio/config': 7.30.0(typescript@5.0.4) + '@wdio/logger': 7.26.0 + '@wdio/protocols': 7.27.0 + '@wdio/types': 7.26.0(typescript@5.0.4) + '@wdio/utils': 7.26.0(typescript@5.0.4) got: 11.8.5 - ky: 0.28.7 + ky: 0.30.0 lodash.merge: 4.6.2 + transitivePeerDependencies: + - typescript dev: true - /webidl-conversions/3.0.1: + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true - /webidl-conversions/4.0.2: + /webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} dev: true - /webidl-conversions/7.0.0: + /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} dev: true - /webpack-cli/4.10.0_uaydpeuxkjjcxdbyfgk36cjdxi: + /webpack-cli@4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0): resolution: {integrity: sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==} engines: {node: '>=10.13.0'} hasBin: true @@ -14944,9 +14599,9 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0_pda42hcaj7d62cr262fr632kue - '@webpack-cli/info': 1.5.0_webpack-cli@4.10.0 - '@webpack-cli/serve': 1.7.0_ud4agclah7rahur6ntojouq57y + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.75.0) + '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) + '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0)(webpack-dev-server@4.11.1) colorette: 2.0.19 commander: 7.2.0 cross-spawn: 7.0.3 @@ -14954,12 +14609,12 @@ packages: import-local: 3.1.0 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.75.0_webpack-cli@4.10.0 - webpack-dev-server: 4.11.1_pda42hcaj7d62cr262fr632kue + webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack-dev-server: 4.11.1(webpack-cli@4.10.0)(webpack@5.75.0) webpack-merge: 5.8.0 dev: true - /webpack-dev-middleware/5.3.3_webpack@5.75.0: + /webpack-dev-middleware@5.3.3(webpack@5.75.0): resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -14970,10 +14625,10 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.0.0 - webpack: 5.75.0_webpack-cli@4.10.0 + webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) dev: true - /webpack-dev-server/4.11.1_pda42hcaj7d62cr262fr632kue: + /webpack-dev-server@4.11.1(webpack-cli@4.10.0)(webpack@5.75.0): resolution: {integrity: sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==} engines: {node: '>= 12.13.0'} hasBin: true @@ -15001,7 +14656,7 @@ packages: express: 4.18.2 graceful-fs: 4.2.10 html-entities: 2.3.3 - http-proxy-middleware: 2.0.6_@types+express@4.17.14 + http-proxy-middleware: 2.0.6(@types/express@4.17.14) ipaddr.js: 2.0.1 open: 8.4.0 p-retry: 4.6.2 @@ -15011,9 +14666,9 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.75.0_webpack-cli@4.10.0 - webpack-cli: 4.10.0_uaydpeuxkjjcxdbyfgk36cjdxi - webpack-dev-middleware: 5.3.3_webpack@5.75.0 + webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) + webpack-dev-middleware: 5.3.3(webpack@5.75.0) ws: 8.9.0 transitivePeerDependencies: - bufferutil @@ -15022,7 +14677,7 @@ packages: - utf-8-validate dev: true - /webpack-merge/5.8.0: + /webpack-merge@5.8.0: resolution: {integrity: sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==} engines: {node: '>=10.0.0'} dependencies: @@ -15030,16 +14685,16 @@ packages: wildcard: 2.0.0 dev: true - /webpack-sources/3.2.3: + /webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} dev: true - /webpack-virtual-modules/0.5.0: + /webpack-virtual-modules@0.5.0: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} dev: true - /webpack/5.75.0_webpack-cli@4.10.0: + /webpack@5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0): resolution: {integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==} engines: {node: '>=10.13.0'} hasBin: true @@ -15055,7 +14710,7 @@ packages: '@webassemblyjs/wasm-edit': 1.11.1 '@webassemblyjs/wasm-parser': 1.11.1 acorn: 8.8.0 - acorn-import-assertions: 1.8.0_acorn@8.8.0 + acorn-import-assertions: 1.8.0(acorn@8.8.0) browserslist: 4.21.4 chrome-trace-event: 1.0.3 enhanced-resolve: 5.10.0 @@ -15070,9 +14725,9 @@ packages: neo-async: 2.6.2 schema-utils: 3.1.1 tapable: 2.2.1 - terser-webpack-plugin: 5.3.6_webpack@5.75.0 + terser-webpack-plugin: 5.3.6(esbuild@0.17.18)(webpack@5.75.0) watchpack: 2.4.0 - webpack-cli: 4.10.0_uaydpeuxkjjcxdbyfgk36cjdxi + webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -15080,7 +14735,7 @@ packages: - uglify-js dev: true - /websocket-driver/0.7.4: + /websocket-driver@0.7.4: resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} engines: {node: '>=0.8.0'} dependencies: @@ -15089,24 +14744,29 @@ packages: websocket-extensions: 0.1.4 dev: true - /websocket-extensions/0.1.4: + /websocket-extensions@0.1.4: resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} engines: {node: '>=0.8.0'} dev: true - /whatwg-encoding/2.0.0: + /well-known-symbols@2.0.0: + resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} + engines: {node: '>=6'} + dev: true + + /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 dev: true - /whatwg-mimetype/3.0.0: + /whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} dev: true - /whatwg-url/10.0.0: + /whatwg-url@10.0.0: resolution: {integrity: sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==} engines: {node: '>=12'} dependencies: @@ -15114,7 +14774,7 @@ packages: webidl-conversions: 7.0.0 dev: true - /whatwg-url/11.0.0: + /whatwg-url@11.0.0: resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} dependencies: @@ -15122,14 +14782,22 @@ packages: webidl-conversions: 7.0.0 dev: true - /whatwg-url/5.0.0: + /whatwg-url@12.0.1: + resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} + engines: {node: '>=14'} + dependencies: + tr46: 4.1.1 + webidl-conversions: 7.0.0 + dev: true + + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 dev: true - /whatwg-url/7.1.0: + /whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} dependencies: lodash.sortby: 4.7.0 @@ -15137,7 +14805,7 @@ packages: webidl-conversions: 4.0.2 dev: true - /which-boxed-primitive/1.0.2: + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 @@ -15147,7 +14815,7 @@ packages: is-symbol: 1.0.4 dev: true - /which-typed-array/1.1.9: + /which-typed-array@1.1.9: resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} dependencies: @@ -15159,14 +14827,14 @@ packages: is-typed-array: 1.1.10 dev: true - /which/1.3.1: + /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true dependencies: isexe: 2.0.0 dev: true - /which/2.0.2: + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true @@ -15174,7 +14842,7 @@ packages: isexe: 2.0.0 dev: true - /why-is-node-running/2.2.2: + /why-is-node-running@2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} engines: {node: '>=8'} hasBin: true @@ -15183,43 +14851,50 @@ packages: stackback: 0.0.2 dev: true - /wildcard/2.0.0: + /widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + dependencies: + string-width: 4.2.3 + dev: true + + /wildcard@2.0.0: resolution: {integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==} dev: true - /word-wrap/1.2.3: + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: true - /wordwrap/1.0.0: + /wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true - /workbox-background-sync/6.5.4: + /workbox-background-sync@6.5.4: resolution: {integrity: sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==} dependencies: idb: 7.1.1 workbox-core: 6.5.4 dev: true - /workbox-broadcast-update/6.5.4: + /workbox-broadcast-update@6.5.4: resolution: {integrity: sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==} dependencies: workbox-core: 6.5.4 dev: true - /workbox-build/6.5.4: + /workbox-build@6.5.4: resolution: {integrity: sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==} engines: {node: '>=10.0.0'} dependencies: - '@apideck/better-ajv-errors': 0.3.6_ajv@8.11.0 + '@apideck/better-ajv-errors': 0.3.6(ajv@8.11.0) '@babel/core': 7.12.3 - '@babel/preset-env': 7.20.2_@babel+core@7.12.3 + '@babel/preset-env': 7.20.2(@babel/core@7.12.3) '@babel/runtime': 7.21.0 - '@rollup/plugin-babel': 5.3.1_dckrvusq2p5l2rafxmdzsxgali - '@rollup/plugin-node-resolve': 11.2.1_rollup@2.79.1 - '@rollup/plugin-replace': 2.4.2_rollup@2.79.1 + '@rollup/plugin-babel': 5.3.1(@babel/core@7.12.3)(rollup@2.79.1) + '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) + '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) '@surma/rollup-plugin-off-main-thread': 2.2.3 ajv: 8.11.0 common-tags: 1.8.2 @@ -15229,7 +14904,7 @@ packages: lodash: 4.17.21 pretty-bytes: 5.6.0 rollup: 2.79.1 - rollup-plugin-terser: 7.0.2_rollup@2.79.1 + rollup-plugin-terser: 7.0.2(rollup@2.79.1) source-map: 0.8.0-beta.0 stringify-object: 3.3.0 strip-comments: 2.0.1 @@ -15255,24 +14930,24 @@ packages: - supports-color dev: true - /workbox-cacheable-response/6.5.4: + /workbox-cacheable-response@6.5.4: resolution: {integrity: sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==} dependencies: workbox-core: 6.5.4 dev: true - /workbox-core/6.5.4: + /workbox-core@6.5.4: resolution: {integrity: sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==} dev: true - /workbox-expiration/6.5.4: + /workbox-expiration@6.5.4: resolution: {integrity: sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==} dependencies: idb: 7.1.1 workbox-core: 6.5.4 dev: true - /workbox-google-analytics/6.5.4: + /workbox-google-analytics@6.5.4: resolution: {integrity: sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==} dependencies: workbox-background-sync: 6.5.4 @@ -15281,13 +14956,13 @@ packages: workbox-strategies: 6.5.4 dev: true - /workbox-navigation-preload/6.5.4: + /workbox-navigation-preload@6.5.4: resolution: {integrity: sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==} dependencies: workbox-core: 6.5.4 dev: true - /workbox-precaching/6.5.4: + /workbox-precaching@6.5.4: resolution: {integrity: sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==} dependencies: workbox-core: 6.5.4 @@ -15295,13 +14970,13 @@ packages: workbox-strategies: 6.5.4 dev: true - /workbox-range-requests/6.5.4: + /workbox-range-requests@6.5.4: resolution: {integrity: sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==} dependencies: workbox-core: 6.5.4 dev: true - /workbox-recipes/6.5.4: + /workbox-recipes@6.5.4: resolution: {integrity: sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==} dependencies: workbox-cacheable-response: 6.5.4 @@ -15312,37 +14987,37 @@ packages: workbox-strategies: 6.5.4 dev: true - /workbox-routing/6.5.4: + /workbox-routing@6.5.4: resolution: {integrity: sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==} dependencies: workbox-core: 6.5.4 dev: true - /workbox-strategies/6.5.4: + /workbox-strategies@6.5.4: resolution: {integrity: sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==} dependencies: workbox-core: 6.5.4 dev: true - /workbox-streams/6.5.4: + /workbox-streams@6.5.4: resolution: {integrity: sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==} dependencies: workbox-core: 6.5.4 workbox-routing: 6.5.4 dev: true - /workbox-sw/6.5.4: + /workbox-sw@6.5.4: resolution: {integrity: sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==} dev: true - /workbox-window/6.5.4: + /workbox-window@6.5.4: resolution: {integrity: sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==} dependencies: '@types/trusted-types': 2.0.2 workbox-core: 6.5.4 dev: true - /wrap-ansi/6.2.0: + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} dependencies: @@ -15351,7 +15026,7 @@ packages: strip-ansi: 6.0.1 dev: true - /wrap-ansi/7.0.0: + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: @@ -15360,11 +15035,11 @@ packages: strip-ansi: 6.0.1 dev: true - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /write-file-atomic/3.0.3: + /write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} dependencies: imurmurhash: 0.1.4 @@ -15373,7 +15048,7 @@ packages: typedarray-to-buffer: 3.1.5 dev: true - /write-file-atomic/4.0.2: + /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: @@ -15381,20 +15056,7 @@ packages: signal-exit: 3.0.7 dev: true - /ws/7.4.6: - resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - - /ws/8.12.0: + /ws@8.12.0: resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} engines: {node: '>=10.0.0'} peerDependencies: @@ -15407,7 +15069,20 @@ packages: optional: true dev: true - /ws/8.5.0: + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /ws@8.5.0: resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} engines: {node: '>=10.0.0'} peerDependencies: @@ -15420,7 +15095,7 @@ packages: optional: true dev: true - /ws/8.9.0: + /ws@8.9.0: resolution: {integrity: sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==} engines: {node: '>=10.0.0'} peerDependencies: @@ -15433,63 +15108,58 @@ packages: optional: true dev: true - /xdg-basedir/4.0.0: + /xdg-basedir@4.0.0: resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} engines: {node: '>=8'} dev: true - /xml-name-validator/4.0.0: + /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} dev: true - /xmlbuilder/15.1.1: + /xmlbuilder@15.1.1: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} dev: true - /xmlchars/2.2.0: + /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true - /xregexp/2.0.0: + /xregexp@2.0.0: resolution: {integrity: sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==} dev: true - /y18n/5.0.8: + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: true - /yallist/3.1.1: + /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: true - /yallist/4.0.0: + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml/1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: true - - /yaml/2.1.1: - resolution: {integrity: sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==} + /yaml@2.2.2: + resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} engines: {node: '>= 14'} dev: true - /yargs-parser/20.2.9: + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: true - /yargs-parser/21.1.1: + /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} dev: true - /yargs/16.2.0: + /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} dependencies: @@ -15502,11 +15172,11 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs/17.4.1: - resolution: {integrity: sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==} + /yargs@17.6.2: + resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} engines: {node: '>=12'} dependencies: - cliui: 7.0.4 + cliui: 8.0.1 escalade: 3.1.1 get-caller-file: 2.0.5 require-directory: 2.1.1 @@ -15515,11 +15185,11 @@ packages: yargs-parser: 21.1.1 dev: true - /yargs/17.5.1: - resolution: {integrity: sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==} + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} dependencies: - cliui: 7.0.4 + cliui: 8.0.1 escalade: 3.1.1 get-caller-file: 2.0.5 require-directory: 2.1.1 @@ -15528,28 +15198,28 @@ packages: yargs-parser: 21.1.1 dev: true - /yauzl/2.10.0: + /yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 dev: true - /yn/3.1.1: + /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} dev: true - /yocto-queue/0.1.0: + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true - /yocto-queue/1.0.0: + /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} dev: true - /zwitch/2.0.2: + /zwitch@2.0.2: resolution: {integrity: sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==} dev: true From baf5e8f6b2711c0b989e7acdb07db6397956ebba Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 29 Apr 2023 10:13:00 +0530 Subject: [PATCH 053/255] Fix docs, mmd -> mermaid --- packages/mermaid/src/docs/CHANGELOG.md | 4 ++-- packages/mermaid/src/docs/config/8.6.0_docs.md | 2 +- packages/mermaid/src/docs/config/directives.md | 2 +- packages/mermaid/src/docs/syntax/classDiagram.md | 8 ++++---- .../mermaid/src/docs/syntax/entityRelationshipDiagram.md | 2 +- packages/mermaid/src/docs/syntax/flowchart.md | 4 ++-- packages/mermaid/src/docs/syntax/gantt.md | 4 ++-- packages/mermaid/src/docs/syntax/sequenceDiagram.md | 4 ++-- packages/mermaid/src/docs/syntax/stateDiagram.md | 2 +- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/mermaid/src/docs/CHANGELOG.md b/packages/mermaid/src/docs/CHANGELOG.md index cc725bf00..52d959744 100644 --- a/packages/mermaid/src/docs/CHANGELOG.md +++ b/packages/mermaid/src/docs/CHANGELOG.md @@ -40,7 +40,7 @@ It is also possible to override site-wide theme settings locally, for a specific **Following is an example:** -```mmd +```mermaid %%{init: {'theme':'base'}}%% graph TD a --> b @@ -56,7 +56,7 @@ The easiest way to make a custom theme is to start with the base theme, and just Here is an example of overriding `primaryColor` and giving everything a different look, using `%%init%%`. -```mmd +```mermaid %%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% graph TD A[Christmas] -->|Get money| B(Go shopping) diff --git a/packages/mermaid/src/docs/config/8.6.0_docs.md b/packages/mermaid/src/docs/config/8.6.0_docs.md index 7b470eab8..efd29bfdc 100644 --- a/packages/mermaid/src/docs/config/8.6.0_docs.md +++ b/packages/mermaid/src/docs/config/8.6.0_docs.md @@ -75,7 +75,7 @@ When deployed within code, init is called before the graph/diagram description. **for example**: -```mmd +```mermaid %%{init: {"theme": "default", "logLevel": 1 }}%% graph LR a-->b diff --git a/packages/mermaid/src/docs/config/directives.md b/packages/mermaid/src/docs/config/directives.md index ac57e6d21..b1e0e6303 100644 --- a/packages/mermaid/src/docs/config/directives.md +++ b/packages/mermaid/src/docs/config/directives.md @@ -84,7 +84,7 @@ Here the directive declaration will set the `logLevel` to `debug` and the `theme Note: You can use 'init' or 'initialize' as both acceptable as init directives. Also note that `%%init%%` and `%%initialize%%` directives will be grouped together after they are parsed. This means: -```mmd +```mermaid %%{init: { 'logLevel': 'debug', 'theme': 'forest' } }%% %%{initialize: { 'logLevel': 'fatal', "theme":'dark', 'startOnLoad': true } }%% ... diff --git a/packages/mermaid/src/docs/syntax/classDiagram.md b/packages/mermaid/src/docs/syntax/classDiagram.md index 871ade057..961da34ef 100644 --- a/packages/mermaid/src/docs/syntax/classDiagram.md +++ b/packages/mermaid/src/docs/syntax/classDiagram.md @@ -248,7 +248,7 @@ classE o-- classF : aggregation Relations can logically represent an N:M association: -```mmd +```mermaid classDiagram Animal <|--|> Zebra ``` @@ -351,7 +351,7 @@ class Color{ Comments can be entered within a class diagram, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text until the next newline will be treated as a comment, including any class diagram syntax. -```mmd +```mermaid classDiagram %% This whole line is a comment classDiagram class Shape <> class Shape{ @@ -417,7 +417,7 @@ classDiagram _URL Link:_ -```mmd +```mermaid classDiagram class Shape link Shape "https://www.github.com" "This is a tooltip for a link" @@ -427,7 +427,7 @@ click Shape2 href "https://www.github.com" "This is a tooltip for a link" _Callback:_ -```mmd +```mermaid classDiagram class Shape callback Shape "callbackFunction" "This is a tooltip for a callback" diff --git a/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md b/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md index 7067a65d9..b7066ab3d 100644 --- a/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md +++ b/packages/mermaid/src/docs/syntax/entityRelationshipDiagram.md @@ -116,7 +116,7 @@ Relationships may be classified as either _identifying_ or _non-identifying_ and | to | _identifying_ | | optionally to | _non-identifying_ | -```mmd +```mermaid erDiagram CAR ||--o{ NAMED-DRIVER : allows PERSON ||--o{ NAMED-DRIVER : is diff --git a/packages/mermaid/src/docs/syntax/flowchart.md b/packages/mermaid/src/docs/syntax/flowchart.md index 97cbb4fe3..cf1954e31 100644 --- a/packages/mermaid/src/docs/syntax/flowchart.md +++ b/packages/mermaid/src/docs/syntax/flowchart.md @@ -273,7 +273,7 @@ word of warning, one could go overboard with this making the flowchart harder to markdown form. The Swedish word `lagom` comes to mind. It means, not too much and not too little. This goes for expressive syntaxes as well. -```mmd +```mermaid flowchart TB A --> C A --> D @@ -557,7 +557,7 @@ Beginner's tip—a full example using interactive links in a html context: Comments can be entered within a flow diagram, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any flow syntax -```mmd +```mermaid flowchart LR %% this is a comment A -- text --> B{node} A -- text --> B -- text2 --> C diff --git a/packages/mermaid/src/docs/syntax/gantt.md b/packages/mermaid/src/docs/syntax/gantt.md index 422358d3e..cecaf52cb 100644 --- a/packages/mermaid/src/docs/syntax/gantt.md +++ b/packages/mermaid/src/docs/syntax/gantt.md @@ -193,7 +193,7 @@ More info in: [https://github.com/d3/d3-time#interval_every](https://github.com/ The compact mode allows you to display multiple tasks in the same row. Compact mode can be enabled for a gantt chart by setting the display mode of the graph via preceeding YAML settings. -```mmd +```mermaid --- displayMode: compact --- @@ -211,7 +211,7 @@ gantt Comments can be entered within a gantt chart, which will be ignored by the parser. Comments need to be on their own line and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any diagram syntax. -```mmd +```mermaid gantt title A Gantt Diagram %% this is a comment diff --git a/packages/mermaid/src/docs/syntax/sequenceDiagram.md b/packages/mermaid/src/docs/syntax/sequenceDiagram.md index 2b68e5de5..0d5442129 100644 --- a/packages/mermaid/src/docs/syntax/sequenceDiagram.md +++ b/packages/mermaid/src/docs/syntax/sequenceDiagram.md @@ -387,7 +387,7 @@ sequenceDiagram Comments can be entered within a sequence diagram, which will be ignored by the parser. Comments need to be on their own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any diagram syntax -```mmd +```mermaid sequenceDiagram Alice->>John: Hello John, how are you? %% this is a comment @@ -443,7 +443,7 @@ This can be configured by adding one or more link lines with the format: link : @ ``` -```mmd +```mermaid sequenceDiagram participant Alice participant John diff --git a/packages/mermaid/src/docs/syntax/stateDiagram.md b/packages/mermaid/src/docs/syntax/stateDiagram.md index ddfe61c49..248146993 100644 --- a/packages/mermaid/src/docs/syntax/stateDiagram.md +++ b/packages/mermaid/src/docs/syntax/stateDiagram.md @@ -249,7 +249,7 @@ Comments can be entered within a state diagram chart, which will be ignored by t own line, and must be prefaced with `%%` (double percent signs). Any text after the start of the comment to the next newline will be treated as a comment, including any diagram syntax -```mmd +```mermaid stateDiagram-v2 [*] --> Still Still --> [*] From 110cd61c64950b2b2b6a6eba6c3d9b4e66d3550a Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 29 Apr 2023 10:17:51 +0530 Subject: [PATCH 054/255] Fix lockfile --- pnpm-lock.yaml | 76 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 63 insertions(+), 13 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b8f9fb398..63ac7b8c5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -437,6 +437,67 @@ importers: specifier: ^6.5.4 version: 6.5.4 + packages/mermaid/src/vitepress: + dependencies: + '@vueuse/core': + specifier: ^10.1.0 + version: 10.1.0(vue@3.2.47) + jiti: + specifier: ^1.18.2 + version: 1.18.2 + vue: + specifier: ^3.2.47 + version: 3.2.47 + devDependencies: + '@iconify-json/carbon': + specifier: ^1.1.16 + version: 1.1.16 + '@types/fs-extra': + specifier: ^11.0.1 + version: 11.0.1 + '@unocss/reset': + specifier: ^0.51.8 + version: 0.51.8 + '@vite-pwa/vitepress': + specifier: ^0.0.5 + version: 0.0.5(vite-plugin-pwa@0.14.7) + '@vitejs/plugin-vue': + specifier: ^4.2.1 + version: 4.2.1(vite@4.3.3)(vue@3.2.47) + esno: + specifier: ^0.16.3 + version: 0.16.3 + fast-glob: + specifier: ^3.2.12 + version: 3.2.12 + fs-extra: + specifier: ^11.1.1 + version: 11.1.1 + https-localhost: + specifier: ^4.7.1 + version: 4.7.1 + pathe: + specifier: ^1.1.0 + version: 1.1.0 + unocss: + specifier: ^0.51.8 + version: 0.51.8(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3) + unplugin-vue-components: + specifier: ^0.24.1 + version: 0.24.1(rollup@2.79.1)(vue@3.2.47) + vite: + specifier: ^4.3.3 + version: 4.3.3(@types/node@18.16.0) + vite-plugin-pwa: + specifier: ^0.14.7 + version: 0.14.7(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) + vitepress: + specifier: 1.0.0-alpha.74 + version: 1.0.0-alpha.74(@algolia/client-search@4.14.2)(@types/node@18.16.0) + workbox-window: + specifier: ^6.5.4 + version: 6.5.4 + tests/webpack: dependencies: '@mermaid-js/mermaid-example-diagram': @@ -4731,17 +4792,6 @@ packages: vite-plugin-pwa: 0.14.7(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) dev: true - /@vitejs/plugin-vue@4.2.1(vite@4.3.1)(vue@3.2.47): - resolution: {integrity: sha512-ZTZjzo7bmxTRTkb8GSTwkPOYDIP7pwuyV+RV53c9PYUouwcbkIZIvWvNWlX2b1dYZqtOv7D6iUAnJLVNGcLrSw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.0.0 - vue: ^3.2.25 - dependencies: - vite: 4.3.1(@types/node@18.16.0) - vue: 3.2.47 - dev: true - /@vitejs/plugin-vue@4.2.1(vite@4.3.3)(vue@3.2.47): resolution: {integrity: sha512-ZTZjzo7bmxTRTkb8GSTwkPOYDIP7pwuyV+RV53c9PYUouwcbkIZIvWvNWlX2b1dYZqtOv7D6iUAnJLVNGcLrSw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -14295,14 +14345,14 @@ packages: dependencies: '@docsearch/css': 3.3.3 '@docsearch/js': 3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0) - '@vitejs/plugin-vue': 4.2.1(vite@4.3.1)(vue@3.2.47) + '@vitejs/plugin-vue': 4.2.1(vite@4.3.3)(vue@3.2.47) '@vue/devtools-api': 6.5.0 '@vueuse/core': 10.1.0(vue@3.2.47) body-scroll-lock: 4.0.0-beta.0 mark.js: 8.11.1 minisearch: 6.0.1 shiki: 0.14.1 - vite: 4.3.1(@types/node@18.16.0) + vite: 4.3.3(@types/node@18.16.0) vue: 3.2.47 transitivePeerDependencies: - '@algolia/client-search' From cdc68d99fecd689436c4901081884a26debbc48c Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 29 Apr 2023 10:50:30 +0530 Subject: [PATCH 055/255] Cleanup --- .gitignore | 3 +++ .prettierignore | 3 ++- cSpell.json | 25 ++++--------------- .../src/docs/.vitepress/components.d.ts | 6 ++--- 4 files changed, 13 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index f29286825..efbfc8b36 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,6 @@ tsconfig.tsbuildinfo knsv*.html local*.html stats/ + +**/user-avatars/* +**/contributor-names.json diff --git a/.prettierignore b/.prettierignore index b66f97d1c..2ab91f93e 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,4 +4,5 @@ cypress/platform/xss3.html coverage # Autogenerated by PNPM pnpm-lock.yaml -stats \ No newline at end of file +stats +packages/mermaid/src/docs/.vitepress/components.d.ts diff --git a/cSpell.json b/cSpell.json index 7cce0bfa9..dd1ee1db8 100644 --- a/cSpell.json +++ b/cSpell.json @@ -117,7 +117,7 @@ "tylerlong", "ugge", "unist", - "Unocss", + "unocss", "verdana", "viewports", "vinod", @@ -128,11 +128,7 @@ "yash" ], "patterns": [ - { - "name": "Markdown links", - "pattern": "\\((.*)\\)", - "description": "" - }, + { "name": "Markdown links", "pattern": "\\((.*)\\)", "description": "" }, { "name": "Markdown code blocks", "pattern": "/^(\\s*`{3,}).*[\\s\\S]*?^\\1/gmx", @@ -143,25 +139,14 @@ "pattern": "\\`([^\\`\\r\\n]+?)\\`", "description": "https://stackoverflow.com/questions/41274241/how-to-capture-inline-markdown-code-but-not-a-markdown-code-fence-with-regex" }, - { - "name": "Link contents", - "pattern": "\\", - "description": "" - }, - { - "name": "Snippet references", - "pattern": "-- snippet:(.*)", - "description": "" - }, + { "name": "Link contents", "pattern": "\\", "description": "" }, + { "name": "Snippet references", "pattern": "-- snippet:(.*)", "description": "" }, { "name": "Snippet references 2", "pattern": "\\<\\[sample:(.*)", "description": "another kind of snippet reference" }, - { - "name": "Multi-line code blocks", - "pattern": "/^\\s*```[\\s\\S]*?^\\s*```/gm" - }, + { "name": "Multi-line code blocks", "pattern": "/^\\s*```[\\s\\S]*?^\\s*```/gm" }, { "name": "HTML Tags", "pattern": "<[^>]*>", diff --git a/packages/mermaid/src/docs/.vitepress/components.d.ts b/packages/mermaid/src/docs/.vitepress/components.d.ts index 9704ee282..e554b4c4d 100644 --- a/packages/mermaid/src/docs/.vitepress/components.d.ts +++ b/packages/mermaid/src/docs/.vitepress/components.d.ts @@ -5,11 +5,11 @@ // Read more: https://github.com/vuejs/core/pull/3399 import '@vue/runtime-core' -export {} +export {}; declare module '@vue/runtime-core' { export interface GlobalComponents { - Contributors: typeof import('./components/Contributors.vue')['default'] - HomePage: typeof import('./components/HomePage.vue')['default'] + Contributors: typeof import('./components/Contributors.vue')['default']; + HomePage: typeof import('./components/HomePage.vue')['default']; } } From 9e0410e0d3659f1dc1ecdedfa39acbbdea230e43 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 29 Apr 2023 10:51:03 +0530 Subject: [PATCH 056/255] Simplify contributors --- .../src/docs/.vitepress/contributors.ts | 50 +++++++------------ .../.vitepress/scripts/fetch-contributors.ts | 2 +- 2 files changed, 20 insertions(+), 32 deletions(-) diff --git a/packages/mermaid/src/docs/.vitepress/contributors.ts b/packages/mermaid/src/docs/.vitepress/contributors.ts index a223a36df..bef2c1311 100644 --- a/packages/mermaid/src/docs/.vitepress/contributors.ts +++ b/packages/mermaid/src/docs/.vitepress/contributors.ts @@ -1,4 +1,4 @@ -import contributorNamesJson from './contributor-names.json'; +import contributorUsernamesJson from './contributor-names.json'; export interface Contributor { name: string; @@ -11,10 +11,10 @@ export interface SocialEntry { } export interface CoreTeam { - avatar: string; name: string; // required to download avatars from GitHub github: string; + avatar?: string; twitter?: string; mastodon?: string; sponsor?: string; @@ -26,20 +26,18 @@ export interface CoreTeam { links?: SocialEntry[]; } -const contributorNames: string[] = contributorNamesJson; -const contributorsAvatars: Record = {}; +const contributorUsernames: string[] = contributorUsernamesJson; -export const contributors = (contributorNames as string[]).reduce((acc, name) => { - contributorsAvatars[name] = `/user-avatars/${name}.png`; - acc.push({ name, avatar: contributorsAvatars[name] }); - return acc; -}, [] as Contributor[]); +export const contributors = contributorUsernames.map((username) => { + return { username, avatar: `/user-avatars/${username}.png` }; +}); const websiteSVG = { svg: '', }; const createLinks = (tm: CoreTeam): CoreTeam => { + tm.avatar = `/user-avatars/${tm.github}.png`; tm.links = [{ icon: 'github', link: `https://github.com/${tm.github}` }]; if (tm.mastodon) { tm.links.push({ icon: 'mastodon', link: tm.mastodon }); @@ -56,30 +54,27 @@ const createLinks = (tm: CoreTeam): CoreTeam => { return tm; }; +const knut: CoreTeam = { + github: 'knsv', + name: 'Knut Sveidqvist', + title: 'Creator', + twitter: 'knutsveidqvist', + sponsor: 'https://github.com/sponsors/knsv', +}; + const plainTeamMembers: CoreTeam[] = [ - { - github: 'knsv', - avatar: contributorsAvatars.knsv, - name: 'Knut Sveidqvist', - title: 'Creator', - twitter: 'knutsveidqvist', - sponsor: 'https://github.com/sponsors/knsv', - }, { github: 'NeilCuzon', - avatar: contributorsAvatars.NeilCuzon, name: 'Neil Cuzon', title: 'Developer', }, { github: 'tylerlong', - avatar: contributorsAvatars.tylerlong, name: 'Tyler Liu', title: 'Developer', }, { github: 'sidharthv96', - avatar: contributorsAvatars.sidharthv96, name: 'Sidharth Vinod', title: 'Developer', twitter: 'sidv42', @@ -90,20 +85,17 @@ const plainTeamMembers: CoreTeam[] = [ }, { github: 'ashishjain0512', - avatar: contributorsAvatars.ashishjain0512, name: 'Ashish Jain', title: 'Developer', }, { github: 'mmorel-35', - avatar: contributorsAvatars['mmorel-35'], name: 'Matthieu Morel', title: 'Developer', linkedIn: 'matthieumorel35', }, { github: 'aloisklink', - avatar: contributorsAvatars.aloisklink, name: 'Alois Klink', title: 'Developer', linkedIn: 'aloisklink', @@ -111,50 +103,46 @@ const plainTeamMembers: CoreTeam[] = [ }, { github: 'pbrolin47', - avatar: contributorsAvatars.pbrolin47, name: 'Per Brolin', title: 'Developer', }, { github: 'Yash-Singh1', - avatar: contributorsAvatars['Yash-Singh1'], name: 'Yash Singh', title: 'Developer', }, { github: 'GDFaber', - avatar: contributorsAvatars.GDFaber, name: 'Marc Faber', title: 'Developer', linkedIn: 'marc-faber', }, { github: 'MindaugasLaganeckas', - avatar: contributorsAvatars.MindaugasLaganeckas, name: 'Mindaugas Laganeckas', title: 'Developer', }, { github: 'jgreywolf', - avatar: contributorsAvatars.jgreywolf, name: 'Justin Greywolf', title: 'Developer', }, { github: 'IOrlandoni', - avatar: contributorsAvatars.IOrlandoni, name: 'Nacho Orlandoni', title: 'Developer', }, { github: 'huynhicode', - avatar: contributorsAvatars.huynhicode, name: 'Steph Huynh', title: 'Developer', }, ]; const teamMembers = plainTeamMembers.map((tm) => createLinks(tm)); -teamMembers.sort((a, b) => contributorNames.indexOf(a.github) - contributorNames.indexOf(b.github)); +teamMembers.sort( + (a, b) => contributorUsernames.indexOf(a.github) - contributorUsernames.indexOf(b.github) +); +teamMembers.unshift(createLinks(knut)); export { teamMembers }; diff --git a/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts b/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts index a758bd76a..33513e690 100644 --- a/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts +++ b/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts @@ -32,7 +32,7 @@ async function fetchContributors() { async function generate() { const collaborators = await fetchContributors(); - await writeFile(pathContributors, JSON.stringify(collaborators, null, 2), 'utf8'); + await writeFile(pathContributors, JSON.stringify(collaborators, null, 2) + '\n', 'utf8'); } void generate(); From 4456c2a26777cf84fbaf155af1e0e2a1e6df0696 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 29 Apr 2023 10:55:06 +0530 Subject: [PATCH 057/255] Fix user-avatar copying --- packages/mermaid/src/docs.mts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/docs.mts b/packages/mermaid/src/docs.mts index d7b558a00..64c77254d 100644 --- a/packages/mermaid/src/docs.mts +++ b/packages/mermaid/src/docs.mts @@ -362,9 +362,15 @@ const transformHtml = (filename: string) => { }; const getGlobs = (globs: string[]): string[] => { - globs.push('!**/dist', '!**/redirect.spec.ts', '!**/landing', '!**/node_modules'); + globs.push( + '!**/dist', + '!**/redirect.spec.ts', + '!**/landing', + '!**/node_modules', + '!**/user-avatars' + ); if (!vitepress) { - globs.push('!**/.vitepress', '!**/vite.config.ts', '!src/docs/index.md'); + globs.push('!**/.vitepress', '!**/vite.config.ts', '!src/docs/index.md', '!**/package.json'); } return globs; }; From 32928224e5d25a153ec3bb448934bcbb0e4bd0f9 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 29 Apr 2023 10:55:24 +0530 Subject: [PATCH 058/255] Remove contributor-names from git --- .../docs/.vitepress/contributor-names.json | 392 ------------------ 1 file changed, 392 deletions(-) delete mode 100644 packages/mermaid/src/docs/.vitepress/contributor-names.json diff --git a/packages/mermaid/src/docs/.vitepress/contributor-names.json b/packages/mermaid/src/docs/.vitepress/contributor-names.json deleted file mode 100644 index 089c09eb6..000000000 --- a/packages/mermaid/src/docs/.vitepress/contributor-names.json +++ /dev/null @@ -1,392 +0,0 @@ -[ - "knsv", - "sidharthv96", - "NeilCuzon", - "tylerlong", - "ashishjain0512", - "weedySeaDragon", - "aloisklink", - "mmorel-35", - "GDFaber", - "klemmchr", - "jgreywolf", - "cmmoran", - "Yash-Singh1", - "IOrlandoni", - "raghur", - "pbrolin47", - "SeanKilleen", - "erelling", - "spopida", - "emersonbottero", - "bjowes", - "huynhicode", - "Andre601", - "dbartholomae", - "gibson042", - "chrismoran-bkt", - "abzicht", - "gwincr11", - "mearns", - "spier", - "BastianZim", - "JeremyFunk", - "remcohaszing", - "Billiam", - "devcer", - "sagea", - "DKurilo", - "gijswijs", - "timmaffett", - "tomperr", - "pinghe", - "ciekawy", - "lexmin0412", - "karistom", - "koljatm-edeka", - "notquiterussell", - "spect88", - "oleveau", - "ted-marozzi", - "dany74q", - "johnnywalker", - "72636c", - "therzka", - "fardog", - "ggrossetie", - "bollwyvl", - "adamwulf", - "elliot-nelson", - "fabiospampinato", - "HustLion", - "nacc", - "flying-sheep", - "vallsv", - "Xstoudi", - "lishid", - "arpansaha13", - "BastiDood", - "DanShai", - "LarryKlugerDS", - "MasonM", - "stanhu", - "sechel", - "swoyam2609", - "abhijeet-pathak", - "eajenkins", - "harshilparmar", - "Guy-Adler", - "ahmadnassri", - "crodriguez1a", - "danangtomo", - "FlorianWoelki", - "Jmuccigr", - "joshuacolvin", - "khiga8", - "keenanjt33", - "lf-novelt", - "faisalarbain", - "Will-Low", - "cm-wada-yusuke", - "ymgch", - "yutotnh", - "arnaud-zg", - "BD103", - "Mister-Hope", - "Omerr", - "Aniket1026", - "bish0polis", - "CalebUsadi", - "gene1wood", - "gillesdemey", - "jeroen-ekkelkamp", - "josh-bouganim-avant", - "JoshSharpe", - "heyfirst", - "knuts-ic", - "kshitijsaksena", - "loris-intergalactique", - "lindseywild", - "tmatz", - "mahomedalid", - "doble-eme", - "MrCoder", - "pbendersky", - "Pr0dt0s", - "Rutorai", - "ThanasisMpalatsoukas", - "thomasleveil", - "husa", - "abeaton", - "anugs", - "ginomempin", - "lilisha100", - "nekikara", - "nothingismagick", - "phairow", - "deining", - "jsyang", - "naveensrinivasan", - "tommoor", - "vijay40", - "0xflotus", - "AndreasVolkmann", - "andrew-clarkson", - "ashsearle", - "DawMatt", - "frankschmitt", - "guilhermgonzaga", - "ggpasqualino", - "hrgui", - "IanLee1521", - "jbednar", - "jdavis61", - "jayvdb", - "jonabc", - "jbronson-sf", - "lauraceconi", - "lorint", - "MindaugasLaganeckas", - "u-minor", - "namgivu", - "OlegAxenow", - "phschaer", - "rmedaer", - "rheggen", - "larkinscott", - "The-Alchemist", - "TomWright", - "LeoDog896", - "tshepang", - "Vrixyz", - "sinedied", - "yonasb", - "Zer0n0mask", - "luin", - "brookhong", - "Jeff-Tian", - "edumicse", - "eitsupi", - "ilmari-lauhakangas", - "jasmaa", - "sy-records", - "uttk", - "el-mapache", - "bigred8982", - "Joxtacy", - "mrmanc", - "sylhare", - "vikyaiyer", - "CollierCZ", - "adutton", - "adam-hotait", - "ameech", - "AielloChan", - "AlanHohn", - "aledileo", - "alexislefebvre", - "zag", - "alvynmcq", - "alwinw", - "amyq", - "ajthinking", - "NKjoep", - "AndrewL-64", - "sublimino", - "andrewschleifer", - "andrew-demb", - "6footGeek", - "anishkny", - "aniston", - "antco25", - "saveman71", - "Abrifq", - "arfanliaqat", - "Arthaey", - "AsaAyers", - "bglnelissen", - "Barry1", - "ben-page", - "jawn", - "xbojch", - "craigmac", - "hydrosquall", - "carlosblanco", - "carbeer", - "watsoncj", - "dodoinblue", - "ctruelson", - "beaudry", - "Odogwudozilla", - "ct-martin", - "Whoeza", - "Clint-Chester", - "connor4312", - "DCsunset", - "activus-d", - "DanInProgress", - "egnor", - "cakemanny", - "Olshansk", - "danielsitnik", - "dariuswiles", - "DarkNami", - "daveaglick", - "davidpendraykalibrate", - "DavidWittman", - "detj", - "dbrans", - "dbussink", - "dwinston", - "dfinke", - "quickstep25", - "ebjornset", - "Eji4h", - "glensc", - "Erhannis", - "FabAlchemy", - "fregante", - "filipedeschamps", - "fkohrt", - "Foo-x", - "Frank-Mayer", - "l2fprod", - "gwatts", - "GavinPen", - "gnkm", - "gjlubbertsen", - "guidanoli", - "guyellis", - "H3RSKO", - "hwine", - "HerbCaudill", - "LiHowe", - "TribalNightOwl", - "hugovk", - "jolting", - "imgss", - "ImanimalXI", - "ImgBotApp", - "imma90", - "inclusive-coding-bot", - "itprdev", - "revolter", - "isinek", - "marcastel", - "coxy1989", - "janverb", - "jasonbellamy", - "jasonmhoule", - "jayenashar", - "jaybuidl", - "jeroenekkelkamp", - "joebordes", - "jnnnnn", - "jfuentescpp", - "jinntrance", - "jmelfi", - "Qix-", - "xuanxu", - "kahgoh", - "Schweinepriester", - "Kaligule", - "kdipippo", - "khink", - "kevinkhill", - "kkirsche", - "kriskhaira", - "kale-stew", - "Lance-DC", - "Valentine14th", - "kciter", - "zaaath", - "manicki", - "levlas", - "spydon", - "woehrl01", - "lukehsiao", - "korycins", - "maiconschmitz", - "vaceletm", - "marcjansen", - "markdalgleish", - "markotibold", - "Swaagie", - "Narretz", - "ma-zal", - "mgaitan", - "mapio", - "mre", - "matteodelabre", - "maxArturo", - "DavertMik", - "mgenereu", - "maiermic", - "vorburger", - "magmax", - "quulah", - "mbostock", - "Crocin", - "natasha-jarus", - "elv-nate", - "NateChurch", - "gerardnico", - "NitinLodha2812", - "Oliboy50", - "piradata", - "hype09", - "pje", - "saulgajda", - "skywinder", - "ticapix", - "pravi", - "bfriedz", - "reetghosh1", - "renanlecaro", - "Renfay007", - "riaanduplessis", - "RobertWeinmeister", - "rodja", - "wontonst", - "RudolfMan", - "SlideeScherz", - "SilvM", - "simon-id", - "simonplattner", - "sdankel", - "Soptq", - "stevenengler", - "stevenschobert", - "swhgoon", - "hiramekun", - "gitter-badger", - "KarnerTh", - "codebeige", - "schmelto", - "TreyE", - "thilde", - "vaniship", - "commai", - "MetalBlueberry", - "volkanunsal", - "Julez404", - "yudenzel", - "uskey512", - "zakhenry", - "abergquist", - "JiChao99", - "aryandeelwal", - "atmikeguo", - "avijit1258", - "bby-bishopclark", - "beriakomal", - "Bogay", - "bolshoytoster", - "chrismetz09", - "christopherkade", - "tenuki", - "dix", - "dkkb", - "endolith", - "eel87" -] \ No newline at end of file From dfa65c5fc8a58bea2f9f6a1e77b7d49057c32d4d Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 29 Apr 2023 11:30:11 +0530 Subject: [PATCH 059/255] remove nr --- packages/mermaid/src/docs/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/mermaid/src/docs/package.json b/packages/mermaid/src/docs/package.json index 88ccd61af..21b9ae634 100644 --- a/packages/mermaid/src/docs/package.json +++ b/packages/mermaid/src/docs/package.json @@ -4,12 +4,12 @@ "type": "module", "scripts": { "dev": "vitepress --port 3333 --open", - "build": "nr prefetch && vitepress build", + "build": "pnpm prefetch && vitepress build", "build-no-prefetch": "vitepress build", "serve": "vitepress serve", - "preview-https": "pnpm run build && serve .vitepress/dist", - "preview-https-no-prefetch": "pnpm run build-no-prefetch && serve .vitepress/dist", - "prefetch": "pnpm run fetch-contributors && pnpm run fetch-avatars", + "preview-https": "pnpm build && serve .vitepress/dist", + "preview-https-no-prefetch": "pnpm build-no-prefetch && serve .vitepress/dist", + "prefetch": "pnpm fetch-contributors && pnpm fetch-avatars", "fetch-avatars": "esno .vitepress/scripts/fetch-avatars.ts", "fetch-contributors": "esno .vitepress/scripts/fetch-contributors.ts" }, From 38efaf93c86b173470e2afb9ffaaecb231fe48b9 Mon Sep 17 00:00:00 2001 From: raghvendra Date: Sat, 29 Apr 2023 16:06:17 +0530 Subject: [PATCH 060/255] updating es6 rules in flowchart diagram --- .../mermaid/src/diagrams/flowchart/elk/flowRenderer-elk.js | 6 +++--- packages/mermaid/src/diagrams/flowchart/flowRenderer-v2.js | 6 +++--- packages/mermaid/src/diagrams/flowchart/flowRenderer.js | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/mermaid/src/diagrams/flowchart/elk/flowRenderer-elk.js b/packages/mermaid/src/diagrams/flowchart/elk/flowRenderer-elk.js index 66eece46d..6a90c46f5 100644 --- a/packages/mermaid/src/diagrams/flowchart/elk/flowRenderer-elk.js +++ b/packages/mermaid/src/diagrams/flowchart/elk/flowRenderer-elk.js @@ -414,7 +414,7 @@ export const addEdges = function (edges, diagObj, graph, svg) { edges.forEach(function (edge) { // Identify Link - var linkIdBase = 'L-' + edge.start + '-' + edge.end; + const linkIdBase = 'L-' + edge.start + '-' + edge.end; // count the links from+to the same node to give unique id if (linkIdCnt[linkIdBase] === undefined) { linkIdCnt[linkIdBase] = 0; @@ -425,8 +425,8 @@ export const addEdges = function (edges, diagObj, graph, svg) { } let linkId = linkIdBase + '-' + linkIdCnt[linkIdBase]; log.info('abc78 new link id to be used is', linkIdBase, linkId, linkIdCnt[linkIdBase]); - var linkNameStart = 'LS-' + edge.start; - var linkNameEnd = 'LE-' + edge.end; + const linkNameStart = 'LS-' + edge.start; + const linkNameEnd = 'LE-' + edge.end; const edgeData = { style: '', labelStyle: '' }; edgeData.minlen = edge.length || 1; diff --git a/packages/mermaid/src/diagrams/flowchart/flowRenderer-v2.js b/packages/mermaid/src/diagrams/flowchart/flowRenderer-v2.js index 0b8d47543..23f94942c 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowRenderer-v2.js +++ b/packages/mermaid/src/diagrams/flowchart/flowRenderer-v2.js @@ -214,7 +214,7 @@ export const addEdges = function (edges, g, diagObj) { cnt++; // Identify Link - var linkIdBase = 'L-' + edge.start + '-' + edge.end; + const linkIdBase = 'L-' + edge.start + '-' + edge.end; // count the links from+to the same node to give unique id if (linkIdCnt[linkIdBase] === undefined) { linkIdCnt[linkIdBase] = 0; @@ -225,8 +225,8 @@ export const addEdges = function (edges, g, diagObj) { } let linkId = linkIdBase + '-' + linkIdCnt[linkIdBase]; log.info('abc78 new link id to be used is', linkIdBase, linkId, linkIdCnt[linkIdBase]); - var linkNameStart = 'LS-' + edge.start; - var linkNameEnd = 'LE-' + edge.end; + const linkNameStart = 'LS-' + edge.start; + const linkNameEnd = 'LE-' + edge.end; const edgeData = { style: '', labelStyle: '' }; edgeData.minlen = edge.length || 1; diff --git a/packages/mermaid/src/diagrams/flowchart/flowRenderer.js b/packages/mermaid/src/diagrams/flowchart/flowRenderer.js index 575706935..f69fe93eb 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowRenderer.js +++ b/packages/mermaid/src/diagrams/flowchart/flowRenderer.js @@ -176,9 +176,9 @@ export const addEdges = function (edges, g, diagObj) { cnt++; // Identify Link - var linkId = 'L-' + edge.start + '-' + edge.end; - var linkNameStart = 'LS-' + edge.start; - var linkNameEnd = 'LE-' + edge.end; + const linkId = 'L-' + edge.start + '-' + edge.end; + const linkNameStart = 'LS-' + edge.start; + const linkNameEnd = 'LE-' + edge.end; const edgeData = {}; From df1095166ee3c4ee3d716c216e70d41b3d9854a6 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Sun, 30 Apr 2023 20:16:24 +0200 Subject: [PATCH 061/255] Add hint on "flowchart" and "graph" (and some more styling) --- packages/mermaid/src/docs/syntax/flowchart.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/docs/syntax/flowchart.md b/packages/mermaid/src/docs/syntax/flowchart.md index 97cbb4fe3..e3539b182 100644 --- a/packages/mermaid/src/docs/syntax/flowchart.md +++ b/packages/mermaid/src/docs/syntax/flowchart.md @@ -9,7 +9,9 @@ All Flowcharts are composed of **nodes**, the geometric shapes and **edges**, th It can also accommodate different arrow types, multi directional arrows, and linking to and from subgraphs. -> **Important note**: Do not type the word "end" as a Flowchart node. Capitalize all or any one the letters to keep the flowchart from breaking, i.e, "End" or "END". Or you can apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). +```warning +Do not type the word "end" as a Flowchart node. Capitalize all or any one the letters to keep the flowchart from breaking, i.e, "End" or "END". Or you can apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). +``` ### A node (default) @@ -25,6 +27,10 @@ flowchart LR The id is what is displayed in the box. ``` +```tip +Instead of `flowchart` one can also use `graph`. +``` + ### A node with text It is also possible to set text in the box that differs from the id. If this is done several times, it is the last text @@ -473,7 +479,11 @@ This feature is applicable to node labels, edge labels, and subgraph labels. ## Interaction -It is possible to bind a click event to a node, the click can lead to either a javascript callback or to a link which will be opened in a new browser tab. **Note**: This functionality is disabled when using `securityLevel='strict'` and enabled when using `securityLevel='loose'`. +It is possible to bind a click event to a node, the click can lead to either a javascript callback or to a link which will be opened in a new browser tab. + +```info +This functionality is disabled when using `securityLevel='strict'` and enabled when using `securityLevel='loose'`. +``` ``` click nodeId callback @@ -716,7 +726,9 @@ You can change the renderer to elk by adding this directive: %%{init: {"flowchart": {"defaultRenderer": "elk"}} }%% ``` +```info Note that the site needs to use mermaid version 9.4+ for this to work and have this featured enabled in the lazy-loading configuration. +``` ### Width From 3549ffc4ac867cbebf146057b4c49641db503846 Mon Sep 17 00:00:00 2001 From: eopaant Date: Sun, 30 Apr 2023 13:19:35 -0500 Subject: [PATCH 062/255] add master detail relationship support --- packages/mermaid/src/diagrams/er/erDb.js | 1 + packages/mermaid/src/diagrams/er/erMarkers.js | 26 +++++++++++++++++++ .../mermaid/src/diagrams/er/erRenderer.js | 6 +++++ .../src/diagrams/er/parser/erDiagram.jison | 2 ++ .../src/diagrams/er/parser/erDiagram.spec.js | 9 +++++++ 5 files changed, 44 insertions(+) diff --git a/packages/mermaid/src/diagrams/er/erDb.js b/packages/mermaid/src/diagrams/er/erDb.js index 5f2af0da1..2f5116cbf 100644 --- a/packages/mermaid/src/diagrams/er/erDb.js +++ b/packages/mermaid/src/diagrams/er/erDb.js @@ -20,6 +20,7 @@ const Cardinality = { ZERO_OR_MORE: 'ZERO_OR_MORE', ONE_OR_MORE: 'ONE_OR_MORE', ONLY_ONE: 'ONLY_ONE', + MD_PARENT: 'MD_PARENT', }; const Identification = { diff --git a/packages/mermaid/src/diagrams/er/erMarkers.js b/packages/mermaid/src/diagrams/er/erMarkers.js index 948411772..48cafae65 100644 --- a/packages/mermaid/src/diagrams/er/erMarkers.js +++ b/packages/mermaid/src/diagrams/er/erMarkers.js @@ -7,6 +7,8 @@ const ERMarkers = { ONE_OR_MORE_END: 'ONE_OR_MORE_END', ZERO_OR_MORE_START: 'ZERO_OR_MORE_START', ZERO_OR_MORE_END: 'ZERO_OR_MORE_END', + MD_PARENT_END: 'MD_PARENT_END', + MD_PARENT_START: 'MD_PARENT_START', }; /** @@ -18,6 +20,30 @@ const ERMarkers = { const insertMarkers = function (elem, conf) { let marker; + elem + .append('defs') + .append('marker') + .attr('id', ERMarkers.MD_PARENT_START) + .attr('refX', 0) + .attr('refY', 7) + .attr('markerWidth', 190) + .attr('markerHeight', 240) + .attr('orient', 'auto') + .append('path') + .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z'); + + elem + .append('defs') + .append('marker') + .attr('id', ERMarkers.MD_PARENT_END) + .attr('refX', 19) + .attr('refY', 7) + .attr('markerWidth', 20) + .attr('markerHeight', 28) + .attr('orient', 'auto') + .append('path') + .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z'); + elem .append('defs') .append('marker') diff --git a/packages/mermaid/src/diagrams/er/erRenderer.js b/packages/mermaid/src/diagrams/er/erRenderer.js index 87d7ac607..93e22732a 100644 --- a/packages/mermaid/src/diagrams/er/erRenderer.js +++ b/packages/mermaid/src/diagrams/er/erRenderer.js @@ -478,6 +478,9 @@ const drawRelationshipFromLayout = function (svg, rel, g, insert, diagObj) { case diagObj.db.Cardinality.ONLY_ONE: svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ONLY_ONE_END + ')'); break; + case diagObj.db.Cardinality.MD_PARENT: + svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.MD_PARENT_END + ')'); + break; } switch (rel.relSpec.cardB) { @@ -502,6 +505,9 @@ const drawRelationshipFromLayout = function (svg, rel, g, insert, diagObj) { case diagObj.db.Cardinality.ONLY_ONE: svgPath.attr('marker-start', 'url(' + url + '#' + erMarkers.ERMarkers.ONLY_ONE_START + ')'); break; + case diagObj.db.Cardinality.MD_PARENT: + svgPath.attr('marker-start', 'url(' + url + '#' + erMarkers.ERMarkers.MD_PARENT_START + ')'); + break; } // Now label the relationship diff --git a/packages/mermaid/src/diagrams/er/parser/erDiagram.jison b/packages/mermaid/src/diagrams/er/parser/erDiagram.jison index 8ffa87c63..0c6820b49 100644 --- a/packages/mermaid/src/diagrams/er/parser/erDiagram.jison +++ b/packages/mermaid/src/diagrams/er/parser/erDiagram.jison @@ -57,6 +57,7 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multili o\| return 'ZERO_OR_ONE'; o\{ return 'ZERO_OR_MORE'; \|\{ return 'ONE_OR_MORE'; +\s*u return 'MD_PARENT'; \.\. return 'NON_IDENTIFYING'; \-\- return 'IDENTIFYING'; "to" return 'IDENTIFYING'; @@ -170,6 +171,7 @@ cardinality | 'ZERO_OR_MORE' { $$ = yy.Cardinality.ZERO_OR_MORE; } | 'ONE_OR_MORE' { $$ = yy.Cardinality.ONE_OR_MORE; } | 'ONLY_ONE' { $$ = yy.Cardinality.ONLY_ONE; } + | 'MD_PARENT' { $$ = yy.Cardinality.MD_PARENT; } ; relType diff --git a/packages/mermaid/src/diagrams/er/parser/erDiagram.spec.js b/packages/mermaid/src/diagrams/er/parser/erDiagram.spec.js index 904521d50..6fdc9eaa7 100644 --- a/packages/mermaid/src/diagrams/er/parser/erDiagram.spec.js +++ b/packages/mermaid/src/diagrams/er/parser/erDiagram.spec.js @@ -718,5 +718,14 @@ describe('when parsing ER diagram it...', function () { const rels = erDb.getRelationships(); expect(rels[0].roleA).toBe('places'); }); + + it('should represent parent-child relationship correctly', function () { + erDiagram.parser.parse('erDiagram\nPROJECT u--o{ TEAM_MEMBER : "parent"'); + const rels = erDb.getRelationships(); + expect(Object.keys(erDb.getEntities()).length).toBe(2); + expect(rels.length).toBe(1); + expect(rels[0].relSpec.cardB).toBe(erDb.Cardinality.MD_PARENT); + expect(rels[0].relSpec.cardA).toBe(erDb.Cardinality.ZERO_OR_MORE); + }); }); }); From 5c8b7390475da607d3973089c09e331ebb67b1cb Mon Sep 17 00:00:00 2001 From: koppor Date: Sun, 30 Apr 2023 18:19:56 +0000 Subject: [PATCH 063/255] Update docs --- docs/syntax/flowchart.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/syntax/flowchart.md b/docs/syntax/flowchart.md index 31c8643be..965dcb051 100644 --- a/docs/syntax/flowchart.md +++ b/docs/syntax/flowchart.md @@ -10,7 +10,8 @@ All Flowcharts are composed of **nodes**, the geometric shapes and **edges**, th It can also accommodate different arrow types, multi directional arrows, and linking to and from subgraphs. -> **Important note**: Do not type the word "end" as a Flowchart node. Capitalize all or any one the letters to keep the flowchart from breaking, i.e, "End" or "END". Or you can apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). +> **Warning** +> Do not type the word "end" as a Flowchart node. Capitalize all or any one the letters to keep the flowchart from breaking, i.e, "End" or "END". Or you can apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). ### A node (default) @@ -33,6 +34,9 @@ flowchart LR > **Note** > The id is what is displayed in the box. +> **💡 Tip** +> Instead of `flowchart` one can also use `graph`. + ### A node with text It is also possible to set text in the box that differs from the id. If this is done several times, it is the last text @@ -750,7 +754,11 @@ This feature is applicable to node labels, edge labels, and subgraph labels. ## Interaction -It is possible to bind a click event to a node, the click can lead to either a javascript callback or to a link which will be opened in a new browser tab. **Note**: This functionality is disabled when using `securityLevel='strict'` and enabled when using `securityLevel='loose'`. +It is possible to bind a click event to a node, the click can lead to either a javascript callback or to a link which will be opened in a new browser tab. + +```info +This functionality is disabled when using `securityLevel='strict'` and enabled when using `securityLevel='loose'`. +``` click nodeId callback click nodeId call callback() @@ -1042,7 +1050,9 @@ You can change the renderer to elk by adding this directive: %%{init: {"flowchart": {"defaultRenderer": "elk"}} }%% +```info Note that the site needs to use mermaid version 9.4+ for this to work and have this featured enabled in the lazy-loading configuration. +``` ### Width From 70a52da3932da47d8ffc8288d74576f54dfd1dc9 Mon Sep 17 00:00:00 2001 From: Kazuki Tsunemi Date: Mon, 1 May 2023 19:06:46 +0900 Subject: [PATCH 064/255] namespace rect is not filled --- packages/mermaid/src/diagrams/class/classRenderer-v2.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/mermaid/src/diagrams/class/classRenderer-v2.ts b/packages/mermaid/src/diagrams/class/classRenderer-v2.ts index f31cf8890..40fad703e 100644 --- a/packages/mermaid/src/diagrams/class/classRenderer-v2.ts +++ b/packages/mermaid/src/diagrams/class/classRenderer-v2.ts @@ -60,6 +60,7 @@ export const addNamespaces = function ( domId: vertex.domId, labelText: sanitizeText(vertex.id), labelStyle: '', + style: 'fill: none; stroke: black', // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release padding: getConfig().flowchart?.padding ?? getConfig().class?.padding, }; From 0d373f3a6ab7c8f858b243bfc76677f70b93ade6 Mon Sep 17 00:00:00 2001 From: Kazuki Tsunemi Date: Mon, 1 May 2023 19:12:39 +0900 Subject: [PATCH 065/255] Modify jsdoc of addClasses --- packages/mermaid/src/diagrams/class/classRenderer-v2.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/mermaid/src/diagrams/class/classRenderer-v2.ts b/packages/mermaid/src/diagrams/class/classRenderer-v2.ts index 40fad703e..352002242 100644 --- a/packages/mermaid/src/diagrams/class/classRenderer-v2.ts +++ b/packages/mermaid/src/diagrams/class/classRenderer-v2.ts @@ -79,6 +79,7 @@ export const addNamespaces = function ( * @param g - The graph that is to be drawn. * @param _id - id of the graph * @param diagObj - The diagram object + * @param parent - id of the parent namespace, if it exists */ export const addClasses = function ( classes: ClassMap, From 18571052ad7cae38e3dc3c0b5ac114282e50da41 Mon Sep 17 00:00:00 2001 From: eopaant Date: Mon, 1 May 2023 22:34:36 -0500 Subject: [PATCH 066/255] added style to reflect true aggregation --- packages/mermaid/src/diagrams/er/styles.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/mermaid/src/diagrams/er/styles.js b/packages/mermaid/src/diagrams/er/styles.js index 42dbcebde..08ea2e851 100644 --- a/packages/mermaid/src/diagrams/er/styles.js +++ b/packages/mermaid/src/diagrams/er/styles.js @@ -33,6 +33,17 @@ const getStyles = (options) => font-size: 18px; fill: ${options.textColor}; } + #MD_PARENT_START { + fill: #f5f5f5 !important; + stroke: ${options.lineColor} !important; + stroke-width: 1; + } + #MD_PARENT_END { + fill: #f5f5f5 !important; + stroke: ${options.lineColor} !important; + stroke-width: 1; + } + `; export default getStyles; From 4c9e35e26976861053c76c5445a46b4ad1b848f2 Mon Sep 17 00:00:00 2001 From: Steph <35910788+huynhicode@users.noreply.github.com> Date: Mon, 1 May 2023 22:48:29 -0700 Subject: [PATCH 067/255] add the latest blog post --- docs/news/announcements.md | 6 +++--- docs/news/blog.md | 6 ++++++ packages/mermaid/src/docs/news/announcements.md | 6 +++--- packages/mermaid/src/docs/news/blog.md | 6 ++++++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/docs/news/announcements.md b/docs/news/announcements.md index 112bde52c..9cbf03b4e 100644 --- a/docs/news/announcements.md +++ b/docs/news/announcements.md @@ -6,8 +6,8 @@ # Announcements -## [Automatic text wrapping in flowcharts is here!](https://www.mermaidchart.com/blog/posts/automatic-text-wrapping-in-flowcharts-is-here) +## [Bad documentation can make your business fail](https://www.mermaidchart.com/blog/posts/bad-documentation-can-make-your-business-fail) -3 April 2023 · 3 mins +26 April 2023 · 11 mins -Markdown Strings reduce the hassle # Starting from v10. +Documentation tends to be bad because companies and projects don’t fully realize the costs of bad documentation. diff --git a/docs/news/blog.md b/docs/news/blog.md index dc6f3f635..53c767d5a 100644 --- a/docs/news/blog.md +++ b/docs/news/blog.md @@ -6,6 +6,12 @@ # Blog +## [Bad documentation can make your business fail](https://www.mermaidchart.com/blog/posts/bad-documentation-can-make-your-business-fail) + +26 April 2023 · 11 mins + +Documentation tends to be bad because companies and projects don’t fully realize the costs of bad documentation. + ## [Mermaid Chart officially launched with sharable diagram links and presentation mode](https://www.mermaidchart.com/blog/posts/mermaid-chart-officially-launched-with-sharable-diagram-links-and-presentation-mode/) 27 March 2023 · 2 mins diff --git a/packages/mermaid/src/docs/news/announcements.md b/packages/mermaid/src/docs/news/announcements.md index 4dd07bf3b..1b7024286 100644 --- a/packages/mermaid/src/docs/news/announcements.md +++ b/packages/mermaid/src/docs/news/announcements.md @@ -1,7 +1,7 @@ # Announcements -## [Automatic text wrapping in flowcharts is here!](https://www.mermaidchart.com/blog/posts/automatic-text-wrapping-in-flowcharts-is-here) +## [Bad documentation can make your business fail](https://www.mermaidchart.com/blog/posts/bad-documentation-can-make-your-business-fail) -3 April 2023 · 3 mins +26 April 2023 · 11 mins -Markdown Strings reduce the hassle # Starting from v10. +Documentation tends to be bad because companies and projects don’t fully realize the costs of bad documentation. diff --git a/packages/mermaid/src/docs/news/blog.md b/packages/mermaid/src/docs/news/blog.md index b835bbe35..da0dc7c62 100644 --- a/packages/mermaid/src/docs/news/blog.md +++ b/packages/mermaid/src/docs/news/blog.md @@ -1,5 +1,11 @@ # Blog +## [Bad documentation can make your business fail](https://www.mermaidchart.com/blog/posts/bad-documentation-can-make-your-business-fail) + +26 April 2023 · 11 mins + +Documentation tends to be bad because companies and projects don’t fully realize the costs of bad documentation. + ## [Mermaid Chart officially launched with sharable diagram links and presentation mode](https://www.mermaidchart.com/blog/posts/mermaid-chart-officially-launched-with-sharable-diagram-links-and-presentation-mode/) 27 March 2023 · 2 mins From b30e9620f4759260208ac9af24a9277b3e738c1c Mon Sep 17 00:00:00 2001 From: Steph <35910788+huynhicode@users.noreply.github.com> Date: Mon, 1 May 2023 23:04:04 -0700 Subject: [PATCH 068/255] Update packages/mermaid/src/docs/syntax/flowchart.md Co-authored-by: Sidharth Vinod --- packages/mermaid/src/docs/syntax/flowchart.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/mermaid/src/docs/syntax/flowchart.md b/packages/mermaid/src/docs/syntax/flowchart.md index e8f3b11d1..717bc08e3 100644 --- a/packages/mermaid/src/docs/syntax/flowchart.md +++ b/packages/mermaid/src/docs/syntax/flowchart.md @@ -7,7 +7,9 @@ outline: 'deep' # shows all h3 headings in outline in Vitepress Flowcharts are composed of **nodes** (geometric shapes) and **edges** (arrows or lines). The Mermaid code defines how nodes and edges are made and accommodates different arrow types, multi-directional arrows, and any linking to and from subgraphs. -> **Important**: If you are using the word "end" in a Flowchart node, capitalize the entire word or any of the letters (e.g., "End" or "END"), or apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). Typing "end" in all lowercase letters will break the Flowchart. +```warning +If you are using the word "end" in a Flowchart node, capitalize the entire word or any of the letters (e.g., "End" or "END"), or apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). Typing "end" in all lowercase letters will break the Flowchart. +\``` Remove the \ here. Suggestion didn't include the ending triplequote. ### A node (default) From cb3982de7e5f0b563afe16cc18430ada75c90ef2 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Tue, 2 May 2023 14:16:35 +0530 Subject: [PATCH 069/255] Remove unnecessary dependencies Co-authored-by: Alois Klink --- cSpell.json | 1 - package.json | 1 - packages/mermaid/.gitignore | 1 + .../src/docs/.vitepress/components.d.ts | 15 ---- .../docs/.vitepress/scripts/fetch-avatars.ts | 26 +++--- .../.vitepress/scripts/fetch-contributors.ts | 21 +++-- packages/mermaid/src/docs/package.json | 2 - pnpm-lock.yaml | 80 ------------------- 8 files changed, 20 insertions(+), 127 deletions(-) delete mode 100644 packages/mermaid/src/docs/.vitepress/components.d.ts diff --git a/cSpell.json b/cSpell.json index dd1ee1db8..6e091ac3d 100644 --- a/cSpell.json +++ b/cSpell.json @@ -80,7 +80,6 @@ "mkdocs", "mmorel", "mult", - "ohmyfetch", "orlandoni", "pathe", "pbrolin", diff --git a/package.json b/package.json index 400104b97..a86f8908f 100644 --- a/package.json +++ b/package.json @@ -99,7 +99,6 @@ "jest": "^29.5.0", "jison": "^0.4.18", "js-yaml": "^4.1.0", - "ohmyfetch": "^0.4.21", "jsdom": "^21.1.1", "lint-staged": "^13.2.1", "path-browserify": "^1.0.1", diff --git a/packages/mermaid/.gitignore b/packages/mermaid/.gitignore index 2d71b0dd3..91c74fe7d 100644 --- a/packages/mermaid/.gitignore +++ b/packages/mermaid/.gitignore @@ -3,3 +3,4 @@ src/docs/config/setup README.* src/docs/public/user-avatars/ src/docs/.vitepress/cache +src/docs/.vitepress/components.d.ts diff --git a/packages/mermaid/src/docs/.vitepress/components.d.ts b/packages/mermaid/src/docs/.vitepress/components.d.ts deleted file mode 100644 index e554b4c4d..000000000 --- a/packages/mermaid/src/docs/.vitepress/components.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* eslint-disable */ -/* prettier-ignore */ -// @ts-nocheck -// Generated by unplugin-vue-components -// Read more: https://github.com/vuejs/core/pull/3399 -import '@vue/runtime-core' - -export {}; - -declare module '@vue/runtime-core' { - export interface GlobalComponents { - Contributors: typeof import('./components/Contributors.vue')['default']; - HomePage: typeof import('./components/HomePage.vue')['default']; - } -} diff --git a/packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts b/packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts index 286e4a94f..732373354 100644 --- a/packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts +++ b/packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts @@ -1,28 +1,28 @@ -import fs from 'fs-extra'; +import { mkdir, writeFile, readFile } from 'node:fs/promises'; +import { existsSync } from 'node:fs'; import { fileURLToPath } from 'url'; -import { $fetch } from 'ohmyfetch'; const pathContributors = new URL('../contributor-names.json', import.meta.url); const getAvatarPath = (name: string) => new URL(`../../public/user-avatars/${name}.png`, import.meta.url); -// const dirSponsors = resolve(docsDir, 'public/sponsors/') let contributors: string[] = []; async function download(url: string, fileName: URL) { - if (fs.existsSync(fileName)) return; + if (existsSync(fileName)) { + return; + } // eslint-disable-next-line no-console console.log('downloading', fileName); try { - const image = await $fetch(url, { responseType: 'arrayBuffer' }); - await fs.writeFile(fileName, Buffer.from(image)); + const image = await fetch(url); + await writeFile(fileName, Buffer.from(await image.arrayBuffer())); } catch {} } async function fetchAvatars() { - await fs.ensureDir(fileURLToPath(new URL('..', getAvatarPath('none')))); - contributors = JSON.parse(await fs.readFile(pathContributors, { encoding: 'utf-8' })); - + await mkdir(fileURLToPath(new URL('..', getAvatarPath('none'))), { recursive: true }); + contributors = JSON.parse(await readFile(pathContributors, { encoding: 'utf-8' })); await Promise.allSettled( contributors.map((name) => download(`https://github.com/${name}.png?size=100`, getAvatarPath(name)) @@ -30,12 +30,4 @@ async function fetchAvatars() { ); } -// async function fetchSponsors() { -// await fs.ensureDir(dirSponsors) -// await download('https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg', join(dirSponsors, 'antfu.svg')) -// await download('https://cdn.jsdelivr.net/gh/patak-dev/static/sponsors.svg', join(dirSponsors, 'patak-dev.svg')) -// await download('https://cdn.jsdelivr.net/gh/sheremet-va/static/sponsors.svg', join(dirSponsors, 'sheremet-va.svg')) -// } - fetchAvatars(); -// fetchSponsors() diff --git a/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts b/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts index 33513e690..360cbd259 100644 --- a/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts +++ b/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts @@ -1,7 +1,6 @@ // Adapted from https://github.dev/vitest-dev/vitest/blob/991ff33ab717caee85ef6cbe1c16dc514186b4cc/scripts/update-contributors.ts#L6 import { writeFile } from 'node:fs/promises'; -import { $fetch } from 'ohmyfetch'; const pathContributors = new URL('../contributor-names.json', import.meta.url); @@ -14,16 +13,16 @@ async function fetchContributors() { let page = 1; let data: Contributor[] = []; do { - data = - (await $fetch( - `https://api.github.com/repos/mermaid-js/mermaid/contributors?per_page=100&page=${page}`, - { - method: 'get', - headers: { - 'content-type': 'application/json', - }, - } - )) || []; + const response = await fetch( + `https://api.github.com/repos/mermaid-js/mermaid/contributors?per_page=100&page=${page}`, + { + method: 'GET', + headers: { + 'content-type': 'application/json', + }, + } + ); + data = await response.json(); collaborators.push(...data.map((i) => i.login)); page++; } while (data.length === 100); diff --git a/packages/mermaid/src/docs/package.json b/packages/mermaid/src/docs/package.json index 21b9ae634..d87944cfa 100644 --- a/packages/mermaid/src/docs/package.json +++ b/packages/mermaid/src/docs/package.json @@ -20,13 +20,11 @@ }, "devDependencies": { "@iconify-json/carbon": "^1.1.16", - "@types/fs-extra": "^11.0.1", "@unocss/reset": "^0.51.8", "@vite-pwa/vitepress": "^0.0.5", "@vitejs/plugin-vue": "^4.2.1", "esno": "^0.16.3", "fast-glob": "^3.2.12", - "fs-extra": "^11.1.1", "https-localhost": "^4.7.1", "pathe": "^1.1.0", "unocss": "^0.51.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 63ac7b8c5..27abae958 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -391,9 +391,6 @@ importers: '@iconify-json/carbon': specifier: ^1.1.16 version: 1.1.16 - '@types/fs-extra': - specifier: ^11.0.1 - version: 11.0.1 '@unocss/reset': specifier: ^0.51.8 version: 0.51.8 @@ -409,70 +406,6 @@ importers: fast-glob: specifier: ^3.2.12 version: 3.2.12 - fs-extra: - specifier: ^11.1.1 - version: 11.1.1 - https-localhost: - specifier: ^4.7.1 - version: 4.7.1 - pathe: - specifier: ^1.1.0 - version: 1.1.0 - unocss: - specifier: ^0.51.8 - version: 0.51.8(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3) - unplugin-vue-components: - specifier: ^0.24.1 - version: 0.24.1(rollup@2.79.1)(vue@3.2.47) - vite: - specifier: ^4.3.3 - version: 4.3.3(@types/node@18.16.0) - vite-plugin-pwa: - specifier: ^0.14.7 - version: 0.14.7(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) - vitepress: - specifier: 1.0.0-alpha.74 - version: 1.0.0-alpha.74(@algolia/client-search@4.14.2)(@types/node@18.16.0) - workbox-window: - specifier: ^6.5.4 - version: 6.5.4 - - packages/mermaid/src/vitepress: - dependencies: - '@vueuse/core': - specifier: ^10.1.0 - version: 10.1.0(vue@3.2.47) - jiti: - specifier: ^1.18.2 - version: 1.18.2 - vue: - specifier: ^3.2.47 - version: 3.2.47 - devDependencies: - '@iconify-json/carbon': - specifier: ^1.1.16 - version: 1.1.16 - '@types/fs-extra': - specifier: ^11.0.1 - version: 11.0.1 - '@unocss/reset': - specifier: ^0.51.8 - version: 0.51.8 - '@vite-pwa/vitepress': - specifier: ^0.0.5 - version: 0.0.5(vite-plugin-pwa@0.14.7) - '@vitejs/plugin-vue': - specifier: ^4.2.1 - version: 4.2.1(vite@4.3.3)(vue@3.2.47) - esno: - specifier: ^0.16.3 - version: 0.16.3 - fast-glob: - specifier: ^3.2.12 - version: 3.2.12 - fs-extra: - specifier: ^11.1.1 - version: 11.1.1 https-localhost: specifier: ^4.7.1 version: 4.7.1 @@ -4181,13 +4114,6 @@ packages: resolution: {integrity: sha512-HXwADeHEP4exXkCIwy2n1+i0f1ilP1ETQOH5KDOugjkTFZPntWo0Gr8stZOaebkxsdx+k0X/K6obU/+it07ocg==} dev: true - /@types/fs-extra@11.0.1: - resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} - dependencies: - '@types/jsonfile': 6.1.1 - '@types/node': 18.16.0 - dev: true - /@types/geojson@7946.0.10: resolution: {integrity: sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==} dev: true @@ -4240,12 +4166,6 @@ packages: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true - /@types/jsonfile@6.1.1: - resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} - dependencies: - '@types/node': 18.16.0 - dev: true - /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: From 725b80831e7f48e88355d0dd8b8965eec1219966 Mon Sep 17 00:00:00 2001 From: Atul Varma Date: Tue, 2 May 2023 09:46:59 -0400 Subject: [PATCH 070/255] Reject ridiculous years in Gantt charts. --- packages/mermaid/src/diagrams/gantt/ganttDb.js | 12 +++++++++++- packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts | 6 ++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/gantt/ganttDb.js b/packages/mermaid/src/diagrams/gantt/ganttDb.js index dc811cb64..81ff6d755 100644 --- a/packages/mermaid/src/diagrams/gantt/ganttDb.js +++ b/packages/mermaid/src/diagrams/gantt/ganttDb.js @@ -287,7 +287,17 @@ const getStartDate = function (prevTime, dateFormat, str) { log.debug('Invalid date:' + str); log.debug('With date format:' + dateFormat.trim()); const d = new Date(str); - if (d === undefined || isNaN(d.getTime())) { + if ( + d === undefined || + isNaN(d.getTime()) || + // WebKit browsers can mis-parse invalid dates to be ridiculously + // huge numbers, e.g. new Date('202304') gets parsed as January 1, 202304. + // This can cause virtually infinite loops while rendering, so for the + // purposes of Gantt charts we'll just treat any date beyond 10,000 AD/BC as + // invalid. + d.getFullYear() < -10000 || + d.getFullYear() > 10000 + ) { throw new Error('Invalid date:' + str); } return d; diff --git a/packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts b/packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts index c7e00bf69..123b4a52d 100644 --- a/packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts +++ b/packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts @@ -432,4 +432,10 @@ describe('when using the ganttDb', function () { ganttDb.setTodayMarker(expected); expect(ganttDb.getTodayMarker()).toEqual(expected); }); + + it('should reject dates with ridiculous years', function () { + ganttDb.setDateFormat('YYYYMMDD'); + ganttDb.addTask('test1', 'id1,202304,1d'); + expect(() => ganttDb.getTasks()).toThrowError('Invalid date:202304'); + }); }); From a5e0630e21101d8d2c7867e60b57245b1196ba7a Mon Sep 17 00:00:00 2001 From: Steph <35910788+huynhicode@users.noreply.github.com> Date: Tue, 2 May 2023 23:41:14 -0700 Subject: [PATCH 071/255] requested update --- docs/syntax/flowchart.md | 3 ++- packages/mermaid/src/docs/syntax/flowchart.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/syntax/flowchart.md b/docs/syntax/flowchart.md index dd94d8138..bdcc94a5e 100644 --- a/docs/syntax/flowchart.md +++ b/docs/syntax/flowchart.md @@ -8,7 +8,8 @@ Flowcharts are composed of **nodes** (geometric shapes) and **edges** (arrows or lines). The Mermaid code defines how nodes and edges are made and accommodates different arrow types, multi-directional arrows, and any linking to and from subgraphs. -> **Important**: If you are using the word "end" in a Flowchart node, capitalize the entire word or any of the letters (e.g., "End" or "END"), or apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). Typing "end" in all lowercase letters will break the Flowchart. +> **Warning** +> If you are using the word "end" in a Flowchart node, capitalize the entire word or any of the letters (e.g., "End" or "END"), or apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). Typing "end" in all lowercase letters will break the Flowchart. ### A node (default) diff --git a/packages/mermaid/src/docs/syntax/flowchart.md b/packages/mermaid/src/docs/syntax/flowchart.md index 717bc08e3..692271cec 100644 --- a/packages/mermaid/src/docs/syntax/flowchart.md +++ b/packages/mermaid/src/docs/syntax/flowchart.md @@ -9,7 +9,7 @@ Flowcharts are composed of **nodes** (geometric shapes) and **edges** (arrows or ```warning If you are using the word "end" in a Flowchart node, capitalize the entire word or any of the letters (e.g., "End" or "END"), or apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). Typing "end" in all lowercase letters will break the Flowchart. -\``` Remove the \ here. Suggestion didn't include the ending triplequote. +``` ### A node (default) From 35051f1946aae606428b2ba72d6ccb4ec9229348 Mon Sep 17 00:00:00 2001 From: Steph <35910788+huynhicode@users.noreply.github.com> Date: Tue, 2 May 2023 23:50:14 -0700 Subject: [PATCH 072/255] add blog post to blog page --- docs/news/blog.md | 6 ++++++ packages/mermaid/src/docs/news/blog.md | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/docs/news/blog.md b/docs/news/blog.md index 53c767d5a..2bac9585c 100644 --- a/docs/news/blog.md +++ b/docs/news/blog.md @@ -12,6 +12,12 @@ Documentation tends to be bad because companies and projects don’t fully realize the costs of bad documentation. +## [Automatic text wrapping in flowcharts is here!](https://www.mermaidchart.com/blog/posts/automatic-text-wrapping-in-flowcharts-is-here/) + +3 April 2023 · 3 mins + +Markdown Strings reduce the hassle # Starting from v10. + ## [Mermaid Chart officially launched with sharable diagram links and presentation mode](https://www.mermaidchart.com/blog/posts/mermaid-chart-officially-launched-with-sharable-diagram-links-and-presentation-mode/) 27 March 2023 · 2 mins diff --git a/packages/mermaid/src/docs/news/blog.md b/packages/mermaid/src/docs/news/blog.md index da0dc7c62..62fc3b667 100644 --- a/packages/mermaid/src/docs/news/blog.md +++ b/packages/mermaid/src/docs/news/blog.md @@ -6,6 +6,12 @@ Documentation tends to be bad because companies and projects don’t fully realize the costs of bad documentation. +## [Automatic text wrapping in flowcharts is here!](https://www.mermaidchart.com/blog/posts/automatic-text-wrapping-in-flowcharts-is-here/) + +3 April 2023 · 3 mins + +Markdown Strings reduce the hassle # Starting from v10. + ## [Mermaid Chart officially launched with sharable diagram links and presentation mode](https://www.mermaidchart.com/blog/posts/mermaid-chart-officially-launched-with-sharable-diagram-links-and-presentation-mode/) 27 March 2023 · 2 mins From 61e31b3fe644bde2317a030bc61978ec6f995bfa Mon Sep 17 00:00:00 2001 From: Justin Greywolf Date: Wed, 3 May 2023 16:26:48 -0700 Subject: [PATCH 073/255] fix import issue --- cSpell.json | 5 +++++ packages/mermaid/src/diagrams/c4/svgDraw.js | 2 +- packages/mermaid/src/diagrams/common/svgDrawCommon.js | 10 +--------- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/cSpell.json b/cSpell.json index 94276b683..82e300b8e 100644 --- a/cSpell.json +++ b/cSpell.json @@ -90,8 +90,12 @@ "sidharth", "sidharthv", "sphinxcontrib", + "startx", + "starty", "statediagram", "steph", + "stopx", + "stopy", "stylis", "substate", "sveidqvist", @@ -104,6 +108,7 @@ "tuleap", "ugge", "unist", + "valign", "verdana", "viewports", "vinod", diff --git a/packages/mermaid/src/diagrams/c4/svgDraw.js b/packages/mermaid/src/diagrams/c4/svgDraw.js index ce465cad3..5ca2f55f8 100644 --- a/packages/mermaid/src/diagrams/c4/svgDraw.js +++ b/packages/mermaid/src/diagrams/c4/svgDraw.js @@ -1,4 +1,4 @@ -import common from '../common/common'; +import common from '../common/common.js'; import * as svgDrawCommon from '../common/svgDrawCommon'; import { sanitizeUrl } from '@braintree/sanitize-url'; diff --git a/packages/mermaid/src/diagrams/common/svgDrawCommon.js b/packages/mermaid/src/diagrams/common/svgDrawCommon.js index e054f53b6..9a4ce8aa2 100644 --- a/packages/mermaid/src/diagrams/common/svgDrawCommon.js +++ b/packages/mermaid/src/diagrams/common/svgDrawCommon.js @@ -77,7 +77,7 @@ export const drawEmbeddedImage = function (elem, x, y, link) { const imageElem = elem.append('use'); imageElem.attr('x', x); imageElem.attr('y', y); - var sanitizedLink = sanitizeUrl(link); + const sanitizedLink = sanitizeUrl(link); imageElem.attr('xlink:href', '#' + sanitizedLink); }; @@ -112,11 +112,3 @@ export const getTextObj = function () { valign: undefined, }; }; - -export default { - drawRect, - drawImage, - drawText, - getNoteRect, - getTextObj, -}; From 221640aa258c9e8f97e8113a15a52097cb2d1cf8 Mon Sep 17 00:00:00 2001 From: Justin Greywolf Date: Wed, 3 May 2023 17:01:27 -0700 Subject: [PATCH 074/255] Fix path in test --- .../mermaid/src/diagrams/class/classDiagramGrammar.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/diagrams/class/classDiagramGrammar.spec.ts b/packages/mermaid/src/diagrams/class/classDiagramGrammar.spec.ts index eb0c37969..eae09603f 100644 --- a/packages/mermaid/src/diagrams/class/classDiagramGrammar.spec.ts +++ b/packages/mermaid/src/diagrams/class/classDiagramGrammar.spec.ts @@ -4,12 +4,12 @@ import { LALRGenerator } from 'jison'; import path from 'path'; const getAbsolutePath = (relativePath: string) => { - return new URL(path.join(path.dirname(import.meta.url), relativePath)).pathname; + return new URL(path.join(__dirname, relativePath)).pathname; }; describe('class diagram grammar', function () { it('should have no conflicts', async function () { - const grammarSource = await readFile(getAbsolutePath('./parser/classDiagram.jison'), 'utf8'); + const grammarSource = await readFile(getAbsolutePath('parser/classDiagram.jison'), 'utf8'); const grammarParser = new LALRGenerator(grammarSource, {}); expect(grammarParser.conflicts).toBe(0); }); From 2216bbad2506e1031312d151866991441543ad1f Mon Sep 17 00:00:00 2001 From: Justin Greywolf Date: Wed, 3 May 2023 17:02:44 -0700 Subject: [PATCH 075/255] remove spellcheck warnings --- cSpell.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cSpell.json b/cSpell.json index 82e300b8e..bd306f411 100644 --- a/cSpell.json +++ b/cSpell.json @@ -23,6 +23,7 @@ "classdef", "codedoc", "colour", + "commitlint", "cpettitt", "customizability", "cuzon", @@ -61,6 +62,7 @@ "lintstagedrc", "logmsg", "lucida", + "markdownish", "matthieu", "mdast", "mdbook", @@ -105,6 +107,7 @@ "textlength", "treemap", "ts-nocheck", + "tsdoc", "tuleap", "ugge", "unist", From 06fdb95389b7e767bda7918c77b6888050ba94cd Mon Sep 17 00:00:00 2001 From: Justin Greywolf Date: Wed, 3 May 2023 22:15:59 -0700 Subject: [PATCH 076/255] Allow overlapping notes --- cSpell.json | 1 + .../rendering/sequencediagram.spec.js | 23 +++ demos/sequence.html | 20 +++ .../mermaid/src/diagrams/common/common.ts | 28 ++++ .../sequence/parser/sequenceDiagram.jison | 9 ++ .../src/diagrams/sequence/sequenceDb.js | 1 + .../diagrams/sequence/sequenceDiagram.spec.js | 23 +++ .../src/diagrams/sequence/sequenceRenderer.ts | 131 +++++++++++------- 8 files changed, 187 insertions(+), 49 deletions(-) diff --git a/cSpell.json b/cSpell.json index bd306f411..24650024e 100644 --- a/cSpell.json +++ b/cSpell.json @@ -59,6 +59,7 @@ "knsv", "knut", "laganeckas", + "linetype", "lintstagedrc", "logmsg", "lucida", diff --git a/cypress/integration/rendering/sequencediagram.spec.js b/cypress/integration/rendering/sequencediagram.spec.js index 687fc245b..e5459637b 100644 --- a/cypress/integration/rendering/sequencediagram.spec.js +++ b/cypress/integration/rendering/sequencediagram.spec.js @@ -123,6 +123,29 @@ context('Sequence diagram', () => { } ); }); + it('should render a sequence diagram with par_over', () => { + imgSnapshotTest( + ` + sequenceDiagram + participant Alice + participant Bob + participant John + par_over Section title + Alice ->> Bob: Message 1
    Second line + Bob ->> John: Message 2 + end + par_over Two line
    section title + Note over Alice: Alice note + Note over Bob: Bob note
    Second line + Note over John: John note + end + par_over Mixed section + Alice ->> Bob: Message 1 + Note left of Bob: Alice/Bob Note + end + ` + ); + }); context('font settings', () => { it('should render different note fonts when configured', () => { imgSnapshotTest( diff --git a/demos/sequence.html b/demos/sequence.html index aa2332520..b2733a384 100644 --- a/demos/sequence.html +++ b/demos/sequence.html @@ -144,6 +144,26 @@ >
    +
    +      sequenceDiagram
    +      participant Alice
    +      participant Bob
    +      participant John
    +      par_over Section title
    +        Alice ->> Bob: Message 1
    Second line + Bob ->> John: Message 2 + end + par_over Two line
    section title + Note over Alice: Alice note + Note over Bob: Bob note
    Second line + Note over John: John note + end + par_over Mixed section + Alice ->> Bob: Message 1 + Note left of Bob: Alice/Bob Note + end +
    + + + diff --git a/packages/mermaid/src/config.type.ts b/packages/mermaid/src/config.type.ts index 545fdbbfb..647657c25 100644 --- a/packages/mermaid/src/config.type.ts +++ b/packages/mermaid/src/config.type.ts @@ -27,6 +27,7 @@ export interface MermaidConfig { state?: StateDiagramConfig; er?: ErDiagramConfig; pie?: PieDiagramConfig; + quadrantChart?: QuadrantChartConfig; requirement?: RequirementDiagramConfig; mindmap?: MindmapDiagramConfig; gitGraph?: GitGraphDiagramConfig; @@ -226,6 +227,21 @@ export interface PieDiagramConfig extends BaseDiagramConfig { textPosition?: number; } +export interface QuadrantChartConfig extends BaseDiagramConfig { + quadrantPadding?: number; + xAxisLabelPadding?: number; + yAxisLabelPadding?: number; + xAxisLabelFontSize?: number; + yAxisLabelFontSize?: number; + quadrantLabelFontSize: number; + quadrantTextTopPadding: number; + pointTextPadding: number; + pointLabelFontSize: number; + pointRadius: number; + xAxisPosition: 'top' | 'bottom'; + yAxisPosition: 'left' | 'right'; +} + export interface ErDiagramConfig extends BaseDiagramConfig { titleTopMargin?: number; diagramPadding?: number; diff --git a/packages/mermaid/src/defaultConfig.ts b/packages/mermaid/src/defaultConfig.ts index 9c6d6f46e..24b9b7e8f 100644 --- a/packages/mermaid/src/defaultConfig.ts +++ b/packages/mermaid/src/defaultConfig.ts @@ -1280,6 +1280,117 @@ const config: Partial = { textPosition: 0.75, }, + quadrantChart: { + /** + * | Parameter | Description | Type | Required | Values | + * | --------------- | ---------------------------------- | ------- | -------- | ------------------- | + * | quadrantPadding | Padding around the quadrant square | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 5 + */ + quadrantPadding: 5, + /** + * | Parameter | Description | Type | Required | Values | + * | --------------- | ---------------------------------- | ------- | -------- | ------------------- | + * | xAxisLabelPadding | Padding around x-axis labels | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 5 + */ + xAxisLabelPadding: 5, + /** + * | Parameter | Description | Type | Required | Values | + * | --------------- | ---------------------------------- | ------- | -------- | ------------------- | + * | yAxisLabelPadding | Padding around y-axis labels | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 5 + */ + yAxisLabelPadding: 5, + /** + * | Parameter | Description | Type | Required | Values | + * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- | + * | xAxisLabelFontSize | x-axis label font size | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 16 + */ + xAxisLabelFontSize: 16, + /** + * | Parameter | Description | Type | Required | Values | + * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- | + * | yAxisLabelFontSize | y-axis label font size | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 16 + */ + yAxisLabelFontSize: 16, + /** + * | Parameter | Description | Type | Required | Values | + * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- | + * | quadrantLabelFontSize | quadrant title font size | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 16 + */ + quadrantLabelFontSize: 16, + /** + * | Parameter | Description | Type | Required | Values | + * | ---------------------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------- | + * | quadrantTextTopPadding | quadrant title padding from top if the quadrant is rendered on top | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 5 + */ + quadrantTextTopPadding: 5, + /** + * | Parameter | Description | Type | Required | Values | + * | ---------------------- | -------------------------------------- | ------- | -------- | ------------------- | + * | pointTextPadding | padding between point and point label | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 5 + */ + pointTextPadding: 5, + /** + * | Parameter | Description | Type | Required | Values | + * | ---------------------- | ---------------------- | ------- | -------- | ------------------- | + * | pointTextPadding | point title font size | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 12 + */ + pointLabelFontSize: 12, + /** + * | Parameter | Description | Type | Required | Values | + * | ------------- | ------------------------------- | ------- | -------- | ------------------- | + * | pointRadius | radius of the point to be drawn | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 5 + */ + pointRadius: 5, + /** + * | Parameter | Description | Type | Required | Values | + * | ------------- | ------------------------------- | ------- | -------- | ------------------- | + * | xAxisPosition | position of x-axis labels | string | Optional | 'top' or 'bottom' | + * + * **Notes:** + * Default value: top + */ + xAxisPosition: 'top', + /** + * | Parameter | Description | Type | Required | Values | + * | ------------- | ------------------------------- | ------- | -------- | ------------------- | + * | yAxisPosition | position of y-axis labels | string | Optional | 'left' or 'right' | + * + * **Notes:** + * Default value: left + */ + yAxisPosition: 'left', + }, + /** The object containing configurations specific for req diagrams */ requirement: { useWidth: undefined, diff --git a/packages/mermaid/src/diagram-api/diagram-orchestration.ts b/packages/mermaid/src/diagram-api/diagram-orchestration.ts index 0d4e6159d..03c04ed09 100644 --- a/packages/mermaid/src/diagram-api/diagram-orchestration.ts +++ b/packages/mermaid/src/diagram-api/diagram-orchestration.ts @@ -6,6 +6,7 @@ import git from '../diagrams/git/gitGraphDetector.js'; import gantt from '../diagrams/gantt/ganttDetector.js'; import info from '../diagrams/info/infoDetector.js'; import pie from '../diagrams/pie/pieDetector.js'; +import quadrantChart from '../diagrams/quadrant-chart/quadrantDetector.js'; import requirement from '../diagrams/requirement/requirementDetector.js'; import sequence from '../diagrams/sequence/sequenceDetector.js'; import classDiagram from '../diagrams/class/classDetector.js'; @@ -77,6 +78,7 @@ export const addDiagrams = () => { git, stateV2, state, - journey + journey, + quadrantChart ); }; diff --git a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison new file mode 100644 index 000000000..87d313371 --- /dev/null +++ b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison @@ -0,0 +1,248 @@ +/** mermaid + * https://knsv.github.io/mermaid + * (c) 2015 Knut Sveidqvist + * MIT license. + */ +%lex +%options case-insensitive + +%x string +%x string +%x md_string +%x title +%x open_directive +%x type_directive +%x arg_directive +%x close_directive +%x acc_title +%x acc_descr +%x acc_descr_multiline +%x point_start +%x point_x +%x point_y +%% +\%\%\{ { this.begin('open_directive'); return 'open_directive'; } +((?:(?!\}\%\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; } +":" { this.popState(); this.begin('arg_directive'); return ':'; } +\}\%\% { this.popState(); this.popState(); return 'close_directive'; } +((?:(?!\}\%\%).|\n)*) return 'arg_directive'; +\%\%(?!\{)[^\n]* /* skip comments */ +[^\}]\%\%[^\n]* /* skip comments */ +[\n\r]+ return 'NEWLINE'; +\%\%[^\n]* /* do nothing */ + +title { this.begin("title");return 'title'; } +(?!\n|;|#)*[^\n]* { this.popState(); return "title_value"; } + +accTitle\s*":"\s* { this.begin("acc_title");return 'acc_title'; } +<acc_title>(?!\n|;|#)*[^\n]* { this.popState(); return "acc_title_value"; } +accDescr\s*":"\s* { this.begin("acc_descr");return 'acc_descr'; } +<acc_descr>(?!\n|;|#)*[^\n]* { this.popState(); return "acc_descr_value"; } +accDescr\s*"{"\s* { this.begin("acc_descr_multiline");} +<acc_descr_multiline>[\}] { this.popState(); } +<acc_descr_multiline>[^\}]* return "acc_descr_multiline_value"; + +\s*"x-axis"\s* return 'X-AXIS'; +\s*"y-axis"\s* return 'Y-AXIS'; +\s*\-\-\>\s* return 'AXIS-TEXT-DELIMITER' +\s*"quadrant-1"\s* return 'QUADRANT_1'; +\s*"quadrant-2"\s* return 'QUADRANT_2'; +\s*"quadrant-3"\s* return 'QUADRANT_3'; +\s*"quadrant-4"\s* return 'QUADRANT_4'; + +["][`] { this.begin("md_string");} +<md_string>[^`"]+ { return "MD_STR";} +<md_string>[`]["] { this.popState();} +["] this.begin("string"); +<string>["] this.popState(); +<string>[^"]* return "STR"; + +\s*\:\s*\[\s* {this.begin("point_start"); return 'point_start';} +<point_start>(1)|(0(.\d+)?) {this.begin('point_x'); return 'point_x';} +<point_start>\s*\] {this.popState();} +<point_x>\s*\,\s* {this.popState(); this.begin('point_y');} +<point_y>(1)|(0(.\d+)?) {this.popState(); return 'point_y';} + +"quadrantChart"\s* return 'QUADRANT'; + +\[[0-1].?[0-9]{5}\] return 'POINT_VALUE' +[A-Za-z]+ return 'ALPHA'; +":" return 'COLON'; +\+ return 'PLUS'; +"," return 'COMMA'; +"=" return 'EQUALS'; +\= return 'EQUALS'; +"*" return 'MULT'; +\# return 'BRKT'; +[\_] return 'UNDERSCORE'; +"." return 'DOT'; +"&" return 'AMP'; +\- return 'MINUS'; +[0-9]+ return 'NUM'; +\s return 'SPACE'; +";" return 'SEMI'; +[!"#$%&'*+,-.`?\\_/] return 'PUNCTUATION'; +[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]| +[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]| +[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]| +[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]| +[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]| +[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]| +[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]| +[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]| +[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]| +[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]| +[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]| +[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]| +[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]| +[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]| +[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]| +[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]| +[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]| +[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]| +[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]| +[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]| +[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]| +[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]| +[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]| +[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]| +[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]| +[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]| +[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]| +[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]| +[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]| +[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]| +[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]| +[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]| +[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]| +[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]| +[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]| +[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]| +[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]| +[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]| +[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]| +[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]| +[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]| +[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]| +[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]| +[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]| +[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]| +[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]| +[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]| +[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]| +[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]| +[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]| +[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]| +[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]| +[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]| +[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]| +[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]| +[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]| +[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]| +[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]| +[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]| +[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]| +[\uFFD2-\uFFD7\uFFDA-\uFFDC] + return 'UNICODE_TEXT'; +<<EOF>> return 'EOF'; + +/lex + +%start start + +%% /* language grammar */ + +start + : eol start + | directive start + | QUADRANT document + ; + +document + : /* empty */ + | document line + ; + +line + : statement eol { $$ = $1 } + ; + +statement + : + | axisDetails + | quadrantDetails + | points + | title title_value { $$=$2.trim();yy.setDiagramTitle($$); } + | acc_title acc_title_value { $$=$2.trim();yy.setAccTitle($$); } + | acc_descr acc_descr_value { $$=$2.trim();yy.setAccDescription($$); } + | acc_descr_multiline_value { $$=$1.trim();yy.setAccDescription($$); } | section {yy.addSection($1.substr(8));$$=$1.substr(8);} + | directive + ; + +points + : text point_start point_x point_y {yy.addPoints($1, $3, $4);}; + +axisDetails + : X-AXIS text AXIS-TEXT-DELIMITER text {yy.setXAxisLeftText($2); yy.setXAxisRightText($4);} + | X-AXIS text {yy.setXAxisLeftText($2);} + | Y-AXIS text AXIS-TEXT-DELIMITER text {yy.setYAxisBottomText($2); yy.setYAxisTopText($4);} + | Y-AXIS text {yy.setYAxisBottomText($2);} + ; + +quadrantDetails + : QUADRANT_1 text {yy.setQuadrant1Text($2)} + | QUADRANT_2 text {yy.setQuadrant2Text($2)} + | QUADRANT_3 text {yy.setQuadrant3Text($2)} + | QUADRANT_4 text {yy.setQuadrant4Text($2)} + ; + +directive + : openDirective typeDirective closeDirective + | openDirective typeDirective ':' argDirective closeDirective + ; + +eol + : NEWLINE + | SEMI + | EOF + ; + +openDirective + : open_directive { yy.parseDirective('%%{', 'open_directive'); } + ; + +typeDirective + : type_directive { yy.parseDirective($1, 'type_directive'); } + ; + +argDirective + : arg_directive { $1 = $1.trim().replace(/'/g, '"'); yy.parseDirective($1, 'arg_directive'); } + ; + +closeDirective + : close_directive { yy.parseDirective('}%%', 'close_directive', 'pie'); } + ; + +text: textNoTagsToken + { $$={text:$1, type: 'text'};} + | text textNoTagsToken + { $$={text:$1.text+''+$2, type: $1.type};} + | STR + { $$={text: $1, type: 'text'};} + | MD_STR + { $$={text: $1, type: 'markdown'};} + ; + +alphaNum + : alphaNumToken + {$$=$1;} + | alphaNum alphaNumToken + {$$=$1+''+$2;} + ; + + +alphaNumToken : PUNCTUATION | AMP | UNICODE_TEXT | NUM| ALPHA | COMMA | PLUS | EQUALS | MULT | DOT | BRKT| UNDERSCORE ; + +textNoTagsToken: alphaNumToken | SPACE | MINUS; + +%% diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.js b/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.js new file mode 100644 index 000000000..c4888cdce --- /dev/null +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.js @@ -0,0 +1,284 @@ +import { scaleLinear } from 'd3'; + +export class QuadrantBuilder { + totalWidth = 500; + totalHeight = 500; + quadrantPadding = 5; + xAxisLabelPadding = 5; + yAxisLabelPadding = 5; + xAxisLabelFontSize = 16; + yAxisLabelFontSize = 16; + quadrantLabelFontSize = 16; + quadrantTextTopPadding = 5; + pointTextPadding = 5; + pointLabelFontSize = 12; + pointRadius = 5; + points = []; + quadrant1Text = ''; + quadrant2Text = ''; + quadrant3Text = ''; + quadrant4Text = ''; + xAxisLeftText = ''; + xAxisRightText = ''; + yAxisBottomText = ''; + yAxisTopText = ''; + xAxisPosition = 'top'; + yAxisPosition = 'left'; + quadrant1Fill = '#8bc2f3'; + quadrant2Fill = '#faebd7'; + quadrant3Fill = '#00ffff'; + quadrant4Fill = '#f0ffff'; + quadrant1TextFill = '#93690e'; + quadrant2TextFill = '#8644ff'; + quadrant3TextFill = '#e3004d'; + quadrant4TextFill = '#000000'; + pointFill = '#60B19C'; + pointTextFill = '#0000ff'; + xAxisTextFill = '#000000'; + yAxisTextFill = '#000000'; + showXAxis = true; + showYAxis = true; + + constructor() {} + + clear() { + this.points = []; + this.quadrant1Text = ''; + this.quadrant2Text = ''; + this.quadrant3Text = ''; + this.quadrant4Text = ''; + this.xAxisLeftText = ''; + this.xAxisRightText = ''; + this.yAxisBottomText = ''; + this.yAxisTopText = ''; + } + + addPoints(points) { + this.points = this.points.concat([...points]); + } + + set quadrant1Text(text) { + this.quadrant1Text = text; + } + + set quadrant2Text(text) { + this.quadrant2Text = text; + } + + set quadrant3Text(text) { + this.quadrant3Text = text; + } + + set quadrant4Text(text) { + this.quadrant4Text = text; + } + + set xAxisLeftText(text) { + this.xAxisLeftText = text; + } + + set xAxisRightText(text) { + this.xAxisRightText = text; + } + + set yAxisTopText(text) { + this.yAxisTopText = text; + } + + set yAxisBottomText(text) { + this.yAxisBottomText = text; + } + + set totalWidth(width) { + this.totalWidth = width; + } + + set totalHeight(height) { + this.totalHeight = height; + } + + build() { + const showXAxis = (!this.xAxisLeftText && !this.xAxisRightText) ? false: this.showXAxis; + const showYAxis = (!this.yAxisTopText && !this.yAxisBottomText) ? false: this.showYAxis; + const quadrantLeft = + this.quadrantPadding + + ((this.yAxisPosition === 'left' && showYAxis) ? this.yAxisLabelPadding * 2 + this.yAxisLabelFontSize : 0); + const quadrantTop = + this.quadrantPadding + + ((this.xAxisPosition === 'top' && showXAxis) ? this.xAxisLabelPadding * 2 + this.xAxisLabelFontSize : 0); + const quadrantWidth = + this.totalWidth - + (this.quadrantPadding * 2 + (showYAxis ? this.yAxisLabelPadding * 2 + this.yAxisLabelFontSize: 0)); + const quadrantHeight = + this.totalHeight - + (this.quadrantPadding * 2 + (showXAxis ? this.xAxisLabelPadding * 2 + this.xAxisLabelFontSize: 0)); + + const quadrantHalfWidth = quadrantWidth / 2; + const quadrantHalfHeight = quadrantHeight / 2; + + const axisLabels = []; + + if (this.xAxisLeftText && showXAxis) { + axisLabels.push({ + text: this.xAxisLeftText, + fill: this.xAxisTextFill, + x: quadrantLeft, + y: + this.xAxisPosition === 'top' + ? this.xAxisLabelPadding + : this.xAxisLabelPadding + quadrantTop + quadrantHeight, + fontSize: this.xAxisLabelFontSize, + verticalPos: 'left', + horizontalPos: 'top', + rotation: 0, + }); + } + if (this.xAxisRightText && showXAxis) { + axisLabels.push({ + text: this.xAxisRightText, + fill: this.xAxisTextFill, + x: quadrantLeft + quadrantHalfWidth, + y: + this.xAxisPosition === 'top' + ? this.xAxisLabelPadding + : this.xAxisLabelPadding + quadrantTop + quadrantHeight, + fontSize: this.xAxisLabelFontSize, + verticalPos: 'left', + horizontalPos: 'top', + rotation: 0, + }); + } + + if (this.yAxisBottomText && showYAxis) { + axisLabels.push({ + text: this.yAxisBottomText, + fill: this.yAxisTextFill, + x: + this.yAxisPosition === 'left' + ? this.yAxisLabelPadding + : this.yAxisLabelPadding + quadrantLeft + quadrantWidth, + y: quadrantTop + quadrantHeight, + fontSize: this.yAxisLabelFontSize, + verticalPos: 'left', + horizontalPos: 'top', + rotation: -90, + }); + } + if (this.yAxisTopText && showYAxis) { + axisLabels.push({ + text: this.yAxisTopText, + fill: this.yAxisTextFill, + x: + this.yAxisPosition === 'left' + ? this.yAxisLabelPadding + : this.yAxisLabelPadding + quadrantLeft + quadrantWidth, + y: quadrantTop + quadrantHalfHeight, + fontSize: this.yAxisLabelFontSize, + verticalPos: 'left', + horizontalPos: 'top', + rotation: -90, + }); + } + + const quadrants = [ + { + text: this.quadrant1Text, + textFill: this.quadrant1TextFill, + x: quadrantLeft + quadrantHalfWidth, + y: quadrantTop, + width: quadrantHalfWidth, + height: quadrantHalfHeight, + fill: this.quadrant1Fill, + }, + { + text: this.quadrant2Text, + textFill: this.quadrant2TextFill, + x: quadrantLeft, + y: quadrantTop, + width: quadrantHalfWidth, + height: quadrantHalfHeight, + fill: this.quadrant2Fill, + }, + { + text: this.quadrant3Text, + textFill: this.quadrant3TextFill, + x: quadrantLeft, + y: quadrantTop + quadrantHalfHeight, + width: quadrantHalfWidth, + height: quadrantHalfHeight, + fill: this.quadrant3Fill, + }, + { + text: this.quadrant4Text, + textFill: this.quadrant4TextFill, + x: quadrantLeft + quadrantHalfWidth, + y: quadrantTop + quadrantHalfHeight, + width: quadrantHalfWidth, + height: quadrantHalfHeight, + fill: this.quadrant4Fill, + }, + ]; + quadrants.forEach((quadrant, i) => { + // place the text in the center of the box + if (this.points.length === 0) { + quadrant.text = { + text: quadrant.text, + fill: quadrant.textFill, + x: quadrant.x + quadrant.width / 2, + y: quadrant.y + quadrant.height / 2, + fontSize: this.quadrantLabelFontSize, + verticalPos: 'center', + horizontalPos: 'center', + rotation: 0, + }; + // place the text top of the quadrant square + } else { + quadrant.text = { + text: quadrant.text, + fill: quadrant.textFill, + x: quadrant.x + quadrant.width / 2, + y: quadrant.y + this.quadrantTextTopPadding, + fontSize: this.quadrantLabelFontSize, + verticalPos: 'center', + horizontalPos: 'top', + rotation: 0, + }; + } + delete quadrant.textFill; + }); + + const xAxis = scaleLinear() + .domain([0, 1]) + .range([quadrantLeft, quadrantWidth + quadrantLeft]); + + const yAxis = scaleLinear() + .domain([0, 1]) + .range([quadrantHeight + quadrantTop, quadrantTop]); + + const points = this.points.map((point) => { + const props = { + x: xAxis(point.x), + y: yAxis(point.y), + fill: this.pointFill, + radius: this.pointRadius, + }; + props.text = { + text: point.text, + fill: this.pointTextFill, + x: props.x, + y: props.y + this.pointTextPadding, + verticalPos: 'center', + horizontalPos: 'top', + fontSize: this.pointLabelFontSize, + rotation: 0, + }; + return props; + }); + + return { + points, + quadrants, + axisLabels, + }; + } +} diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.js b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.js new file mode 100644 index 000000000..a8d33a42d --- /dev/null +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.js @@ -0,0 +1,129 @@ +import { log } from '../../logger.js'; +import mermaidAPI from '../../mermaidAPI.js'; +import * as configApi from '../../config.js'; +import { sanitizeText } from '../common/common.js'; +import { + setAccTitle, + getAccTitle, + setDiagramTitle, + getDiagramTitle, + getAccDescription, + setAccDescription, + clear as commonClear, +} from '../../commonDb.js'; +import { QuadrantBuilder } from './quadrantBuilder.js'; + +const config = configApi.getConfig(); + +function textSanitizer(text) { + return sanitizeText(text.trim(), config); +} + +const quadrantBuilder = new QuadrantBuilder(); + +function setQuadrant1Text(textObj) { + quadrantBuilder.quadrant1Text = textSanitizer(textObj.text); +} + +function setQuadrant2Text(textObj) { + quadrantBuilder.quadrant2Text = textSanitizer(textObj.text); +} + +function setQuadrant3Text(textObj) { + quadrantBuilder.quadrant3Text = textSanitizer(textObj.text); +} + +function setQuadrant4Text(textObj) { + quadrantBuilder.quadrant4Text = textSanitizer(textObj.text); +} + +function setXAxisLeftText(textObj) { + quadrantBuilder.xAxisLeftText = textSanitizer(textObj.text); +} + +function setXAxisRightText(textObj) { + quadrantBuilder.xAxisRightText = textSanitizer(textObj.text); +} + +function setYAxisTopText(textObj) { + quadrantBuilder.yAxisTopText = textSanitizer(textObj.text); +} + +function setYAxisBottomText(textObj) { + quadrantBuilder.yAxisBottomText = textSanitizer(textObj.text); +} + +function addPoints(textObj, x, y) { + console.log(textObj, x, y); + quadrantBuilder.addPoints([{ x, y, text: textSanitizer(textObj.text) }]); +} + +function setWidth(width) { + quadrantBuilder.totalWidth = width; +} + +function setHeight(height) { + quadrantBuilder.totalHeight = height; +} + +function getQuadrantData() { + const config = configApi.getConfig(); + const { themeVariables, quadrantChart: quadrantChartConfig } = config; + quadrantBuilder.quadrant1Fill = themeVariables.quadrant1Fill; + quadrantBuilder.quadrant2Fill = themeVariables.quadrant2Fill; + quadrantBuilder.quadrant3Fill = themeVariables.quadrant3Fill; + quadrantBuilder.quadrant4Fill = themeVariables.quadrant4Fill; + quadrantBuilder.quadrant1TextFill = themeVariables.quadrant1TextFill; + quadrantBuilder.quadrant2TextFill = themeVariables.quadrant2TextFill; + quadrantBuilder.quadrant3TextFill = themeVariables.quadrant3TextFill; + quadrantBuilder.quadrant4TextFill = themeVariables.quadrant4TextFill; + quadrantBuilder.pointFill = themeVariables.quadrantPointFill; + quadrantBuilder.pointTextFill = themeVariables.quadrantPointTextFill; + quadrantBuilder.xAxisTextFill = themeVariables.quadrantXAxisTextFill; + quadrantBuilder.yAxisTextFill = themeVariables.quadrantYAxisTextFill; + quadrantBuilder.quadrantPadding = quadrantChartConfig.quadrantPadding; + quadrantBuilder.xAxisLabelPadding = quadrantChartConfig.xAxisLabelPadding; + quadrantBuilder.yAxisLabelPadding = quadrantChartConfig.yAxisLabelPadding; + quadrantBuilder.xAxisLabelFontSize = quadrantChartConfig.xAxisLabelFontSize; + quadrantBuilder.yAxisLabelFontSize = quadrantChartConfig.yAxisLabelFontSize; + quadrantBuilder.quadrantLabelFontSize = quadrantChartConfig.quadrantLabelFontSize; + quadrantBuilder.quadrantTextTopPadding = quadrantChartConfig.quadrantTextTopPadding; + quadrantBuilder.pointTextPadding = quadrantChartConfig.pointTextPadding; + quadrantBuilder.pointLabelFontSize = quadrantChartConfig.pointLabelFontSize; + quadrantBuilder.pointRadius = quadrantChartConfig.pointRadius; + quadrantBuilder.xAxisPosition = quadrantChartConfig.xAxisPosition; + quadrantBuilder.yAxisPosition = quadrantChartConfig.yAxisPosition; + return quadrantBuilder.build(); +} + +export const parseDirective = function (statement, context, type) { + mermaidAPI.parseDirective(this, statement, context, type); +}; + +const clear = function () { + quadrantBuilder.clear(); + commonClear(); +}; + +export default { + setWidth, + setHeight, + setQuadrant1Text, + setQuadrant2Text, + setQuadrant3Text, + setQuadrant4Text, + setXAxisLeftText, + setXAxisRightText, + setYAxisTopText, + setYAxisBottomText, + addPoints, + getQuadrantData, + parseDirective, + clear, + setAccTitle, + getAccTitle, + setDiagramTitle, + getDiagramTitle, + getAccDescription, + setAccDescription, +}; diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDetector.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDetector.ts new file mode 100644 index 000000000..06d02356b --- /dev/null +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDetector.ts @@ -0,0 +1,20 @@ +import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; + +const id = 'quadrantChart'; + +const detector: DiagramDetector = (txt) => { + return txt.match(/^\s*quadrantChart/) !== null; +}; + +const loader = async () => { + const { diagram } = await import('./quadrantDiagram.js'); + return { id, diagram }; +}; + +const plugin: ExternalDiagramDefinition = { + id, + detector, + loader, +}; + +export default plugin; diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDiagram.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDiagram.ts new file mode 100644 index 000000000..ec3d6ed20 --- /dev/null +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDiagram.ts @@ -0,0 +1,13 @@ +import { DiagramDefinition } from '../../diagram-api/types.js'; +// @ts-ignore: TODO Fix ts errors +import parser from './parser/quadrant.jison'; +import db from './quadrantDb.js'; +import styles from './styles.js'; +import renderer from './quadrantRenderer.js'; + +export const diagram: DiagramDefinition = { + parser, + db, + renderer, + styles, +}; diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.js b/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.js new file mode 100644 index 000000000..91936fb82 --- /dev/null +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.js @@ -0,0 +1,131 @@ +import { select, scaleLinear } from 'd3'; +import * as configApi from '../../config.js'; +import { log } from '../../logger.js'; + +import { configureSvgSize } from '../../setupGraphViewbox.js'; + +export const draw = (txt, id, _version, diagObj) => { + + + function getDominantBaseLine(horizintalPos) { + return horizintalPos === 'top' ? 'text-before-edge' : 'middle'; + } + + function getTextAnchor(verticalPos) { + return verticalPos === 'left' ? 'start' : 'middle'; + } + + function getTransformation(data) { + return `translate(${data.x}, ${data.y}) rotate(${data.rotation || 0})`; + } + + const conf = configApi.getConfig(); + log.debug('Rendering info diagram\n' + txt); + + const securityLevel = conf.securityLevel; + // Handle root and Document for when rendering in sandbox mode + let sandboxElement; + if (securityLevel === 'sandbox') { + sandboxElement = select('#i' + id); + } + const root = + securityLevel === 'sandbox' + ? select(sandboxElement.nodes()[0].contentDocument.body) + : select('body'); + + const svg = root.select(`[id="${id}"]`); + + const group = svg.append('g').attr('class', 'main'); + + + // const bounds = svg.node().getBox(); + // const width = bounds.width + padding * 2; + // const height = bounds.height + padding * 2; + const width = 500; + const height = 500; + + diagObj.db.setHeight(height); + diagObj.db.setWidth(width); + + svg.attr('width', width); + svg.attr('height', height); + + const quadrantData = diagObj.db.getQuadrantData(); + + const quadrantsGroup = group.append('g').attr('class', 'quadrants'); + const dataPointGroup = group.append('g').attr('class', 'data-points'); + const labelGroup = group.append('g').attr('class', 'labels'); + + const quadrants = quadrantsGroup + .selectAll('g.quadrant') + .data(quadrantData.quadrants) + .enter() + .append('g') + .attr('class', 'quadrant'); + + quadrants + .append('rect') + .attr('x', data => data.x) + .attr('y', data => data.y) + .attr('width', data => data.width) + .attr('height', data => data.height) + .attr('fill', data => data.fill); + + quadrants + .append('text') + .attr('x', 0) + .attr('y', 0) + .attr('fill', data => data.text.fill) + .attr('font-size', data => data.text.fontSize) + .attr('dominant-baseline', data => getDominantBaseLine(data.text.horizontalPos)) + .attr('text-anchor', data => getTextAnchor(data.text.verticalPos)) + .attr('transform', data => getTransformation(data.text)) + .text(data => data.text.text); + + const labels = labelGroup + .selectAll('g.label') + .data(quadrantData.axisLabels) + .enter() + .append('g') + .attr('class', 'label') + + labels + .append('text') + .attr('x', 0) + .attr('y', 0) + .text(data => data.text) + .attr('fill', data => data.fill) + .attr('font-size', data => data.fontSize) + .attr('dominant-baseline', data => getDominantBaseLine(data.horizontalPos)) + .attr('text-anchor', data => getTextAnchor(data.verticalPos)) + .attr('transform', data => getTransformation(data)) + + const dataPoints = dataPointGroup + .selectAll('g.data-point') + .data(quadrantData.points) + .enter() + .append('g') + .attr('class', 'data-point') + + dataPoints + .append('circle') + .attr('cx', data => data.x) + .attr('cy', data => data.y) + .attr('r', data => data.radius) + .attr('fill', data => data.fill); + + dataPoints + .append('text') + .attr('x', 0) + .attr('y', 0) + .text(data => data.text.text) + .attr('fill', data => data.text.fill) + .attr('font-size', data => data.text.fontSize) + .attr('dominant-baseline', data => getDominantBaseLine(data.text.horizontalPos)) + .attr('text-anchor', data => getTextAnchor(data.text.verticalPos)) + .attr('transform', data => getTransformation(data.text)) +}; + +export default { + draw, +}; diff --git a/packages/mermaid/src/diagrams/quadrant-chart/styles.js b/packages/mermaid/src/diagrams/quadrant-chart/styles.js new file mode 100644 index 000000000..fc7ab4bfd --- /dev/null +++ b/packages/mermaid/src/diagrams/quadrant-chart/styles.js @@ -0,0 +1,5 @@ +const getStyles = (options) => +` +`; + +export default getStyles; diff --git a/packages/mermaid/src/themes/theme-base.js b/packages/mermaid/src/themes/theme-base.js index 6e26e12a2..30bbfd5b6 100644 --- a/packages/mermaid/src/themes/theme-base.js +++ b/packages/mermaid/src/themes/theme-base.js @@ -220,6 +220,20 @@ class Theme { this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black'; this.pieOpacity = this.pieOpacity || '0.7'; + /* quadrant-graph */ + this.quadrant1Fill = this.quadrant1Fill || this.primaryColor; + this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, {r: 5, g: 5, b: 5}); + this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, {r: 10, g: 10, b: 10}); + this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, {r: 15, g: 15, b: 15}); + this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor; + this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.quadrant1TextFill, {r: -5, g: -5, b: -5}); + this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.quadrant1TextFill, {r: -10, g: -10, b: -10}); + this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.quadrant1TextFill, {r: -15, g: -15, b: -15}); + this.quadrantPointFill = this.quadrantPointFill || this.secondaryColor; + this.quadrantPointTextFill = this.quadrantPointTextFill || this.secondaryTextColor; + this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor; + this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor; + /* requirement-diagram */ this.requirementBackground = this.requirementBackground || this.primaryColor; this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor; diff --git a/packages/mermaid/src/themes/theme-dark.js b/packages/mermaid/src/themes/theme-dark.js index 7298f3a0c..41c624588 100644 --- a/packages/mermaid/src/themes/theme-dark.js +++ b/packages/mermaid/src/themes/theme-dark.js @@ -226,6 +226,20 @@ class Theme { this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black'; this.pieOpacity = this.pieOpacity || '0.7'; + /* quadrant-graph */ + this.quadrant1Fill = this.quadrant1Fill || this.primaryColor; + this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, {r: 5, g: 5, b: 5}); + this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, {r: 10, g: 10, b: 10}); + this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, {r: 15, g: 15, b: 15}); + this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor; + this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.quadrant1TextFill, {r: -5, g: -5, b: -5}); + this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.quadrant1TextFill, {r: -10, g: -10, b: -10}); + this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.quadrant1TextFill, {r: -15, g: -15, b: -15}); + this.quadrantPointFill = this.quadrantPointFill || this.secondaryColor; + this.quadrantPointTextFill = this.quadrantPointTextFill || this.secondaryTextColor; + this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor; + this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor; + /* class */ this.classText = this.primaryTextColor; diff --git a/packages/mermaid/src/themes/theme-default.js b/packages/mermaid/src/themes/theme-default.js index b29e93862..091240af0 100644 --- a/packages/mermaid/src/themes/theme-default.js +++ b/packages/mermaid/src/themes/theme-default.js @@ -247,6 +247,20 @@ class Theme { this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black'; this.pieOpacity = this.pieOpacity || '0.7'; + /* quadrant-graph */ + this.quadrant1Fill = this.quadrant1Fill || this.primaryColor; + this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, {r: 5, g: 5, b: 5}); + this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, {r: 10, g: 10, b: 10}); + this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, {r: 15, g: 15, b: 15}); + this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor; + this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.quadrant1TextFill, {r: -5, g: -5, b: -5}); + this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.quadrant1TextFill, {r: -10, g: -10, b: -10}); + this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.quadrant1TextFill, {r: -15, g: -15, b: -15}); + this.quadrantPointFill = this.quadrantPointFill || this.secondaryColor; + this.quadrantPointTextFill = this.quadrantPointTextFill || this.secondaryTextColor; + this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor; + this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor; + /* requirement-diagram */ this.requirementBackground = this.requirementBackground || this.primaryColor; this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor; diff --git a/packages/mermaid/src/themes/theme-forest.js b/packages/mermaid/src/themes/theme-forest.js index dbff069b7..0c4af6ec3 100644 --- a/packages/mermaid/src/themes/theme-forest.js +++ b/packages/mermaid/src/themes/theme-forest.js @@ -215,6 +215,20 @@ class Theme { this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black'; this.pieOpacity = this.pieOpacity || '0.7'; + /* quadrant-graph */ + this.quadrant1Fill = this.quadrant1Fill || this.primaryColor; + this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, {r: 5, g: 5, b: 5}); + this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, {r: 10, g: 10, b: 10}); + this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, {r: 15, g: 15, b: 15}); + this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor; + this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.quadrant1TextFill, {r: -5, g: -5, b: -5}); + this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.quadrant1TextFill, {r: -10, g: -10, b: -10}); + this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.quadrant1TextFill, {r: -15, g: -15, b: -15}); + this.quadrantPointFill = this.quadrantPointFill || this.secondaryColor; + this.quadrantPointTextFill = this.quadrantPointTextFill || this.secondaryTextColor; + this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor; + this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor; + /* requirement-diagram */ this.requirementBackground = this.requirementBackground || this.primaryColor; this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor; diff --git a/packages/mermaid/src/themes/theme-neutral.js b/packages/mermaid/src/themes/theme-neutral.js index bc0725276..1f069c4fd 100644 --- a/packages/mermaid/src/themes/theme-neutral.js +++ b/packages/mermaid/src/themes/theme-neutral.js @@ -246,6 +246,20 @@ class Theme { this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black'; this.pieOpacity = this.pieOpacity || '0.7'; + /* quadrant-graph */ + this.quadrant1Fill = this.quadrant1Fill || this.primaryColor; + this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, {r: 5, g: 5, b: 5}); + this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, {r: 10, g: 10, b: 10}); + this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, {r: 15, g: 15, b: 15}); + this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor; + this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.quadrant1TextFill, {r: -5, g: -5, b: -5}); + this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.quadrant1TextFill, {r: -10, g: -10, b: -10}); + this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.quadrant1TextFill, {r: -15, g: -15, b: -15}); + this.quadrantPointFill = this.quadrantPointFill || this.secondaryColor; + this.quadrantPointTextFill = this.quadrantPointTextFill || this.secondaryTextColor; + this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor; + this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor; + /* requirement-diagram */ this.requirementBackground = this.requirementBackground || this.primaryColor; this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor; From 3677d44a58251b0cba76f584e7985b5eeead317d Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Mon, 8 May 2023 22:08:11 +0530 Subject: [PATCH 092/255] Revert "Replace esno & ts-node with tsx" This reverts commit 75337287ea000d76cd835181cb7395d467271ea3. --- .lintstagedrc.mjs | 2 +- package.json | 11 ++++++----- packages/mermaid/package.json | 8 ++++---- packages/mermaid/src/docs/package.json | 4 ++-- pnpm-lock.yaml | 20 +++++++++++++++----- 5 files changed, 28 insertions(+), 17 deletions(-) diff --git a/.lintstagedrc.mjs b/.lintstagedrc.mjs index 231c91f8f..3ae66bba2 100644 --- a/.lintstagedrc.mjs +++ b/.lintstagedrc.mjs @@ -6,6 +6,6 @@ export default { // https://prettier.io/docs/en/cli.html#--cache 'prettier --write', ], - 'cSpell.json': ['tsx scripts/fixCSpell.ts'], + 'cSpell.json': ['ts-node-esm scripts/fixCSpell.ts'], '**/*.jison': ['pnpm -w run lint:jison'], }; diff --git a/package.json b/package.json index d1cbfd76c..fe7a3ba00 100644 --- a/package.json +++ b/package.json @@ -15,17 +15,18 @@ "git graph" ], "scripts": { - "build:vite": "tsx .vite/build.ts", + "build:vite": "ts-node-esm --transpileOnly .vite/build.ts", "build:mermaid": "pnpm build:vite --mermaid", "build:viz": "pnpm build:mermaid --visualize", "build:types": "tsc -p ./packages/mermaid/tsconfig.json --emitDeclarationOnly && tsc -p ./packages/mermaid-example-diagram/tsconfig.json --emitDeclarationOnly", "build:watch": "pnpm build:vite --watch", "build": "pnpm run -r clean && pnpm build:types && pnpm build:vite", - "dev": "concurrently \"pnpm build:vite --watch\" \"tsx .vite/server.ts\"", + "dev": "concurrently \"pnpm build:vite --watch\" \"ts-node-esm .vite/server.ts\"", "release": "pnpm build", "lint": "eslint --cache --cache-strategy content --ignore-path .gitignore . && pnpm lint:jison && prettier --cache --check .", - "lint:fix": "eslint --cache --cache-strategy content --fix --ignore-path .gitignore . && prettier --write . && tsx scripts/fixCSpell.ts", - "lint:jison": "tsx ./scripts/jison/lint.mts", + "lint:fix": "eslint --cache --cache-strategy content --fix --ignore-path .gitignore . && prettier --write . && ts-node-esm scripts/fixCSpell.ts", + "lint:jison": "ts-node-esm ./scripts/jison/lint.mts", + "contributors": "ts-node-esm scripts/updateContributors.ts", "cypress": "cypress run", "cypress:open": "cypress open", "e2e": "start-server-and-test dev http://localhost:9000/ cypress", @@ -107,7 +108,7 @@ "rimraf": "^5.0.0", "rollup-plugin-visualizer": "^5.9.0", "start-server-and-test": "^2.0.0", - "tsx": "^3.12.7", + "ts-node": "^10.9.1", "typescript": "^5.0.4", "vite": "^4.3.1", "vitest": "^0.31.0" diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index c6edd1038..dd4f5344b 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -25,11 +25,11 @@ "scripts": { "clean": "rimraf dist", "docs:code": "typedoc src/defaultConfig.ts src/config.ts src/mermaidAPI.ts && prettier --write ./src/docs/config/setup", - "docs:build": "rimraf ../../docs && pnpm docs:spellcheck && pnpm docs:code && tsx src/docs.mts", - "docs:verify": "pnpm docs:spellcheck && pnpm docs:code && tsx src/docs.mts --verify", - "docs:pre:vitepress": "rimraf src/vitepress && pnpm docs:code && tsx src/docs.mts --vitepress", + "docs:build": "rimraf ../../docs && pnpm docs:spellcheck && pnpm docs:code && ts-node-esm src/docs.mts", + "docs:verify": "pnpm docs:spellcheck && pnpm docs:code && ts-node-esm src/docs.mts --verify", + "docs:pre:vitepress": "rimraf src/vitepress && pnpm docs:code && ts-node-esm src/docs.mts --vitepress", "docs:build:vitepress": "pnpm docs:pre:vitepress && (cd src/vitepress && pnpm --filter ./ install && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing", - "docs:dev": "pnpm docs:pre:vitepress && concurrently \"pnpm --filter ./ src/vitepress dev\" \"tsx src/docs.mts --watch --vitepress\"", + "docs:dev": "pnpm docs:pre:vitepress && concurrently \"pnpm --filter ./ src/vitepress dev\" \"ts-node-esm src/docs.mts --watch --vitepress\"", "docs:serve": "pnpm docs:build:vitepress && vitepress serve src/vitepress", "docs:spellcheck": "cspell --config ../../cSpell.json \"src/docs/**/*.md\"", "release": "pnpm build", diff --git a/packages/mermaid/src/docs/package.json b/packages/mermaid/src/docs/package.json index b9e245029..6135fa15b 100644 --- a/packages/mermaid/src/docs/package.json +++ b/packages/mermaid/src/docs/package.json @@ -10,8 +10,8 @@ "preview-https": "pnpm build && serve .vitepress/dist", "preview-https-no-prefetch": "pnpm build-no-prefetch && serve .vitepress/dist", "prefetch": "pnpm fetch-contributors && pnpm fetch-avatars", - "fetch-avatars": "tsx .vitepress/scripts/fetch-avatars.ts", - "fetch-contributors": "tsx .vitepress/scripts/fetch-contributors.ts" + "fetch-avatars": "ts-node-esm .vitepress/scripts/fetch-avatars.ts", + "fetch-contributors": "ts-node-esm .vitepress/scripts/fetch-contributors.ts" }, "dependencies": { "@vueuse/core": "^10.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ea5ab4518..346e4999e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -163,9 +163,9 @@ importers: start-server-and-test: specifier: ^2.0.0 version: 2.0.0 - tsx: - specifier: ^3.12.7 - version: 3.12.7 + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) typescript: specifier: ^5.0.4 version: 5.0.4 @@ -397,6 +397,9 @@ importers: '@vitejs/plugin-vue': specifier: ^4.2.1 version: 4.2.1(vite@4.3.3)(vue@3.2.47) + esno: + specifier: ^0.16.3 + version: 0.16.3 fast-glob: specifier: ^3.2.12 version: 3.2.12 @@ -7845,6 +7848,13 @@ packages: - supports-color dev: true + /esno@0.16.3: + resolution: {integrity: sha512-6slSBEV1lMKcX13DBifvnDFpNno5WXhw4j/ff7RI0y51BZiDqEe5dNhhjhIQ3iCOQuzsm2MbVzmwqbN78BBhPg==} + hasBin: true + dependencies: + tsx: 3.12.3 + dev: true + /espree@9.5.1: resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -13664,8 +13674,8 @@ packages: typescript: 5.0.4 dev: true - /tsx@3.12.7: - resolution: {integrity: sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==} + /tsx@3.12.3: + resolution: {integrity: sha512-Wc5BFH1xccYTXaQob+lEcimkcb/Pq+0en2s+ruiX0VEIC80nV7/0s7XRahx8NnsoCnpCVUPz8wrqVSPi760LkA==} hasBin: true dependencies: '@esbuild-kit/cjs-loader': 2.4.2 From 45139470a38ee9fc70192a7e59236abbe883a419 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Mon, 8 May 2023 22:08:47 +0530 Subject: [PATCH 093/255] Fix lockfile --- pnpm-lock.yaml | 46 ---------------------------------------------- 1 file changed, 46 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 346e4999e..d69718ef8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -397,9 +397,6 @@ importers: '@vitejs/plugin-vue': specifier: ^4.2.1 version: 4.2.1(vite@4.3.3)(vue@3.2.47) - esno: - specifier: ^0.16.3 - version: 0.16.3 fast-glob: specifier: ^3.2.12 version: 3.2.12 @@ -2956,27 +2953,6 @@ packages: jsdoc-type-pratt-parser: 4.0.0 dev: true - /@esbuild-kit/cjs-loader@2.4.2: - resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} - dependencies: - '@esbuild-kit/core-utils': 3.1.0 - get-tsconfig: 4.4.0 - dev: true - - /@esbuild-kit/core-utils@3.1.0: - resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} - dependencies: - esbuild: 0.17.18 - source-map-support: 0.5.21 - dev: true - - /@esbuild-kit/esm-loader@2.5.5: - resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} - dependencies: - '@esbuild-kit/core-utils': 3.1.0 - get-tsconfig: 4.4.0 - dev: true - /@esbuild/android-arm64@0.17.18: resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} engines: {node: '>=12'} @@ -7848,13 +7824,6 @@ packages: - supports-color dev: true - /esno@0.16.3: - resolution: {integrity: sha512-6slSBEV1lMKcX13DBifvnDFpNno5WXhw4j/ff7RI0y51BZiDqEe5dNhhjhIQ3iCOQuzsm2MbVzmwqbN78BBhPg==} - hasBin: true - dependencies: - tsx: 3.12.3 - dev: true - /espree@9.5.1: resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -8578,10 +8547,6 @@ packages: get-intrinsic: 1.2.0 dev: true - /get-tsconfig@4.4.0: - resolution: {integrity: sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==} - dev: true - /get-uri@3.0.2: resolution: {integrity: sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==} engines: {node: '>= 6'} @@ -13674,17 +13639,6 @@ packages: typescript: 5.0.4 dev: true - /tsx@3.12.3: - resolution: {integrity: sha512-Wc5BFH1xccYTXaQob+lEcimkcb/Pq+0en2s+ruiX0VEIC80nV7/0s7XRahx8NnsoCnpCVUPz8wrqVSPi760LkA==} - hasBin: true - dependencies: - '@esbuild-kit/cjs-loader': 2.4.2 - '@esbuild-kit/core-utils': 3.1.0 - '@esbuild-kit/esm-loader': 2.5.5 - optionalDependencies: - fsevents: 2.3.2 - dev: true - /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: From bd53e9d4497e829d2419f35e7c8ac594a841676c Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Tue, 9 May 2023 09:56:40 +0530 Subject: [PATCH 094/255] Debug fetch-contributors --- .../mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts b/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts index 360cbd259..308171c38 100644 --- a/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts +++ b/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts @@ -23,6 +23,8 @@ async function fetchContributors() { } ); data = await response.json(); + console.log(response.status, response.statusText); + console.log(data); collaborators.push(...data.map((i) => i.login)); page++; } while (data.length === 100); From 75e73a4f032f09fdabf039a36b24afdcbb3147db Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Tue, 9 May 2023 10:20:33 +0530 Subject: [PATCH 095/255] Bump version --- packages/mermaid/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index e3458f9ce..61a9e44e6 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -1,6 +1,6 @@ { "name": "mermaid", - "version": "10.2.0-rc.2", + "version": "10.2.0-rc.3", "description": "Markdown-ish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "type": "module", "module": "./dist/mermaid.core.mjs", From fbd35ae95a7d311542ae73a34f45c6c7e799975e Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Tue, 9 May 2023 10:24:05 +0530 Subject: [PATCH 096/255] fix lint command --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index a21fbc005..d4bf4afe8 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -42,7 +42,7 @@ jobs: if ! pnpm run lint; then # print a nice error message on lint failure ERROR_MESSAGE='Running `pnpm run lint` failed.' - ERROR_MESSAGE+=' Running `pnpm run lint:fix` may fix this issue. ' + ERROR_MESSAGE+=' Running `pnpm -w run lint:fix` may fix this issue. ' ERROR_MESSAGE+=" If this error doesn't occur on your local machine," ERROR_MESSAGE+=' make sure your packages are up-to-date by running `pnpm install`.' ERROR_MESSAGE+=' You may also need to delete your prettier cache by running' From 10a66030b9979ce127f745c8ddb70922c63a94ca Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Tue, 9 May 2023 10:25:16 +0530 Subject: [PATCH 097/255] Fix blog linting --- docs/news/blog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/news/blog.md b/docs/news/blog.md index f957014f3..3f99a54f2 100644 --- a/docs/news/blog.md +++ b/docs/news/blog.md @@ -5,6 +5,7 @@ > ## Please edit the corresponding file in [/packages/mermaid/src/docs/news/blog.md](../../packages/mermaid/src/docs/news/blog.md). # Blog + ## [Bad documentation is bad for developers](https://www.mermaidchart.com/blog/posts/bad-documentation-is-bad-for-developers) 26 April 2023 · 11 mins From 9a7dbab5ed96eab49632a9d0eb12eef3ad9f22ba Mon Sep 17 00:00:00 2001 From: Subhash Halder <halder.subhash@gmail.com> Date: Tue, 9 May 2023 19:28:17 +0530 Subject: [PATCH 098/255] Converted files to typescript and added proper types --- demos/quadrantchart.html | 2 +- packages/mermaid/src/config.type.ts | 12 +- packages/mermaid/src/defaultConfig.ts | 31 ++ .../quadrant-chart/parser/quadrant.jison | 174 +++----- .../quadrant-chart/quadrantBuilder.js | 284 ------------- .../quadrant-chart/quadrantBuilder.ts | 385 ++++++++++++++++++ .../{quadrantDb.js => quadrantDb.ts} | 56 +-- .../quadrant-chart/quadrantDiagram.ts | 3 +- .../quadrant-chart/quadrantRenderer.js | 131 ------ .../quadrant-chart/quadrantRenderer.ts | 144 +++++++ .../src/diagrams/quadrant-chart/styles.js | 5 - packages/mermaid/src/themes/theme-base.js | 24 +- packages/mermaid/src/themes/theme-dark.js | 24 +- packages/mermaid/src/themes/theme-default.js | 24 +- packages/mermaid/src/themes/theme-forest.js | 24 +- packages/mermaid/src/themes/theme-neutral.js | 24 +- 16 files changed, 730 insertions(+), 617 deletions(-) delete mode 100644 packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.js create mode 100644 packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts rename packages/mermaid/src/diagrams/quadrant-chart/{quadrantDb.js => quadrantDb.ts} (61%) delete mode 100644 packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.js create mode 100644 packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts delete mode 100644 packages/mermaid/src/diagrams/quadrant-chart/styles.js diff --git a/demos/quadrantchart.html b/demos/quadrantchart.html index 3a340f76a..63a279bba 100644 --- a/demos/quadrantchart.html +++ b/demos/quadrantchart.html @@ -27,7 +27,7 @@ </pre> <pre class="mermaid"> - %%{init: {"quadrantChart": {"xAxisPosition": "bottom"} } }%% + %%{init: {"quadrantChart": {"xAxisPosition": "bottom", "chartWidth": 600, "chartHeight": 600} } }%% quadrantChart x-axis "Completeness of Vision ❤" y-axis Ability to Execute diff --git a/packages/mermaid/src/config.type.ts b/packages/mermaid/src/config.type.ts index 647657c25..3820f2c30 100644 --- a/packages/mermaid/src/config.type.ts +++ b/packages/mermaid/src/config.type.ts @@ -228,11 +228,13 @@ export interface PieDiagramConfig extends BaseDiagramConfig { } export interface QuadrantChartConfig extends BaseDiagramConfig { - quadrantPadding?: number; - xAxisLabelPadding?: number; - yAxisLabelPadding?: number; - xAxisLabelFontSize?: number; - yAxisLabelFontSize?: number; + chartWidth: number; + chartHeight: number; + quadrantPadding: number; + xAxisLabelPadding: number; + yAxisLabelPadding: number; + xAxisLabelFontSize: number; + yAxisLabelFontSize: number; quadrantLabelFontSize: number; quadrantTextTopPadding: number; pointTextPadding: number; diff --git a/packages/mermaid/src/defaultConfig.ts b/packages/mermaid/src/defaultConfig.ts index 24b9b7e8f..ec3f55cb5 100644 --- a/packages/mermaid/src/defaultConfig.ts +++ b/packages/mermaid/src/defaultConfig.ts @@ -1281,6 +1281,24 @@ const config: Partial<MermaidConfig> = { }, quadrantChart: { + /** + * | Parameter | Description | Type | Required | Values | + * | --------------- | ---------------------------------- | ------- | -------- | ------------------- | + * | chartWidth | Width of the chart | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 500 + */ + chartWidth: 500, + /** + * | Parameter | Description | Type | Required | Values | + * | --------------- | ---------------------------------- | ------- | -------- | ------------------- | + * | chartHeight | Height of the chart | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 500 + */ + chartHeight: 500, /** * | Parameter | Description | Type | Required | Values | * | --------------- | ---------------------------------- | ------- | -------- | ------------------- | @@ -1389,6 +1407,19 @@ const config: Partial<MermaidConfig> = { * Default value: left */ yAxisPosition: 'left', + /** + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See Notes | boolean | Required | true, false | + * + * **Notes:** + * + * When this flag is set to true, the diagram width is locked to 100% and scaled based on + * available space. If set to false, the diagram reserves its absolute width. + * + * Default value: true + */ + useMaxWidth: true, }, /** The object containing configurations specific for req diagrams */ diff --git a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison index 87d313371..ee8cf2ab2 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison +++ b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison @@ -21,130 +21,68 @@ %x point_x %x point_y %% -\%\%\{ { this.begin('open_directive'); return 'open_directive'; } -<open_directive>((?:(?!\}\%\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; } -<type_directive>":" { this.popState(); this.begin('arg_directive'); return ':'; } -<type_directive,arg_directive>\}\%\% { this.popState(); this.popState(); return 'close_directive'; } -<arg_directive>((?:(?!\}\%\%).|\n)*) return 'arg_directive'; -\%\%(?!\{)[^\n]* /* skip comments */ -[^\}]\%\%[^\n]* /* skip comments */ -[\n\r]+ return 'NEWLINE'; -\%\%[^\n]* /* do nothing */ +\%\%\{ { this.begin('open_directive'); return 'open_directive'; } +<open_directive>((?:(?!\}\%\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; } +<type_directive>":" { this.popState(); this.begin('arg_directive'); return ':'; } +<type_directive,arg_directive>\}\%\% { this.popState(); this.popState(); return 'close_directive'; } +<arg_directive>((?:(?!\}\%\%).|\n)*) return 'arg_directive'; +\%\%(?!\{)[^\n]* /* skip comments */ +[^\}]\%\%[^\n]* /* skip comments */ +[\n\r]+ return 'NEWLINE'; +\%\%[^\n]* /* do nothing */ -title { this.begin("title");return 'title'; } -<title>(?!\n|;|#)*[^\n]* { this.popState(); return "title_value"; } +title { this.begin("title");return 'title'; } +<title>(?!\n|;|#)*[^\n]* { this.popState(); return "title_value"; } -accTitle\s*":"\s* { this.begin("acc_title");return 'acc_title'; } -<acc_title>(?!\n|;|#)*[^\n]* { this.popState(); return "acc_title_value"; } -accDescr\s*":"\s* { this.begin("acc_descr");return 'acc_descr'; } -<acc_descr>(?!\n|;|#)*[^\n]* { this.popState(); return "acc_descr_value"; } -accDescr\s*"{"\s* { this.begin("acc_descr_multiline");} -<acc_descr_multiline>[\}] { this.popState(); } -<acc_descr_multiline>[^\}]* return "acc_descr_multiline_value"; +accTitle\s*":"\s* { this.begin("acc_title");return 'acc_title'; } +<acc_title>(?!\n|;|#)*[^\n]* { this.popState(); return "acc_title_value"; } +accDescr\s*":"\s* { this.begin("acc_descr");return 'acc_descr'; } +<acc_descr>(?!\n|;|#)*[^\n]* { this.popState(); return "acc_descr_value"; } +accDescr\s*"{"\s* { this.begin("acc_descr_multiline");} +<acc_descr_multiline>[\}] { this.popState(); } +<acc_descr_multiline>[^\}]* return "acc_descr_multiline_value"; -\s*"x-axis"\s* return 'X-AXIS'; -\s*"y-axis"\s* return 'Y-AXIS'; -\s*\-\-\>\s* return 'AXIS-TEXT-DELIMITER' -\s*"quadrant-1"\s* return 'QUADRANT_1'; -\s*"quadrant-2"\s* return 'QUADRANT_2'; -\s*"quadrant-3"\s* return 'QUADRANT_3'; -\s*"quadrant-4"\s* return 'QUADRANT_4'; +\s*"x-axis"\s* return 'X-AXIS'; +\s*"y-axis"\s* return 'Y-AXIS'; +\s*\-\-\>\s* return 'AXIS-TEXT-DELIMITER' +\s*"quadrant-1"\s* return 'QUADRANT_1'; +\s*"quadrant-2"\s* return 'QUADRANT_2'; +\s*"quadrant-3"\s* return 'QUADRANT_3'; +\s*"quadrant-4"\s* return 'QUADRANT_4'; -["][`] { this.begin("md_string");} -<md_string>[^`"]+ { return "MD_STR";} -<md_string>[`]["] { this.popState();} -["] this.begin("string"); -<string>["] this.popState(); -<string>[^"]* return "STR"; +["][`] { this.begin("md_string");} +<md_string>[^`"]+ { return "MD_STR";} +<md_string>[`]["] { this.popState();} +["] this.begin("string"); +<string>["] this.popState(); +<string>[^"]* return "STR"; -\s*\:\s*\[\s* {this.begin("point_start"); return 'point_start';} -<point_start>(1)|(0(.\d+)?) {this.begin('point_x'); return 'point_x';} -<point_start>\s*\] {this.popState();} -<point_x>\s*\,\s* {this.popState(); this.begin('point_y');} -<point_y>(1)|(0(.\d+)?) {this.popState(); return 'point_y';} +\s*\:\s*\[\s* {this.begin("point_start"); return 'point_start';} +<point_start>(1)|(0(.\d+)?) {this.begin('point_x'); return 'point_x';} +<point_start>\s*\] {this.popState();} +<point_x>\s*\,\s* {this.popState(); this.begin('point_y');} +<point_y>(1)|(0(.\d+)?) {this.popState(); return 'point_y';} -"quadrantChart"\s* return 'QUADRANT'; +"quadrantChart"\s* return 'QUADRANT'; -\[[0-1].?[0-9]{5}\] return 'POINT_VALUE' -[A-Za-z]+ return 'ALPHA'; -":" return 'COLON'; -\+ return 'PLUS'; -"," return 'COMMA'; -"=" return 'EQUALS'; -\= return 'EQUALS'; -"*" return 'MULT'; -\# return 'BRKT'; -[\_] return 'UNDERSCORE'; -"." return 'DOT'; -"&" return 'AMP'; -\- return 'MINUS'; -[0-9]+ return 'NUM'; -\s return 'SPACE'; -";" return 'SEMI'; -[!"#$%&'*+,-.`?\\_/] return 'PUNCTUATION'; -[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]| -[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]| -[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]| -[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]| -[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]| -[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]| -[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]| -[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]| -[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]| -[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]| -[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]| -[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]| -[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]| -[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]| -[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]| -[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]| -[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]| -[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]| -[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]| -[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]| -[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]| -[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]| -[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]| -[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]| -[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]| -[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]| -[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]| -[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]| -[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]| -[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]| -[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]| -[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]| -[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]| -[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]| -[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]| -[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]| -[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]| -[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]| -[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]| -[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]| -[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]| -[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]| -[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]| -[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]| -[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]| -[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]| -[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]| -[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]| -[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]| -[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]| -[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]| -[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]| -[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]| -[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]| -[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]| -[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]| -[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]| -[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]| -[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]| -[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]| -[\uFFD2-\uFFD7\uFFDA-\uFFDC] - return 'UNICODE_TEXT'; -<<EOF>> return 'EOF'; +\[[0-1].?[0-9]{5}\] return 'POINT_VALUE' +[A-Za-z]+ return 'ALPHA'; +":" return 'COLON'; +\+ return 'PLUS'; +"," return 'COMMA'; +"=" return 'EQUALS'; +\= return 'EQUALS'; +"*" return 'MULT'; +\# return 'BRKT'; +[\_] return 'UNDERSCORE'; +"." return 'DOT'; +"&" return 'AMP'; +\- return 'MINUS'; +[0-9]+ return 'NUM'; +\s return 'SPACE'; +";" return 'SEMI'; +[!"#$%&'*+,-.`?\\_/] return 'PUNCTUATION'; +<<EOF>> return 'EOF'; /lex @@ -241,7 +179,7 @@ alphaNum ; -alphaNumToken : PUNCTUATION | AMP | UNICODE_TEXT | NUM| ALPHA | COMMA | PLUS | EQUALS | MULT | DOT | BRKT| UNDERSCORE ; +alphaNumToken : PUNCTUATION | AMP | NUM| ALPHA | COMMA | PLUS | EQUALS | MULT | DOT | BRKT| UNDERSCORE ; textNoTagsToken: alphaNumToken | SPACE | MINUS; diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.js b/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.js deleted file mode 100644 index c4888cdce..000000000 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.js +++ /dev/null @@ -1,284 +0,0 @@ -import { scaleLinear } from 'd3'; - -export class QuadrantBuilder { - totalWidth = 500; - totalHeight = 500; - quadrantPadding = 5; - xAxisLabelPadding = 5; - yAxisLabelPadding = 5; - xAxisLabelFontSize = 16; - yAxisLabelFontSize = 16; - quadrantLabelFontSize = 16; - quadrantTextTopPadding = 5; - pointTextPadding = 5; - pointLabelFontSize = 12; - pointRadius = 5; - points = []; - quadrant1Text = ''; - quadrant2Text = ''; - quadrant3Text = ''; - quadrant4Text = ''; - xAxisLeftText = ''; - xAxisRightText = ''; - yAxisBottomText = ''; - yAxisTopText = ''; - xAxisPosition = 'top'; - yAxisPosition = 'left'; - quadrant1Fill = '#8bc2f3'; - quadrant2Fill = '#faebd7'; - quadrant3Fill = '#00ffff'; - quadrant4Fill = '#f0ffff'; - quadrant1TextFill = '#93690e'; - quadrant2TextFill = '#8644ff'; - quadrant3TextFill = '#e3004d'; - quadrant4TextFill = '#000000'; - pointFill = '#60B19C'; - pointTextFill = '#0000ff'; - xAxisTextFill = '#000000'; - yAxisTextFill = '#000000'; - showXAxis = true; - showYAxis = true; - - constructor() {} - - clear() { - this.points = []; - this.quadrant1Text = ''; - this.quadrant2Text = ''; - this.quadrant3Text = ''; - this.quadrant4Text = ''; - this.xAxisLeftText = ''; - this.xAxisRightText = ''; - this.yAxisBottomText = ''; - this.yAxisTopText = ''; - } - - addPoints(points) { - this.points = this.points.concat([...points]); - } - - set quadrant1Text(text) { - this.quadrant1Text = text; - } - - set quadrant2Text(text) { - this.quadrant2Text = text; - } - - set quadrant3Text(text) { - this.quadrant3Text = text; - } - - set quadrant4Text(text) { - this.quadrant4Text = text; - } - - set xAxisLeftText(text) { - this.xAxisLeftText = text; - } - - set xAxisRightText(text) { - this.xAxisRightText = text; - } - - set yAxisTopText(text) { - this.yAxisTopText = text; - } - - set yAxisBottomText(text) { - this.yAxisBottomText = text; - } - - set totalWidth(width) { - this.totalWidth = width; - } - - set totalHeight(height) { - this.totalHeight = height; - } - - build() { - const showXAxis = (!this.xAxisLeftText && !this.xAxisRightText) ? false: this.showXAxis; - const showYAxis = (!this.yAxisTopText && !this.yAxisBottomText) ? false: this.showYAxis; - const quadrantLeft = - this.quadrantPadding + - ((this.yAxisPosition === 'left' && showYAxis) ? this.yAxisLabelPadding * 2 + this.yAxisLabelFontSize : 0); - const quadrantTop = - this.quadrantPadding + - ((this.xAxisPosition === 'top' && showXAxis) ? this.xAxisLabelPadding * 2 + this.xAxisLabelFontSize : 0); - const quadrantWidth = - this.totalWidth - - (this.quadrantPadding * 2 + (showYAxis ? this.yAxisLabelPadding * 2 + this.yAxisLabelFontSize: 0)); - const quadrantHeight = - this.totalHeight - - (this.quadrantPadding * 2 + (showXAxis ? this.xAxisLabelPadding * 2 + this.xAxisLabelFontSize: 0)); - - const quadrantHalfWidth = quadrantWidth / 2; - const quadrantHalfHeight = quadrantHeight / 2; - - const axisLabels = []; - - if (this.xAxisLeftText && showXAxis) { - axisLabels.push({ - text: this.xAxisLeftText, - fill: this.xAxisTextFill, - x: quadrantLeft, - y: - this.xAxisPosition === 'top' - ? this.xAxisLabelPadding - : this.xAxisLabelPadding + quadrantTop + quadrantHeight, - fontSize: this.xAxisLabelFontSize, - verticalPos: 'left', - horizontalPos: 'top', - rotation: 0, - }); - } - if (this.xAxisRightText && showXAxis) { - axisLabels.push({ - text: this.xAxisRightText, - fill: this.xAxisTextFill, - x: quadrantLeft + quadrantHalfWidth, - y: - this.xAxisPosition === 'top' - ? this.xAxisLabelPadding - : this.xAxisLabelPadding + quadrantTop + quadrantHeight, - fontSize: this.xAxisLabelFontSize, - verticalPos: 'left', - horizontalPos: 'top', - rotation: 0, - }); - } - - if (this.yAxisBottomText && showYAxis) { - axisLabels.push({ - text: this.yAxisBottomText, - fill: this.yAxisTextFill, - x: - this.yAxisPosition === 'left' - ? this.yAxisLabelPadding - : this.yAxisLabelPadding + quadrantLeft + quadrantWidth, - y: quadrantTop + quadrantHeight, - fontSize: this.yAxisLabelFontSize, - verticalPos: 'left', - horizontalPos: 'top', - rotation: -90, - }); - } - if (this.yAxisTopText && showYAxis) { - axisLabels.push({ - text: this.yAxisTopText, - fill: this.yAxisTextFill, - x: - this.yAxisPosition === 'left' - ? this.yAxisLabelPadding - : this.yAxisLabelPadding + quadrantLeft + quadrantWidth, - y: quadrantTop + quadrantHalfHeight, - fontSize: this.yAxisLabelFontSize, - verticalPos: 'left', - horizontalPos: 'top', - rotation: -90, - }); - } - - const quadrants = [ - { - text: this.quadrant1Text, - textFill: this.quadrant1TextFill, - x: quadrantLeft + quadrantHalfWidth, - y: quadrantTop, - width: quadrantHalfWidth, - height: quadrantHalfHeight, - fill: this.quadrant1Fill, - }, - { - text: this.quadrant2Text, - textFill: this.quadrant2TextFill, - x: quadrantLeft, - y: quadrantTop, - width: quadrantHalfWidth, - height: quadrantHalfHeight, - fill: this.quadrant2Fill, - }, - { - text: this.quadrant3Text, - textFill: this.quadrant3TextFill, - x: quadrantLeft, - y: quadrantTop + quadrantHalfHeight, - width: quadrantHalfWidth, - height: quadrantHalfHeight, - fill: this.quadrant3Fill, - }, - { - text: this.quadrant4Text, - textFill: this.quadrant4TextFill, - x: quadrantLeft + quadrantHalfWidth, - y: quadrantTop + quadrantHalfHeight, - width: quadrantHalfWidth, - height: quadrantHalfHeight, - fill: this.quadrant4Fill, - }, - ]; - quadrants.forEach((quadrant, i) => { - // place the text in the center of the box - if (this.points.length === 0) { - quadrant.text = { - text: quadrant.text, - fill: quadrant.textFill, - x: quadrant.x + quadrant.width / 2, - y: quadrant.y + quadrant.height / 2, - fontSize: this.quadrantLabelFontSize, - verticalPos: 'center', - horizontalPos: 'center', - rotation: 0, - }; - // place the text top of the quadrant square - } else { - quadrant.text = { - text: quadrant.text, - fill: quadrant.textFill, - x: quadrant.x + quadrant.width / 2, - y: quadrant.y + this.quadrantTextTopPadding, - fontSize: this.quadrantLabelFontSize, - verticalPos: 'center', - horizontalPos: 'top', - rotation: 0, - }; - } - delete quadrant.textFill; - }); - - const xAxis = scaleLinear() - .domain([0, 1]) - .range([quadrantLeft, quadrantWidth + quadrantLeft]); - - const yAxis = scaleLinear() - .domain([0, 1]) - .range([quadrantHeight + quadrantTop, quadrantTop]); - - const points = this.points.map((point) => { - const props = { - x: xAxis(point.x), - y: yAxis(point.y), - fill: this.pointFill, - radius: this.pointRadius, - }; - props.text = { - text: point.text, - fill: this.pointTextFill, - x: props.x, - y: props.y + this.pointTextPadding, - verticalPos: 'center', - horizontalPos: 'top', - fontSize: this.pointLabelFontSize, - rotation: 0, - }; - return props; - }); - - return { - points, - quadrants, - axisLabels, - }; - } -} diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts new file mode 100644 index 000000000..4e0afb743 --- /dev/null +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts @@ -0,0 +1,385 @@ +// @ts-ignore: TODO Fix ts errors +import { scaleLinear } from 'd3'; + +export type QuadrantPointInputType = { x: number; y: number; text: string }; + +export type TextVerticalPos = 'left' | 'center' | 'right'; +export type TextHorizontalPos = 'top' | 'middle' | 'bottom'; + +export type QuadrantTextType = { + text: string; + fill: string; + x: number; + y: number; + verticalPos: TextVerticalPos; + horizontalPos: TextHorizontalPos; + fontSize: number; + rotation: number; +}; + +export type QuadrantPointType = { + x: number; + y: number; + fill: string; + radius: number; + text: QuadrantTextType; +}; + +export type QuadrantQuadrantsType = { + text: QuadrantTextType; + x: number; + y: number; + width: number; + height: number; + fill: string; +}; + +export type QuadrantBuildType = { + points: QuadrantPointType[]; + quadrants: QuadrantQuadrantsType[]; + axisLabels: QuadrantTextType[]; +}; + +export class QuadrantBuilder { + private _quadrant1Text = ''; + private _quadrant2Text = ''; + private _quadrant3Text = ''; + private _quadrant4Text = ''; + private _xAxisLeftText = ''; + private _xAxisRightText = ''; + private _yAxisBottomText = ''; + private _yAxisTopText = ''; + private _totalHeight = 500; + private _totalWidth = 500; + public quadrantPadding = 5; + public xAxisLabelPadding = 5; + public yAxisLabelPadding = 5; + public xAxisLabelFontSize = 16; + public yAxisLabelFontSize = 16; + public quadrantLabelFontSize = 16; + public quadrantTextTopPadding = 5; + public pointTextPadding = 5; + public pointLabelFontSize = 12; + public pointRadius = 5; + public points: QuadrantPointInputType[] = []; + public xAxisPosition = 'top'; + public yAxisPosition = 'left'; + public quadrant1Fill = '#8bc2f3'; + public quadrant2Fill = '#faebd7'; + public quadrant3Fill = '#00ffff'; + public quadrant4Fill = '#f0ffff'; + public quadrant1TextFill = '#93690e'; + public quadrant2TextFill = '#8644ff'; + public quadrant3TextFill = '#e3004d'; + public quadrant4TextFill = '#000000'; + public pointFill = '#60B19C'; + public pointTextFill = '#0000ff'; + public xAxisTextFill = '#000000'; + public yAxisTextFill = '#000000'; + public showXAxis = true; + public showYAxis = true; + + clear() { + this.points = []; + this.quadrant1Text = ''; + this.quadrant2Text = ''; + this.quadrant3Text = ''; + this.quadrant4Text = ''; + this.xAxisLeftText = ''; + this.xAxisRightText = ''; + this.yAxisBottomText = ''; + this.yAxisTopText = ''; + } + + addPoints(points: QuadrantPointInputType[]) { + this.points = [...points, ...this.points]; + } + + set quadrant1Text(text: string) { + this._quadrant1Text = text; + } + + get quadrant1Text() { + return this._quadrant1Text; + } + + set quadrant2Text(text: string) { + this._quadrant2Text = text; + } + + get quadrant2Text() { + return this._quadrant2Text; + } + + set quadrant3Text(text: string) { + this._quadrant3Text = text; + } + + get quadrant3Text() { + return this._quadrant3Text; + } + + set quadrant4Text(text: string) { + this._quadrant4Text = text; + } + + get quadrant4Text() { + return this._quadrant4Text; + } + + set xAxisLeftText(text: string) { + this._xAxisLeftText = text; + } + + get xAxisLeftText() { + return this._xAxisLeftText; + } + + set xAxisRightText(text: string) { + this._xAxisRightText = text; + } + + get xAxisRightText() { + return this._xAxisRightText; + } + + set yAxisTopText(text: string) { + this._yAxisTopText = text; + } + + get yAxisTopText() { + return this._yAxisTopText; + } + + set yAxisBottomText(text: string) { + this._yAxisBottomText = text; + } + + get yAxisBottomText() { + return this._yAxisBottomText; + } + + set totalWidth(width: number) { + this._totalWidth = width; + } + + get totalWidth() { + return this._totalWidth; + } + + set totalHeight(height: number) { + this._totalHeight = height; + } + + get totalHeight() { + return this._totalHeight; + } + + build(): QuadrantBuildType { + const showXAxis = !this.xAxisLeftText && !this.xAxisRightText ? false : this.showXAxis; + const showYAxis = !this.yAxisTopText && !this.yAxisBottomText ? false : this.showYAxis; + const quadrantLeft = + this.quadrantPadding + + (this.yAxisPosition === 'left' && showYAxis + ? this.yAxisLabelPadding * 2 + this.yAxisLabelFontSize + : 0); + const quadrantTop = + this.quadrantPadding + + (this.xAxisPosition === 'top' && showXAxis + ? this.xAxisLabelPadding * 2 + this.xAxisLabelFontSize + : 0); + const quadrantWidth = + this.totalWidth - + (this.quadrantPadding * 2 + + (showYAxis ? this.yAxisLabelPadding * 2 + this.yAxisLabelFontSize : 0)); + const quadrantHeight = + this.totalHeight - + (this.quadrantPadding * 2 + + (showXAxis ? this.xAxisLabelPadding * 2 + this.xAxisLabelFontSize : 0)); + + const quadrantHalfWidth = quadrantWidth / 2; + const quadrantHalfHeight = quadrantHeight / 2; + + const axisLabels: QuadrantTextType[] = []; + + if (this.xAxisLeftText && showXAxis) { + axisLabels.push({ + text: this.xAxisLeftText, + fill: this.xAxisTextFill, + x: quadrantLeft, + y: + this.xAxisPosition === 'top' + ? this.xAxisLabelPadding + : this.xAxisLabelPadding + quadrantTop + quadrantHeight, + fontSize: this.xAxisLabelFontSize, + verticalPos: 'left', + horizontalPos: 'top', + rotation: 0, + }); + } + if (this.xAxisRightText && showXAxis) { + axisLabels.push({ + text: this.xAxisRightText, + fill: this.xAxisTextFill, + x: quadrantLeft + quadrantHalfWidth, + y: + this.xAxisPosition === 'top' + ? this.xAxisLabelPadding + : this.xAxisLabelPadding + quadrantTop + quadrantHeight, + fontSize: this.xAxisLabelFontSize, + verticalPos: 'left', + horizontalPos: 'top', + rotation: 0, + }); + } + + if (this.yAxisBottomText && showYAxis) { + axisLabels.push({ + text: this.yAxisBottomText, + fill: this.yAxisTextFill, + x: + this.yAxisPosition === 'left' + ? this.yAxisLabelPadding + : this.yAxisLabelPadding + quadrantLeft + quadrantWidth, + y: quadrantTop + quadrantHeight, + fontSize: this.yAxisLabelFontSize, + verticalPos: 'left', + horizontalPos: 'top', + rotation: -90, + }); + } + if (this.yAxisTopText && showYAxis) { + axisLabels.push({ + text: this.yAxisTopText, + fill: this.yAxisTextFill, + x: + this.yAxisPosition === 'left' + ? this.yAxisLabelPadding + : this.yAxisLabelPadding + quadrantLeft + quadrantWidth, + y: quadrantTop + quadrantHalfHeight, + fontSize: this.yAxisLabelFontSize, + verticalPos: 'left', + horizontalPos: 'top', + rotation: -90, + }); + } + + const quadrants: QuadrantQuadrantsType[] = [ + { + text: { + text: this.quadrant1Text, + fill: this.quadrant1TextFill, + x: 0, + y: 0, + fontSize: this.quadrantLabelFontSize, + verticalPos: 'center', + horizontalPos: 'middle', + rotation: 0, + }, + x: quadrantLeft + quadrantHalfWidth, + y: quadrantTop, + width: quadrantHalfWidth, + height: quadrantHalfHeight, + fill: this.quadrant1Fill, + }, + { + text: { + text: this.quadrant2Text, + fill: this.quadrant2TextFill, + x: 0, + y: 0, + fontSize: this.quadrantLabelFontSize, + verticalPos: 'center', + horizontalPos: 'middle', + rotation: 0, + }, + x: quadrantLeft, + y: quadrantTop, + width: quadrantHalfWidth, + height: quadrantHalfHeight, + fill: this.quadrant2Fill, + }, + { + text: { + text: this.quadrant3Text, + fill: this.quadrant3TextFill, + x: 0, + y: 0, + fontSize: this.quadrantLabelFontSize, + verticalPos: 'center', + horizontalPos: 'middle', + rotation: 0, + }, + x: quadrantLeft, + y: quadrantTop + quadrantHalfHeight, + width: quadrantHalfWidth, + height: quadrantHalfHeight, + fill: this.quadrant3Fill, + }, + { + text: { + text: this.quadrant4Text, + fill: this.quadrant4TextFill, + x: 0, + y: 0, + fontSize: this.quadrantLabelFontSize, + verticalPos: 'center', + horizontalPos: 'middle', + rotation: 0, + }, + x: quadrantLeft + quadrantHalfWidth, + y: quadrantTop + quadrantHalfHeight, + width: quadrantHalfWidth, + height: quadrantHalfHeight, + fill: this.quadrant4Fill, + }, + ]; + quadrants.forEach((quadrant, i) => { + // place the text in the center of the box + if (this.points.length === 0) { + quadrant.text.x = quadrant.x + quadrant.width / 2; + quadrant.text.y = quadrant.y + quadrant.height / 2; + quadrant.text.horizontalPos = 'middle'; + // place the text top of the quadrant square + } else { + quadrant.text.x = quadrant.x + quadrant.width / 2; + quadrant.text.y = quadrant.y + this.quadrantTextTopPadding; + quadrant.text.horizontalPos = 'top'; + } + }); + + const xAxis = scaleLinear() + .domain([0, 1]) + .range([quadrantLeft, quadrantWidth + quadrantLeft]); + + const yAxis = scaleLinear() + .domain([0, 1]) + .range([quadrantHeight + quadrantTop, quadrantTop]); + + const points: QuadrantPointType[] = this.points.map((point) => { + const props: QuadrantPointType = { + x: xAxis(point.x), + y: yAxis(point.y), + fill: this.pointFill, + radius: this.pointRadius, + text: { + text: point.text, + fill: this.pointTextFill, + x: xAxis(point.x), + y: yAxis(point.y) + this.pointTextPadding, + verticalPos: 'center', + horizontalPos: 'top', + fontSize: this.pointLabelFontSize, + rotation: 0, + }, + }; + return props; + }); + + return { + points, + quadrants, + axisLabels, + }; + } +} diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.js b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.ts similarity index 61% rename from packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.js rename to packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.ts index a8d33a42d..630d6011c 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.js +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.ts @@ -15,54 +15,55 @@ import { QuadrantBuilder } from './quadrantBuilder.js'; const config = configApi.getConfig(); -function textSanitizer(text) { +function textSanitizer(text: string) { return sanitizeText(text.trim(), config); } +type LexTextObj = { text: string; type: 'text' | 'markdown' }; + const quadrantBuilder = new QuadrantBuilder(); -function setQuadrant1Text(textObj) { +function setQuadrant1Text(textObj: LexTextObj) { quadrantBuilder.quadrant1Text = textSanitizer(textObj.text); } -function setQuadrant2Text(textObj) { +function setQuadrant2Text(textObj: LexTextObj) { quadrantBuilder.quadrant2Text = textSanitizer(textObj.text); } -function setQuadrant3Text(textObj) { +function setQuadrant3Text(textObj: LexTextObj) { quadrantBuilder.quadrant3Text = textSanitizer(textObj.text); } -function setQuadrant4Text(textObj) { +function setQuadrant4Text(textObj: LexTextObj) { quadrantBuilder.quadrant4Text = textSanitizer(textObj.text); } -function setXAxisLeftText(textObj) { +function setXAxisLeftText(textObj: LexTextObj) { quadrantBuilder.xAxisLeftText = textSanitizer(textObj.text); } -function setXAxisRightText(textObj) { +function setXAxisRightText(textObj: LexTextObj) { quadrantBuilder.xAxisRightText = textSanitizer(textObj.text); } -function setYAxisTopText(textObj) { +function setYAxisTopText(textObj: LexTextObj) { quadrantBuilder.yAxisTopText = textSanitizer(textObj.text); } -function setYAxisBottomText(textObj) { +function setYAxisBottomText(textObj: LexTextObj) { quadrantBuilder.yAxisBottomText = textSanitizer(textObj.text); } -function addPoints(textObj, x, y) { - console.log(textObj, x, y); +function addPoints(textObj: LexTextObj, x: number, y: number) { quadrantBuilder.addPoints([{ x, y, text: textSanitizer(textObj.text) }]); } -function setWidth(width) { +function setWidth(width: number) { quadrantBuilder.totalWidth = width; } -function setHeight(height) { +function setHeight(height: number) { quadrantBuilder.totalHeight = height; } @@ -81,22 +82,25 @@ function getQuadrantData() { quadrantBuilder.pointTextFill = themeVariables.quadrantPointTextFill; quadrantBuilder.xAxisTextFill = themeVariables.quadrantXAxisTextFill; quadrantBuilder.yAxisTextFill = themeVariables.quadrantYAxisTextFill; - quadrantBuilder.quadrantPadding = quadrantChartConfig.quadrantPadding; - quadrantBuilder.xAxisLabelPadding = quadrantChartConfig.xAxisLabelPadding; - quadrantBuilder.yAxisLabelPadding = quadrantChartConfig.yAxisLabelPadding; - quadrantBuilder.xAxisLabelFontSize = quadrantChartConfig.xAxisLabelFontSize; - quadrantBuilder.yAxisLabelFontSize = quadrantChartConfig.yAxisLabelFontSize; - quadrantBuilder.quadrantLabelFontSize = quadrantChartConfig.quadrantLabelFontSize; - quadrantBuilder.quadrantTextTopPadding = quadrantChartConfig.quadrantTextTopPadding; - quadrantBuilder.pointTextPadding = quadrantChartConfig.pointTextPadding; - quadrantBuilder.pointLabelFontSize = quadrantChartConfig.pointLabelFontSize; - quadrantBuilder.pointRadius = quadrantChartConfig.pointRadius; - quadrantBuilder.xAxisPosition = quadrantChartConfig.xAxisPosition; - quadrantBuilder.yAxisPosition = quadrantChartConfig.yAxisPosition; + if (quadrantChartConfig) { + quadrantBuilder.quadrantPadding = quadrantChartConfig.quadrantPadding; + quadrantBuilder.xAxisLabelPadding = quadrantChartConfig.xAxisLabelPadding; + quadrantBuilder.yAxisLabelPadding = quadrantChartConfig.yAxisLabelPadding; + quadrantBuilder.xAxisLabelFontSize = quadrantChartConfig.xAxisLabelFontSize; + quadrantBuilder.yAxisLabelFontSize = quadrantChartConfig.yAxisLabelFontSize; + quadrantBuilder.quadrantLabelFontSize = quadrantChartConfig.quadrantLabelFontSize; + quadrantBuilder.quadrantTextTopPadding = quadrantChartConfig.quadrantTextTopPadding; + quadrantBuilder.pointTextPadding = quadrantChartConfig.pointTextPadding; + quadrantBuilder.pointLabelFontSize = quadrantChartConfig.pointLabelFontSize; + quadrantBuilder.pointRadius = quadrantChartConfig.pointRadius; + quadrantBuilder.xAxisPosition = quadrantChartConfig.xAxisPosition; + quadrantBuilder.yAxisPosition = quadrantChartConfig.yAxisPosition; + } return quadrantBuilder.build(); } -export const parseDirective = function (statement, context, type) { +export const parseDirective = function (statement: string, context: string, type: string) { + // @ts-ignore: TODO Fix ts errors mermaidAPI.parseDirective(this, statement, context, type); }; diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDiagram.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDiagram.ts index ec3d6ed20..40ae798d2 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDiagram.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDiagram.ts @@ -2,12 +2,11 @@ import { DiagramDefinition } from '../../diagram-api/types.js'; // @ts-ignore: TODO Fix ts errors import parser from './parser/quadrant.jison'; import db from './quadrantDb.js'; -import styles from './styles.js'; import renderer from './quadrantRenderer.js'; export const diagram: DiagramDefinition = { parser, db, renderer, - styles, + styles: () => '', }; diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.js b/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.js deleted file mode 100644 index 91936fb82..000000000 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.js +++ /dev/null @@ -1,131 +0,0 @@ -import { select, scaleLinear } from 'd3'; -import * as configApi from '../../config.js'; -import { log } from '../../logger.js'; - -import { configureSvgSize } from '../../setupGraphViewbox.js'; - -export const draw = (txt, id, _version, diagObj) => { - - - function getDominantBaseLine(horizintalPos) { - return horizintalPos === 'top' ? 'text-before-edge' : 'middle'; - } - - function getTextAnchor(verticalPos) { - return verticalPos === 'left' ? 'start' : 'middle'; - } - - function getTransformation(data) { - return `translate(${data.x}, ${data.y}) rotate(${data.rotation || 0})`; - } - - const conf = configApi.getConfig(); - log.debug('Rendering info diagram\n' + txt); - - const securityLevel = conf.securityLevel; - // Handle root and Document for when rendering in sandbox mode - let sandboxElement; - if (securityLevel === 'sandbox') { - sandboxElement = select('#i' + id); - } - const root = - securityLevel === 'sandbox' - ? select(sandboxElement.nodes()[0].contentDocument.body) - : select('body'); - - const svg = root.select(`[id="${id}"]`); - - const group = svg.append('g').attr('class', 'main'); - - - // const bounds = svg.node().getBox(); - // const width = bounds.width + padding * 2; - // const height = bounds.height + padding * 2; - const width = 500; - const height = 500; - - diagObj.db.setHeight(height); - diagObj.db.setWidth(width); - - svg.attr('width', width); - svg.attr('height', height); - - const quadrantData = diagObj.db.getQuadrantData(); - - const quadrantsGroup = group.append('g').attr('class', 'quadrants'); - const dataPointGroup = group.append('g').attr('class', 'data-points'); - const labelGroup = group.append('g').attr('class', 'labels'); - - const quadrants = quadrantsGroup - .selectAll('g.quadrant') - .data(quadrantData.quadrants) - .enter() - .append('g') - .attr('class', 'quadrant'); - - quadrants - .append('rect') - .attr('x', data => data.x) - .attr('y', data => data.y) - .attr('width', data => data.width) - .attr('height', data => data.height) - .attr('fill', data => data.fill); - - quadrants - .append('text') - .attr('x', 0) - .attr('y', 0) - .attr('fill', data => data.text.fill) - .attr('font-size', data => data.text.fontSize) - .attr('dominant-baseline', data => getDominantBaseLine(data.text.horizontalPos)) - .attr('text-anchor', data => getTextAnchor(data.text.verticalPos)) - .attr('transform', data => getTransformation(data.text)) - .text(data => data.text.text); - - const labels = labelGroup - .selectAll('g.label') - .data(quadrantData.axisLabels) - .enter() - .append('g') - .attr('class', 'label') - - labels - .append('text') - .attr('x', 0) - .attr('y', 0) - .text(data => data.text) - .attr('fill', data => data.fill) - .attr('font-size', data => data.fontSize) - .attr('dominant-baseline', data => getDominantBaseLine(data.horizontalPos)) - .attr('text-anchor', data => getTextAnchor(data.verticalPos)) - .attr('transform', data => getTransformation(data)) - - const dataPoints = dataPointGroup - .selectAll('g.data-point') - .data(quadrantData.points) - .enter() - .append('g') - .attr('class', 'data-point') - - dataPoints - .append('circle') - .attr('cx', data => data.x) - .attr('cy', data => data.y) - .attr('r', data => data.radius) - .attr('fill', data => data.fill); - - dataPoints - .append('text') - .attr('x', 0) - .attr('y', 0) - .text(data => data.text.text) - .attr('fill', data => data.text.fill) - .attr('font-size', data => data.text.fontSize) - .attr('dominant-baseline', data => getDominantBaseLine(data.text.horizontalPos)) - .attr('text-anchor', data => getTextAnchor(data.text.verticalPos)) - .attr('transform', data => getTransformation(data.text)) -}; - -export default { - draw, -}; diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts new file mode 100644 index 000000000..72639ba2e --- /dev/null +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts @@ -0,0 +1,144 @@ +// @ts-ignore: TODO Fix ts errors +import { select } from 'd3'; +import * as configApi from '../../config.js'; +import { log } from '../../logger.js'; + +import { configureSvgSize } from '../../setupGraphViewbox.js'; +import { Diagram } from '../../Diagram.js'; +import { + QuadrantBuildType, + QuadrantPointType, + QuadrantQuadrantsType, + QuadrantTextType, + TextHorizontalPos, + TextVerticalPos, +} from './quadrantBuilder.js'; + +export const draw = (txt: string, id: string, _version: string, diagObj: Diagram) => { + function getDominantBaseLine(horizintalPos: TextHorizontalPos) { + return horizintalPos === 'top' ? 'text-before-edge' : 'middle'; + } + + function getTextAnchor(verticalPos: TextVerticalPos) { + return verticalPos === 'left' ? 'start' : 'middle'; + } + + function getTransformation(data: { x: number; y: number; rotation: number }) { + return `translate(${data.x}, ${data.y}) rotate(${data.rotation || 0})`; + } + + const conf = configApi.getConfig(); + + log.debug('Rendering info diagram\n' + txt); + + const securityLevel = conf.securityLevel; + // Handle root and Document for when rendering in sandbox mode + let sandboxElement; + if (securityLevel === 'sandbox') { + sandboxElement = select('#i' + id); + } + const root = + securityLevel === 'sandbox' + ? select(sandboxElement.nodes()[0].contentDocument.body) + : select('body'); + + const svg = root.select(`[id="${id}"]`); + + const group = svg.append('g').attr('class', 'main'); + + const width = conf.quadrantChart?.chartWidth || 500; + const height = conf.quadrantChart?.chartHeight || 500; + + configureSvgSize(svg, height, width, conf.quadrantChart?.useMaxWidth || true); + + svg.attr('viewBox', '0 0 ' + width + ' ' + height); + + // @ts-ignore: TODO Fix ts errors + diagObj.db.setHeight(height); + // @ts-ignore: TODO Fix ts errors + diagObj.db.setWidth(width); + + // @ts-ignore: TODO Fix ts errors + const quadrantData: QuadrantBuildType = diagObj.db.getQuadrantData(); + + const quadrantsGroup = group.append('g').attr('class', 'quadrants'); + const dataPointGroup = group.append('g').attr('class', 'data-points'); + const labelGroup = group.append('g').attr('class', 'labels'); + + const quadrants = quadrantsGroup + .selectAll('g.quadrant') + .data(quadrantData.quadrants) + .enter() + .append('g') + .attr('class', 'quadrant'); + + quadrants + .append('rect') + .attr('x', (data: QuadrantQuadrantsType) => data.x) + .attr('y', (data: QuadrantQuadrantsType) => data.y) + .attr('width', (data: QuadrantQuadrantsType) => data.width) + .attr('height', (data: QuadrantQuadrantsType) => data.height) + .attr('fill', (data: QuadrantQuadrantsType) => data.fill); + + quadrants + .append('text') + .attr('x', 0) + .attr('y', 0) + .attr('fill', (data: QuadrantQuadrantsType) => data.text.fill) + .attr('font-size', (data: QuadrantQuadrantsType) => data.text.fontSize) + .attr('dominant-baseline', (data: QuadrantQuadrantsType) => + getDominantBaseLine(data.text.horizontalPos) + ) + .attr('text-anchor', (data: QuadrantQuadrantsType) => getTextAnchor(data.text.verticalPos)) + .attr('transform', (data: QuadrantQuadrantsType) => getTransformation(data.text)) + .text((data: QuadrantQuadrantsType) => data.text.text); + + const labels = labelGroup + .selectAll('g.label') + .data(quadrantData.axisLabels) + .enter() + .append('g') + .attr('class', 'label'); + + labels + .append('text') + .attr('x', 0) + .attr('y', 0) + .text((data: QuadrantTextType) => data.text) + .attr('fill', (data: QuadrantTextType) => data.fill) + .attr('font-size', (data: QuadrantTextType) => data.fontSize) + .attr('dominant-baseline', (data: QuadrantTextType) => getDominantBaseLine(data.horizontalPos)) + .attr('text-anchor', (data: QuadrantTextType) => getTextAnchor(data.verticalPos)) + .attr('transform', (data: QuadrantTextType) => getTransformation(data)); + + const dataPoints = dataPointGroup + .selectAll('g.data-point') + .data(quadrantData.points) + .enter() + .append('g') + .attr('class', 'data-point'); + + dataPoints + .append('circle') + .attr('cx', (data: QuadrantPointType) => data.x) + .attr('cy', (data: QuadrantPointType) => data.y) + .attr('r', (data: QuadrantPointType) => data.radius) + .attr('fill', (data: QuadrantPointType) => data.fill); + + dataPoints + .append('text') + .attr('x', 0) + .attr('y', 0) + .text((data: QuadrantPointType) => data.text.text) + .attr('fill', (data: QuadrantPointType) => data.text.fill) + .attr('font-size', (data: QuadrantPointType) => data.text.fontSize) + .attr('dominant-baseline', (data: QuadrantPointType) => + getDominantBaseLine(data.text.horizontalPos) + ) + .attr('text-anchor', (data: QuadrantPointType) => getTextAnchor(data.text.verticalPos)) + .attr('transform', (data: QuadrantPointType) => getTransformation(data.text)); +}; + +export default { + draw, +}; diff --git a/packages/mermaid/src/diagrams/quadrant-chart/styles.js b/packages/mermaid/src/diagrams/quadrant-chart/styles.js deleted file mode 100644 index fc7ab4bfd..000000000 --- a/packages/mermaid/src/diagrams/quadrant-chart/styles.js +++ /dev/null @@ -1,5 +0,0 @@ -const getStyles = (options) => -` -`; - -export default getStyles; diff --git a/packages/mermaid/src/themes/theme-base.js b/packages/mermaid/src/themes/theme-base.js index 30bbfd5b6..53c5f73b6 100644 --- a/packages/mermaid/src/themes/theme-base.js +++ b/packages/mermaid/src/themes/theme-base.js @@ -1,4 +1,4 @@ -import { darken, lighten, adjust, invert } from 'khroma'; +import { darken, lighten, adjust, invert, isDark } from 'khroma'; import { mkBorder } from './theme-helpers.js'; import { oldAttributeBackgroundColorEven, @@ -222,15 +222,21 @@ class Theme { /* quadrant-graph */ this.quadrant1Fill = this.quadrant1Fill || this.primaryColor; - this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, {r: 5, g: 5, b: 5}); - this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, {r: 10, g: 10, b: 10}); - this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, {r: 15, g: 15, b: 15}); + this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, { r: 5, g: 5, b: 5 }); + this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, { r: 10, g: 10, b: 10 }); + this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, { r: 15, g: 15, b: 15 }); this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor; - this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.quadrant1TextFill, {r: -5, g: -5, b: -5}); - this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.quadrant1TextFill, {r: -10, g: -10, b: -10}); - this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.quadrant1TextFill, {r: -15, g: -15, b: -15}); - this.quadrantPointFill = this.quadrantPointFill || this.secondaryColor; - this.quadrantPointTextFill = this.quadrantPointTextFill || this.secondaryTextColor; + this.quadrant2TextFill = + this.quadrant2TextFill || adjust(this.quadrant1TextFill, { r: -5, g: -5, b: -5 }); + this.quadrant3TextFill = + this.quadrant3TextFill || adjust(this.quadrant1TextFill, { r: -10, g: -10, b: -10 }); + this.quadrant4TextFill = + this.quadrant4TextFill || adjust(this.quadrant1TextFill, { r: -15, g: -15, b: -15 }); + this.quadrantPointFill = + this.quadrantPointFill || isDark(this.quadrant1Fill) + ? lighten(this.quadrant1Fill) + : darken(this.quadrant1Fill); + this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor; this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor; this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor; diff --git a/packages/mermaid/src/themes/theme-dark.js b/packages/mermaid/src/themes/theme-dark.js index 41c624588..d1f5dbde6 100644 --- a/packages/mermaid/src/themes/theme-dark.js +++ b/packages/mermaid/src/themes/theme-dark.js @@ -1,4 +1,4 @@ -import { invert, lighten, darken, rgba, adjust } from 'khroma'; +import { invert, lighten, darken, rgba, adjust, isDark } from 'khroma'; import { mkBorder } from './theme-helpers.js'; class Theme { @@ -228,15 +228,21 @@ class Theme { /* quadrant-graph */ this.quadrant1Fill = this.quadrant1Fill || this.primaryColor; - this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, {r: 5, g: 5, b: 5}); - this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, {r: 10, g: 10, b: 10}); - this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, {r: 15, g: 15, b: 15}); + this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, { r: 5, g: 5, b: 5 }); + this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, { r: 10, g: 10, b: 10 }); + this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, { r: 15, g: 15, b: 15 }); this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor; - this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.quadrant1TextFill, {r: -5, g: -5, b: -5}); - this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.quadrant1TextFill, {r: -10, g: -10, b: -10}); - this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.quadrant1TextFill, {r: -15, g: -15, b: -15}); - this.quadrantPointFill = this.quadrantPointFill || this.secondaryColor; - this.quadrantPointTextFill = this.quadrantPointTextFill || this.secondaryTextColor; + this.quadrant2TextFill = + this.quadrant2TextFill || adjust(this.quadrant1TextFill, { r: -5, g: -5, b: -5 }); + this.quadrant3TextFill = + this.quadrant3TextFill || adjust(this.quadrant1TextFill, { r: -10, g: -10, b: -10 }); + this.quadrant4TextFill = + this.quadrant4TextFill || adjust(this.quadrant1TextFill, { r: -15, g: -15, b: -15 }); + this.quadrantPointFill = + this.quadrantPointFill || isDark(this.quadrant1Fill) + ? lighten(this.quadrant1Fill) + : darken(this.quadrant1Fill); + this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor; this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor; this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor; diff --git a/packages/mermaid/src/themes/theme-default.js b/packages/mermaid/src/themes/theme-default.js index 091240af0..f73a05c4d 100644 --- a/packages/mermaid/src/themes/theme-default.js +++ b/packages/mermaid/src/themes/theme-default.js @@ -1,4 +1,4 @@ -import { invert, lighten, rgba, adjust, darken } from 'khroma'; +import { invert, lighten, rgba, adjust, darken, isDark } from 'khroma'; import { mkBorder } from './theme-helpers.js'; import { oldAttributeBackgroundColorEven, @@ -249,15 +249,21 @@ class Theme { /* quadrant-graph */ this.quadrant1Fill = this.quadrant1Fill || this.primaryColor; - this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, {r: 5, g: 5, b: 5}); - this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, {r: 10, g: 10, b: 10}); - this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, {r: 15, g: 15, b: 15}); + this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, { r: 5, g: 5, b: 5 }); + this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, { r: 10, g: 10, b: 10 }); + this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, { r: 15, g: 15, b: 15 }); this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor; - this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.quadrant1TextFill, {r: -5, g: -5, b: -5}); - this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.quadrant1TextFill, {r: -10, g: -10, b: -10}); - this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.quadrant1TextFill, {r: -15, g: -15, b: -15}); - this.quadrantPointFill = this.quadrantPointFill || this.secondaryColor; - this.quadrantPointTextFill = this.quadrantPointTextFill || this.secondaryTextColor; + this.quadrant2TextFill = + this.quadrant2TextFill || adjust(this.quadrant1TextFill, { r: -5, g: -5, b: -5 }); + this.quadrant3TextFill = + this.quadrant3TextFill || adjust(this.quadrant1TextFill, { r: -10, g: -10, b: -10 }); + this.quadrant4TextFill = + this.quadrant4TextFill || adjust(this.quadrant1TextFill, { r: -15, g: -15, b: -15 }); + this.quadrantPointFill = + this.quadrantPointFill || isDark(this.quadrant1Fill) + ? lighten(this.quadrant1Fill) + : darken(this.quadrant1Fill); + this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor; this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor; this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor; diff --git a/packages/mermaid/src/themes/theme-forest.js b/packages/mermaid/src/themes/theme-forest.js index 0c4af6ec3..f3e41adec 100644 --- a/packages/mermaid/src/themes/theme-forest.js +++ b/packages/mermaid/src/themes/theme-forest.js @@ -1,4 +1,4 @@ -import { darken, lighten, adjust, invert } from 'khroma'; +import { darken, lighten, adjust, invert, isDark } from 'khroma'; import { mkBorder } from './theme-helpers.js'; import { oldAttributeBackgroundColorEven, @@ -217,15 +217,21 @@ class Theme { /* quadrant-graph */ this.quadrant1Fill = this.quadrant1Fill || this.primaryColor; - this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, {r: 5, g: 5, b: 5}); - this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, {r: 10, g: 10, b: 10}); - this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, {r: 15, g: 15, b: 15}); + this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, { r: 5, g: 5, b: 5 }); + this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, { r: 10, g: 10, b: 10 }); + this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, { r: 15, g: 15, b: 15 }); this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor; - this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.quadrant1TextFill, {r: -5, g: -5, b: -5}); - this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.quadrant1TextFill, {r: -10, g: -10, b: -10}); - this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.quadrant1TextFill, {r: -15, g: -15, b: -15}); - this.quadrantPointFill = this.quadrantPointFill || this.secondaryColor; - this.quadrantPointTextFill = this.quadrantPointTextFill || this.secondaryTextColor; + this.quadrant2TextFill = + this.quadrant2TextFill || adjust(this.quadrant1TextFill, { r: -5, g: -5, b: -5 }); + this.quadrant3TextFill = + this.quadrant3TextFill || adjust(this.quadrant1TextFill, { r: -10, g: -10, b: -10 }); + this.quadrant4TextFill = + this.quadrant4TextFill || adjust(this.quadrant1TextFill, { r: -15, g: -15, b: -15 }); + this.quadrantPointFill = + this.quadrantPointFill || isDark(this.quadrant1Fill) + ? lighten(this.quadrant1Fill) + : darken(this.quadrant1Fill); + this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor; this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor; this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor; diff --git a/packages/mermaid/src/themes/theme-neutral.js b/packages/mermaid/src/themes/theme-neutral.js index 1f069c4fd..f240404a7 100644 --- a/packages/mermaid/src/themes/theme-neutral.js +++ b/packages/mermaid/src/themes/theme-neutral.js @@ -1,4 +1,4 @@ -import { invert, darken, lighten, adjust } from 'khroma'; +import { invert, darken, lighten, adjust, isDark } from 'khroma'; import { mkBorder } from './theme-helpers.js'; import { oldAttributeBackgroundColorEven, @@ -248,15 +248,21 @@ class Theme { /* quadrant-graph */ this.quadrant1Fill = this.quadrant1Fill || this.primaryColor; - this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, {r: 5, g: 5, b: 5}); - this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, {r: 10, g: 10, b: 10}); - this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, {r: 15, g: 15, b: 15}); + this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, { r: 5, g: 5, b: 5 }); + this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, { r: 10, g: 10, b: 10 }); + this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, { r: 15, g: 15, b: 15 }); this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor; - this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.quadrant1TextFill, {r: -5, g: -5, b: -5}); - this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.quadrant1TextFill, {r: -10, g: -10, b: -10}); - this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.quadrant1TextFill, {r: -15, g: -15, b: -15}); - this.quadrantPointFill = this.quadrantPointFill || this.secondaryColor; - this.quadrantPointTextFill = this.quadrantPointTextFill || this.secondaryTextColor; + this.quadrant2TextFill = + this.quadrant2TextFill || adjust(this.quadrant1TextFill, { r: -5, g: -5, b: -5 }); + this.quadrant3TextFill = + this.quadrant3TextFill || adjust(this.quadrant1TextFill, { r: -10, g: -10, b: -10 }); + this.quadrant4TextFill = + this.quadrant4TextFill || adjust(this.quadrant1TextFill, { r: -15, g: -15, b: -15 }); + this.quadrantPointFill = + this.quadrantPointFill || isDark(this.quadrant1Fill) + ? lighten(this.quadrant1Fill) + : darken(this.quadrant1Fill); + this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor; this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor; this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor; From 4cbcfa054e1b0a878e5bb14cd541841246a4e0ff Mon Sep 17 00:00:00 2001 From: amsubhash <amsubhash@users.noreply.github.com> Date: Tue, 9 May 2023 14:50:54 +0000 Subject: [PATCH 099/255] Update docs --- docs/config/setup/modules/defaultConfig.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/config/setup/modules/defaultConfig.md b/docs/config/setup/modules/defaultConfig.md index ad8f90248..284acf6b2 100644 --- a/docs/config/setup/modules/defaultConfig.md +++ b/docs/config/setup/modules/defaultConfig.md @@ -14,7 +14,7 @@ #### Defined in -[defaultConfig.ts:2115](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L2115) +[defaultConfig.ts:2257](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L2257) --- From 125373396232f681a828aea5a14eb0fc2b2b5758 Mon Sep 17 00:00:00 2001 From: Subhash Halder <halder.subhash@gmail.com> Date: Thu, 11 May 2023 12:10:58 +0530 Subject: [PATCH 100/255] Fixed review comment --- demos/quadrantchart.html | 7 +- docs/config/setup/modules/defaultConfig.md | 2 +- packages/mermaid/src/config.type.ts | 4 + packages/mermaid/src/defaultConfig.ts | 36 ++ .../quadrant-chart/parser/quadrant.jison | 6 +- .../quadrant-chart/quadrantBuilder.ts | 525 +++++++++++------- .../src/diagrams/quadrant-chart/quadrantDb.ts | 67 ++- .../quadrant-chart/quadrantRenderer.ts | 32 +- packages/mermaid/src/themes/theme-base.js | 5 + packages/mermaid/src/themes/theme-dark.js | 5 + packages/mermaid/src/themes/theme-default.js | 5 + packages/mermaid/src/themes/theme-forest.js | 5 + packages/mermaid/src/themes/theme-neutral.js | 5 + 13 files changed, 446 insertions(+), 258 deletions(-) diff --git a/demos/quadrantchart.html b/demos/quadrantchart.html index 63a279bba..a2a60d0a1 100644 --- a/demos/quadrantchart.html +++ b/demos/quadrantchart.html @@ -27,9 +27,10 @@ </pre> <pre class="mermaid"> - %%{init: {"quadrantChart": {"xAxisPosition": "bottom", "chartWidth": 600, "chartHeight": 600} } }%% + %%{init: {"quadrantChart": {"chartWidth": 600, "chartHeight": 600} } }%% quadrantChart - x-axis "Completeness of Vision ❤" + title Analytics and Business Intelligence Platforms + x-axis "Completeness of Vision ❤" --> y-axis Ability to Execute quadrant-1 Leaders quadrant-2 Challengers @@ -46,7 +47,7 @@ import mermaid from './mermaid.esm.mjs'; mermaid.initialize({ theme: 'default', - logLevel: 1, + logLevel: 3, securityLevel: 'loose', }); </script> diff --git a/docs/config/setup/modules/defaultConfig.md b/docs/config/setup/modules/defaultConfig.md index 284acf6b2..d95ec4e92 100644 --- a/docs/config/setup/modules/defaultConfig.md +++ b/docs/config/setup/modules/defaultConfig.md @@ -14,7 +14,7 @@ #### Defined in -[defaultConfig.ts:2257](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L2257) +[defaultConfig.ts:2293](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L2293) --- diff --git a/packages/mermaid/src/config.type.ts b/packages/mermaid/src/config.type.ts index 3820f2c30..140c200fb 100644 --- a/packages/mermaid/src/config.type.ts +++ b/packages/mermaid/src/config.type.ts @@ -230,6 +230,8 @@ export interface PieDiagramConfig extends BaseDiagramConfig { export interface QuadrantChartConfig extends BaseDiagramConfig { chartWidth: number; chartHeight: number; + titleFontSize: number; + titlePadding: number; quadrantPadding: number; xAxisLabelPadding: number; yAxisLabelPadding: number; @@ -242,6 +244,8 @@ export interface QuadrantChartConfig extends BaseDiagramConfig { pointRadius: number; xAxisPosition: 'top' | 'bottom'; yAxisPosition: 'left' | 'right'; + quadrantInternalBorderStrokeWidth: number; + quadrantExternalBorderStrokeWidth: number; } export interface ErDiagramConfig extends BaseDiagramConfig { diff --git a/packages/mermaid/src/defaultConfig.ts b/packages/mermaid/src/defaultConfig.ts index ec3f55cb5..ade873e57 100644 --- a/packages/mermaid/src/defaultConfig.ts +++ b/packages/mermaid/src/defaultConfig.ts @@ -1326,6 +1326,24 @@ const config: Partial<MermaidConfig> = { * Default value: 5 */ yAxisLabelPadding: 5, + /** + * | Parameter | Description | Type | Required | Values | + * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- | + * | titlePadding | Chart title top and bottom padding | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 5 + */ + titlePadding: 5, + /** + * | Parameter | Description | Type | Required | Values | + * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- | + * | titleFontSize | Chart title font size | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 20 + */ + titleFontSize: 20, /** * | Parameter | Description | Type | Required | Values | * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- | @@ -1407,6 +1425,24 @@ const config: Partial<MermaidConfig> = { * Default value: left */ yAxisPosition: 'left', + /** + * | Parameter | Description | Type | Required | Values | + * | --------------------------------- | ------------------------------------------------------------- | ------- | -------- | ------------------- | + * | quadrantInternalBorderStrokeWidth | stroke width of edges of the box that are inside the quadrant | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 1 + */ + quadrantInternalBorderStrokeWidth: 1, + /** + * | Parameter | Description | Type | Required | Values | + * | --------------------------------- | -------------------------------------------------------------- | ------- | -------- | ------------------- | + * | quadrantExternalBorderStrokeWidth | stroke width of edges of the box that are outside the quadrant | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 2 + */ + quadrantExternalBorderStrokeWidth: 2, /** * | Parameter | Description | Type | Required | Values | * | ----------- | ----------- | ------- | -------- | ----------- | diff --git a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison index ee8cf2ab2..67c47cb13 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison +++ b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison @@ -44,7 +44,7 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multiline");} \s*"x-axis"\s* return 'X-AXIS'; \s*"y-axis"\s* return 'Y-AXIS'; -\s*\-\-\>\s* return 'AXIS-TEXT-DELIMITER' +\s*\-\-+\>[^(\r?\n)\s]* return 'AXIS-TEXT-DELIMITER' \s*"quadrant-1"\s* return 'QUADRANT_1'; \s*"quadrant-2"\s* return 'QUADRANT_2'; \s*"quadrant-3"\s* return 'QUADRANT_3'; @@ -118,12 +118,14 @@ statement ; points - : text point_start point_x point_y {yy.addPoints($1, $3, $4);}; + : text point_start point_x point_y {yy.addPoint($1, $3, $4);}; axisDetails : X-AXIS text AXIS-TEXT-DELIMITER text {yy.setXAxisLeftText($2); yy.setXAxisRightText($4);} + | X-AXIS text AXIS-TEXT-DELIMITER {$2.text += $3; yy.setXAxisLeftText($2);} | X-AXIS text {yy.setXAxisLeftText($2);} | Y-AXIS text AXIS-TEXT-DELIMITER text {yy.setYAxisBottomText($2); yy.setYAxisTopText($4);} + | Y-AXIS text AXIS-TEXT-DELIMITER {$2.text += $3; yy.setYAxisBottomText($2);} | Y-AXIS text {yy.setYAxisBottomText($2);} ; diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts index 4e0afb743..231af941b 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts @@ -1,12 +1,18 @@ // @ts-ignore: TODO Fix ts errors import { scaleLinear } from 'd3'; +import { log } from '../../logger.js'; +import { QuadrantChartConfig } from '../../config.type.js'; -export type QuadrantPointInputType = { x: number; y: number; text: string }; +export interface QuadrantPointInputType { + x: number; + y: number; + text: string; +} export type TextVerticalPos = 'left' | 'center' | 'right'; export type TextHorizontalPos = 'top' | 'middle' | 'bottom'; -export type QuadrantTextType = { +export interface QuadrantTextType { text: string; fill: string; x: number; @@ -15,250 +21,267 @@ export type QuadrantTextType = { horizontalPos: TextHorizontalPos; fontSize: number; rotation: number; -}; +} -export type QuadrantPointType = { +export interface QuadrantPointType { x: number; y: number; fill: string; radius: number; text: QuadrantTextType; -}; +} -export type QuadrantQuadrantsType = { +export interface QuadrantLineType { + strokeWidth: number; + strokeFill: string; + x1: number; + y1: number; + x2: number; + y2: number; +} + +export interface QuadrantQuadrantsType { text: QuadrantTextType; x: number; y: number; width: number; height: number; fill: string; -}; +} -export type QuadrantBuildType = { +export interface QuadrantBuildType { points: QuadrantPointType[]; quadrants: QuadrantQuadrantsType[]; axisLabels: QuadrantTextType[]; -}; + title?: QuadrantTextType; + borderLines?: QuadrantLineType[]; +} + +export interface QuadrantBuilderConfig extends QuadrantChartConfig { + titleText: string; + quadrant1Text: string; + quadrant2Text: string; + quadrant3Text: string; + quadrant4Text: string; + xAxisLeftText: string; + xAxisRightText: string; + yAxisBottomText: string; + yAxisTopText: string; + points: QuadrantPointInputType[]; + showXAxis: boolean; + showYAxis: boolean; + showTitle: boolean; +} + +export interface QuadrantBuilderThemeConfig { + quadrantTitleFill: string; + quadrant1Fill: string; + quadrant2Fill: string; + quadrant3Fill: string; + quadrant4Fill: string; + quadrant1TextFill: string; + quadrant2TextFill: string; + quadrant3TextFill: string; + quadrant4TextFill: string; + quadrantPointFill: string; + quadrantPointTextFill: string; + quadrantXAxisTextFill: string; + quadrantYAxisTextFill: string; + quadrantInternalBorderStrokeFill: string; + quadrantExternalBorderStrokeFill: string; +} export class QuadrantBuilder { - private _quadrant1Text = ''; - private _quadrant2Text = ''; - private _quadrant3Text = ''; - private _quadrant4Text = ''; - private _xAxisLeftText = ''; - private _xAxisRightText = ''; - private _yAxisBottomText = ''; - private _yAxisTopText = ''; - private _totalHeight = 500; - private _totalWidth = 500; - public quadrantPadding = 5; - public xAxisLabelPadding = 5; - public yAxisLabelPadding = 5; - public xAxisLabelFontSize = 16; - public yAxisLabelFontSize = 16; - public quadrantLabelFontSize = 16; - public quadrantTextTopPadding = 5; - public pointTextPadding = 5; - public pointLabelFontSize = 12; - public pointRadius = 5; - public points: QuadrantPointInputType[] = []; - public xAxisPosition = 'top'; - public yAxisPosition = 'left'; - public quadrant1Fill = '#8bc2f3'; - public quadrant2Fill = '#faebd7'; - public quadrant3Fill = '#00ffff'; - public quadrant4Fill = '#f0ffff'; - public quadrant1TextFill = '#93690e'; - public quadrant2TextFill = '#8644ff'; - public quadrant3TextFill = '#e3004d'; - public quadrant4TextFill = '#000000'; - public pointFill = '#60B19C'; - public pointTextFill = '#0000ff'; - public xAxisTextFill = '#000000'; - public yAxisTextFill = '#000000'; - public showXAxis = true; - public showYAxis = true; + private config: QuadrantBuilderConfig; + private themeConfig: QuadrantBuilderThemeConfig; + + constructor() { + this.config = this.getDefaultConfig(); + this.themeConfig = this.getDefaultThemeConfig(); + } + + getDefaultConfig(): QuadrantBuilderConfig { + return { + titleText: '', + quadrant1Text: '', + quadrant2Text: '', + quadrant3Text: '', + quadrant4Text: '', + xAxisLeftText: '', + xAxisRightText: '', + yAxisBottomText: '', + yAxisTopText: '', + points: [], + showXAxis: true, + showYAxis: true, + showTitle: true, + chartHeight: 500, + chartWidth: 500, + titlePadding: 5, + titleFontSize: 20, + quadrantPadding: 5, + xAxisLabelPadding: 5, + yAxisLabelPadding: 5, + xAxisLabelFontSize: 16, + yAxisLabelFontSize: 16, + quadrantLabelFontSize: 16, + quadrantTextTopPadding: 5, + pointTextPadding: 5, + pointLabelFontSize: 12, + pointRadius: 5, + xAxisPosition: 'top', + yAxisPosition: 'left', + quadrantInternalBorderStrokeWidth: 2, + quadrantExternalBorderStrokeWidth: 3, + }; + } + + getDefaultThemeConfig(): QuadrantBuilderThemeConfig { + return { + quadrant1Fill: '#8bc2f3', + quadrant2Fill: '#faebd7', + quadrant3Fill: '#00ffff', + quadrant4Fill: '#f0ffff', + quadrant1TextFill: '#93690e', + quadrant2TextFill: '#8644ff', + quadrant3TextFill: '#e3004d', + quadrant4TextFill: '#000000', + quadrantPointFill: '#60B19C', + quadrantPointTextFill: '#0000ff', + quadrantXAxisTextFill: '#000000', + quadrantYAxisTextFill: '#000000', + quadrantTitleFill: '#000000', + quadrantInternalBorderStrokeFill: '#000000', + quadrantExternalBorderStrokeFill: '#000000', + }; + } clear() { - this.points = []; - this.quadrant1Text = ''; - this.quadrant2Text = ''; - this.quadrant3Text = ''; - this.quadrant4Text = ''; - this.xAxisLeftText = ''; - this.xAxisRightText = ''; - this.yAxisBottomText = ''; - this.yAxisTopText = ''; + this.config = this.getDefaultConfig(); + this.themeConfig = this.getDefaultThemeConfig(); + log.info('clear called'); } addPoints(points: QuadrantPointInputType[]) { - this.points = [...points, ...this.points]; + this.config.points = [...points, ...this.config.points]; } - set quadrant1Text(text: string) { - this._quadrant1Text = text; + setConfig(config: Partial<QuadrantBuilderConfig>) { + log.trace('setConfig called with: ', config); + this.config = { ...this.config, ...config }; } - get quadrant1Text() { - return this._quadrant1Text; - } - - set quadrant2Text(text: string) { - this._quadrant2Text = text; - } - - get quadrant2Text() { - return this._quadrant2Text; - } - - set quadrant3Text(text: string) { - this._quadrant3Text = text; - } - - get quadrant3Text() { - return this._quadrant3Text; - } - - set quadrant4Text(text: string) { - this._quadrant4Text = text; - } - - get quadrant4Text() { - return this._quadrant4Text; - } - - set xAxisLeftText(text: string) { - this._xAxisLeftText = text; - } - - get xAxisLeftText() { - return this._xAxisLeftText; - } - - set xAxisRightText(text: string) { - this._xAxisRightText = text; - } - - get xAxisRightText() { - return this._xAxisRightText; - } - - set yAxisTopText(text: string) { - this._yAxisTopText = text; - } - - get yAxisTopText() { - return this._yAxisTopText; - } - - set yAxisBottomText(text: string) { - this._yAxisBottomText = text; - } - - get yAxisBottomText() { - return this._yAxisBottomText; - } - - set totalWidth(width: number) { - this._totalWidth = width; - } - - get totalWidth() { - return this._totalWidth; - } - - set totalHeight(height: number) { - this._totalHeight = height; - } - - get totalHeight() { - return this._totalHeight; + setThemeConfig(themeConfig: Partial<QuadrantBuilderThemeConfig>) { + log.trace('setThemeConfig called with: ', themeConfig); + this.themeConfig = { ...this.themeConfig, ...themeConfig }; } build(): QuadrantBuildType { - const showXAxis = !this.xAxisLeftText && !this.xAxisRightText ? false : this.showXAxis; - const showYAxis = !this.yAxisTopText && !this.yAxisBottomText ? false : this.showYAxis; - const quadrantLeft = - this.quadrantPadding + - (this.yAxisPosition === 'left' && showYAxis - ? this.yAxisLabelPadding * 2 + this.yAxisLabelFontSize - : 0); - const quadrantTop = - this.quadrantPadding + - (this.xAxisPosition === 'top' && showXAxis - ? this.xAxisLabelPadding * 2 + this.xAxisLabelFontSize - : 0); + const showXAxis = + this.config.showXAxis && (this.config.xAxisLeftText || this.config.xAxisRightText); + const showYAxis = + this.config.showYAxis && (this.config.yAxisTopText || this.config.yAxisBottomText); + const showTitle = this.config.showTitle && this.config.titleText; + + const halfExternalBorderWidth = this.config.quadrantExternalBorderStrokeWidth / 2; + const halfInternalBorderWidth = this.config.quadrantInternalBorderStrokeWidth / 2; + + const xAxisPosition = this.config.points.length > 0 ? 'bottom' : this.config.xAxisPosition; + + const drawAxisLabelInMiddle = this.config.points.length === 0; + + const xAxisSpaceCalculation = + this.config.xAxisLabelPadding * 2 + this.config.xAxisLabelFontSize; + const xAxisSpace = { + top: xAxisPosition === 'top' && showXAxis ? xAxisSpaceCalculation : 0, + bottom: xAxisPosition === 'bottom' && showXAxis ? xAxisSpaceCalculation : 0, + }; + + const yAxisSpaceCalculation = + this.config.yAxisLabelPadding * 2 + this.config.yAxisLabelFontSize; + const yAxisSpace = { + left: this.config.yAxisPosition === 'left' && showYAxis ? yAxisSpaceCalculation : 0, + right: this.config.yAxisPosition === 'right' && showYAxis ? yAxisSpaceCalculation : 0, + }; + + const titleSpaceCalculation = this.config.titleFontSize + this.config.titlePadding * 2; + const titleSpace = { + top: showTitle ? titleSpaceCalculation : 0, + }; + + const quadrantLeft = this.config.quadrantPadding + yAxisSpace.left; + const quadrantTop = this.config.quadrantPadding + xAxisSpace.top + titleSpace.top; const quadrantWidth = - this.totalWidth - - (this.quadrantPadding * 2 + - (showYAxis ? this.yAxisLabelPadding * 2 + this.yAxisLabelFontSize : 0)); + this.config.chartWidth - this.config.quadrantPadding * 2 - yAxisSpace.left - yAxisSpace.right; const quadrantHeight = - this.totalHeight - - (this.quadrantPadding * 2 + - (showXAxis ? this.xAxisLabelPadding * 2 + this.xAxisLabelFontSize : 0)); + this.config.chartHeight - + this.config.quadrantPadding * 2 - + xAxisSpace.top - + xAxisSpace.bottom - + titleSpace.top; const quadrantHalfWidth = quadrantWidth / 2; const quadrantHalfHeight = quadrantHeight / 2; const axisLabels: QuadrantTextType[] = []; - if (this.xAxisLeftText && showXAxis) { + if (this.config.xAxisLeftText && showXAxis) { axisLabels.push({ - text: this.xAxisLeftText, - fill: this.xAxisTextFill, - x: quadrantLeft, + text: this.config.xAxisLeftText, + fill: this.themeConfig.quadrantXAxisTextFill, + x: quadrantLeft + (drawAxisLabelInMiddle ? quadrantHalfWidth / 2 : 0), y: - this.xAxisPosition === 'top' - ? this.xAxisLabelPadding - : this.xAxisLabelPadding + quadrantTop + quadrantHeight, - fontSize: this.xAxisLabelFontSize, - verticalPos: 'left', + xAxisPosition === 'top' + ? this.config.xAxisLabelPadding + titleSpace.top + : this.config.xAxisLabelPadding + quadrantTop + quadrantHeight, + fontSize: this.config.xAxisLabelFontSize, + verticalPos: drawAxisLabelInMiddle ? 'center' : 'left', horizontalPos: 'top', rotation: 0, }); } - if (this.xAxisRightText && showXAxis) { + if (this.config.xAxisRightText && showXAxis) { axisLabels.push({ - text: this.xAxisRightText, - fill: this.xAxisTextFill, - x: quadrantLeft + quadrantHalfWidth, + text: this.config.xAxisRightText, + fill: this.themeConfig.quadrantXAxisTextFill, + x: quadrantLeft + quadrantHalfWidth + (drawAxisLabelInMiddle ? quadrantHalfWidth / 2 : 0), y: - this.xAxisPosition === 'top' - ? this.xAxisLabelPadding - : this.xAxisLabelPadding + quadrantTop + quadrantHeight, - fontSize: this.xAxisLabelFontSize, - verticalPos: 'left', + xAxisPosition === 'top' + ? this.config.xAxisLabelPadding + titleSpace.top + : this.config.xAxisLabelPadding + quadrantTop + quadrantHeight, + fontSize: this.config.xAxisLabelFontSize, + verticalPos: drawAxisLabelInMiddle ? 'center' : 'left', horizontalPos: 'top', rotation: 0, }); } - if (this.yAxisBottomText && showYAxis) { + if (this.config.yAxisBottomText && showYAxis) { axisLabels.push({ - text: this.yAxisBottomText, - fill: this.yAxisTextFill, + text: this.config.yAxisBottomText, + fill: this.themeConfig.quadrantYAxisTextFill, x: - this.yAxisPosition === 'left' - ? this.yAxisLabelPadding - : this.yAxisLabelPadding + quadrantLeft + quadrantWidth, - y: quadrantTop + quadrantHeight, - fontSize: this.yAxisLabelFontSize, - verticalPos: 'left', + this.config.yAxisPosition === 'left' + ? this.config.yAxisLabelPadding + : this.config.yAxisLabelPadding + quadrantLeft + quadrantWidth, + y: quadrantTop + quadrantHeight - (drawAxisLabelInMiddle ? quadrantHalfHeight / 2 : 0), + fontSize: this.config.yAxisLabelFontSize, + verticalPos: drawAxisLabelInMiddle ? 'center' : 'left', horizontalPos: 'top', rotation: -90, }); } - if (this.yAxisTopText && showYAxis) { + if (this.config.yAxisTopText && showYAxis) { axisLabels.push({ - text: this.yAxisTopText, - fill: this.yAxisTextFill, + text: this.config.yAxisTopText, + fill: this.themeConfig.quadrantYAxisTextFill, x: - this.yAxisPosition === 'left' - ? this.yAxisLabelPadding - : this.yAxisLabelPadding + quadrantLeft + quadrantWidth, - y: quadrantTop + quadrantHalfHeight, - fontSize: this.yAxisLabelFontSize, - verticalPos: 'left', + this.config.yAxisPosition === 'left' + ? this.config.yAxisLabelPadding + : this.config.yAxisLabelPadding + quadrantLeft + quadrantWidth, + y: quadrantTop + quadrantHalfHeight - (drawAxisLabelInMiddle ? quadrantHalfHeight / 2 : 0), + fontSize: this.config.yAxisLabelFontSize, + verticalPos: drawAxisLabelInMiddle ? 'center' : 'left', horizontalPos: 'top', rotation: -90, }); @@ -267,11 +290,11 @@ export class QuadrantBuilder { const quadrants: QuadrantQuadrantsType[] = [ { text: { - text: this.quadrant1Text, - fill: this.quadrant1TextFill, + text: this.config.quadrant1Text, + fill: this.themeConfig.quadrant1TextFill, x: 0, y: 0, - fontSize: this.quadrantLabelFontSize, + fontSize: this.config.quadrantLabelFontSize, verticalPos: 'center', horizontalPos: 'middle', rotation: 0, @@ -280,15 +303,15 @@ export class QuadrantBuilder { y: quadrantTop, width: quadrantHalfWidth, height: quadrantHalfHeight, - fill: this.quadrant1Fill, + fill: this.themeConfig.quadrant1Fill, }, { text: { - text: this.quadrant2Text, - fill: this.quadrant2TextFill, + text: this.config.quadrant2Text, + fill: this.themeConfig.quadrant2TextFill, x: 0, y: 0, - fontSize: this.quadrantLabelFontSize, + fontSize: this.config.quadrantLabelFontSize, verticalPos: 'center', horizontalPos: 'middle', rotation: 0, @@ -297,15 +320,15 @@ export class QuadrantBuilder { y: quadrantTop, width: quadrantHalfWidth, height: quadrantHalfHeight, - fill: this.quadrant2Fill, + fill: this.themeConfig.quadrant2Fill, }, { text: { - text: this.quadrant3Text, - fill: this.quadrant3TextFill, + text: this.config.quadrant3Text, + fill: this.themeConfig.quadrant3TextFill, x: 0, y: 0, - fontSize: this.quadrantLabelFontSize, + fontSize: this.config.quadrantLabelFontSize, verticalPos: 'center', horizontalPos: 'middle', rotation: 0, @@ -314,15 +337,15 @@ export class QuadrantBuilder { y: quadrantTop + quadrantHalfHeight, width: quadrantHalfWidth, height: quadrantHalfHeight, - fill: this.quadrant3Fill, + fill: this.themeConfig.quadrant3Fill, }, { text: { - text: this.quadrant4Text, - fill: this.quadrant4TextFill, + text: this.config.quadrant4Text, + fill: this.themeConfig.quadrant4TextFill, x: 0, y: 0, - fontSize: this.quadrantLabelFontSize, + fontSize: this.config.quadrantLabelFontSize, verticalPos: 'center', horizontalPos: 'middle', rotation: 0, @@ -331,22 +354,21 @@ export class QuadrantBuilder { y: quadrantTop + quadrantHalfHeight, width: quadrantHalfWidth, height: quadrantHalfHeight, - fill: this.quadrant4Fill, + fill: this.themeConfig.quadrant4Fill, }, ]; - quadrants.forEach((quadrant, i) => { + for (const quadrant of quadrants) { + quadrant.text.x = quadrant.x + quadrant.width / 2; // place the text in the center of the box - if (this.points.length === 0) { - quadrant.text.x = quadrant.x + quadrant.width / 2; + if (this.config.points.length === 0) { quadrant.text.y = quadrant.y + quadrant.height / 2; quadrant.text.horizontalPos = 'middle'; // place the text top of the quadrant square } else { - quadrant.text.x = quadrant.x + quadrant.width / 2; - quadrant.text.y = quadrant.y + this.quadrantTextTopPadding; + quadrant.text.y = quadrant.y + this.config.quadrantTextTopPadding; quadrant.text.horizontalPos = 'top'; } - }); + } const xAxis = scaleLinear() .domain([0, 1]) @@ -356,30 +378,103 @@ export class QuadrantBuilder { .domain([0, 1]) .range([quadrantHeight + quadrantTop, quadrantTop]); - const points: QuadrantPointType[] = this.points.map((point) => { + const points: QuadrantPointType[] = this.config.points.map((point) => { const props: QuadrantPointType = { x: xAxis(point.x), y: yAxis(point.y), - fill: this.pointFill, - radius: this.pointRadius, + fill: this.themeConfig.quadrantPointFill, + radius: this.config.pointRadius, text: { text: point.text, - fill: this.pointTextFill, + fill: this.themeConfig.quadrantPointTextFill, x: xAxis(point.x), - y: yAxis(point.y) + this.pointTextPadding, + y: yAxis(point.y) + this.config.pointTextPadding, verticalPos: 'center', horizontalPos: 'top', - fontSize: this.pointLabelFontSize, + fontSize: this.config.pointLabelFontSize, rotation: 0, }, }; return props; }); - return { + const borderLines: QuadrantLineType[] = [ + // top border + { + strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, + strokeWidth: this.config.quadrantExternalBorderStrokeWidth, + x1: quadrantLeft - halfExternalBorderWidth, + y1: quadrantTop, + x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth, + y2: quadrantTop, + }, + // right border + { + strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, + strokeWidth: this.config.quadrantExternalBorderStrokeWidth, + x1: quadrantLeft + quadrantWidth, + y1: quadrantTop + halfExternalBorderWidth, + x2: quadrantLeft + quadrantWidth, + y2: quadrantTop + quadrantHeight - halfExternalBorderWidth, + }, + // bottom border + { + strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, + strokeWidth: this.config.quadrantExternalBorderStrokeWidth, + x1: quadrantLeft - halfExternalBorderWidth, + y1: quadrantTop + quadrantHeight, + x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth, + y2: quadrantTop + quadrantHeight, + }, + // left border + { + strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, + strokeWidth: this.config.quadrantExternalBorderStrokeWidth, + x1: quadrantLeft, + y1: quadrantTop + halfExternalBorderWidth, + x2: quadrantLeft, + y2: quadrantTop + quadrantHeight - halfExternalBorderWidth, + }, + // vertical inner border + { + strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill, + strokeWidth: this.config.quadrantInternalBorderStrokeWidth, + x1: quadrantLeft + quadrantHalfWidth, + y1: quadrantTop + halfExternalBorderWidth, + x2: quadrantLeft + quadrantHalfWidth, + y2: quadrantTop + quadrantHeight - halfExternalBorderWidth, + }, + // horizontal inner border + { + strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill, + strokeWidth: this.config.quadrantInternalBorderStrokeWidth, + x1: quadrantLeft + halfExternalBorderWidth, + y1: quadrantTop + quadrantHalfHeight, + x2: quadrantLeft + quadrantWidth - halfExternalBorderWidth, + y2: quadrantTop + quadrantHalfHeight, + }, + ]; + + const retVal: QuadrantBuildType = { points, quadrants, axisLabels, + borderLines, }; + + if (showTitle) { + retVal.title = { + text: this.config.titleText, + fill: this.themeConfig.quadrantTitleFill, + fontSize: this.config.titleFontSize, + horizontalPos: 'top', + verticalPos: 'center', + rotation: 0, + y: this.config.titlePadding, + x: this.config.chartWidth / 2, + }; + } + + return retVal; } } diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.ts index 630d6011c..53e3262fb 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.ts @@ -24,78 +24,73 @@ type LexTextObj = { text: string; type: 'text' | 'markdown' }; const quadrantBuilder = new QuadrantBuilder(); function setQuadrant1Text(textObj: LexTextObj) { - quadrantBuilder.quadrant1Text = textSanitizer(textObj.text); + quadrantBuilder.setConfig({ quadrant1Text: textSanitizer(textObj.text) }); } function setQuadrant2Text(textObj: LexTextObj) { - quadrantBuilder.quadrant2Text = textSanitizer(textObj.text); + quadrantBuilder.setConfig({ quadrant2Text: textSanitizer(textObj.text) }); } function setQuadrant3Text(textObj: LexTextObj) { - quadrantBuilder.quadrant3Text = textSanitizer(textObj.text); + quadrantBuilder.setConfig({ quadrant3Text: textSanitizer(textObj.text) }); } function setQuadrant4Text(textObj: LexTextObj) { - quadrantBuilder.quadrant4Text = textSanitizer(textObj.text); + quadrantBuilder.setConfig({ quadrant4Text: textSanitizer(textObj.text) }); } function setXAxisLeftText(textObj: LexTextObj) { - quadrantBuilder.xAxisLeftText = textSanitizer(textObj.text); + quadrantBuilder.setConfig({ xAxisLeftText: textSanitizer(textObj.text) }); } function setXAxisRightText(textObj: LexTextObj) { - quadrantBuilder.xAxisRightText = textSanitizer(textObj.text); + quadrantBuilder.setConfig({ xAxisRightText: textSanitizer(textObj.text) }); } function setYAxisTopText(textObj: LexTextObj) { - quadrantBuilder.yAxisTopText = textSanitizer(textObj.text); + quadrantBuilder.setConfig({ yAxisTopText: textSanitizer(textObj.text) }); } function setYAxisBottomText(textObj: LexTextObj) { - quadrantBuilder.yAxisBottomText = textSanitizer(textObj.text); + quadrantBuilder.setConfig({ yAxisBottomText: textSanitizer(textObj.text) }); } -function addPoints(textObj: LexTextObj, x: number, y: number) { +function addPoint(textObj: LexTextObj, x: number, y: number) { quadrantBuilder.addPoints([{ x, y, text: textSanitizer(textObj.text) }]); } function setWidth(width: number) { - quadrantBuilder.totalWidth = width; + quadrantBuilder.setConfig({ chartWidth: width }); } function setHeight(height: number) { - quadrantBuilder.totalHeight = height; + quadrantBuilder.setConfig({ chartHeight: height }); } function getQuadrantData() { const config = configApi.getConfig(); const { themeVariables, quadrantChart: quadrantChartConfig } = config; - quadrantBuilder.quadrant1Fill = themeVariables.quadrant1Fill; - quadrantBuilder.quadrant2Fill = themeVariables.quadrant2Fill; - quadrantBuilder.quadrant3Fill = themeVariables.quadrant3Fill; - quadrantBuilder.quadrant4Fill = themeVariables.quadrant4Fill; - quadrantBuilder.quadrant1TextFill = themeVariables.quadrant1TextFill; - quadrantBuilder.quadrant2TextFill = themeVariables.quadrant2TextFill; - quadrantBuilder.quadrant3TextFill = themeVariables.quadrant3TextFill; - quadrantBuilder.quadrant4TextFill = themeVariables.quadrant4TextFill; - quadrantBuilder.pointFill = themeVariables.quadrantPointFill; - quadrantBuilder.pointTextFill = themeVariables.quadrantPointTextFill; - quadrantBuilder.xAxisTextFill = themeVariables.quadrantXAxisTextFill; - quadrantBuilder.yAxisTextFill = themeVariables.quadrantYAxisTextFill; if (quadrantChartConfig) { - quadrantBuilder.quadrantPadding = quadrantChartConfig.quadrantPadding; - quadrantBuilder.xAxisLabelPadding = quadrantChartConfig.xAxisLabelPadding; - quadrantBuilder.yAxisLabelPadding = quadrantChartConfig.yAxisLabelPadding; - quadrantBuilder.xAxisLabelFontSize = quadrantChartConfig.xAxisLabelFontSize; - quadrantBuilder.yAxisLabelFontSize = quadrantChartConfig.yAxisLabelFontSize; - quadrantBuilder.quadrantLabelFontSize = quadrantChartConfig.quadrantLabelFontSize; - quadrantBuilder.quadrantTextTopPadding = quadrantChartConfig.quadrantTextTopPadding; - quadrantBuilder.pointTextPadding = quadrantChartConfig.pointTextPadding; - quadrantBuilder.pointLabelFontSize = quadrantChartConfig.pointLabelFontSize; - quadrantBuilder.pointRadius = quadrantChartConfig.pointRadius; - quadrantBuilder.xAxisPosition = quadrantChartConfig.xAxisPosition; - quadrantBuilder.yAxisPosition = quadrantChartConfig.yAxisPosition; + quadrantBuilder.setConfig(quadrantChartConfig); } + quadrantBuilder.setThemeConfig({ + quadrant1Fill: themeVariables.quadrant1Fill, + quadrant2Fill: themeVariables.quadrant2Fill, + quadrant3Fill: themeVariables.quadrant3Fill, + quadrant4Fill: themeVariables.quadrant4Fill, + quadrant1TextFill: themeVariables.quadrant1TextFill, + quadrant2TextFill: themeVariables.quadrant2TextFill, + quadrant3TextFill: themeVariables.quadrant3TextFill, + quadrant4TextFill: themeVariables.quadrant4TextFill, + quadrantPointFill: themeVariables.quadrantPointFill, + quadrantPointTextFill: themeVariables.quadrantPointTextFill, + quadrantXAxisTextFill: themeVariables.quadrantXAxisTextFill, + quadrantYAxisTextFill: themeVariables.quadrantYAxisTextFill, + quadrantExternalBorderStrokeFill: themeVariables.quadrantExternalBorderStrokeFill, + quadrantInternalBorderStrokeFill: themeVariables.quadrantInternalBorderStrokeFill, + quadrantTitleFill: themeVariables.quadrantTitleFill, + }); + quadrantBuilder.setConfig({ titleText: getDiagramTitle() }); return quadrantBuilder.build(); } @@ -120,7 +115,7 @@ export default { setXAxisRightText, setYAxisTopText, setYAxisBottomText, - addPoints, + addPoint, getQuadrantData, parseDirective, clear, diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts index 72639ba2e..b01df3022 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts @@ -7,6 +7,7 @@ import { configureSvgSize } from '../../setupGraphViewbox.js'; import { Diagram } from '../../Diagram.js'; import { QuadrantBuildType, + QuadrantLineType, QuadrantPointType, QuadrantQuadrantsType, QuadrantTextType, @@ -29,7 +30,7 @@ export const draw = (txt: string, id: string, _version: string, diagObj: Diagram const conf = configApi.getConfig(); - log.debug('Rendering info diagram\n' + txt); + log.debug('Rendering quadrant chart\n' + txt); const securityLevel = conf.securityLevel; // Handle root and Document for when rendering in sandbox mode @@ -62,8 +63,37 @@ export const draw = (txt: string, id: string, _version: string, diagObj: Diagram const quadrantData: QuadrantBuildType = diagObj.db.getQuadrantData(); const quadrantsGroup = group.append('g').attr('class', 'quadrants'); + const borderGroup = group.append('g').attr('class', 'border'); const dataPointGroup = group.append('g').attr('class', 'data-points'); const labelGroup = group.append('g').attr('class', 'labels'); + const titleGroup = group.append('g').attr('class', 'title'); + + if (quadrantData.title) { + titleGroup + .append('text') + .attr('x', 0) + .attr('y', 0) + .attr('fill', quadrantData.title.fill) + .attr('font-size', quadrantData.title.fontSize) + .attr('dominant-baseline', getDominantBaseLine(quadrantData.title.horizontalPos)) + .attr('text-anchor', getTextAnchor(quadrantData.title.verticalPos)) + .attr('transform', getTransformation(quadrantData.title)) + .text(quadrantData.title.text); + } + + if (quadrantData.borderLines) { + borderGroup + .selectAll('line') + .data(quadrantData.borderLines) + .enter() + .append('line') + .attr('x1', (data: QuadrantLineType) => data.x1) + .attr('y1', (data: QuadrantLineType) => data.y1) + .attr('x2', (data: QuadrantLineType) => data.x2) + .attr('y2', (data: QuadrantLineType) => data.y2) + .style('stroke', (data: QuadrantLineType) => data.strokeFill) + .style('stroke-width', (data: QuadrantLineType) => data.strokeWidth); + } const quadrants = quadrantsGroup .selectAll('g.quadrant') diff --git a/packages/mermaid/src/themes/theme-base.js b/packages/mermaid/src/themes/theme-base.js index 53c5f73b6..98c740d51 100644 --- a/packages/mermaid/src/themes/theme-base.js +++ b/packages/mermaid/src/themes/theme-base.js @@ -239,6 +239,11 @@ class Theme { this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor; this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor; this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor; + this.quadrantInternalBorderStrokeFill = + this.quadrantInternalBorderStrokeFill || this.primaryBorderColor; + this.quadrantExternalBorderStrokeFill = + this.quadrantExternalBorderStrokeFill || this.secondaryBorderColor; + this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor; /* requirement-diagram */ this.requirementBackground = this.requirementBackground || this.primaryColor; diff --git a/packages/mermaid/src/themes/theme-dark.js b/packages/mermaid/src/themes/theme-dark.js index d1f5dbde6..b05308d2e 100644 --- a/packages/mermaid/src/themes/theme-dark.js +++ b/packages/mermaid/src/themes/theme-dark.js @@ -245,6 +245,11 @@ class Theme { this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor; this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor; this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor; + this.quadrantInternalBorderStrokeFill = + this.quadrantInternalBorderStrokeFill || this.primaryBorderColor; + this.quadrantExternalBorderStrokeFill = + this.quadrantExternalBorderStrokeFill || this.secondaryBorderColor; + this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor; /* class */ this.classText = this.primaryTextColor; diff --git a/packages/mermaid/src/themes/theme-default.js b/packages/mermaid/src/themes/theme-default.js index f73a05c4d..326338aee 100644 --- a/packages/mermaid/src/themes/theme-default.js +++ b/packages/mermaid/src/themes/theme-default.js @@ -266,6 +266,11 @@ class Theme { this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor; this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor; this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor; + this.quadrantInternalBorderStrokeFill = + this.quadrantInternalBorderStrokeFill || this.primaryBorderColor; + this.quadrantExternalBorderStrokeFill = + this.quadrantExternalBorderStrokeFill || this.secondaryBorderColor; + this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor; /* requirement-diagram */ this.requirementBackground = this.requirementBackground || this.primaryColor; diff --git a/packages/mermaid/src/themes/theme-forest.js b/packages/mermaid/src/themes/theme-forest.js index f3e41adec..9dda643ff 100644 --- a/packages/mermaid/src/themes/theme-forest.js +++ b/packages/mermaid/src/themes/theme-forest.js @@ -234,6 +234,11 @@ class Theme { this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor; this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor; this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor; + this.quadrantInternalBorderStrokeFill = + this.quadrantInternalBorderStrokeFill || this.primaryBorderColor; + this.quadrantExternalBorderStrokeFill = + this.quadrantExternalBorderStrokeFill || this.secondaryBorderColor; + this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor; /* requirement-diagram */ this.requirementBackground = this.requirementBackground || this.primaryColor; diff --git a/packages/mermaid/src/themes/theme-neutral.js b/packages/mermaid/src/themes/theme-neutral.js index f240404a7..43d0b61b5 100644 --- a/packages/mermaid/src/themes/theme-neutral.js +++ b/packages/mermaid/src/themes/theme-neutral.js @@ -265,6 +265,11 @@ class Theme { this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor; this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor; this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor; + this.quadrantInternalBorderStrokeFill = + this.quadrantInternalBorderStrokeFill || this.primaryBorderColor; + this.quadrantExternalBorderStrokeFill = + this.quadrantExternalBorderStrokeFill || this.secondaryBorderColor; + this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor; /* requirement-diagram */ this.requirementBackground = this.requirementBackground || this.primaryColor; From fe9c109837007a609aef4ed7d03f5c4bc40d09b3 Mon Sep 17 00:00:00 2001 From: Subhash Halder <halder.subhash@gmail.com> Date: Fri, 12 May 2023 17:09:14 +0530 Subject: [PATCH 101/255] Fixed some parser issue and added test cases for the parser --- .../quadrant-chart/parser/quadrant.jison | 30 +- .../parser/quadrant.jison.spec.ts | 298 ++++++++++++++++++ 2 files changed, 314 insertions(+), 14 deletions(-) create mode 100644 packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts diff --git a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison index 67c47cb13..6967deb26 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison +++ b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison @@ -42,13 +42,13 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multiline");} <acc_descr_multiline>[\}] { this.popState(); } <acc_descr_multiline>[^\}]* return "acc_descr_multiline_value"; -\s*"x-axis"\s* return 'X-AXIS'; -\s*"y-axis"\s* return 'Y-AXIS'; -\s*\-\-+\>[^(\r?\n)\s]* return 'AXIS-TEXT-DELIMITER' -\s*"quadrant-1"\s* return 'QUADRANT_1'; -\s*"quadrant-2"\s* return 'QUADRANT_2'; -\s*"quadrant-3"\s* return 'QUADRANT_3'; -\s*"quadrant-4"\s* return 'QUADRANT_4'; +" "*"x-axis"" "* return 'X-AXIS'; +" "*"y-axis"" "* return 'Y-AXIS'; +" "*\-\-+\>" "* return 'AXIS-TEXT-DELIMITER' +" "*"quadrant-1"" "* return 'QUADRANT_1'; +" "*"quadrant-2"" "* return 'QUADRANT_2'; +" "*"quadrant-3"" "* return 'QUADRANT_3'; +" "*"quadrant-4"" "* return 'QUADRANT_4'; ["][`] { this.begin("md_string");} <md_string>[^`"]+ { return "MD_STR";} @@ -59,13 +59,12 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multiline");} \s*\:\s*\[\s* {this.begin("point_start"); return 'point_start';} <point_start>(1)|(0(.\d+)?) {this.begin('point_x'); return 'point_x';} -<point_start>\s*\] {this.popState();} +<point_start>\s*\]" "* {this.popState();} <point_x>\s*\,\s* {this.popState(); this.begin('point_y');} <point_y>(1)|(0(.\d+)?) {this.popState(); return 'point_y';} -"quadrantChart"\s* return 'QUADRANT'; +" "*"quadrantChart"" "* return 'QUADRANT'; -\[[0-1].?[0-9]{5}\] return 'POINT_VALUE' [A-Za-z]+ return 'ALPHA'; ":" return 'COLON'; \+ return 'PLUS'; @@ -92,6 +91,7 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multiline");} start : eol start + | SPACE start | directive start | QUADRANT document ; @@ -102,11 +102,12 @@ document ; line - : statement eol { $$ = $1 } + : statement eol ; statement : + | SPACE statement | axisDetails | quadrantDetails | points @@ -118,7 +119,8 @@ statement ; points - : text point_start point_x point_y {yy.addPoint($1, $3, $4);}; + : text point_start point_x point_y {yy.addPoint($1, $3, $4);} + ; axisDetails : X-AXIS text AXIS-TEXT-DELIMITER text {yy.setXAxisLeftText($2); yy.setXAxisRightText($4);} @@ -160,10 +162,10 @@ argDirective ; closeDirective - : close_directive { yy.parseDirective('}%%', 'close_directive', 'pie'); } + : close_directive { yy.parseDirective('}%%', 'close_directive', 'quadrantChart'); } ; -text: textNoTagsToken +text: alphaNumToken { $$={text:$1, type: 'text'};} | text textNoTagsToken { $$={text:$1.text+''+$2, type: $1.type};} diff --git a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts new file mode 100644 index 000000000..e6068d71e --- /dev/null +++ b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts @@ -0,0 +1,298 @@ +// @ts-ignore +import { parser } from './quadrant.jison'; +import { Mock, vi } from 'vitest'; + +const parserFnConstructor = (str: string) => { + return () => { + parser.parse(str); + }; +}; + +const mockDB: Record<string, Mock<any, any>> = { + setQuadrant1Text: vi.fn(), + setQuadrant2Text: vi.fn(), + setQuadrant3Text: vi.fn(), + setQuadrant4Text: vi.fn(), + setXAxisLeftText: vi.fn(), + setXAxisRightText: vi.fn(), + setYAxisTopText: vi.fn(), + setYAxisBottomText: vi.fn(), + setDiagramTitle: vi.fn(), + parseDirective: vi.fn(), + addPoint: vi.fn(), +}; + +function clearMocks() { + for (const key in mockDB) { + mockDB[key].mockRestore(); + } +} + +describe('Testing quadrantChart jison file', () => { + beforeEach(() => { + parser.yy = mockDB; + clearMocks(); + }); + + it('should throw error if quadrantChart text is not there', () => { + const str = 'quadrant-1 do'; + expect(parserFnConstructor(str)).toThrow(); + }); + + it('should not throw error if only quadrantChart is there', () => { + const str = 'quadrantChart'; + expect(parserFnConstructor(str)).not.toThrow(); + }); + + it('should be able to parse directive', () => { + let str = + '%%{init: {"quadrantChart": {"chartWidth": 600, "chartHeight": 600} } }%% \n quadrantChart'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.parseDirective.mock.calls[0]).toEqual(['%%{', 'open_directive']); + expect(mockDB.parseDirective.mock.calls[1]).toEqual(['init', 'type_directive']); + expect(mockDB.parseDirective.mock.calls[2]).toEqual([ + '{"quadrantChart": {"chartWidth": 600, "chartHeight": 600} }', + 'arg_directive', + ]); + expect(mockDB.parseDirective.mock.calls[3]).toEqual([ + '}%%', + 'close_directive', + 'quadrantChart', + ]); + }); + + it('should be able to parse xAxis text', () => { + let str = 'quadrantChart\nx-axis urgent --> not urgent'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setXAxisLeftText).toHaveBeenCalledWith({ text: 'urgent', type: 'text' }); + expect(mockDB.setXAxisRightText).toHaveBeenCalledWith({ text: 'not urgent', type: 'text' }); + + clearMocks(); + str = 'quadrantChart\n x-AxIs Urgent --> Not Urgent \n'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setXAxisLeftText).toHaveBeenCalledWith({ text: 'Urgent', type: 'text' }); + expect(mockDB.setXAxisRightText).toHaveBeenCalledWith({ text: 'Not Urgent ', type: 'text' }); + + clearMocks(); + str = + 'quadrantChart\n x-AxIs "Urgent(* +=[❤" --> "Not Urgent (* +=[❤"\n '; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setXAxisLeftText).toHaveBeenCalledWith({ text: 'Urgent(* +=[❤', type: 'text' }); + expect(mockDB.setXAxisRightText).toHaveBeenCalledWith({ + text: 'Not Urgent (* +=[❤', + type: 'text', + }); + + clearMocks(); + str = 'quadrantChart\n x-AxIs "Urgent(* +=[❤"'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setXAxisLeftText).toHaveBeenCalledWith({ text: 'Urgent(* +=[❤', type: 'text' }); + expect(mockDB.setXAxisRightText).not.toHaveBeenCalled(); + + clearMocks(); + str = 'quadrantChart\n x-AxIs "Urgent(* +=[❤" --> '; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setXAxisLeftText).toHaveBeenCalledWith({ + text: 'Urgent(* +=[❤ --> ', + type: 'text', + }); + expect(mockDB.setXAxisRightText).not.toHaveBeenCalled(); + }); + + it('should be able to parse yAxis text', () => { + let str = 'quadrantChart\ny-axis urgent --> not urgent'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setYAxisBottomText).toHaveBeenCalledWith({ text: 'urgent', type: 'text' }); + expect(mockDB.setYAxisTopText).toHaveBeenCalledWith({ text: 'not urgent', type: 'text' }); + + clearMocks(); + str = 'quadrantChart\n y-AxIs Urgent --> Not Urgent \n'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setYAxisBottomText).toHaveBeenCalledWith({ text: 'Urgent', type: 'text' }); + expect(mockDB.setYAxisTopText).toHaveBeenCalledWith({ text: 'Not Urgent ', type: 'text' }); + + clearMocks(); + str = + 'quadrantChart\n Y-AxIs "Urgent(* +=[❤" --> "Not Urgent (* +=[❤"\n '; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setYAxisBottomText).toHaveBeenCalledWith({ text: 'Urgent(* +=[❤', type: 'text' }); + expect(mockDB.setYAxisTopText).toHaveBeenCalledWith({ + text: 'Not Urgent (* +=[❤', + type: 'text', + }); + + clearMocks(); + str = 'quadrantChart\n y-AxIs "Urgent(* +=[❤"'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setYAxisBottomText).toHaveBeenCalledWith({ text: 'Urgent(* +=[❤', type: 'text' }); + expect(mockDB.setYAxisTopText).not.toHaveBeenCalled(); + + clearMocks(); + str = 'quadrantChart\n y-AxIs "Urgent(* +=[❤" --> '; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setYAxisBottomText).toHaveBeenCalledWith({ + text: 'Urgent(* +=[❤ --> ', + type: 'text', + }); + expect(mockDB.setYAxisTopText).not.toHaveBeenCalled(); + }); + + it('should be able to parse quadrant1 text', () => { + let str = 'quadrantChart\nquadrant-1 Plan'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setQuadrant1Text).toHaveBeenCalledWith({ text: 'Plan', type: 'text' }); + + clearMocks(); + str = 'QuadRantChart \n QuaDrant-1 Plan '; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setQuadrant1Text).toHaveBeenCalledWith({ text: 'Plan ', type: 'text' }); + + clearMocks(); + str = 'QuadRantChart \n QuaDrant-1 "Plan(* +=[❤"'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setQuadrant1Text).toHaveBeenCalledWith({ text: 'Plan(* +=[❤', type: 'text' }); + }); + + it('should be able to parse quadrant2 text', () => { + let str = 'quadrantChart\nquadrant-2 do'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setQuadrant2Text).toHaveBeenCalledWith({ text: 'do', type: 'text' }); + + clearMocks(); + str = 'QuadRantChart \n QuaDrant-2 Do '; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setQuadrant2Text).toHaveBeenCalledWith({ text: 'Do ', type: 'text' }); + + clearMocks(); + str = 'QuadRantChart \n QuaDrant-2 "Do(* +=[❤"'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setQuadrant2Text).toHaveBeenCalledWith({ text: 'Do(* +=[❤', type: 'text' }); + }); + + it('should be able to parse quadrant3 text', () => { + let str = 'quadrantChart\nquadrant-3 deligate'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setQuadrant3Text).toHaveBeenCalledWith({ text: 'deligate', type: 'text' }); + + clearMocks(); + str = 'QuadRantChart \n QuaDrant-3 Deligate '; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setQuadrant3Text).toHaveBeenCalledWith({ text: 'Deligate ', type: 'text' }); + + clearMocks(); + str = 'QuadRantChart \n QuaDrant-3 "Deligate(* +=[❤"'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setQuadrant3Text).toHaveBeenCalledWith({ text: 'Deligate(* +=[❤', type: 'text' }); + }); + + it('should be able to parse quadrant4 text', () => { + let str = 'quadrantChart\nquadrant-4 delete'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setQuadrant4Text).toHaveBeenCalledWith({ text: 'delete', type: 'text' }); + + clearMocks(); + str = 'QuadRantChart \n QuaDrant-4 Delete '; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setQuadrant4Text).toHaveBeenCalledWith({ text: 'Delete ', type: 'text' }); + + clearMocks(); + str = 'QuadRantChart \n QuaDrant-4 "Delete(* +=[❤"'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setQuadrant4Text).toHaveBeenCalledWith({ text: 'Delete(* +=[❤', type: 'text' }); + }); + + it('should be able to parse title', () => { + let str = 'quadrantChart\ntitle this is title'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setDiagramTitle).toHaveBeenCalledWith('this is title'); + + clearMocks(); + str = 'QuadRantChart \n TiTle this Is title '; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setDiagramTitle).toHaveBeenCalledWith('this Is title'); + + clearMocks(); + str = 'QuadRantChart \n title "this is title (* +=[❤"'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.setDiagramTitle).toHaveBeenCalledWith('"this is title (* +=[❤"'); + }); + + it('should be able to parse points', () => { + let str = 'quadrantChart\npoint1: [0.1, 0.4]'; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.addPoint).toHaveBeenCalledWith({ text: 'point1', type: 'text' }, '0.1', '0.4'); + + clearMocks(); + str = 'QuadRantChart \n Point1 : [0.1, 0.4] '; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.addPoint).toHaveBeenCalledWith({ text: 'Point1', type: 'text' }, '0.1', '0.4'); + + clearMocks(); + str = 'QuadRantChart \n "Point1 : (* +=[❤": [1, 0] '; + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.addPoint).toHaveBeenCalledWith( + { text: 'Point1 : (* +=[❤', type: 'text' }, + '1', + '0' + ); + + clearMocks(); + str = 'QuadRantChart \n Point1 : [1.2, 0.4] '; + expect(parserFnConstructor(str)).toThrow(); + }); + + it('should be able to parse the whole chart', () => { + let str = `%%{init: {"quadrantChart": {"chartWidth": 600, "chartHeight": 600} } }%% + quadrantChart + title Analytics and Business Intelligence Platforms + x-axis "Completeness of Vision ❤" --> "x-axis-2" + y-axis Ability to Execute --> "y-axis-2" + quadrant-1 Leaders + quadrant-2 Challengers + quadrant-3 Niche + quadrant-4 Visionaries + Microsoft: [0.75, 0.75] + Salesforce: [0.55, 0.60] + IBM: [0.51, 0.40] + Incorta: [0.20, 0.30]`; + + expect(parserFnConstructor(str)).not.toThrow(); + expect(mockDB.parseDirective.mock.calls[0]).toEqual(['%%{', 'open_directive']); + expect(mockDB.parseDirective.mock.calls[1]).toEqual(['init', 'type_directive']); + expect(mockDB.parseDirective.mock.calls[2]).toEqual([ + '{"quadrantChart": {"chartWidth": 600, "chartHeight": 600} }', + 'arg_directive', + ]); + expect(mockDB.parseDirective.mock.calls[3]).toEqual([ + '}%%', + 'close_directive', + 'quadrantChart', + ]); + expect(mockDB.setXAxisLeftText).toHaveBeenCalledWith({ + text: 'Completeness of Vision ❤', + type: 'text', + }); + expect(mockDB.setXAxisRightText).toHaveBeenCalledWith({ text: 'x-axis-2', type: 'text' }); + expect(mockDB.setYAxisTopText).toHaveBeenCalledWith({ text: 'y-axis-2', type: 'text' }); + expect(mockDB.setYAxisBottomText).toHaveBeenCalledWith({ + text: 'Ability to Execute', + type: 'text', + }); + expect(mockDB.setQuadrant1Text).toHaveBeenCalledWith({ text: 'Leaders', type: 'text' }); + expect(mockDB.setQuadrant2Text).toHaveBeenCalledWith({ text: 'Challengers', type: 'text' }); + expect(mockDB.setQuadrant3Text).toHaveBeenCalledWith({ text: 'Niche', type: 'text' }); + expect(mockDB.setQuadrant4Text).toHaveBeenCalledWith({ text: 'Visionaries', type: 'text' }); + expect(mockDB.addPoint).toHaveBeenCalledWith( + { text: 'Microsoft', type: 'text' }, + '0.75', + '0.75' + ); + expect(mockDB.addPoint).toHaveBeenCalledWith( + { text: 'Salesforce', type: 'text' }, + '0.55', + '0.60' + ); + expect(mockDB.addPoint).toHaveBeenCalledWith({ text: 'IBM', type: 'text' }, '0.51', '0.40'); + expect(mockDB.addPoint).toHaveBeenCalledWith({ text: 'Incorta', type: 'text' }, '0.20', '0.30'); + }); +}); From 816800adcd1513f4a60b631850724ef35cd1f89c Mon Sep 17 00:00:00 2001 From: Subhash Halder <halder.subhash@gmail.com> Date: Fri, 12 May 2023 19:32:39 +0530 Subject: [PATCH 102/255] Restructured the build function and addressed more review comment --- .../quadrant-chart/parser/quadrant.jison | 5 - .../parser/quadrant.jison.spec.ts | 6 +- .../quadrant-chart/quadrantBuilder.ts | 297 ++++++++++++------ .../src/diagrams/quadrant-chart/quadrantDb.ts | 18 +- .../quadrant-chart/quadrantRenderer.ts | 5 +- packages/mermaid/src/themes/theme-base.js | 14 +- packages/mermaid/src/themes/theme-dark.js | 14 +- packages/mermaid/src/themes/theme-default.js | 14 +- packages/mermaid/src/themes/theme-forest.js | 14 +- packages/mermaid/src/themes/theme-neutral.js | 14 +- 10 files changed, 252 insertions(+), 149 deletions(-) diff --git a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison index 6967deb26..555eea152 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison +++ b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison @@ -1,8 +1,3 @@ -/** mermaid - * https://knsv.github.io/mermaid - * (c) 2015 Knut Sveidqvist - * MIT license. - */ %lex %options case-insensitive diff --git a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts index e6068d71e..f91858c72 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts @@ -1,4 +1,4 @@ -// @ts-ignore +// @ts-ignore: TODO Fix ts errors import { parser } from './quadrant.jison'; import { Mock, vi } from 'vitest'; @@ -45,7 +45,7 @@ describe('Testing quadrantChart jison file', () => { }); it('should be able to parse directive', () => { - let str = + const str = '%%{init: {"quadrantChart": {"chartWidth": 600, "chartHeight": 600} } }%% \n quadrantChart'; expect(parserFnConstructor(str)).not.toThrow(); expect(mockDB.parseDirective.mock.calls[0]).toEqual(['%%{', 'open_directive']); @@ -242,7 +242,7 @@ describe('Testing quadrantChart jison file', () => { }); it('should be able to parse the whole chart', () => { - let str = `%%{init: {"quadrantChart": {"chartWidth": 600, "chartHeight": 600} } }%% + const str = `%%{init: {"quadrantChart": {"chartWidth": 600, "chartHeight": 600} } }%% quadrantChart title Analytics and Business Intelligence Platforms x-axis "Completeness of Vision ❤" --> "x-axis-2" diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts index 231af941b..95b8c6679 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts @@ -2,35 +2,45 @@ import { scaleLinear } from 'd3'; import { log } from '../../logger.js'; import { QuadrantChartConfig } from '../../config.type.js'; +import defaultConfig from '../../defaultConfig.js'; +import { getThemeVariables } from '../../themes/theme-default.js'; -export interface QuadrantPointInputType { - x: number; - y: number; - text: string; -} +const defaultThemeVariables = getThemeVariables(); export type TextVerticalPos = 'left' | 'center' | 'right'; export type TextHorizontalPos = 'top' | 'middle' | 'bottom'; -export interface QuadrantTextType { - text: string; - fill: string; +export interface Point { x: number; y: number; +} + +export interface QuadrantPointInputType extends Point { + text: string; +} + +export interface QuadrantTextType extends Point { + text: string; + fill: string; verticalPos: TextVerticalPos; horizontalPos: TextHorizontalPos; fontSize: number; rotation: number; } -export interface QuadrantPointType { - x: number; - y: number; +export interface QuadrantPointType extends Point { fill: string; radius: number; text: QuadrantTextType; } +export interface QuadrantQuadrantsType extends Point { + text: QuadrantTextType; + width: number; + height: number; + fill: string; +} + export interface QuadrantLineType { strokeWidth: number; strokeFill: string; @@ -40,15 +50,6 @@ export interface QuadrantLineType { y2: number; } -export interface QuadrantQuadrantsType { - text: QuadrantTextType; - x: number; - y: number; - width: number; - height: number; - fill: string; -} - export interface QuadrantBuildType { points: QuadrantPointType[]; quadrants: QuadrantQuadrantsType[]; @@ -57,7 +58,7 @@ export interface QuadrantBuildType { borderLines?: QuadrantLineType[]; } -export interface QuadrantBuilderConfig extends QuadrantChartConfig { +export interface quadrantBuilderData { titleText: string; quadrant1Text: string; quadrant2Text: string; @@ -68,6 +69,9 @@ export interface QuadrantBuilderConfig extends QuadrantChartConfig { yAxisBottomText: string; yAxisTopText: string; points: QuadrantPointInputType[]; +} + +export interface QuadrantBuilderConfig extends QuadrantChartConfig { showXAxis: boolean; showYAxis: boolean; showTitle: boolean; @@ -91,16 +95,40 @@ export interface QuadrantBuilderThemeConfig { quadrantExternalBorderStrokeFill: string; } +interface CalculateSpaceData { + xAxisSpace: { + top: number; + bottom: number; + }; + yAxisSpace: { + left: number; + right: number; + }; + titleSpace: { + top: number; + }; + quadrantSpace: { + quadrantLeft: number; + quadrantTop: number; + quadrantWidth: number; + quadrantHalfWidth: number; + quadrantHeight: number; + quadrantHalfHeight: number; + }; +} + export class QuadrantBuilder { private config: QuadrantBuilderConfig; private themeConfig: QuadrantBuilderThemeConfig; + private data: quadrantBuilderData; constructor() { this.config = this.getDefaultConfig(); this.themeConfig = this.getDefaultThemeConfig(); + this.data = this.getDefaultData(); } - getDefaultConfig(): QuadrantBuilderConfig { + getDefaultData(): quadrantBuilderData { return { titleText: '', quadrant1Text: '', @@ -112,58 +140,70 @@ export class QuadrantBuilder { yAxisBottomText: '', yAxisTopText: '', points: [], + }; + } + + getDefaultConfig(): QuadrantBuilderConfig { + return { showXAxis: true, showYAxis: true, showTitle: true, - chartHeight: 500, - chartWidth: 500, - titlePadding: 5, - titleFontSize: 20, - quadrantPadding: 5, - xAxisLabelPadding: 5, - yAxisLabelPadding: 5, - xAxisLabelFontSize: 16, - yAxisLabelFontSize: 16, - quadrantLabelFontSize: 16, - quadrantTextTopPadding: 5, - pointTextPadding: 5, - pointLabelFontSize: 12, - pointRadius: 5, - xAxisPosition: 'top', - yAxisPosition: 'left', - quadrantInternalBorderStrokeWidth: 2, - quadrantExternalBorderStrokeWidth: 3, + chartHeight: defaultConfig.quadrantChart?.chartWidth || 500, + chartWidth: defaultConfig.quadrantChart?.chartHeight || 500, + titlePadding: defaultConfig.quadrantChart?.titlePadding || 5, + titleFontSize: defaultConfig.quadrantChart?.titleFontSize || 20, + quadrantPadding: defaultConfig.quadrantChart?.quadrantPadding || 5, + xAxisLabelPadding: defaultConfig.quadrantChart?.xAxisLabelPadding || 5, + yAxisLabelPadding: defaultConfig.quadrantChart?.yAxisLabelPadding || 5, + xAxisLabelFontSize: defaultConfig.quadrantChart?.xAxisLabelFontSize || 16, + yAxisLabelFontSize: defaultConfig.quadrantChart?.yAxisLabelFontSize || 16, + quadrantLabelFontSize: defaultConfig.quadrantChart?.quadrantLabelFontSize || 16, + quadrantTextTopPadding: defaultConfig.quadrantChart?.quadrantTextTopPadding || 5, + pointTextPadding: defaultConfig.quadrantChart?.pointTextPadding || 5, + pointLabelFontSize: defaultConfig.quadrantChart?.pointLabelFontSize || 12, + pointRadius: defaultConfig.quadrantChart?.pointRadius || 5, + xAxisPosition: defaultConfig.quadrantChart?.xAxisPosition || 'top', + yAxisPosition: defaultConfig.quadrantChart?.yAxisPosition || 'left', + quadrantInternalBorderStrokeWidth: + defaultConfig.quadrantChart?.quadrantInternalBorderStrokeWidth || 1, + quadrantExternalBorderStrokeWidth: + defaultConfig.quadrantChart?.quadrantExternalBorderStrokeWidth || 2, }; } getDefaultThemeConfig(): QuadrantBuilderThemeConfig { return { - quadrant1Fill: '#8bc2f3', - quadrant2Fill: '#faebd7', - quadrant3Fill: '#00ffff', - quadrant4Fill: '#f0ffff', - quadrant1TextFill: '#93690e', - quadrant2TextFill: '#8644ff', - quadrant3TextFill: '#e3004d', - quadrant4TextFill: '#000000', - quadrantPointFill: '#60B19C', - quadrantPointTextFill: '#0000ff', - quadrantXAxisTextFill: '#000000', - quadrantYAxisTextFill: '#000000', - quadrantTitleFill: '#000000', - quadrantInternalBorderStrokeFill: '#000000', - quadrantExternalBorderStrokeFill: '#000000', + quadrant1Fill: defaultThemeVariables.quadrant1Fill, + quadrant2Fill: defaultThemeVariables.quadrant2Fill, + quadrant3Fill: defaultThemeVariables.quadrant3Fill, + quadrant4Fill: defaultThemeVariables.quadrant4Fill, + quadrant1TextFill: defaultThemeVariables.quadrant1TextFill, + quadrant2TextFill: defaultThemeVariables.quadrant2TextFill, + quadrant3TextFill: defaultThemeVariables.quadrant3TextFill, + quadrant4TextFill: defaultThemeVariables.quadrant4TextFill, + quadrantPointFill: defaultThemeVariables.quadrantPointFill, + quadrantPointTextFill: defaultThemeVariables.quadrantPointTextFill, + quadrantXAxisTextFill: defaultThemeVariables.quadrantXAxisTextFill, + quadrantYAxisTextFill: defaultThemeVariables.quadrantYAxisTextFill, + quadrantTitleFill: defaultThemeVariables.quadrantTitleFill, + quadrantInternalBorderStrokeFill: defaultThemeVariables.quadrantInternalBorderStrokeFill, + quadrantExternalBorderStrokeFill: defaultThemeVariables.quadrantExternalBorderStrokeFill, }; } clear() { this.config = this.getDefaultConfig(); this.themeConfig = this.getDefaultThemeConfig(); + this.data = this.getDefaultData(); log.info('clear called'); } + setData(data: Partial<quadrantBuilderData>) { + this.data = { ...this.data, ...data }; + } + addPoints(points: QuadrantPointInputType[]) { - this.config.points = [...points, ...this.config.points]; + this.data.points = [...points, ...this.data.points]; } setConfig(config: Partial<QuadrantBuilderConfig>) { @@ -176,20 +216,12 @@ export class QuadrantBuilder { this.themeConfig = { ...this.themeConfig, ...themeConfig }; } - build(): QuadrantBuildType { - const showXAxis = - this.config.showXAxis && (this.config.xAxisLeftText || this.config.xAxisRightText); - const showYAxis = - this.config.showYAxis && (this.config.yAxisTopText || this.config.yAxisBottomText); - const showTitle = this.config.showTitle && this.config.titleText; - - const halfExternalBorderWidth = this.config.quadrantExternalBorderStrokeWidth / 2; - const halfInternalBorderWidth = this.config.quadrantInternalBorderStrokeWidth / 2; - - const xAxisPosition = this.config.points.length > 0 ? 'bottom' : this.config.xAxisPosition; - - const drawAxisLabelInMiddle = this.config.points.length === 0; - + calculateSpace( + xAxisPosition: typeof this.config.xAxisPosition, + showXAxis: boolean, + showYAxis: boolean, + showTitle: boolean + ): CalculateSpaceData { const xAxisSpaceCalculation = this.config.xAxisLabelPadding * 2 + this.config.xAxisLabelFontSize; const xAxisSpace = { @@ -222,12 +254,44 @@ export class QuadrantBuilder { const quadrantHalfWidth = quadrantWidth / 2; const quadrantHalfHeight = quadrantHeight / 2; + const quadrantSpace = { + quadrantLeft, + quadrantTop, + quadrantWidth, + quadrantHalfWidth, + quadrantHeight, + quadrantHalfHeight, + }; + return { + xAxisSpace, + yAxisSpace, + titleSpace, + quadrantSpace, + }; + } + + getAxisLabels( + xAxisPosition: typeof this.config.xAxisPosition, + showXAxis: boolean, + showYAxis: boolean, + spaceData: CalculateSpaceData + ): QuadrantTextType[] { + const { quadrantSpace, titleSpace } = spaceData; + const { + quadrantHalfHeight, + quadrantHeight, + quadrantLeft, + quadrantHalfWidth, + quadrantTop, + quadrantWidth, + } = quadrantSpace; + const drawAxisLabelInMiddle = this.data.points.length === 0; const axisLabels: QuadrantTextType[] = []; - if (this.config.xAxisLeftText && showXAxis) { + if (this.data.xAxisLeftText && showXAxis) { axisLabels.push({ - text: this.config.xAxisLeftText, + text: this.data.xAxisLeftText, fill: this.themeConfig.quadrantXAxisTextFill, x: quadrantLeft + (drawAxisLabelInMiddle ? quadrantHalfWidth / 2 : 0), y: @@ -240,9 +304,9 @@ export class QuadrantBuilder { rotation: 0, }); } - if (this.config.xAxisRightText && showXAxis) { + if (this.data.xAxisRightText && showXAxis) { axisLabels.push({ - text: this.config.xAxisRightText, + text: this.data.xAxisRightText, fill: this.themeConfig.quadrantXAxisTextFill, x: quadrantLeft + quadrantHalfWidth + (drawAxisLabelInMiddle ? quadrantHalfWidth / 2 : 0), y: @@ -256,9 +320,9 @@ export class QuadrantBuilder { }); } - if (this.config.yAxisBottomText && showYAxis) { + if (this.data.yAxisBottomText && showYAxis) { axisLabels.push({ - text: this.config.yAxisBottomText, + text: this.data.yAxisBottomText, fill: this.themeConfig.quadrantYAxisTextFill, x: this.config.yAxisPosition === 'left' @@ -271,9 +335,9 @@ export class QuadrantBuilder { rotation: -90, }); } - if (this.config.yAxisTopText && showYAxis) { + if (this.data.yAxisTopText && showYAxis) { axisLabels.push({ - text: this.config.yAxisTopText, + text: this.data.yAxisTopText, fill: this.themeConfig.quadrantYAxisTextFill, x: this.config.yAxisPosition === 'left' @@ -286,11 +350,18 @@ export class QuadrantBuilder { rotation: -90, }); } + return axisLabels; + } + + getQuadrants(spaceData: CalculateSpaceData): QuadrantQuadrantsType[] { + const { quadrantSpace } = spaceData; + + const { quadrantHalfHeight, quadrantLeft, quadrantHalfWidth, quadrantTop } = quadrantSpace; const quadrants: QuadrantQuadrantsType[] = [ { text: { - text: this.config.quadrant1Text, + text: this.data.quadrant1Text, fill: this.themeConfig.quadrant1TextFill, x: 0, y: 0, @@ -307,7 +378,7 @@ export class QuadrantBuilder { }, { text: { - text: this.config.quadrant2Text, + text: this.data.quadrant2Text, fill: this.themeConfig.quadrant2TextFill, x: 0, y: 0, @@ -324,7 +395,7 @@ export class QuadrantBuilder { }, { text: { - text: this.config.quadrant3Text, + text: this.data.quadrant3Text, fill: this.themeConfig.quadrant3TextFill, x: 0, y: 0, @@ -341,7 +412,7 @@ export class QuadrantBuilder { }, { text: { - text: this.config.quadrant4Text, + text: this.data.quadrant4Text, fill: this.themeConfig.quadrant4TextFill, x: 0, y: 0, @@ -360,7 +431,7 @@ export class QuadrantBuilder { for (const quadrant of quadrants) { quadrant.text.x = quadrant.x + quadrant.width / 2; // place the text in the center of the box - if (this.config.points.length === 0) { + if (this.data.points.length === 0) { quadrant.text.y = quadrant.y + quadrant.height / 2; quadrant.text.horizontalPos = 'middle'; // place the text top of the quadrant square @@ -370,6 +441,14 @@ export class QuadrantBuilder { } } + return quadrants; + } + + getQuadrantPoints(spaceData: CalculateSpaceData): QuadrantPointType[] { + const { quadrantSpace } = spaceData; + + const { quadrantHeight, quadrantLeft, quadrantTop, quadrantWidth } = quadrantSpace; + const xAxis = scaleLinear() .domain([0, 1]) .range([quadrantLeft, quadrantWidth + quadrantLeft]); @@ -378,7 +457,7 @@ export class QuadrantBuilder { .domain([0, 1]) .range([quadrantHeight + quadrantTop, quadrantTop]); - const points: QuadrantPointType[] = this.config.points.map((point) => { + const points: QuadrantPointType[] = this.data.points.map((point) => { const props: QuadrantPointType = { x: xAxis(point.x), y: yAxis(point.y), @@ -397,6 +476,21 @@ export class QuadrantBuilder { }; return props; }); + return points; + } + + getBorders(spaceData: CalculateSpaceData): QuadrantLineType[] { + const halfExternalBorderWidth = this.config.quadrantExternalBorderStrokeWidth / 2; + const { quadrantSpace } = spaceData; + + const { + quadrantHalfHeight, + quadrantHeight, + quadrantLeft, + quadrantHalfWidth, + quadrantTop, + quadrantWidth, + } = quadrantSpace; const borderLines: QuadrantLineType[] = [ // top border @@ -454,17 +548,13 @@ export class QuadrantBuilder { y2: quadrantTop + quadrantHalfHeight, }, ]; + return borderLines; + } - const retVal: QuadrantBuildType = { - points, - quadrants, - axisLabels, - borderLines, - }; - + getTitle(showTitle: boolean): QuadrantTextType | undefined { if (showTitle) { - retVal.title = { - text: this.config.titleText, + return { + text: this.data.titleText, fill: this.themeConfig.quadrantTitleFill, fontSize: this.config.titleFontSize, horizontalPos: 'top', @@ -474,7 +564,26 @@ export class QuadrantBuilder { x: this.config.chartWidth / 2, }; } + return; + } - return retVal; + build(): QuadrantBuildType { + const showXAxis = + this.config.showXAxis && !!(this.data.xAxisLeftText || this.data.xAxisRightText); + const showYAxis = + this.config.showYAxis && !!(this.data.yAxisTopText || this.data.yAxisBottomText); + const showTitle = this.config.showTitle && !!this.data.titleText; + + const xAxisPosition = this.data.points.length > 0 ? 'bottom' : this.config.xAxisPosition; + + const calculatedSpace = this.calculateSpace(xAxisPosition, showXAxis, showYAxis, showTitle); + + return { + points: this.getQuadrantPoints(calculatedSpace), + quadrants: this.getQuadrants(calculatedSpace), + axisLabels: this.getAxisLabels(xAxisPosition, showXAxis, showYAxis, calculatedSpace), + borderLines: this.getBorders(calculatedSpace), + title: this.getTitle(showTitle), + }; } } diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.ts index 53e3262fb..c0c0f4c8a 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDb.ts @@ -24,35 +24,35 @@ type LexTextObj = { text: string; type: 'text' | 'markdown' }; const quadrantBuilder = new QuadrantBuilder(); function setQuadrant1Text(textObj: LexTextObj) { - quadrantBuilder.setConfig({ quadrant1Text: textSanitizer(textObj.text) }); + quadrantBuilder.setData({ quadrant1Text: textSanitizer(textObj.text) }); } function setQuadrant2Text(textObj: LexTextObj) { - quadrantBuilder.setConfig({ quadrant2Text: textSanitizer(textObj.text) }); + quadrantBuilder.setData({ quadrant2Text: textSanitizer(textObj.text) }); } function setQuadrant3Text(textObj: LexTextObj) { - quadrantBuilder.setConfig({ quadrant3Text: textSanitizer(textObj.text) }); + quadrantBuilder.setData({ quadrant3Text: textSanitizer(textObj.text) }); } function setQuadrant4Text(textObj: LexTextObj) { - quadrantBuilder.setConfig({ quadrant4Text: textSanitizer(textObj.text) }); + quadrantBuilder.setData({ quadrant4Text: textSanitizer(textObj.text) }); } function setXAxisLeftText(textObj: LexTextObj) { - quadrantBuilder.setConfig({ xAxisLeftText: textSanitizer(textObj.text) }); + quadrantBuilder.setData({ xAxisLeftText: textSanitizer(textObj.text) }); } function setXAxisRightText(textObj: LexTextObj) { - quadrantBuilder.setConfig({ xAxisRightText: textSanitizer(textObj.text) }); + quadrantBuilder.setData({ xAxisRightText: textSanitizer(textObj.text) }); } function setYAxisTopText(textObj: LexTextObj) { - quadrantBuilder.setConfig({ yAxisTopText: textSanitizer(textObj.text) }); + quadrantBuilder.setData({ yAxisTopText: textSanitizer(textObj.text) }); } function setYAxisBottomText(textObj: LexTextObj) { - quadrantBuilder.setConfig({ yAxisBottomText: textSanitizer(textObj.text) }); + quadrantBuilder.setData({ yAxisBottomText: textSanitizer(textObj.text) }); } function addPoint(textObj: LexTextObj, x: number, y: number) { @@ -90,7 +90,7 @@ function getQuadrantData() { quadrantInternalBorderStrokeFill: themeVariables.quadrantInternalBorderStrokeFill, quadrantTitleFill: themeVariables.quadrantTitleFill, }); - quadrantBuilder.setConfig({ titleText: getDiagramTitle() }); + quadrantBuilder.setData({ titleText: getDiagramTitle() }); return quadrantBuilder.build(); } diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts index b01df3022..955f77f54 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts @@ -2,7 +2,6 @@ import { select } from 'd3'; import * as configApi from '../../config.js'; import { log } from '../../logger.js'; - import { configureSvgSize } from '../../setupGraphViewbox.js'; import { Diagram } from '../../Diagram.js'; import { @@ -16,8 +15,8 @@ import { } from './quadrantBuilder.js'; export const draw = (txt: string, id: string, _version: string, diagObj: Diagram) => { - function getDominantBaseLine(horizintalPos: TextHorizontalPos) { - return horizintalPos === 'top' ? 'text-before-edge' : 'middle'; + function getDominantBaseLine(horizontalPos: TextHorizontalPos) { + return horizontalPos === 'top' ? 'text-before-edge' : 'middle'; } function getTextAnchor(verticalPos: TextVerticalPos) { diff --git a/packages/mermaid/src/themes/theme-base.js b/packages/mermaid/src/themes/theme-base.js index 98c740d51..495df2e41 100644 --- a/packages/mermaid/src/themes/theme-base.js +++ b/packages/mermaid/src/themes/theme-base.js @@ -222,16 +222,16 @@ class Theme { /* quadrant-graph */ this.quadrant1Fill = this.quadrant1Fill || this.primaryColor; - this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, { r: 5, g: 5, b: 5 }); - this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, { r: 10, g: 10, b: 10 }); - this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, { r: 15, g: 15, b: 15 }); + this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 }); + this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 }); + this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 }); this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor; this.quadrant2TextFill = - this.quadrant2TextFill || adjust(this.quadrant1TextFill, { r: -5, g: -5, b: -5 }); + this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 }); this.quadrant3TextFill = - this.quadrant3TextFill || adjust(this.quadrant1TextFill, { r: -10, g: -10, b: -10 }); + this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 }); this.quadrant4TextFill = - this.quadrant4TextFill || adjust(this.quadrant1TextFill, { r: -15, g: -15, b: -15 }); + this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 }); this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) @@ -242,7 +242,7 @@ class Theme { this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor; this.quadrantExternalBorderStrokeFill = - this.quadrantExternalBorderStrokeFill || this.secondaryBorderColor; + this.quadrantExternalBorderStrokeFill || this.primaryBorderColor; this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor; /* requirement-diagram */ diff --git a/packages/mermaid/src/themes/theme-dark.js b/packages/mermaid/src/themes/theme-dark.js index b05308d2e..fd083e513 100644 --- a/packages/mermaid/src/themes/theme-dark.js +++ b/packages/mermaid/src/themes/theme-dark.js @@ -228,16 +228,16 @@ class Theme { /* quadrant-graph */ this.quadrant1Fill = this.quadrant1Fill || this.primaryColor; - this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, { r: 5, g: 5, b: 5 }); - this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, { r: 10, g: 10, b: 10 }); - this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, { r: 15, g: 15, b: 15 }); + this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 }); + this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 }); + this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 }); this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor; this.quadrant2TextFill = - this.quadrant2TextFill || adjust(this.quadrant1TextFill, { r: -5, g: -5, b: -5 }); + this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 }); this.quadrant3TextFill = - this.quadrant3TextFill || adjust(this.quadrant1TextFill, { r: -10, g: -10, b: -10 }); + this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 }); this.quadrant4TextFill = - this.quadrant4TextFill || adjust(this.quadrant1TextFill, { r: -15, g: -15, b: -15 }); + this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 }); this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) @@ -248,7 +248,7 @@ class Theme { this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor; this.quadrantExternalBorderStrokeFill = - this.quadrantExternalBorderStrokeFill || this.secondaryBorderColor; + this.quadrantExternalBorderStrokeFill || this.primaryBorderColor; this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor; /* class */ diff --git a/packages/mermaid/src/themes/theme-default.js b/packages/mermaid/src/themes/theme-default.js index 326338aee..3cd6bca4f 100644 --- a/packages/mermaid/src/themes/theme-default.js +++ b/packages/mermaid/src/themes/theme-default.js @@ -249,16 +249,16 @@ class Theme { /* quadrant-graph */ this.quadrant1Fill = this.quadrant1Fill || this.primaryColor; - this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, { r: 5, g: 5, b: 5 }); - this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, { r: 10, g: 10, b: 10 }); - this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, { r: 15, g: 15, b: 15 }); + this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 }); + this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 }); + this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 }); this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor; this.quadrant2TextFill = - this.quadrant2TextFill || adjust(this.quadrant1TextFill, { r: -5, g: -5, b: -5 }); + this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 }); this.quadrant3TextFill = - this.quadrant3TextFill || adjust(this.quadrant1TextFill, { r: -10, g: -10, b: -10 }); + this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 }); this.quadrant4TextFill = - this.quadrant4TextFill || adjust(this.quadrant1TextFill, { r: -15, g: -15, b: -15 }); + this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 }); this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) @@ -269,7 +269,7 @@ class Theme { this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor; this.quadrantExternalBorderStrokeFill = - this.quadrantExternalBorderStrokeFill || this.secondaryBorderColor; + this.quadrantExternalBorderStrokeFill || this.primaryBorderColor; this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor; /* requirement-diagram */ diff --git a/packages/mermaid/src/themes/theme-forest.js b/packages/mermaid/src/themes/theme-forest.js index 9dda643ff..65797b00c 100644 --- a/packages/mermaid/src/themes/theme-forest.js +++ b/packages/mermaid/src/themes/theme-forest.js @@ -217,16 +217,16 @@ class Theme { /* quadrant-graph */ this.quadrant1Fill = this.quadrant1Fill || this.primaryColor; - this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, { r: 5, g: 5, b: 5 }); - this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, { r: 10, g: 10, b: 10 }); - this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, { r: 15, g: 15, b: 15 }); + this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 }); + this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 }); + this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 }); this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor; this.quadrant2TextFill = - this.quadrant2TextFill || adjust(this.quadrant1TextFill, { r: -5, g: -5, b: -5 }); + this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 }); this.quadrant3TextFill = - this.quadrant3TextFill || adjust(this.quadrant1TextFill, { r: -10, g: -10, b: -10 }); + this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 }); this.quadrant4TextFill = - this.quadrant4TextFill || adjust(this.quadrant1TextFill, { r: -15, g: -15, b: -15 }); + this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 }); this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) @@ -237,7 +237,7 @@ class Theme { this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor; this.quadrantExternalBorderStrokeFill = - this.quadrantExternalBorderStrokeFill || this.secondaryBorderColor; + this.quadrantExternalBorderStrokeFill || this.primaryBorderColor; this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor; /* requirement-diagram */ diff --git a/packages/mermaid/src/themes/theme-neutral.js b/packages/mermaid/src/themes/theme-neutral.js index 43d0b61b5..963ce031d 100644 --- a/packages/mermaid/src/themes/theme-neutral.js +++ b/packages/mermaid/src/themes/theme-neutral.js @@ -248,16 +248,16 @@ class Theme { /* quadrant-graph */ this.quadrant1Fill = this.quadrant1Fill || this.primaryColor; - this.quadrant2Fill = this.quadrant2Fill || adjust(this.quadrant1Fill, { r: 5, g: 5, b: 5 }); - this.quadrant3Fill = this.quadrant3Fill || adjust(this.quadrant1Fill, { r: 10, g: 10, b: 10 }); - this.quadrant4Fill = this.quadrant4Fill || adjust(this.quadrant1Fill, { r: 15, g: 15, b: 15 }); + this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 }); + this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 }); + this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 }); this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor; this.quadrant2TextFill = - this.quadrant2TextFill || adjust(this.quadrant1TextFill, { r: -5, g: -5, b: -5 }); + this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 }); this.quadrant3TextFill = - this.quadrant3TextFill || adjust(this.quadrant1TextFill, { r: -10, g: -10, b: -10 }); + this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 }); this.quadrant4TextFill = - this.quadrant4TextFill || adjust(this.quadrant1TextFill, { r: -15, g: -15, b: -15 }); + this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 }); this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) @@ -268,7 +268,7 @@ class Theme { this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor; this.quadrantExternalBorderStrokeFill = - this.quadrantExternalBorderStrokeFill || this.secondaryBorderColor; + this.quadrantExternalBorderStrokeFill || this.primaryBorderColor; this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor; /* requirement-diagram */ From b2a5ddcd85974b689ae0cf1bc2fb87672762d703 Mon Sep 17 00:00:00 2001 From: Subhash Halder <halder.subhash@gmail.com> Date: Sat, 13 May 2023 17:33:31 +0530 Subject: [PATCH 103/255] Added documentation for the quadrantChart --- docs/intro/index.md | 36 ++++ docs/syntax/quadrantChart.md | 171 ++++++++++++++++++ packages/mermaid/src/defaultConfig.ts | 154 ++++++++-------- .../quadrant-chart/quadrantBuilder.ts | 2 +- packages/mermaid/src/docs/intro/examples.md | 19 ++ .../mermaid/src/docs/syntax/quadrantChart.md | 142 +++++++++++++++ 6 files changed, 446 insertions(+), 78 deletions(-) create mode 100644 docs/syntax/quadrantChart.md create mode 100644 packages/mermaid/src/docs/syntax/quadrantChart.md diff --git a/docs/intro/index.md b/docs/intro/index.md index 8ebc4c530..36707bace 100644 --- a/docs/intro/index.md +++ b/docs/intro/index.md @@ -235,6 +235,42 @@ journey Sit down: 5: Me ``` +### [Quadrant Chart](../syntax/quadrantChart.md) + +```mermaid-example +quadrantChart + title Reach and engagement of campaigns + x-axis Low Reach --> High Reach + y-axis Low Engagement --> High Engagement + quadrant-1 We should expand + quadrant-2 Need to promote + quadrant-3 Re-evaluate + quadrant-4 May be improved + Campaign A: [0.3, 0.6] + Campaign B: [0.45, 0.23] + Campaign C: [0.57, 0.69] + Campaign D: [0.78, 0.34] + Campaign E: [0.40, 0.34] + Campaign F: [0.35, 0.78] +``` + +```mermaid +quadrantChart + title Reach and engagement of campaigns + x-axis Low Reach --> High Reach + y-axis Low Engagement --> High Engagement + quadrant-1 We should expand + quadrant-2 Need to promote + quadrant-3 Re-evaluate + quadrant-4 May be improved + Campaign A: [0.3, 0.6] + Campaign B: [0.45, 0.23] + Campaign C: [0.57, 0.69] + Campaign D: [0.78, 0.34] + Campaign E: [0.40, 0.34] + Campaign F: [0.35, 0.78] +``` + ## Installation **In depth guides and examples can be found at [Getting Started](./n00b-gettingStarted.md) and [Usage](../config/usage.md).** diff --git a/docs/syntax/quadrantChart.md b/docs/syntax/quadrantChart.md new file mode 100644 index 000000000..86aa21f72 --- /dev/null +++ b/docs/syntax/quadrantChart.md @@ -0,0 +1,171 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/syntax/quadrantChart.md](../../packages/mermaid/src/docs/syntax/quadrantChart.md). + +# Quadrant Chart + +> A quadrant chart is a visual representation of data that is divided into four quadrants. It is used to plot data points on a two-dimensional grid, with one variable represented on the x-axis and another variable represented on the y-axis. The quadrants are determined by dividing the chart into four equal parts based on a set of criteria that is specific to the data being analyzed. Quadrant charts are often used to identify patterns and trends in data, and to prioritize actions based on the position of data points within the chart. They are commonly used in business, marketing, and risk management, among other fields. + +## Example + +```mermaid-example +quadrantChart + title Reach and engagement of campaigns + x-axis Low Reach --> High Reach + y-axis Low Engagement --> High Engagement + quadrant-1 We should expand + quadrant-2 Need to promote + quadrant-3 Re-evaluate + quadrant-4 May be improved + Campaign A: [0.3, 0.6] + Campaign B: [0.45, 0.23] + Campaign C: [0.57, 0.69] + Campaign D: [0.78, 0.34] + Campaign E: [0.40, 0.34] + Campaign F: [0.35, 0.78] +``` + +```mermaid +quadrantChart + title Reach and engagement of campaigns + x-axis Low Reach --> High Reach + y-axis Low Engagement --> High Engagement + quadrant-1 We should expand + quadrant-2 Need to promote + quadrant-3 Re-evaluate + quadrant-4 May be improved + Campaign A: [0.3, 0.6] + Campaign B: [0.45, 0.23] + Campaign C: [0.57, 0.69] + Campaign D: [0.78, 0.34] + Campaign E: [0.40, 0.34] + Campaign F: [0.35, 0.78] +``` + +## Syntax + +> **Note** +> In place of `<text>` you can use text like `this is a sample text` or inside **double quotes** like `"This type of text may contain unicode like ❤"`. + +> **Note** +> If there is no points available in the chart both **axis** text and **quadrant** will be rendered in the center of the respective quadrant. +> If there are points **x-axis** labels will rendered from left of the respective quadrant also they will be displayed in bottom of the chart, and **y-axis** lables will be rendered in bottom of the respective quadrant, the quadrant text will render at top of the respective quadrant. + +> **Note** +> For points x and y value min value is 0 and max value is 1. + +### Title + +The title is a short description of the chart and it will always render on top of the chart. + +#### Example + + quadrantChart + title This is a sample example + +### x-axis + +The x-axis determine what text would be displayed in the x-axis. In x-axis there is two part **left** and **right** you can pass **both** or you can pass only **left**. The statement should start with `x-axis` then the `left axis text` followed by the delimiter `-->` then `right axis text`. + +#### Example + +1. `x-axis <text> --> <text>` both the left and right axis text will be rendered. +2. `x-axis <text>` only the left axis text will be rendered. + +### y-axis + +The y-axis determine what text would be displayed in the y-axis. In y-axis there is two part **top** and **bottom** you can pass **both** or you can pass only **bottom**. The statement should start with `y-axis` then the `bottom axis text` followed by the delimiter `-->` then `top axis text`. + +#### Example + +1. `y-axis <text> --> <text>` both the bottom and top axis text will be rendered. +2. `y-axis <text>` only the bottom axis text will be rendered. + +### Quadrants text + +The `quadrant-[1,2,3,4]` determine what text would be displayed inside the quadrants. + +#### Example + +1. `quadrant-1 <text>` determine what text will be rendered inside the top right quadrant. +2. `quadrant-2 <text>` determine what text will be rendered inside the top left quadrant. +3. `quadrant-3 <text>` determine what text will be rendered inside the bottom left quadrant. +4. `quadrant-4 <text>` determine what text will be rendered inside the bottom right quadrant. + +### Points + +Points are used to plot a circle inside the quadrantChart. The syntax is `<text>: [x, y]` here x and y value is in the range 0 - 1. + +#### Example + +1. `Point 1: [0.75, 0.80]` here the Point 1 will be drawn in the top right quadrant. +2. `Point 2: [0.35, 0.24]` here the Point 2 will be drawn in the bottom left quadrant. + +## Chart Configurations + +| Parameter | Description | Default value | +| --------------------------------- | ------------------------------------------------------------------------------------------------- | :-----------: | +| chartWidth | Width of the chart | 500 | +| chartHeight | Height of the chart | 500 | +| titlePadding | Top and Bottom padding of the title | 10 | +| titleFontSize | Title font size | 20 | +| quadrantPadding | Padding outside all the quadrants | 5 | +| quadrantTextTopPadding | Quadrant text top padding when text is drawn on top ( not data points are there) | 5 | +| quadrantLabelFontSize | Quadrant text font size | 16 | +| quadrantInternalBorderStrokeWidth | Border stroke width inside the quadrants | 1 | +| quadrantExternalBorderStrokeWidth | Quadrant external border stroke width | 2 | +| xAxisLabelPadding | Top and bottom padding of x-axis text | 5 | +| xAxisLabelFontSize | X-axis texts font size | 16 | +| xAxisPosition | Position of x-axis (top , bottom) if there are points the x-axis will alway be rendered in bottom | 'top' | +| yAxisLabelPadding | Left and Right padding of y-axis text | 5 | +| yAxisLabelFontSize | Y-axis texts font size | 16 | +| yAxisPosition | Position of y-axis (left , right) | 'left' | +| pointTextPadding | Padding between point and the below text | 5 | +| pointLabelFontSize | Point text font size | 12 | +| pointRadius | Radius of the point to be drawn | 5 | + +## Chart Theme Variables + +| Parameter | Description | +| -------------------------------- | --------------------------------------- | +| quadrant1Fill | Fill color of the top right quadrant | +| quadrant2Fill | Fill color of the top left quadrant | +| quadrant3Fill | Fill color of the bottom left quadrant | +| quadrant4Fill | Fill color of the bottom right quadrant | +| quadrant1TextFill | Text color of the top right quadrant | +| quadrant2TextFill | Text color of the top left quadrant | +| quadrant3TextFill | Text color of the bottom left quadrant | +| quadrant4TextFill | Text color of the bottom right quadrant | +| quadrantPointFill | Points fill color | +| quadrantPointTextFill | Points text color | +| quadrantXAxisTextFill | X-axis text color | +| quadrantYAxisTextFill | Y-axis text color | +| quadrantInternalBorderStrokeFill | Quadrants inner border color | +| quadrantExternalBorderStrokeFill | Quadrants outer border color | +| quadrantTitleFill | Title color | + +## Example on config and theme + +```mermaid-example +%%{init: {"quadrantChart": {"chartWidth": 400, "chartHeight": 400}, "themeVariables": {"quadrant1TextFill": "#ff0000"} }}%% +quadrantChart + x-axis Urgent --> Not Urgent + y-axis Not Important --> important + quadrant-1 Plan + quadrant-2 Do + quadrant-3 Deligate + quadrant-4 Delete +``` + +```mermaid +%%{init: {"quadrantChart": {"chartWidth": 400, "chartHeight": 400}, "themeVariables": {"quadrant1TextFill": "#ff0000"} }}%% +quadrantChart + x-axis Urgent --> Not Urgent + y-axis Not Important --> important + quadrant-1 Plan + quadrant-2 Do + quadrant-3 Deligate + quadrant-4 Delete +``` diff --git a/packages/mermaid/src/defaultConfig.ts b/packages/mermaid/src/defaultConfig.ts index ade873e57..8f715cb26 100644 --- a/packages/mermaid/src/defaultConfig.ts +++ b/packages/mermaid/src/defaultConfig.ts @@ -1299,6 +1299,24 @@ const config: Partial<MermaidConfig> = { * Default value: 500 */ chartHeight: 500, + /** + * | Parameter | Description | Type | Required | Values | + * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- | + * | titlePadding | Chart title top and bottom padding | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 10 + */ + titlePadding: 10, + /** + * | Parameter | Description | Type | Required | Values | + * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- | + * | titleFontSize | Chart title font size | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 20 + */ + titleFontSize: 20, /** * | Parameter | Description | Type | Required | Values | * | --------------- | ---------------------------------- | ------- | -------- | ------------------- | @@ -1308,6 +1326,42 @@ const config: Partial<MermaidConfig> = { * Default value: 5 */ quadrantPadding: 5, + /** + * | Parameter | Description | Type | Required | Values | + * | ---------------------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------- | + * | quadrantTextTopPadding | quadrant title padding from top if the quadrant is rendered on top | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 5 + */ + quadrantTextTopPadding: 5, + /** + * | Parameter | Description | Type | Required | Values | + * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- | + * | quadrantLabelFontSize | quadrant title font size | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 16 + */ + quadrantLabelFontSize: 16, + /** + * | Parameter | Description | Type | Required | Values | + * | --------------------------------- | ------------------------------------------------------------- | ------- | -------- | ------------------- | + * | quadrantInternalBorderStrokeWidth | stroke width of edges of the box that are inside the quadrant | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 1 + */ + quadrantInternalBorderStrokeWidth: 1, + /** + * | Parameter | Description | Type | Required | Values | + * | --------------------------------- | -------------------------------------------------------------- | ------- | -------- | ------------------- | + * | quadrantExternalBorderStrokeWidth | stroke width of edges of the box that are outside the quadrant | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 2 + */ + quadrantExternalBorderStrokeWidth: 2, /** * | Parameter | Description | Type | Required | Values | * | --------------- | ---------------------------------- | ------- | -------- | ------------------- | @@ -1317,6 +1371,24 @@ const config: Partial<MermaidConfig> = { * Default value: 5 */ xAxisLabelPadding: 5, + /** + * | Parameter | Description | Type | Required | Values | + * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- | + * | xAxisLabelFontSize | x-axis label font size | number | Optional | Any positive number | + * + * **Notes:** + * Default value: 16 + */ + xAxisLabelFontSize: 16, + /** + * | Parameter | Description | Type | Required | Values | + * | ------------- | ------------------------------- | ------- | -------- | ------------------- | + * | xAxisPosition | position of x-axis labels | string | Optional | 'top' or 'bottom' | + * + * **Notes:** + * Default value: top + */ + xAxisPosition: 'top', /** * | Parameter | Description | Type | Required | Values | * | --------------- | ---------------------------------- | ------- | -------- | ------------------- | @@ -1326,33 +1398,6 @@ const config: Partial<MermaidConfig> = { * Default value: 5 */ yAxisLabelPadding: 5, - /** - * | Parameter | Description | Type | Required | Values | - * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- | - * | titlePadding | Chart title top and bottom padding | number | Optional | Any positive number | - * - * **Notes:** - * Default value: 5 - */ - titlePadding: 5, - /** - * | Parameter | Description | Type | Required | Values | - * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- | - * | titleFontSize | Chart title font size | number | Optional | Any positive number | - * - * **Notes:** - * Default value: 20 - */ - titleFontSize: 20, - /** - * | Parameter | Description | Type | Required | Values | - * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- | - * | xAxisLabelFontSize | x-axis label font size | number | Optional | Any positive number | - * - * **Notes:** - * Default value: 16 - */ - xAxisLabelFontSize: 16, /** * | Parameter | Description | Type | Required | Values | * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- | @@ -1363,23 +1408,14 @@ const config: Partial<MermaidConfig> = { */ yAxisLabelFontSize: 16, /** - * | Parameter | Description | Type | Required | Values | - * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- | - * | quadrantLabelFontSize | quadrant title font size | number | Optional | Any positive number | + * | Parameter | Description | Type | Required | Values | + * | ------------- | ------------------------------- | ------- | -------- | ------------------- | + * | yAxisPosition | position of y-axis labels | string | Optional | 'left' or 'right' | * * **Notes:** - * Default value: 16 + * Default value: left */ - quadrantLabelFontSize: 16, - /** - * | Parameter | Description | Type | Required | Values | - * | ---------------------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------- | - * | quadrantTextTopPadding | quadrant title padding from top if the quadrant is rendered on top | number | Optional | Any positive number | - * - * **Notes:** - * Default value: 5 - */ - quadrantTextTopPadding: 5, + yAxisPosition: 'left', /** * | Parameter | Description | Type | Required | Values | * | ---------------------- | -------------------------------------- | ------- | -------- | ------------------- | @@ -1407,42 +1443,6 @@ const config: Partial<MermaidConfig> = { * Default value: 5 */ pointRadius: 5, - /** - * | Parameter | Description | Type | Required | Values | - * | ------------- | ------------------------------- | ------- | -------- | ------------------- | - * | xAxisPosition | position of x-axis labels | string | Optional | 'top' or 'bottom' | - * - * **Notes:** - * Default value: top - */ - xAxisPosition: 'top', - /** - * | Parameter | Description | Type | Required | Values | - * | ------------- | ------------------------------- | ------- | -------- | ------------------- | - * | yAxisPosition | position of y-axis labels | string | Optional | 'left' or 'right' | - * - * **Notes:** - * Default value: left - */ - yAxisPosition: 'left', - /** - * | Parameter | Description | Type | Required | Values | - * | --------------------------------- | ------------------------------------------------------------- | ------- | -------- | ------------------- | - * | quadrantInternalBorderStrokeWidth | stroke width of edges of the box that are inside the quadrant | number | Optional | Any positive number | - * - * **Notes:** - * Default value: 1 - */ - quadrantInternalBorderStrokeWidth: 1, - /** - * | Parameter | Description | Type | Required | Values | - * | --------------------------------- | -------------------------------------------------------------- | ------- | -------- | ------------------- | - * | quadrantExternalBorderStrokeWidth | stroke width of edges of the box that are outside the quadrant | number | Optional | Any positive number | - * - * **Notes:** - * Default value: 2 - */ - quadrantExternalBorderStrokeWidth: 2, /** * | Parameter | Description | Type | Required | Values | * | ----------- | ----------- | ------- | -------- | ----------- | diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts index 95b8c6679..dc23a55c2 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts @@ -150,7 +150,7 @@ export class QuadrantBuilder { showTitle: true, chartHeight: defaultConfig.quadrantChart?.chartWidth || 500, chartWidth: defaultConfig.quadrantChart?.chartHeight || 500, - titlePadding: defaultConfig.quadrantChart?.titlePadding || 5, + titlePadding: defaultConfig.quadrantChart?.titlePadding || 10, titleFontSize: defaultConfig.quadrantChart?.titleFontSize || 20, quadrantPadding: defaultConfig.quadrantChart?.quadrantPadding || 5, xAxisLabelPadding: defaultConfig.quadrantChart?.xAxisLabelPadding || 5, diff --git a/packages/mermaid/src/docs/intro/examples.md b/packages/mermaid/src/docs/intro/examples.md index f4cb3b929..7dda288dc 100644 --- a/packages/mermaid/src/docs/intro/examples.md +++ b/packages/mermaid/src/docs/intro/examples.md @@ -98,3 +98,22 @@ journey Go downstairs: 5: Me Sit down: 5: Me ``` + +### [Quadrant Chart](../syntax/quadrantChart.md) + +```mermaid-example +quadrantChart + title Reach and engagement of campaigns + x-axis Low Reach --> High Reach + y-axis Low Engagement --> High Engagement + quadrant-1 We should expand + quadrant-2 Need to promote + quadrant-3 Re-evaluate + quadrant-4 May be improved + Campaign A: [0.3, 0.6] + Campaign B: [0.45, 0.23] + Campaign C: [0.57, 0.69] + Campaign D: [0.78, 0.34] + Campaign E: [0.40, 0.34] + Campaign F: [0.35, 0.78] +``` diff --git a/packages/mermaid/src/docs/syntax/quadrantChart.md b/packages/mermaid/src/docs/syntax/quadrantChart.md new file mode 100644 index 000000000..351dd1ad1 --- /dev/null +++ b/packages/mermaid/src/docs/syntax/quadrantChart.md @@ -0,0 +1,142 @@ +# Quadrant Chart + +> A quadrant chart is a visual representation of data that is divided into four quadrants. It is used to plot data points on a two-dimensional grid, with one variable represented on the x-axis and another variable represented on the y-axis. The quadrants are determined by dividing the chart into four equal parts based on a set of criteria that is specific to the data being analyzed. Quadrant charts are often used to identify patterns and trends in data, and to prioritize actions based on the position of data points within the chart. They are commonly used in business, marketing, and risk management, among other fields. + +## Example + +```mermaid-example +quadrantChart + title Reach and engagement of campaigns + x-axis Low Reach --> High Reach + y-axis Low Engagement --> High Engagement + quadrant-1 We should expand + quadrant-2 Need to promote + quadrant-3 Re-evaluate + quadrant-4 May be improved + Campaign A: [0.3, 0.6] + Campaign B: [0.45, 0.23] + Campaign C: [0.57, 0.69] + Campaign D: [0.78, 0.34] + Campaign E: [0.40, 0.34] + Campaign F: [0.35, 0.78] +``` + +## Syntax + +```note +In place of `<text>` you can use text like `this is a sample text` or inside **double quotes** like `"This type of text may contain unicode like ❤"`. +``` + +```note +If there is no points available in the chart both **axis** text and **quadrant** will be rendered in the center of the respective quadrant. +If there are points **x-axis** labels will rendered from left of the respective quadrant also they will be displayed in bottom of the chart, and **y-axis** lables will be rendered in bottom of the respective quadrant, the quadrant text will render at top of the respective quadrant. +``` + +```note +For points x and y value min value is 0 and max value is 1. +``` + +### Title + +The title is a short description of the chart and it will always render on top of the chart. + +#### Example + +``` +quadrantChart + title This is a sample example +``` + +### x-axis + +The x-axis determine what text would be displayed in the x-axis. In x-axis there is two part **left** and **right** you can pass **both** or you can pass only **left**. The statement should start with `x-axis` then the `left axis text` followed by the delimiter `-->` then `right axis text`. + +#### Example + +1. `x-axis <text> --> <text>` both the left and right axis text will be rendered. +2. `x-axis <text>` only the left axis text will be rendered. + +### y-axis + +The y-axis determine what text would be displayed in the y-axis. In y-axis there is two part **top** and **bottom** you can pass **both** or you can pass only **bottom**. The statement should start with `y-axis` then the `bottom axis text` followed by the delimiter `-->` then `top axis text`. + +#### Example + +1. `y-axis <text> --> <text>` both the bottom and top axis text will be rendered. +2. `y-axis <text>` only the bottom axis text will be rendered. + +### Quadrants text + +The `quadrant-[1,2,3,4]` determine what text would be displayed inside the quadrants. + +#### Example + +1. `quadrant-1 <text>` determine what text will be rendered inside the top right quadrant. +2. `quadrant-2 <text>` determine what text will be rendered inside the top left quadrant. +3. `quadrant-3 <text>` determine what text will be rendered inside the bottom left quadrant. +4. `quadrant-4 <text>` determine what text will be rendered inside the bottom right quadrant. + +### Points + +Points are used to plot a circle inside the quadrantChart. The syntax is `<text>: [x, y]` here x and y value is in the range 0 - 1. + +#### Example + +1. `Point 1: [0.75, 0.80]` here the Point 1 will be drawn in the top right quadrant. +2. `Point 2: [0.35, 0.24]` here the Point 2 will be drawn in the bottom left quadrant. + +## Chart Configurations + +| Parameter | Description | Default value | +| --------------------------------- | ------------------------------------------------------------------------------------------------- | :-----------: | +| chartWidth | Width of the chart | 500 | +| chartHeight | Height of the chart | 500 | +| titlePadding | Top and Bottom padding of the title | 10 | +| titleFontSize | Title font size | 20 | +| quadrantPadding | Padding outside all the quadrants | 5 | +| quadrantTextTopPadding | Quadrant text top padding when text is drawn on top ( not data points are there) | 5 | +| quadrantLabelFontSize | Quadrant text font size | 16 | +| quadrantInternalBorderStrokeWidth | Border stroke width inside the quadrants | 1 | +| quadrantExternalBorderStrokeWidth | Quadrant external border stroke width | 2 | +| xAxisLabelPadding | Top and bottom padding of x-axis text | 5 | +| xAxisLabelFontSize | X-axis texts font size | 16 | +| xAxisPosition | Position of x-axis (top , bottom) if there are points the x-axis will alway be rendered in bottom | 'top' | +| yAxisLabelPadding | Left and Right padding of y-axis text | 5 | +| yAxisLabelFontSize | Y-axis texts font size | 16 | +| yAxisPosition | Position of y-axis (left , right) | 'left' | +| pointTextPadding | Padding between point and the below text | 5 | +| pointLabelFontSize | Point text font size | 12 | +| pointRadius | Radius of the point to be drawn | 5 | + +## Chart Theme Variables + +| Parameter | Description | +| -------------------------------- | --------------------------------------- | +| quadrant1Fill | Fill color of the top right quadrant | +| quadrant2Fill | Fill color of the top left quadrant | +| quadrant3Fill | Fill color of the bottom left quadrant | +| quadrant4Fill | Fill color of the bottom right quadrant | +| quadrant1TextFill | Text color of the top right quadrant | +| quadrant2TextFill | Text color of the top left quadrant | +| quadrant3TextFill | Text color of the bottom left quadrant | +| quadrant4TextFill | Text color of the bottom right quadrant | +| quadrantPointFill | Points fill color | +| quadrantPointTextFill | Points text color | +| quadrantXAxisTextFill | X-axis text color | +| quadrantYAxisTextFill | Y-axis text color | +| quadrantInternalBorderStrokeFill | Quadrants inner border color | +| quadrantExternalBorderStrokeFill | Quadrants outer border color | +| quadrantTitleFill | Title color | + +## Example on config and theme + +```mermaid-example +%%{init: {"quadrantChart": {"chartWidth": 400, "chartHeight": 400}, "themeVariables": {"quadrant1TextFill": "#ff0000"} }}%% +quadrantChart + x-axis Urgent --> Not Urgent + y-axis Not Important --> important + quadrant-1 Plan + quadrant-2 Do + quadrant-3 Deligate + quadrant-4 Delete +``` From 0f354ff9747dbab1bca8e3021355a4e19c20b58c Mon Sep 17 00:00:00 2001 From: Subhash Halder <halder.subhash@gmail.com> Date: Sat, 13 May 2023 19:45:45 +0530 Subject: [PATCH 104/255] Added e2e test cases with some fixes --- .../rendering/quadrantChart.spec.js | 163 ++++++++++++++++++ .../quadrant-chart/quadrantBuilder.ts | 20 ++- .../quadrant-chart/quadrantRenderer.ts | 2 +- 3 files changed, 180 insertions(+), 5 deletions(-) create mode 100644 cypress/integration/rendering/quadrantChart.spec.js diff --git a/cypress/integration/rendering/quadrantChart.spec.js b/cypress/integration/rendering/quadrantChart.spec.js new file mode 100644 index 000000000..4bcf58b60 --- /dev/null +++ b/cypress/integration/rendering/quadrantChart.spec.js @@ -0,0 +1,163 @@ +import { imgSnapshotTest, renderGraph } from '../../helpers/util.js'; + +describe('Quadrant Chart', () => { + it('should render if only chart type is provided', () => { + imgSnapshotTest( + ` + quadrantChart + `, + {} + ); + cy.get('svg'); + }); + it('should render a complete quadrant chart', () => { + imgSnapshotTest( + ` + quadrantChart + title Reach and engagement of campaigns + x-axis Low Reach --> High Reach + y-axis Low Engagement --> High Engagement + quadrant-1 We should expand + quadrant-2 Need to promote + quadrant-3 Re-evaluate + quadrant-4 May be improved + Campaign A: [0.3, 0.6] + Campaign B: [0.45, 0.23] + Campaign C: [0.57, 0.69] + Campaign D: [0.78, 0.34] + Campaign E: [0.40, 0.34] + Campaign F: [0.35, 0.78] + `, + {} + ); + cy.get('svg'); + }); + it('should render without points', () => { + imgSnapshotTest( + ` + quadrantChart + title Reach and engagement of campaigns + x-axis Low Reach --> High Reach + y-axis Low Engagement --> High Engagement + quadrant-1 We should expand + quadrant-2 Need to promote + quadrant-3 Re-evaluate + quadrant-4 May be improved + `, + {} + ); + cy.get('svg'); + }); + it('should able to render y-axix on right side', () => { + imgSnapshotTest( + ` + %%{init: {"quadrantChart": {"yAxisPosition": "right"}}}%% + quadrantChart + title Reach and engagement of campaigns + x-axis Low Reach --> High Reach + y-axis Low Engagement --> High Engagement + quadrant-1 We should expand + quadrant-2 Need to promote + quadrant-3 Re-evaluate + quadrant-4 May be improved + `, + {} + ); + cy.get('svg'); + }); + it('should able to render x-axix on bottom', () => { + imgSnapshotTest( + ` + %%{init: {"quadrantChart": {"xAxisPosition": "bottom"}}}%% + quadrantChart + title Reach and engagement of campaigns + x-axis Low Reach --> High Reach + y-axis Low Engagement --> High Engagement + quadrant-1 We should expand + quadrant-2 Need to promote + quadrant-3 Re-evaluate + quadrant-4 May be improved + `, + {} + ); + cy.get('svg'); + }); + it('should able to render x-axix on bottom and y-axis on right', () => { + imgSnapshotTest( + ` + %%{init: {"quadrantChart": {"xAxisPosition": "bottom", "yAxisPosition": "right"}}}%% + quadrantChart + title Reach and engagement of campaigns + x-axis Low Reach --> High Reach + y-axis Low Engagement --> High Engagement + quadrant-1 We should expand + quadrant-2 Need to promote + quadrant-3 Re-evaluate + quadrant-4 May be improved + `, + {} + ); + cy.get('svg'); + }); + it('should render without title', () => { + imgSnapshotTest( + ` + quadrantChart + x-axis Low Reach --> High Reach + y-axis Low Engagement --> High Engagement + quadrant-1 We should expand + quadrant-2 Need to promote + quadrant-3 Re-evaluate + quadrant-4 May be improved + `, + {} + ); + cy.get('svg'); + }); + it('should use all the config', () => { + imgSnapshotTest( + ` + %%{init: {"quadrantChart": {"chartWidth": 600, "chartHeight": 600, "titlePadding": 20, "titleFontSize": 10, "quadrantPadding": 20, "quadrantTextTopPadding": 40, "quadrantLabelFontSize": 20, "quadrantInternalBorderStrokeWidth": 3, "quadrantExternalBorderStrokeWidth": 5, "xAxisLabelPadding": 20, "xAxisLabelFontSize": 20, "yAxisLabelPadding": 20, "yAxisLabelFontSize": 20, "pointTextPadding": 20, "pointLabelFontSize": 20, "pointRadius": 10 }}}%% + quadrantChart + title Reach and engagement of campaigns + x-axis Low Reach --> High Reach + y-axis Low Engagement --> High Engagement + quadrant-1 We should expand + quadrant-2 Need to promote + quadrant-3 Re-evaluate + quadrant-4 May be improved + Campaign A: [0.3, 0.6] + Campaign B: [0.45, 0.23] + Campaign C: [0.57, 0.69] + Campaign D: [0.78, 0.34] + Campaign E: [0.40, 0.34] + Campaign F: [0.35, 0.78] + `, + {} + ); + cy.get('svg'); + }); + it('should use all the theme variable', () => { + imgSnapshotTest( + ` + %%{init: {"themeVariables": {"quadrant1Fill": "#b4dcff","quadrant2Fill": "#fef0ff", "quadrant3Fill": "#fffaf0", "quadrant4Fill": "#f0fff2", "quadrant1TextFill": "#ff0000", "quadrant2TextFill": "#2d00df", "quadrant3TextFill": "#00ffda", "quadrant4TextFill": "#e68300", "quadrantPointFill": "#0149ff", "quadrantPointTextFill": "#dc00ff", "quadrantXAxisTextFill": "#ffb500", "quadrantYAxisTextFill": "#fae604", "quadrantInternalBorderStrokeFill": "#3636f2", "quadrantExternalBorderStrokeFill": "#ff1010", "quadrantTitleFill": "#00ea19"} }}%% + quadrantChart + title Reach and engagement of campaigns + x-axis Low Reach --> High Reach + y-axis Low Engagement --> High Engagement + quadrant-1 We should expand + quadrant-2 Need to promote + quadrant-3 Re-evaluate + quadrant-4 May be improved + Campaign A: [0.3, 0.6] + Campaign B: [0.45, 0.23] + Campaign C: [0.57, 0.69] + Campaign D: [0.78, 0.34] + Campaign E: [0.40, 0.34] + Campaign F: [0.35, 0.78] + `, + {} + ); + cy.get('svg'); + }); +}); diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts index dc23a55c2..8168551ad 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantBuilder.ts @@ -297,7 +297,10 @@ export class QuadrantBuilder { y: xAxisPosition === 'top' ? this.config.xAxisLabelPadding + titleSpace.top - : this.config.xAxisLabelPadding + quadrantTop + quadrantHeight, + : this.config.xAxisLabelPadding + + quadrantTop + + quadrantHeight + + this.config.quadrantPadding, fontSize: this.config.xAxisLabelFontSize, verticalPos: drawAxisLabelInMiddle ? 'center' : 'left', horizontalPos: 'top', @@ -312,7 +315,10 @@ export class QuadrantBuilder { y: xAxisPosition === 'top' ? this.config.xAxisLabelPadding + titleSpace.top - : this.config.xAxisLabelPadding + quadrantTop + quadrantHeight, + : this.config.xAxisLabelPadding + + quadrantTop + + quadrantHeight + + this.config.quadrantPadding, fontSize: this.config.xAxisLabelFontSize, verticalPos: drawAxisLabelInMiddle ? 'center' : 'left', horizontalPos: 'top', @@ -327,7 +333,10 @@ export class QuadrantBuilder { x: this.config.yAxisPosition === 'left' ? this.config.yAxisLabelPadding - : this.config.yAxisLabelPadding + quadrantLeft + quadrantWidth, + : this.config.yAxisLabelPadding + + quadrantLeft + + quadrantWidth + + this.config.quadrantPadding, y: quadrantTop + quadrantHeight - (drawAxisLabelInMiddle ? quadrantHalfHeight / 2 : 0), fontSize: this.config.yAxisLabelFontSize, verticalPos: drawAxisLabelInMiddle ? 'center' : 'left', @@ -342,7 +351,10 @@ export class QuadrantBuilder { x: this.config.yAxisPosition === 'left' ? this.config.yAxisLabelPadding - : this.config.yAxisLabelPadding + quadrantLeft + quadrantWidth, + : this.config.yAxisLabelPadding + + quadrantLeft + + quadrantWidth + + this.config.quadrantPadding, y: quadrantTop + quadrantHalfHeight - (drawAxisLabelInMiddle ? quadrantHalfHeight / 2 : 0), fontSize: this.config.yAxisLabelFontSize, verticalPos: drawAxisLabelInMiddle ? 'center' : 'left', diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts index 955f77f54..46d3f773b 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts @@ -16,7 +16,7 @@ import { export const draw = (txt: string, id: string, _version: string, diagObj: Diagram) => { function getDominantBaseLine(horizontalPos: TextHorizontalPos) { - return horizontalPos === 'top' ? 'text-before-edge' : 'middle'; + return horizontalPos === 'top' ? 'hanging' : 'middle'; } function getTextAnchor(verticalPos: TextVerticalPos) { From c4aebe6d579e5c8c1b1fad21a4806f71060ea4c6 Mon Sep 17 00:00:00 2001 From: Subhash Halder <halder.subhash@gmail.com> Date: Sat, 13 May 2023 20:28:49 +0530 Subject: [PATCH 105/255] Added quadrantChart to the side bar --- packages/mermaid/src/docs/.vitepress/config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/mermaid/src/docs/.vitepress/config.ts b/packages/mermaid/src/docs/.vitepress/config.ts index 2ca53b348..7ade4bd3f 100644 --- a/packages/mermaid/src/docs/.vitepress/config.ts +++ b/packages/mermaid/src/docs/.vitepress/config.ts @@ -115,6 +115,7 @@ function sidebarSyntax() { { text: 'User Journey', link: '/syntax/userJourney' }, { text: 'Gantt', link: '/syntax/gantt' }, { text: 'Pie Chart', link: '/syntax/pie' }, + { text: 'Quadrant Chart', link: '/syntax/quadrantChart' }, { text: 'Requirement Diagram', link: '/syntax/requirementDiagram' }, { text: 'Gitgraph (Git) Diagram 🔥', link: '/syntax/gitgraph' }, { text: 'C4C Diagram (Context) Diagram 🦺⚠️', link: '/syntax/c4c' }, From a991c32732a53b400b2cf9a928c589fa2d87a1e5 Mon Sep 17 00:00:00 2001 From: Gusted <postmaster@gusted.xyz> Date: Sat, 13 May 2023 20:25:04 +0200 Subject: [PATCH 106/255] Improve the wording of security level values - The current wording can be misinterpreted because, for some people 'tags' might not be associated with HTML tags. - Improve the wording to make it clear that HTML tags are intended. --- packages/mermaid/src/defaultConfig.ts | 12 ++++++------ packages/mermaid/src/docs/config/usage.md | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/mermaid/src/defaultConfig.ts b/packages/mermaid/src/defaultConfig.ts index 9c6d6f46e..f117bb730 100644 --- a/packages/mermaid/src/defaultConfig.ts +++ b/packages/mermaid/src/defaultConfig.ts @@ -88,13 +88,13 @@ const config: Partial<MermaidConfig> = { * * **Notes**: * - * - **strict**: (**default**) tags in text are encoded, click functionality is disabled - * - **loose**: tags in text are allowed, click functionality is enabled - * - **antiscript**: html tags in text are allowed, (only script element is removed), click - * functionality is enabled - * - **sandbox**: With this security level all rendering takes place in a sandboxed iframe. This + * - **strict**: (**default**) HTML tags in the text are encoded and click functionality is disabled. + * - **antiscript**: HTML tags in text are allowed (only script elements are removed), and click + * functionality is enabled. + * - **loose**: HTML tags in text are allowed and click functionality is enabled. + * - **sandbox**: With this security level, all rendering takes place in a sandboxed iframe. This * prevent any JavaScript from running in the context. This may hinder interactive functionality - * of the diagram like scripts, popups in sequence diagram or links to other tabs/targets etc. + * of the diagram, like scripts, popups in the sequence diagram, links to other tabs or targets, etc. */ securityLevel: 'strict', diff --git a/packages/mermaid/src/docs/config/usage.md b/packages/mermaid/src/docs/config/usage.md index 1c2b5a39b..a072ae408 100644 --- a/packages/mermaid/src/docs/config/usage.md +++ b/packages/mermaid/src/docs/config/usage.md @@ -106,10 +106,10 @@ A `securityLevel` configuration has to first be cleared. `securityLevel` sets th Values: -- **strict**: (**default**) tags in text are encoded, click functionality is disabled -- **loose**: tags in text are allowed, click functionality is enabled -- **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled -- **sandbox**: With this security level all rendering takes place in a sandboxed iframe. This prevent any JavaScript running in the context. This may hinder interactive functionality of the diagram like scripts, popups in sequence diagram or links to other tabs/targets etc. +- **strict**: (**default**) HTML tags in the text are encoded and click functionality is disabled. +- **antiscript**: HTML tags in text are allowed (only script elements are removed) and click functionality is enabled. +- **loose**: HTML tags in text are allowed and click functionality is enabled. +- **sandbox**: With this security level, all rendering takes place in a sandboxed iframe. This prevent any JavaScript from running in the context. This may hinder interactive functionality of the diagram, like scripts, popups in the sequence diagram, links to other tabs or targets, etc. ```note This changes the default behaviour of mermaid so that after upgrade to 8.2, unless the `securityLevel` is not changed, tags in flowcharts are encoded as tags and clicking is disabled. From de34a067189ff7291084821cb728cc31d985a434 Mon Sep 17 00:00:00 2001 From: knsv <knsv@users.noreply.github.com> Date: Mon, 15 May 2023 06:22:10 +0000 Subject: [PATCH 107/255] Update docs --- docs/config/usage.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/config/usage.md b/docs/config/usage.md index 0ab60012f..4203e3a13 100644 --- a/docs/config/usage.md +++ b/docs/config/usage.md @@ -112,10 +112,10 @@ A `securityLevel` configuration has to first be cleared. `securityLevel` sets th Values: -- **strict**: (**default**) tags in text are encoded, click functionality is disabled -- **loose**: tags in text are allowed, click functionality is enabled -- **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled -- **sandbox**: With this security level all rendering takes place in a sandboxed iframe. This prevent any JavaScript running in the context. This may hinder interactive functionality of the diagram like scripts, popups in sequence diagram or links to other tabs/targets etc. +- **strict**: (**default**) HTML tags in the text are encoded and click functionality is disabled. +- **antiscript**: HTML tags in text are allowed (only script elements are removed) and click functionality is enabled. +- **loose**: HTML tags in text are allowed and click functionality is enabled. +- **sandbox**: With this security level, all rendering takes place in a sandboxed iframe. This prevent any JavaScript from running in the context. This may hinder interactive functionality of the diagram, like scripts, popups in the sequence diagram, links to other tabs or targets, etc. > **Note** > This changes the default behaviour of mermaid so that after upgrade to 8.2, unless the `securityLevel` is not changed, tags in flowcharts are encoded as tags and clicking is disabled. From b563ddc19dee3c62aed2d1f78445ba2caa4b0b4c Mon Sep 17 00:00:00 2001 From: knsv <knsv@users.noreply.github.com> Date: Mon, 15 May 2023 06:49:56 +0000 Subject: [PATCH 108/255] Update docs --- docs/syntax/flowchart.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/syntax/flowchart.md b/docs/syntax/flowchart.md index 1ea6304c5..e3c455f01 100644 --- a/docs/syntax/flowchart.md +++ b/docs/syntax/flowchart.md @@ -633,7 +633,7 @@ flowchart TB end ``` -## flowcharts +### flowcharts With the graphtype flowchart it is also possible to set edges to and from subgraphs as in the flowchart below. @@ -671,7 +671,7 @@ flowchart TB two --> c2 ``` -## Direction in subgraphs +### Direction in subgraphs With the graphtype flowcharts you can use the direction statement to set the direction which the subgraph will render like in this example. From d86d1e7887d62dffb4c96559cc960ac5b7c68064 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Mon, 15 May 2023 13:32:59 +0530 Subject: [PATCH 109/255] fix: Use unicode arrows in quadrant chart axis --- .../mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison | 4 ++-- .../src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison index 555eea152..5a4bb9d20 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison +++ b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison @@ -119,10 +119,10 @@ points axisDetails : X-AXIS text AXIS-TEXT-DELIMITER text {yy.setXAxisLeftText($2); yy.setXAxisRightText($4);} - | X-AXIS text AXIS-TEXT-DELIMITER {$2.text += $3; yy.setXAxisLeftText($2);} + | X-AXIS text AXIS-TEXT-DELIMITER {$2.text += " ⭢ "; yy.setXAxisLeftText($2);} | X-AXIS text {yy.setXAxisLeftText($2);} | Y-AXIS text AXIS-TEXT-DELIMITER text {yy.setYAxisBottomText($2); yy.setYAxisTopText($4);} - | Y-AXIS text AXIS-TEXT-DELIMITER {$2.text += $3; yy.setYAxisBottomText($2);} + | Y-AXIS text AXIS-TEXT-DELIMITER {$2.text += " ⭢ "; yy.setYAxisBottomText($2);} | Y-AXIS text {yy.setYAxisBottomText($2);} ; diff --git a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts index f91858c72..5b25f22f7 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts @@ -93,7 +93,7 @@ describe('Testing quadrantChart jison file', () => { str = 'quadrantChart\n x-AxIs "Urgent(* +=[❤" --> '; expect(parserFnConstructor(str)).not.toThrow(); expect(mockDB.setXAxisLeftText).toHaveBeenCalledWith({ - text: 'Urgent(* +=[❤ --> ', + text: 'Urgent(* +=[❤ ⭢ ', type: 'text', }); expect(mockDB.setXAxisRightText).not.toHaveBeenCalled(); @@ -131,7 +131,7 @@ describe('Testing quadrantChart jison file', () => { str = 'quadrantChart\n y-AxIs "Urgent(* +=[❤" --> '; expect(parserFnConstructor(str)).not.toThrow(); expect(mockDB.setYAxisBottomText).toHaveBeenCalledWith({ - text: 'Urgent(* +=[❤ --> ', + text: 'Urgent(* +=[❤ ⭢ ', type: 'text', }); expect(mockDB.setYAxisTopText).not.toHaveBeenCalled(); From b925849893d771c18297ff8bbd5de54af4fbfe80 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Mon, 15 May 2023 13:36:35 +0530 Subject: [PATCH 110/255] fix: Use unicode arrows in quadrant chart axis --- .../mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison | 4 ++-- .../src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison index 5a4bb9d20..00c125294 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison +++ b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison @@ -119,10 +119,10 @@ points axisDetails : X-AXIS text AXIS-TEXT-DELIMITER text {yy.setXAxisLeftText($2); yy.setXAxisRightText($4);} - | X-AXIS text AXIS-TEXT-DELIMITER {$2.text += " ⭢ "; yy.setXAxisLeftText($2);} + | X-AXIS text AXIS-TEXT-DELIMITER {$2.text += " ⟶ "; yy.setXAxisLeftText($2);} | X-AXIS text {yy.setXAxisLeftText($2);} | Y-AXIS text AXIS-TEXT-DELIMITER text {yy.setYAxisBottomText($2); yy.setYAxisTopText($4);} - | Y-AXIS text AXIS-TEXT-DELIMITER {$2.text += " ⭢ "; yy.setYAxisBottomText($2);} + | Y-AXIS text AXIS-TEXT-DELIMITER {$2.text += " ⟶ "; yy.setYAxisBottomText($2);} | Y-AXIS text {yy.setYAxisBottomText($2);} ; diff --git a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts index 5b25f22f7..05b18b935 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/parser/quadrant.jison.spec.ts @@ -93,7 +93,7 @@ describe('Testing quadrantChart jison file', () => { str = 'quadrantChart\n x-AxIs "Urgent(* +=[❤" --> '; expect(parserFnConstructor(str)).not.toThrow(); expect(mockDB.setXAxisLeftText).toHaveBeenCalledWith({ - text: 'Urgent(* +=[❤ ⭢ ', + text: 'Urgent(* +=[❤ ⟶ ', type: 'text', }); expect(mockDB.setXAxisRightText).not.toHaveBeenCalled(); @@ -131,7 +131,7 @@ describe('Testing quadrantChart jison file', () => { str = 'quadrantChart\n y-AxIs "Urgent(* +=[❤" --> '; expect(parserFnConstructor(str)).not.toThrow(); expect(mockDB.setYAxisBottomText).toHaveBeenCalledWith({ - text: 'Urgent(* +=[❤ ⭢ ', + text: 'Urgent(* +=[❤ ⟶ ', type: 'text', }); expect(mockDB.setYAxisTopText).not.toHaveBeenCalled(); From cce55056623db174b2edc5838ec40aa9abf673f2 Mon Sep 17 00:00:00 2001 From: Dong Cai <dongc@blackmagicdesign.com> Date: Tue, 16 May 2023 20:29:56 +1000 Subject: [PATCH 111/255] Address mermaid-zenuml PR comments --- docs/syntax/zenuml.md | 108 ++++++++++++++++----- packages/mermaid-zenuml/README.md | 1 + packages/mermaid-zenuml/package.json | 26 ++--- packages/mermaid-zenuml/src/parser.ts | 10 +- packages/mermaid/src/docs/syntax/zenuml.md | 77 +++++++++------ 5 files changed, 152 insertions(+), 70 deletions(-) create mode 120000 packages/mermaid-zenuml/README.md diff --git a/docs/syntax/zenuml.md b/docs/syntax/zenuml.md index a9c7c0f4b..d936e5f76 100644 --- a/docs/syntax/zenuml.md +++ b/docs/syntax/zenuml.md @@ -8,7 +8,7 @@ > A Sequence diagram is an interaction diagram that shows how processes operate with one another and in what order. -Mermaid can render sequence diagrams with ZenUML. Note that ZenUML uses a different +Mermaid can render sequence diagrams with [ZenUML](https://zenuml.com). Note that ZenUML uses a different syntax than the original Sequence Diagram in mermaid. ```mermaid-example @@ -153,13 +153,24 @@ zenuml We use `new` keyword to create an object. +```mermaid-example +zenuml new A1 new A2(with, parameters) +``` + +```mermaid +zenuml + new A1 + new A2(with, parameters) +``` ### Reply message There are three ways to express a reply message: +```mermaid-example +zenuml // 1. assign a variable from a sync message. a = A.SyncMessage() @@ -168,12 +179,31 @@ There are three ways to express a reply message: // 2. use return keyword A.SyncMessage() { - return result + return result } // 3. use @return or @reply annotator on an async message @return A->B: result +``` + +```mermaid +zenuml + // 1. assign a variable from a sync message. + a = A.SyncMessage() + + // 1.1. optionally give the variable a type + SomeType a = A.SyncMessage() + + // 2. use return keyword + A.SyncMessage() { + return result + } + + // 3. use @return or @reply annotator on an async message + @return + A->B: result +``` The third way `@return` is rarely used, but it is useful when you want to return to one level up. @@ -237,11 +267,23 @@ are ignored. Markdown is supported. See the example below: - // a comment on a participent will not be rendered +```mermaid-example +zenuml + // a comment on a participant will not be rendered BookService // a comment on a message. // **Markdown** is supported. BookService.getBook() +``` + +```mermaid +zenuml + // a comment on a participant will not be rendered + BookService + // a comment on a message. + // **Markdown** is supported. + BookService.getBook() +``` ## Loops @@ -253,11 +295,11 @@ following notations: 3. forEach, foreach 4. loop -<!----> - - while(condition) { - ...statements... - } +```zenuml +while(condition) { + ...statements... +} +``` See the example below: @@ -281,13 +323,15 @@ zenuml It is possible to express alternative paths in a sequence diagram. This is done by the notation - if(condition1) { - ...statements... - } else if(condition2) { - ...statements... - } else { - ...statements... - } +```zenuml +if(condition1) { + ...statements... +} else if(condition2) { + ...statements... +} else { + ...statements... +} +``` See the example below: @@ -315,9 +359,11 @@ zenuml It is possible to render an `opt` fragment. This is done by the notation - opt { - ...statements... - } +```zenuml +opt { + ...statements... +} +``` See the example below: @@ -345,11 +391,13 @@ It is possible to show actions that are happening in parallel. This is done by the notation - par { - statement1 - statement2 - statement3 - } +```zenuml +par { + statement1 + statement2 + statement3 +} +``` See the example below: @@ -408,3 +456,17 @@ zenuml API->BookingService: rollback status } ``` + +## Integrating with your library/website. + +Zenuml uses the experimental lazy loading & async rendering features which could change in the future. + +You can use this method to add mermaid including the zenuml diagram to a web page: + +```html +<script type="module"> + import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs'; + import zenuml from 'https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml@00.1.0/dist/mermaid-zenuml.esm.min.mjs'; + await mermaid.registerExternalDiagrams([zenuml]); +</script> +``` diff --git a/packages/mermaid-zenuml/README.md b/packages/mermaid-zenuml/README.md new file mode 120000 index 000000000..e80740063 --- /dev/null +++ b/packages/mermaid-zenuml/README.md @@ -0,0 +1 @@ +../mermaid/src/docs/syntax/zenuml.md \ No newline at end of file diff --git a/packages/mermaid-zenuml/package.json b/packages/mermaid-zenuml/package.json index 67e6a6e38..c6cf93061 100644 --- a/packages/mermaid-zenuml/package.json +++ b/packages/mermaid-zenuml/package.json @@ -1,7 +1,7 @@ { "name": "@mermaid-js/mermaid-zenuml", - "version": "0.0.1", - "description": "Zenuml integration for MermaidJS.", + "version": "0.1.0", + "description": "MermaidJS plugin for ZenUML integration", "module": "dist/mermaid-zenuml.core.mjs", "types": "dist/detector.d.ts", "type": "module", @@ -23,23 +23,23 @@ }, "repository": { "type": "git", - "url": "https://github.com/mermaid-js/mermaid" + "url": "https://github.com/mermaid-js/mermaid", + "directory": "packages/mermaid-zenuml" }, - "author": "Peng Xiao", + "contributors": [ + "Peng Xiao", + "Sidharth Vinod <github@sidharth.dev> (https://sidharth.dev)", + "Dong Cai" + ], "license": "MIT", - "standard": { - "ignore": [ - "dist/**/*.js" - ], - "globals": [ - "page" - ] - }, "dependencies": { "@zenuml/core": "^3.0.0" }, "devDependencies": { - "mermaid": "workspace:*" + "mermaid": "workspace:^" + }, + "peerDependencies": { + "mermaid": "workspace:^" }, "files": [ "dist" diff --git a/packages/mermaid-zenuml/src/parser.ts b/packages/mermaid-zenuml/src/parser.ts index 6a97991c6..8c0ca55d5 100644 --- a/packages/mermaid-zenuml/src/parser.ts +++ b/packages/mermaid-zenuml/src/parser.ts @@ -1,7 +1,9 @@ -// ZenUML manage parsing internally. It uses Antlr4 to parse the DSL. -// The parser is defined in https://github.com/ZenUml/vue-sequence/blob/main/src/parser/index.js - -// This is a dummy parser that satisfies the mermaid API logic. +/** + * ZenUML manage parsing internally. It uses Antlr4 to parse the DSL. + * The parser is defined in https://github.com/ZenUml/vue-sequence/blob/main/src/parser/index.js + * + * This is a dummy parser that satisfies the mermaid API logic. + */ export default { parser: { yy: {} }, parse: () => { diff --git a/packages/mermaid/src/docs/syntax/zenuml.md b/packages/mermaid/src/docs/syntax/zenuml.md index 03081f2b9..e4babf705 100644 --- a/packages/mermaid/src/docs/syntax/zenuml.md +++ b/packages/mermaid/src/docs/syntax/zenuml.md @@ -2,7 +2,7 @@ > A Sequence diagram is an interaction diagram that shows how processes operate with one another and in what order. -Mermaid can render sequence diagrams with ZenUML. Note that ZenUML uses a different +Mermaid can render sequence diagrams with [ZenUML](https://zenuml.com). Note that ZenUML uses a different syntax than the original Sequence Diagram in mermaid. ```mermaid-example @@ -97,30 +97,32 @@ zenuml We use `new` keyword to create an object. -``` -new A1 -new A2(with, parameters) +```mermaid-example +zenuml + new A1 + new A2(with, parameters) ``` ### Reply message There are three ways to express a reply message: -``` -// 1. assign a variable from a sync message. -a = A.SyncMessage() +```mermaid-example +zenuml + // 1. assign a variable from a sync message. + a = A.SyncMessage() -// 1.1. optionally give the variable a type -SomeType a = A.SyncMessage() + // 1.1. optionally give the variable a type + SomeType a = A.SyncMessage() -// 2. use return keyword -A.SyncMessage() { - return result -} + // 2. use return keyword + A.SyncMessage() { + return result + } -// 3. use @return or @reply annotator on an async message -@return -A->B: result + // 3. use @return or @reply annotator on an async message + @return + A->B: result ``` The third way `@return` is rarely used, but it is useful when you want to return to one level up. @@ -161,12 +163,13 @@ are ignored. Markdown is supported. See the example below: -``` -// a comment on a participent will not be rendered -BookService -// a comment on a message. -// **Markdown** is supported. -BookService.getBook() +```mermaid-example +zenuml + // a comment on a participant will not be rendered + BookService + // a comment on a message. + // **Markdown** is supported. + BookService.getBook() ``` ## Loops @@ -179,9 +182,9 @@ following notations: 3. forEach, foreach 4. loop -``` +```zenuml while(condition) { - ...statements... + ...statements... } ``` @@ -199,13 +202,13 @@ zenuml It is possible to express alternative paths in a sequence diagram. This is done by the notation -``` +```zenuml if(condition1) { - ...statements... + ...statements... } else if(condition2) { - ...statements... + ...statements... } else { - ...statements... + ...statements... } ``` @@ -225,7 +228,7 @@ zenuml It is possible to render an `opt` fragment. This is done by the notation -``` +```zenuml opt { ...statements... } @@ -248,7 +251,7 @@ It is possible to show actions that are happening in parallel. This is done by the notation -``` +```zenuml par { statement1 statement2 @@ -295,3 +298,17 @@ zenuml API->BookingService: rollback status } ``` + +## Integrating with your library/website. + +Zenuml uses the experimental lazy loading & async rendering features which could change in the future. + +You can use this method to add mermaid including the zenuml diagram to a web page: + +```html +<script type="module"> + import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs'; + import zenuml from 'https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml@00.1.0/dist/mermaid-zenuml.esm.min.mjs'; + await mermaid.registerExternalDiagrams([zenuml]); +</script> +``` From c889ef0c30e08c14be67fb49600ea216e7de6ec7 Mon Sep 17 00:00:00 2001 From: Dong Cai <dongc@blackmagicdesign.com> Date: Tue, 16 May 2023 21:08:25 +1000 Subject: [PATCH 112/255] update pnpm-lock.yaml --- pnpm-lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c86e69b55..3441625da 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -380,7 +380,7 @@ importers: version: 3.0.0(ts-node@10.9.1) devDependencies: mermaid: - specifier: workspace:* + specifier: workspace:^ version: link:../mermaid tests/webpack: From 3a5c4a149fc3d66673807d251666f44eb3b6aecc Mon Sep 17 00:00:00 2001 From: Justin Greywolf <jgreywolf@users.noreply.github.com> Date: Tue, 16 May 2023 04:12:03 -0700 Subject: [PATCH 113/255] fix parsing issue with class diagrams --- .../mermaid/src/diagrams/class/svgDraw.js | 66 ------------------- 1 file changed, 66 deletions(-) diff --git a/packages/mermaid/src/diagrams/class/svgDraw.js b/packages/mermaid/src/diagrams/class/svgDraw.js index 4c8b4369b..2d1af8b87 100644 --- a/packages/mermaid/src/diagrams/class/svgDraw.js +++ b/packages/mermaid/src/diagrams/class/svgDraw.js @@ -361,72 +361,6 @@ export const drawNote = function (elem, note, conf, diagObj) { }; export const parseMember = function (text) { - // Note: these two regular expressions don't parse the official UML syntax for attributes - // and methods. They parse a Java-style syntax of the form - // "String name" (for attributes) and "String name(int x)" for methods - const fieldRegEx = /^([#+~-])?(\w+)(~\w+~|\[])?\s+(\w+) *([$*])?$/; - const methodRegEx = /^([#+|~-])?(\w+) *\( *(.*)\) *([$*])? *(\w*[[\]|~]*\s*\w*~?)$/; - - let fieldMatch = text.match(fieldRegEx); - let methodMatch = text.match(methodRegEx); - - if (fieldMatch && !methodMatch) { - return buildFieldDisplay(fieldMatch); - } else if (methodMatch) { - return buildMethodDisplay(methodMatch); - } else { - return buildLegacyDisplay(text); - } -}; - -const buildFieldDisplay = function (parsedText) { - let cssStyle = ''; - let displayText = ''; - - try { - let visibility = parsedText[1] ? parsedText[1].trim() : ''; - let fieldType = parsedText[2] ? parsedText[2].trim() : ''; - let genericType = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : ''; - let fieldName = parsedText[4] ? parsedText[4].trim() : ''; - let classifier = parsedText[5] ? parsedText[5].trim() : ''; - - displayText = visibility + fieldType + genericType + ' ' + fieldName; - cssStyle = parseClassifier(classifier); - } catch (err) { - displayText = parsedText; - } - - return { - displayText: displayText, - cssStyle: cssStyle, - }; -}; - -const buildMethodDisplay = function (parsedText) { - let cssStyle = ''; - let displayText = ''; - - try { - let visibility = parsedText[1] ? parsedText[1].trim() : ''; - let methodName = parsedText[2] ? parsedText[2].trim() : ''; - let parameters = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : ''; - let classifier = parsedText[4] ? parsedText[4].trim() : ''; - let returnType = parsedText[5] ? ' : ' + parseGenericTypes(parsedText[5]).trim() : ''; - - displayText = visibility + methodName + '(' + parameters + ')' + returnType; - cssStyle = parseClassifier(classifier); - } catch (err) { - displayText = parsedText; - } - - return { - displayText: displayText, - cssStyle: cssStyle, - }; -}; - -const buildLegacyDisplay = function (text) { - // if for some reason we don't have any match, use old format to parse text let displayText = ''; let cssStyle = ''; let returnType = ''; From 78efac2c51a36a1c4de971d37e9d9fde8b482fba Mon Sep 17 00:00:00 2001 From: Justin Greywolf <jgreywolf@users.noreply.github.com> Date: Tue, 16 May 2023 06:13:37 -0700 Subject: [PATCH 114/255] Fix visibility issue for fields --- packages/mermaid/src/diagrams/class/svgDraw.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/mermaid/src/diagrams/class/svgDraw.js b/packages/mermaid/src/diagrams/class/svgDraw.js index 2d1af8b87..e4afe2136 100644 --- a/packages/mermaid/src/diagrams/class/svgDraw.js +++ b/packages/mermaid/src/diagrams/class/svgDraw.js @@ -378,14 +378,15 @@ export const parseMember = function (text) { cssStyle = parseClassifier(lastChar); } - let startIndex = visibility === '' ? 0 : 1; + const startIndex = visibility === '' ? 0 : 1; let endIndex = cssStyle === '' ? text.length : text.length - 1; text = text.substring(startIndex, endIndex); - let methodStart = text.indexOf('('); - let methodEnd = text.indexOf(')'); + const methodStart = text.indexOf('('); + const methodEnd = text.indexOf(')'); + const isMethod = methodStart > 1 && methodEnd > methodStart && methodEnd <= text.length; - if (methodStart > 1 && methodEnd > methodStart && methodEnd <= text.length) { + if (isMethod) { let methodName = text.substring(0, methodStart).trim(); const parameters = text.substring(methodStart + 1, methodEnd); @@ -412,7 +413,7 @@ export const parseMember = function (text) { } } else { // finally - if all else fails, just send the text back as written (other than parsing for generic types) - displayText = parseGenericTypes(text); + displayText = visibility + parseGenericTypes(text); } return { From 82eccb70faebc158f260b833c2a1dd4b349194ea Mon Sep 17 00:00:00 2001 From: Dong Cai <dongc@blackmagicdesign.com> Date: Tue, 16 May 2023 23:41:53 +1000 Subject: [PATCH 115/255] fixed typo and update peerDependencies version --- docs/syntax/zenuml.md | 2 +- packages/mermaid-zenuml/package.json | 2 +- packages/mermaid/src/docs/syntax/zenuml.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/syntax/zenuml.md b/docs/syntax/zenuml.md index d936e5f76..9e9b11255 100644 --- a/docs/syntax/zenuml.md +++ b/docs/syntax/zenuml.md @@ -466,7 +466,7 @@ You can use this method to add mermaid including the zenuml diagram to a web pag ```html <script type="module"> import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs'; - import zenuml from 'https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml@00.1.0/dist/mermaid-zenuml.esm.min.mjs'; + import zenuml from 'https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml@0.1.0/dist/mermaid-zenuml.esm.min.mjs'; await mermaid.registerExternalDiagrams([zenuml]); </script> ``` diff --git a/packages/mermaid-zenuml/package.json b/packages/mermaid-zenuml/package.json index c6cf93061..3e26e0dcf 100644 --- a/packages/mermaid-zenuml/package.json +++ b/packages/mermaid-zenuml/package.json @@ -39,7 +39,7 @@ "mermaid": "workspace:^" }, "peerDependencies": { - "mermaid": "workspace:^" + "mermaid": "workspace:>=10.0.0" }, "files": [ "dist" diff --git a/packages/mermaid/src/docs/syntax/zenuml.md b/packages/mermaid/src/docs/syntax/zenuml.md index e4babf705..292c0f1c1 100644 --- a/packages/mermaid/src/docs/syntax/zenuml.md +++ b/packages/mermaid/src/docs/syntax/zenuml.md @@ -308,7 +308,7 @@ You can use this method to add mermaid including the zenuml diagram to a web pag ```html <script type="module"> import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs'; - import zenuml from 'https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml@00.1.0/dist/mermaid-zenuml.esm.min.mjs'; + import zenuml from 'https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml@0.1.0/dist/mermaid-zenuml.esm.min.mjs'; await mermaid.registerExternalDiagrams([zenuml]); </script> ``` From 6a89ef94f7b1fdaa602bdf2b6b559f86c800fbb1 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Wed, 17 May 2023 11:21:03 +0530 Subject: [PATCH 116/255] Cleanup --- .eslintignore | 3 ++- packages/mermaid/src/setupGraphViewbox.js | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.eslintignore b/.eslintignore index 04348c410..1db5125d0 100644 --- a/.eslintignore +++ b/.eslintignore @@ -4,4 +4,5 @@ docs/Setup.md cypress.config.js cypress/plugins/index.js coverage -*.json \ No newline at end of file +*.json +node_modules diff --git a/packages/mermaid/src/setupGraphViewbox.js b/packages/mermaid/src/setupGraphViewbox.js index c4aeeceea..0396d654f 100644 --- a/packages/mermaid/src/setupGraphViewbox.js +++ b/packages/mermaid/src/setupGraphViewbox.js @@ -70,7 +70,6 @@ export const setupGraphViewbox = function (graph, svgElem, padding, useMaxWidth) height = sHeight + padding * 2; // } - // width = log.info(`Calculated bounds: ${width}x${height}`); configureSvgSize(svgElem, height, width, useMaxWidth); From 0ef115f69ab7c0e1f0d7ca880991f914fe9e437f Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Wed, 17 May 2023 11:28:17 +0530 Subject: [PATCH 117/255] Fix vitepress build --- packages/mermaid/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index dd4f5344b..53f0728f7 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -28,7 +28,7 @@ "docs:build": "rimraf ../../docs && pnpm docs:spellcheck && pnpm docs:code && ts-node-esm src/docs.mts", "docs:verify": "pnpm docs:spellcheck && pnpm docs:code && ts-node-esm src/docs.mts --verify", "docs:pre:vitepress": "rimraf src/vitepress && pnpm docs:code && ts-node-esm src/docs.mts --vitepress", - "docs:build:vitepress": "pnpm docs:pre:vitepress && (cd src/vitepress && pnpm --filter ./ install && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing", + "docs:build:vitepress": "pnpm docs:pre:vitepress && (cd src/vitepress && pnpm --filter ./ install --no-frozen-lockfile && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing", "docs:dev": "pnpm docs:pre:vitepress && concurrently \"pnpm --filter ./ src/vitepress dev\" \"ts-node-esm src/docs.mts --watch --vitepress\"", "docs:serve": "pnpm docs:build:vitepress && vitepress serve src/vitepress", "docs:spellcheck": "cspell --config ../../cSpell.json \"src/docs/**/*.md\"", From 9eeeb97e15059a6e8891a9b24f4b1ffbe765805f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 May 2023 06:00:51 +0000 Subject: [PATCH 118/255] Update all patch dependencies --- packages/mermaid/src/docs/package.json | 2 +- pnpm-lock.yaml | 134 ++++++++++++++----------- 2 files changed, 76 insertions(+), 60 deletions(-) diff --git a/packages/mermaid/src/docs/package.json b/packages/mermaid/src/docs/package.json index 6135fa15b..01a63aeb5 100644 --- a/packages/mermaid/src/docs/package.json +++ b/packages/mermaid/src/docs/package.json @@ -30,7 +30,7 @@ "unplugin-vue-components": "^0.24.1", "vite": "^4.3.3", "vite-plugin-pwa": "^0.14.7", - "vitepress": "1.0.0-alpha.74", + "vitepress": "1.0.0-alpha.75", "workbox-window": "^6.5.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d69718ef8..f52a221e9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -419,60 +419,8 @@ importers: specifier: ^0.14.7 version: 0.14.7(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) vitepress: - specifier: 1.0.0-alpha.74 - version: 1.0.0-alpha.74(@algolia/client-search@4.14.2)(@types/node@18.16.0) - workbox-window: - specifier: ^6.5.4 - version: 6.5.4 - - packages/mermaid/src/vitepress: - dependencies: - '@vueuse/core': - specifier: ^10.1.0 - version: 10.1.0(vue@3.2.47) - jiti: - specifier: ^1.18.2 - version: 1.18.2 - vue: - specifier: ^3.2.47 - version: 3.2.47 - devDependencies: - '@iconify-json/carbon': - specifier: ^1.1.16 - version: 1.1.16 - '@unocss/reset': - specifier: ^0.51.8 - version: 0.51.8 - '@vite-pwa/vitepress': - specifier: ^0.0.5 - version: 0.0.5(vite-plugin-pwa@0.14.7) - '@vitejs/plugin-vue': - specifier: ^4.2.1 - version: 4.2.1(vite@4.3.3)(vue@3.2.47) - fast-glob: - specifier: ^3.2.12 - version: 3.2.12 - https-localhost: - specifier: ^4.7.1 - version: 4.7.1 - pathe: - specifier: ^1.1.0 - version: 1.1.0 - unocss: - specifier: ^0.51.8 - version: 0.51.8(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3) - unplugin-vue-components: - specifier: ^0.24.1 - version: 0.24.1(rollup@2.79.1)(vue@3.2.47) - vite: - specifier: ^4.3.3 - version: 4.3.3(@types/node@18.16.0) - vite-plugin-pwa: - specifier: ^0.14.7 - version: 0.14.7(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) - vitepress: - specifier: 1.0.0-alpha.74 - version: 1.0.0-alpha.74(@algolia/client-search@4.14.2)(@types/node@18.16.0) + specifier: 1.0.0-alpha.75 + version: 1.0.0-alpha.75(@algolia/client-search@4.14.2)(@types/node@18.16.0) workbox-window: specifier: ^6.5.4 version: 6.5.4 @@ -504,6 +452,12 @@ packages: '@algolia/autocomplete-shared': 1.7.4 dev: true + /@algolia/autocomplete-core@1.8.2: + resolution: {integrity: sha512-mTeshsyFhAqw/ebqNsQpMtbnjr+qVOSKXArEj4K0d7sqc8It1XD0gkASwecm9mF/jlOQ4Z9RNg1HbdA8JPdRwQ==} + dependencies: + '@algolia/autocomplete-shared': 1.8.2 + dev: true + /@algolia/autocomplete-preset-algolia@1.7.4(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): resolution: {integrity: sha512-s37hrvLEIfcmKY8VU9LsAXgm2yfmkdHT3DnA3SgHaY93yjZ2qL57wzb5QweVkYuEBZkT2PIREvRoLXC2sxTbpQ==} peerDependencies: @@ -515,10 +469,25 @@ packages: algoliasearch: 4.14.2 dev: true + /@algolia/autocomplete-preset-algolia@1.8.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): + resolution: {integrity: sha512-J0oTx4me6ZM9kIKPuL3lyU3aB8DEvpVvR6xWmHVROx5rOYJGQcZsdG4ozxwcOyiiu3qxMkIbzntnV1S1VWD8yA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/autocomplete-shared': 1.8.2 + '@algolia/client-search': 4.14.2 + algoliasearch: 4.14.2 + dev: true + /@algolia/autocomplete-shared@1.7.4: resolution: {integrity: sha512-2VGCk7I9tA9Ge73Km99+Qg87w0wzW4tgUruvWAn/gfey1ZXgmxZtyIRBebk35R1O8TbK77wujVtCnpsGpRy1kg==} dev: true + /@algolia/autocomplete-shared@1.8.2: + resolution: {integrity: sha512-b6Z/X4MczChMcfhk6kfRmBzPgjoPzuS9KGR4AFsiLulLNRAAqhP+xZTKtMnZGhLuc61I20d5WqlId02AZvcO6g==} + dev: true + /@algolia/cache-browser-local-storage@4.14.2: resolution: {integrity: sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA==} dependencies: @@ -2908,6 +2877,10 @@ packages: resolution: {integrity: sha512-6SCwI7P8ao+se1TUsdZ7B4XzL+gqeQZnBc+2EONZlcVa0dVrk0NjETxozFKgMv0eEGH8QzP1fkN+A1rH61l4eg==} dev: true + /@docsearch/css@3.3.4: + resolution: {integrity: sha512-vDwCDoVXDgopw/hvr0zEADew2wWaGP8Qq0Bxhgii1Ewz2t4fQeyJwIRN/mWADeLFYPVkpz8TpEbxya/i6Tm0WA==} + dev: true + /@docsearch/js@3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0): resolution: {integrity: sha512-2xAv2GFuHzzmG0SSZgf8wHX0qZX8n9Y1ZirKUk5Wrdc+vH9CL837x2hZIUdwcPZI9caBA+/CzxsS68O4waYjUQ==} dependencies: @@ -2920,6 +2893,18 @@ packages: - react-dom dev: true + /@docsearch/js@3.3.4(@algolia/client-search@4.14.2): + resolution: {integrity: sha512-Xd2saBziXJ1UuVpcDz94zAFEFAM6ap993agh0za2e3LDZLhaW993b1f9gyUL4e1CZLsR076tztG2un2gVncvpA==} + dependencies: + '@docsearch/react': 3.3.4(@algolia/client-search@4.14.2) + preact: 10.11.0 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + dev: true + /@docsearch/react@3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0): resolution: {integrity: sha512-pLa0cxnl+G0FuIDuYlW+EBK6Rw2jwLw9B1RHIeS4N4s2VhsfJ/wzeCi3CWcs5yVfxLd5ZK50t//TMA5e79YT7Q==} peerDependencies: @@ -2944,6 +2929,28 @@ packages: - '@algolia/client-search' dev: true + /@docsearch/react@3.3.4(@algolia/client-search@4.14.2): + resolution: {integrity: sha512-aeOf1WC5zMzBEi2SI6WWznOmIo9rnpN4p7a3zHXxowVciqlI4HsZGtOR9nFOufLeolv7HibwLlaM0oyUqJxasw==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + dependencies: + '@algolia/autocomplete-core': 1.8.2 + '@algolia/autocomplete-preset-algolia': 1.8.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) + '@docsearch/css': 3.3.4 + algoliasearch: 4.14.2 + transitivePeerDependencies: + - '@algolia/client-search' + dev: true + /@es-joy/jsdoccomment@0.37.1: resolution: {integrity: sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==} engines: {node: ^14 || ^16 || ^17 || ^18 || ^19 || ^20} @@ -12829,6 +12836,15 @@ packages: vscode-textmate: 8.0.0 dev: true + /shiki@0.14.2: + resolution: {integrity: sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==} + dependencies: + ansi-sequence-parser: 1.1.0 + jsonc-parser: 3.2.0 + vscode-oniguruma: 1.7.0 + vscode-textmate: 8.0.0 + dev: true + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: @@ -14253,19 +14269,19 @@ packages: - terser dev: true - /vitepress@1.0.0-alpha.74(@algolia/client-search@4.14.2)(@types/node@18.16.0): - resolution: {integrity: sha512-n5UHqsLJKaJ3V6BSiofS5ZVhtxzarNIn3/kyOzUp/vePmVbQyX/pZ6/MhZgNr0g5t4E55j7XM3AHf/Fo0hnrpw==} + /vitepress@1.0.0-alpha.75(@algolia/client-search@4.14.2)(@types/node@18.16.0): + resolution: {integrity: sha512-twpPZ/6UnDR8X0Nmj767KwKhXlTQQM9V/J1i2BP9ryO29/w4hpxBfEum6nvfpNhJ4H3h+cIhwzAK/e9crZ6HEQ==} hasBin: true dependencies: - '@docsearch/css': 3.3.3 - '@docsearch/js': 3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0) + '@docsearch/css': 3.3.4 + '@docsearch/js': 3.3.4(@algolia/client-search@4.14.2) '@vitejs/plugin-vue': 4.2.1(vite@4.3.3)(vue@3.2.47) '@vue/devtools-api': 6.5.0 '@vueuse/core': 10.1.0(vue@3.2.47) body-scroll-lock: 4.0.0-beta.0 mark.js: 8.11.1 minisearch: 6.0.1 - shiki: 0.14.1 + shiki: 0.14.2 vite: 4.3.3(@types/node@18.16.0) vue: 3.2.47 transitivePeerDependencies: From b1590c2211777f986f223b1c91d784fb59b004a0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 May 2023 09:18:32 +0000 Subject: [PATCH 119/255] Update all minor dependencies --- .github/workflows/link-checker.yml | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/link-checker.yml b/.github/workflows/link-checker.yml index 3a9af99c1..a2dc989e7 100644 --- a/.github/workflows/link-checker.yml +++ b/.github/workflows/link-checker.yml @@ -36,7 +36,7 @@ jobs: restore-keys: cache-lychee- - name: Link Checker - uses: lycheeverse/lychee-action@v1.7.0 + uses: lycheeverse/lychee-action@v1.8.0 with: args: >- --verbose diff --git a/package.json b/package.json index fe7a3ba00..80cb6087b 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "10.1.0", "description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "type": "module", - "packageManager": "pnpm@8.4.0", + "packageManager": "pnpm@8.5.1", "keywords": [ "diagram", "markdown", From bb400d53b9edab6ebced1d59ff7f443822af5dce Mon Sep 17 00:00:00 2001 From: Dong Cai <3481791+dontry@users.noreply.github.com> Date: Tue, 16 May 2023 20:29:56 +1000 Subject: [PATCH 120/255] Address mermaid-zenuml PR comments --- docs/syntax/zenuml.md | 108 ++++++++++++++++----- packages/mermaid-zenuml/README.md | 1 + packages/mermaid-zenuml/package.json | 26 ++--- packages/mermaid-zenuml/src/parser.ts | 10 +- packages/mermaid/src/docs/syntax/zenuml.md | 77 +++++++++------ 5 files changed, 152 insertions(+), 70 deletions(-) create mode 120000 packages/mermaid-zenuml/README.md diff --git a/docs/syntax/zenuml.md b/docs/syntax/zenuml.md index a9c7c0f4b..d936e5f76 100644 --- a/docs/syntax/zenuml.md +++ b/docs/syntax/zenuml.md @@ -8,7 +8,7 @@ > A Sequence diagram is an interaction diagram that shows how processes operate with one another and in what order. -Mermaid can render sequence diagrams with ZenUML. Note that ZenUML uses a different +Mermaid can render sequence diagrams with [ZenUML](https://zenuml.com). Note that ZenUML uses a different syntax than the original Sequence Diagram in mermaid. ```mermaid-example @@ -153,13 +153,24 @@ zenuml We use `new` keyword to create an object. +```mermaid-example +zenuml new A1 new A2(with, parameters) +``` + +```mermaid +zenuml + new A1 + new A2(with, parameters) +``` ### Reply message There are three ways to express a reply message: +```mermaid-example +zenuml // 1. assign a variable from a sync message. a = A.SyncMessage() @@ -168,12 +179,31 @@ There are three ways to express a reply message: // 2. use return keyword A.SyncMessage() { - return result + return result } // 3. use @return or @reply annotator on an async message @return A->B: result +``` + +```mermaid +zenuml + // 1. assign a variable from a sync message. + a = A.SyncMessage() + + // 1.1. optionally give the variable a type + SomeType a = A.SyncMessage() + + // 2. use return keyword + A.SyncMessage() { + return result + } + + // 3. use @return or @reply annotator on an async message + @return + A->B: result +``` The third way `@return` is rarely used, but it is useful when you want to return to one level up. @@ -237,11 +267,23 @@ are ignored. Markdown is supported. See the example below: - // a comment on a participent will not be rendered +```mermaid-example +zenuml + // a comment on a participant will not be rendered BookService // a comment on a message. // **Markdown** is supported. BookService.getBook() +``` + +```mermaid +zenuml + // a comment on a participant will not be rendered + BookService + // a comment on a message. + // **Markdown** is supported. + BookService.getBook() +``` ## Loops @@ -253,11 +295,11 @@ following notations: 3. forEach, foreach 4. loop -<!----> - - while(condition) { - ...statements... - } +```zenuml +while(condition) { + ...statements... +} +``` See the example below: @@ -281,13 +323,15 @@ zenuml It is possible to express alternative paths in a sequence diagram. This is done by the notation - if(condition1) { - ...statements... - } else if(condition2) { - ...statements... - } else { - ...statements... - } +```zenuml +if(condition1) { + ...statements... +} else if(condition2) { + ...statements... +} else { + ...statements... +} +``` See the example below: @@ -315,9 +359,11 @@ zenuml It is possible to render an `opt` fragment. This is done by the notation - opt { - ...statements... - } +```zenuml +opt { + ...statements... +} +``` See the example below: @@ -345,11 +391,13 @@ It is possible to show actions that are happening in parallel. This is done by the notation - par { - statement1 - statement2 - statement3 - } +```zenuml +par { + statement1 + statement2 + statement3 +} +``` See the example below: @@ -408,3 +456,17 @@ zenuml API->BookingService: rollback status } ``` + +## Integrating with your library/website. + +Zenuml uses the experimental lazy loading & async rendering features which could change in the future. + +You can use this method to add mermaid including the zenuml diagram to a web page: + +```html +<script type="module"> + import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs'; + import zenuml from 'https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml@00.1.0/dist/mermaid-zenuml.esm.min.mjs'; + await mermaid.registerExternalDiagrams([zenuml]); +</script> +``` diff --git a/packages/mermaid-zenuml/README.md b/packages/mermaid-zenuml/README.md new file mode 120000 index 000000000..e80740063 --- /dev/null +++ b/packages/mermaid-zenuml/README.md @@ -0,0 +1 @@ +../mermaid/src/docs/syntax/zenuml.md \ No newline at end of file diff --git a/packages/mermaid-zenuml/package.json b/packages/mermaid-zenuml/package.json index 67e6a6e38..c6cf93061 100644 --- a/packages/mermaid-zenuml/package.json +++ b/packages/mermaid-zenuml/package.json @@ -1,7 +1,7 @@ { "name": "@mermaid-js/mermaid-zenuml", - "version": "0.0.1", - "description": "Zenuml integration for MermaidJS.", + "version": "0.1.0", + "description": "MermaidJS plugin for ZenUML integration", "module": "dist/mermaid-zenuml.core.mjs", "types": "dist/detector.d.ts", "type": "module", @@ -23,23 +23,23 @@ }, "repository": { "type": "git", - "url": "https://github.com/mermaid-js/mermaid" + "url": "https://github.com/mermaid-js/mermaid", + "directory": "packages/mermaid-zenuml" }, - "author": "Peng Xiao", + "contributors": [ + "Peng Xiao", + "Sidharth Vinod <github@sidharth.dev> (https://sidharth.dev)", + "Dong Cai" + ], "license": "MIT", - "standard": { - "ignore": [ - "dist/**/*.js" - ], - "globals": [ - "page" - ] - }, "dependencies": { "@zenuml/core": "^3.0.0" }, "devDependencies": { - "mermaid": "workspace:*" + "mermaid": "workspace:^" + }, + "peerDependencies": { + "mermaid": "workspace:^" }, "files": [ "dist" diff --git a/packages/mermaid-zenuml/src/parser.ts b/packages/mermaid-zenuml/src/parser.ts index 6a97991c6..8c0ca55d5 100644 --- a/packages/mermaid-zenuml/src/parser.ts +++ b/packages/mermaid-zenuml/src/parser.ts @@ -1,7 +1,9 @@ -// ZenUML manage parsing internally. It uses Antlr4 to parse the DSL. -// The parser is defined in https://github.com/ZenUml/vue-sequence/blob/main/src/parser/index.js - -// This is a dummy parser that satisfies the mermaid API logic. +/** + * ZenUML manage parsing internally. It uses Antlr4 to parse the DSL. + * The parser is defined in https://github.com/ZenUml/vue-sequence/blob/main/src/parser/index.js + * + * This is a dummy parser that satisfies the mermaid API logic. + */ export default { parser: { yy: {} }, parse: () => { diff --git a/packages/mermaid/src/docs/syntax/zenuml.md b/packages/mermaid/src/docs/syntax/zenuml.md index 03081f2b9..e4babf705 100644 --- a/packages/mermaid/src/docs/syntax/zenuml.md +++ b/packages/mermaid/src/docs/syntax/zenuml.md @@ -2,7 +2,7 @@ > A Sequence diagram is an interaction diagram that shows how processes operate with one another and in what order. -Mermaid can render sequence diagrams with ZenUML. Note that ZenUML uses a different +Mermaid can render sequence diagrams with [ZenUML](https://zenuml.com). Note that ZenUML uses a different syntax than the original Sequence Diagram in mermaid. ```mermaid-example @@ -97,30 +97,32 @@ zenuml We use `new` keyword to create an object. -``` -new A1 -new A2(with, parameters) +```mermaid-example +zenuml + new A1 + new A2(with, parameters) ``` ### Reply message There are three ways to express a reply message: -``` -// 1. assign a variable from a sync message. -a = A.SyncMessage() +```mermaid-example +zenuml + // 1. assign a variable from a sync message. + a = A.SyncMessage() -// 1.1. optionally give the variable a type -SomeType a = A.SyncMessage() + // 1.1. optionally give the variable a type + SomeType a = A.SyncMessage() -// 2. use return keyword -A.SyncMessage() { - return result -} + // 2. use return keyword + A.SyncMessage() { + return result + } -// 3. use @return or @reply annotator on an async message -@return -A->B: result + // 3. use @return or @reply annotator on an async message + @return + A->B: result ``` The third way `@return` is rarely used, but it is useful when you want to return to one level up. @@ -161,12 +163,13 @@ are ignored. Markdown is supported. See the example below: -``` -// a comment on a participent will not be rendered -BookService -// a comment on a message. -// **Markdown** is supported. -BookService.getBook() +```mermaid-example +zenuml + // a comment on a participant will not be rendered + BookService + // a comment on a message. + // **Markdown** is supported. + BookService.getBook() ``` ## Loops @@ -179,9 +182,9 @@ following notations: 3. forEach, foreach 4. loop -``` +```zenuml while(condition) { - ...statements... + ...statements... } ``` @@ -199,13 +202,13 @@ zenuml It is possible to express alternative paths in a sequence diagram. This is done by the notation -``` +```zenuml if(condition1) { - ...statements... + ...statements... } else if(condition2) { - ...statements... + ...statements... } else { - ...statements... + ...statements... } ``` @@ -225,7 +228,7 @@ zenuml It is possible to render an `opt` fragment. This is done by the notation -``` +```zenuml opt { ...statements... } @@ -248,7 +251,7 @@ It is possible to show actions that are happening in parallel. This is done by the notation -``` +```zenuml par { statement1 statement2 @@ -295,3 +298,17 @@ zenuml API->BookingService: rollback status } ``` + +## Integrating with your library/website. + +Zenuml uses the experimental lazy loading & async rendering features which could change in the future. + +You can use this method to add mermaid including the zenuml diagram to a web page: + +```html +<script type="module"> + import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs'; + import zenuml from 'https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml@00.1.0/dist/mermaid-zenuml.esm.min.mjs'; + await mermaid.registerExternalDiagrams([zenuml]); +</script> +``` From 507e24cc7284c4709145e6ca16e3eb16a898bae3 Mon Sep 17 00:00:00 2001 From: Dong Cai <3481791+dontry@users.noreply.github.com> Date: Tue, 16 May 2023 21:08:25 +1000 Subject: [PATCH 121/255] update pnpm-lock.yaml --- pnpm-lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c86e69b55..3441625da 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -380,7 +380,7 @@ importers: version: 3.0.0(ts-node@10.9.1) devDependencies: mermaid: - specifier: workspace:* + specifier: workspace:^ version: link:../mermaid tests/webpack: From 27e59e5adcce25d9419259fc842b79470fb1d883 Mon Sep 17 00:00:00 2001 From: Dong Cai <3481791+dontry@users.noreply.github.com> Date: Tue, 16 May 2023 23:41:53 +1000 Subject: [PATCH 122/255] fixed typo and update peerDependencies version --- docs/syntax/zenuml.md | 2 +- packages/mermaid-zenuml/package.json | 2 +- packages/mermaid/src/docs/syntax/zenuml.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/syntax/zenuml.md b/docs/syntax/zenuml.md index d936e5f76..9e9b11255 100644 --- a/docs/syntax/zenuml.md +++ b/docs/syntax/zenuml.md @@ -466,7 +466,7 @@ You can use this method to add mermaid including the zenuml diagram to a web pag ```html <script type="module"> import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs'; - import zenuml from 'https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml@00.1.0/dist/mermaid-zenuml.esm.min.mjs'; + import zenuml from 'https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml@0.1.0/dist/mermaid-zenuml.esm.min.mjs'; await mermaid.registerExternalDiagrams([zenuml]); </script> ``` diff --git a/packages/mermaid-zenuml/package.json b/packages/mermaid-zenuml/package.json index c6cf93061..3e26e0dcf 100644 --- a/packages/mermaid-zenuml/package.json +++ b/packages/mermaid-zenuml/package.json @@ -39,7 +39,7 @@ "mermaid": "workspace:^" }, "peerDependencies": { - "mermaid": "workspace:^" + "mermaid": "workspace:>=10.0.0" }, "files": [ "dist" diff --git a/packages/mermaid/src/docs/syntax/zenuml.md b/packages/mermaid/src/docs/syntax/zenuml.md index e4babf705..292c0f1c1 100644 --- a/packages/mermaid/src/docs/syntax/zenuml.md +++ b/packages/mermaid/src/docs/syntax/zenuml.md @@ -308,7 +308,7 @@ You can use this method to add mermaid including the zenuml diagram to a web pag ```html <script type="module"> import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs'; - import zenuml from 'https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml@00.1.0/dist/mermaid-zenuml.esm.min.mjs'; + import zenuml from 'https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml@0.1.0/dist/mermaid-zenuml.esm.min.mjs'; await mermaid.registerExternalDiagrams([zenuml]); </script> ``` From 49c97dad4c6f56729796c46b6429e29b7cfcbd86 Mon Sep 17 00:00:00 2001 From: dontry <dontry@users.noreply.github.com> Date: Wed, 17 May 2023 23:50:57 +1000 Subject: [PATCH 123/255] ignore ZenUML types --- package.json | 2 +- packages/mermaid-zenuml/src/zenumlRenderer.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index fe7a3ba00..611622029 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "build:vite": "ts-node-esm --transpileOnly .vite/build.ts", "build:mermaid": "pnpm build:vite --mermaid", "build:viz": "pnpm build:mermaid --visualize", - "build:types": "tsc -p ./packages/mermaid/tsconfig.json --emitDeclarationOnly && tsc -p ./packages/mermaid-example-diagram/tsconfig.json --emitDeclarationOnly", + "build:types": "tsc -p ./packages/mermaid/tsconfig.json --emitDeclarationOnly && tsc -p ./packages/mermaid-zenuml/tsconfig.json --emitDeclarationOnly && tsc -p ./packages/mermaid-example-diagram/tsconfig.json --emitDeclarationOnly", "build:watch": "pnpm build:vite --watch", "build": "pnpm run -r clean && pnpm build:types && pnpm build:vite", "dev": "concurrently \"pnpm build:vite --watch\" \"ts-node-esm .vite/server.ts\"", diff --git a/packages/mermaid-zenuml/src/zenumlRenderer.ts b/packages/mermaid-zenuml/src/zenumlRenderer.ts index 8ea5f4331..e8ab69cdd 100644 --- a/packages/mermaid-zenuml/src/zenumlRenderer.ts +++ b/packages/mermaid-zenuml/src/zenumlRenderer.ts @@ -53,7 +53,7 @@ export const draw = async function (text: string, id: string) { const { foreignObject, container, app } = createForeignObject(id); svgContainer.appendChild(foreignObject); - + // @ts-expect-error @zenuml/core@3.0.0 exports the wrong type for ZenUml const zenuml = new ZenUml(app); // default is a theme name. More themes to be added and will be configurable in the future await zenuml.render(text, 'theme-mermaid'); From a00616863d28322100b289845d75a103dc378451 Mon Sep 17 00:00:00 2001 From: dontry <dontry@users.noreply.github.com> Date: Wed, 17 May 2023 23:51:51 +1000 Subject: [PATCH 124/255] Add contributors profile url --- packages/mermaid-zenuml/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mermaid-zenuml/package.json b/packages/mermaid-zenuml/package.json index 3e26e0dcf..6181c857b 100644 --- a/packages/mermaid-zenuml/package.json +++ b/packages/mermaid-zenuml/package.json @@ -27,9 +27,9 @@ "directory": "packages/mermaid-zenuml" }, "contributors": [ - "Peng Xiao", + "Peng Xiao (https://github.com/MrCoder)", "Sidharth Vinod <github@sidharth.dev> (https://sidharth.dev)", - "Dong Cai" + "Dong Cai (https://github.com/dontry)" ], "license": "MIT", "dependencies": { From 6cce1b20fb83116e98b784f80edc80e07b2b82dc Mon Sep 17 00:00:00 2001 From: aloisklink <aloisklink@users.noreply.github.com> Date: Wed, 17 May 2023 18:46:58 +0000 Subject: [PATCH 125/255] Update docs --- docs/config/setup/README.md | 13 + docs/config/setup/modules/config.md | 276 +++++++++++++++++++++ docs/config/setup/modules/defaultConfig.md | 56 +++++ 3 files changed, 345 insertions(+) create mode 100644 docs/config/setup/README.md create mode 100644 docs/config/setup/modules/config.md create mode 100644 docs/config/setup/modules/defaultConfig.md diff --git a/docs/config/setup/README.md b/docs/config/setup/README.md new file mode 100644 index 000000000..1cf82797d --- /dev/null +++ b/docs/config/setup/README.md @@ -0,0 +1,13 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/setup/README.md](../../../packages/mermaid/src/docs/config/setup/README.md). + +# mermaid + +## Modules + +- [config](modules/config.md) +- [defaultConfig](modules/defaultConfig.md) +- [mermaidAPI](modules/mermaidAPI.md) diff --git a/docs/config/setup/modules/config.md b/docs/config/setup/modules/config.md new file mode 100644 index 000000000..8381dc8c7 --- /dev/null +++ b/docs/config/setup/modules/config.md @@ -0,0 +1,276 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/setup/modules/config.md](../../../../packages/mermaid/src/docs/config/setup/modules/config.md). + +# Module: config + +## Variables + +### defaultConfig + +• `Const` **defaultConfig**: `MermaidConfig` + +#### Defined in + +[config.ts:7](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L7) + +## Functions + +### addDirective + +▸ **addDirective**(`directive`): `void` + +Pushes in a directive to the configuration + +#### Parameters + +| Name | Type | Description | +| :---------- | :---- | :----------------------- | +| `directive` | `any` | The directive to push in | + +#### Returns + +`void` + +#### Defined in + +[config.ts:191](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L191) + +--- + +### getConfig + +▸ **getConfig**(): `MermaidConfig` + +## getConfig + +| Function | Description | Type | Return Values | +| --------- | ------------------------- | ----------- | ------------------------------ | +| getConfig | Obtains the currentConfig | Get Request | Any Values from current Config | + +**Notes**: Returns **any** the currentConfig + +#### Returns + +`MermaidConfig` + +The currentConfig + +#### Defined in + +[config.ts:137](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L137) + +--- + +### getSiteConfig + +▸ **getSiteConfig**(): `MermaidConfig` + +## getSiteConfig + +| Function | Description | Type | Values | +| ------------- | ------------------------------------------------- | ----------- | -------------------------------- | +| setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig | + +**Notes**: Returns **any** values in siteConfig. + +#### Returns + +`MermaidConfig` + +The siteConfig + +#### Defined in + +[config.ts:96](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L96) + +--- + +### reset + +▸ **reset**(`config?`): `void` + +## reset + +| Function | Description | Type | Required | Values | +| -------- | ---------------------------- | ----------- | -------- | ------ | +| reset | Resets currentConfig to conf | Put Request | Required | None | + +## conf + +| Parameter | Description | Type | Required | Values | +| --------- | -------------------------------------------------------------- | ---------- | -------- | -------------------------------------------- | +| conf | base set of values, which currentConfig could be **reset** to. | Dictionary | Required | Any Values, with respect to the secure Array | + +**Notes**: (default: current siteConfig ) (optional, default `getSiteConfig()`) + +#### Parameters + +| Name | Type | Default value | Description | +| :------- | :-------------- | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `config` | `MermaidConfig` | `siteConfig` | base set of values, which currentConfig could be **reset** to. Defaults to the current siteConfig (e.g returned by [getSiteConfig](config.md#getsiteconfig)). | + +#### Returns + +`void` + +#### Defined in + +[config.ts:223](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L223) + +--- + +### sanitize + +▸ **sanitize**(`options`): `void` + +## sanitize + +| Function | Description | Type | Values | +| -------- | -------------------------------------- | ----------- | ------ | +| sanitize | Sets the siteConfig to desired values. | Put Request | None | + +Ensures options parameter does not attempt to override siteConfig secure keys **Notes**: modifies +options in-place + +#### Parameters + +| Name | Type | Description | +| :-------- | :---- | :-------------------------------- | +| `options` | `any` | The potential setConfig parameter | + +#### Returns + +`void` + +#### Defined in + +[config.ts:152](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L152) + +--- + +### saveConfigFromInitialize + +▸ **saveConfigFromInitialize**(`conf`): `void` + +#### Parameters + +| Name | Type | +| :----- | :-------------- | +| `conf` | `MermaidConfig` | + +#### Returns + +`void` + +#### Defined in + +[config.ts:75](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L75) + +--- + +### setConfig + +▸ **setConfig**(`conf`): `MermaidConfig` + +## setConfig + +| Function | Description | Type | Values | +| ------------- | ------------------------------------- | ----------- | --------------------------------------- | +| setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array | + +**Notes**: Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure +keys. Any values found in conf with key found in siteConfig.secure will be replaced with the +corresponding siteConfig value. + +#### Parameters + +| Name | Type | Description | +| :----- | :-------------- | :-------------------------- | +| `conf` | `MermaidConfig` | The potential currentConfig | + +#### Returns + +`MermaidConfig` + +The currentConfig merged with the sanitized conf + +#### Defined in + +[config.ts:113](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L113) + +--- + +### setSiteConfig + +▸ **setSiteConfig**(`conf`): `MermaidConfig` + +## setSiteConfig + +| Function | Description | Type | Values | +| ------------- | ------------------------------------- | ----------- | --------------------------------------- | +| setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array | + +**Notes:** Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls +to reset() will reset the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) +will reset siteConfig and currentConfig to the defaultConfig Note: currentConfig is set in this +function _Default value: At default, will mirror Global Config_ + +#### Parameters + +| Name | Type | Description | +| :----- | :-------------- | :------------------------------------------ | +| `conf` | `MermaidConfig` | The base currentConfig to use as siteConfig | + +#### Returns + +`MermaidConfig` + +The new siteConfig + +#### Defined in + +[config.ts:61](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L61) + +--- + +### updateCurrentConfig + +▸ **updateCurrentConfig**(`siteCfg`, `_directives`): `MermaidConfig` + +#### Parameters + +| Name | Type | +| :------------ | :-------------- | +| `siteCfg` | `MermaidConfig` | +| `_directives` | `any`\[] | + +#### Returns + +`MermaidConfig` + +#### Defined in + +[config.ts:14](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L14) + +--- + +### updateSiteConfig + +▸ **updateSiteConfig**(`conf`): `MermaidConfig` + +#### Parameters + +| Name | Type | +| :----- | :-------------- | +| `conf` | `MermaidConfig` | + +#### Returns + +`MermaidConfig` + +#### Defined in + +[config.ts:79](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.ts#L79) diff --git a/docs/config/setup/modules/defaultConfig.md b/docs/config/setup/modules/defaultConfig.md new file mode 100644 index 000000000..d95ec4e92 --- /dev/null +++ b/docs/config/setup/modules/defaultConfig.md @@ -0,0 +1,56 @@ +> **Warning** +> +> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. +> +> ## Please edit the corresponding file in [/packages/mermaid/src/docs/config/setup/modules/defaultConfig.md](../../../../packages/mermaid/src/docs/config/setup/modules/defaultConfig.md). + +# Module: defaultConfig + +## Variables + +### configKeys + +• `Const` **configKeys**: `string`\[] + +#### Defined in + +[defaultConfig.ts:2293](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L2293) + +--- + +### default + +• `Const` **default**: `Partial`<`MermaidConfig`> + +**Configuration methods in Mermaid version 8.6.0 have been updated, to learn more\[[click +here](8.6.0_docs.md)].** + +## **What follows are config instructions for older versions** + +These are the default options which can be overridden with the initialization call like so: + +**Example 1:** + +```js +mermaid.initialize({ flowchart: { htmlLabels: false } }); +``` + +**Example 2:** + +```html +<script> + const config = { + startOnLoad: true, + flowchart: { useMaxWidth: true, htmlLabels: true, curve: 'cardinal' }, + securityLevel: 'loose', + }; + mermaid.initialize(config); +</script> +``` + +A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults). +A description of each option follows below. + +#### Defined in + +[defaultConfig.ts:33](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L33) From f535640c1e9b833d86aa71e41bab6dece51d04c6 Mon Sep 17 00:00:00 2001 From: mikejeffers <mike.s.jeffers@gmail.com> Date: Sat, 20 May 2023 14:59:04 -0400 Subject: [PATCH 126/255] Fixes #4408: solve infinite loop on words that exceed width constraint with word break --- .../mermaid/src/rendering-util/createText.js | 71 +++++++++++++------ 1 file changed, 48 insertions(+), 23 deletions(-) diff --git a/packages/mermaid/src/rendering-util/createText.js b/packages/mermaid/src/rendering-util/createText.js index a5438b562..d2ad7d85f 100644 --- a/packages/mermaid/src/rendering-util/createText.js +++ b/packages/mermaid/src/rendering-util/createText.js @@ -76,6 +76,22 @@ function createTspan(textElement, lineIndex, lineHeight) { .attr('dy', lineHeight + 'em'); } +/** + * Compute the width of rendered text + * @param {object} parentNode + * @param {number} lineHeight + * @param {string} text + * @returns {number} + */ +function testWidthOfText(parentNode, lineHeight, text) { + const testElement = parentNode.append('text').attr('y', '-10.1'); + const testSpan = createTspan(testElement, 1, lineHeight); + updateTextContentAndStyles(testSpan, [{ content: text, type: 'normal' }]); + const val = testSpan.node().getComputedTextLength(); + testElement.remove(); + return val; +} + /** * Creates a formatted text element by breaking lines and applying styles based on * the given structuredText. @@ -93,32 +109,41 @@ function createFormattedText(width, g, structuredText, addBackground = false) { // .attr('dominant-baseline', 'middle') // .attr('text-anchor', 'middle'); // .attr('text-anchor', 'middle'); - let lineIndex = -1; + let lineIndex = 0; structuredText.forEach((line) => { - lineIndex++; - let tspan = createTspan(textElement, lineIndex, lineHeight); - - let words = [...line].reverse(); - let currentWord; - let wrappedLine = []; - - while (words.length) { - currentWord = words.pop(); - wrappedLine.push(currentWord); - - updateTextContentAndStyles(tspan, wrappedLine); - - if (tspan.node().getComputedTextLength() > width) { - wrappedLine.pop(); - words.push(currentWord); - - updateTextContentAndStyles(tspan, wrappedLine); - - wrappedLine = []; - lineIndex++; - tspan = createTspan(textElement, lineIndex, lineHeight); + /** + * Preprocess raw string content of line data + * Creating an array of strings pre-split to satisfy width limit + */ + let fullStr = line.map((data) => data.content).join(' '); + let tempStr = ''; + let linesUnderWidth = []; + let prevIndex = 0; + for (let i = 0; i <= fullStr.length; i++) { + tempStr = fullStr.slice(prevIndex, i); + log.info(tempStr, prevIndex, i); + if (testWidthOfText(labelGroup, lineHeight, tempStr) > width) { + const subStr = fullStr.slice(prevIndex, i); + // Break at space if any + const lastSpaceIndex = subStr.lastIndexOf(' '); + if (lastSpaceIndex > -1) { + i = prevIndex + lastSpaceIndex + 1; + } + linesUnderWidth.push(fullStr.slice(prevIndex, i)); + prevIndex = i; + tempStr = null; } } + if (tempStr != null) { + linesUnderWidth.push(tempStr); + } + /** Add each prepared line as a tspan to the parent node */ + const preparedLines = linesUnderWidth.map((w) => ({ content: w, type: line.type })); + for (const preparedLine of preparedLines) { + let tspan = createTspan(textElement, lineIndex, lineHeight); + updateTextContentAndStyles(tspan, [preparedLine]); + lineIndex++; + } }); if (addBackground) { const bbox = textElement.node().getBBox(); From 9e6168111f313ac5bdfab8bfe5c714eddbd8ef78 Mon Sep 17 00:00:00 2001 From: mikejeffers <mike.s.jeffers@gmail.com> Date: Sat, 20 May 2023 15:20:28 -0400 Subject: [PATCH 127/255] add e2e test --- cypress/integration/rendering/mindmap.spec.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/cypress/integration/rendering/mindmap.spec.ts b/cypress/integration/rendering/mindmap.spec.ts index 94b3f9ca0..e390beaee 100644 --- a/cypress/integration/rendering/mindmap.spec.ts +++ b/cypress/integration/rendering/mindmap.spec.ts @@ -52,6 +52,17 @@ root[A root with a long text that wraps to keep the node size in check] ); }); + it('a root with wrapping text and long words that exceed width', () => { + imgSnapshotTest( + `mindmap +root[A few smaller words but then averylongsetofcharacterswithoutwhitespacetoseparate that we expect to wrapontonextlinesandnotexceedwidthparameters] + `, + {}, + undefined, + shouldHaveRoot + ); + }); + it('a root with an icon', () => { imgSnapshotTest( `mindmap From 496585b5436a0727f3583dc4297adf38e8630f65 Mon Sep 17 00:00:00 2001 From: mikejeffers <mike.s.jeffers@gmail.com> Date: Sat, 20 May 2023 16:04:58 -0400 Subject: [PATCH 128/255] handle trailing whitespace on lines --- packages/mermaid/src/rendering-util/createText.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/src/rendering-util/createText.js b/packages/mermaid/src/rendering-util/createText.js index d2ad7d85f..b37781dc9 100644 --- a/packages/mermaid/src/rendering-util/createText.js +++ b/packages/mermaid/src/rendering-util/createText.js @@ -129,7 +129,7 @@ function createFormattedText(width, g, structuredText, addBackground = false) { if (lastSpaceIndex > -1) { i = prevIndex + lastSpaceIndex + 1; } - linesUnderWidth.push(fullStr.slice(prevIndex, i)); + linesUnderWidth.push(fullStr.slice(prevIndex, i).trim()); prevIndex = i; tempStr = null; } From ad61f4c6b17cd2444502e94457b9ff569e6623e1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 May 2023 02:22:39 +0000 Subject: [PATCH 129/255] Update all patch dependencies --- packages/mermaid/src/docs/package.json | 2 +- pnpm-lock.yaml | 328 ++++++++++++++++++++++--- 2 files changed, 297 insertions(+), 33 deletions(-) diff --git a/packages/mermaid/src/docs/package.json b/packages/mermaid/src/docs/package.json index 01a63aeb5..46c8af120 100644 --- a/packages/mermaid/src/docs/package.json +++ b/packages/mermaid/src/docs/package.json @@ -30,7 +30,7 @@ "unplugin-vue-components": "^0.24.1", "vite": "^4.3.3", "vite-plugin-pwa": "^0.14.7", - "vitepress": "1.0.0-alpha.75", + "vitepress": "1.0.0-alpha.76", "workbox-window": "^6.5.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f52a221e9..0beab81fa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -334,7 +334,7 @@ importers: version: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0) vitepress-plugin-search: specifier: ^1.0.4-alpha.20 - version: 1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-alpha.72)(vue@3.2.47) + version: 1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-alpha.72)(vue@3.3.4) packages/mermaid-example-diagram: dependencies: @@ -419,8 +419,8 @@ importers: specifier: ^0.14.7 version: 0.14.7(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) vitepress: - specifier: 1.0.0-alpha.75 - version: 1.0.0-alpha.75(@algolia/client-search@4.14.2)(@types/node@18.16.0) + specifier: 1.0.0-alpha.76 + version: 1.0.0-alpha.76(@algolia/client-search@4.14.2)(@types/node@18.16.0) workbox-window: specifier: ^6.5.4 version: 6.5.4 @@ -1206,7 +1206,7 @@ packages: '@babel/generator': 7.21.1 '@babel/helper-module-transforms': 7.21.2 '@babel/helpers': 7.19.0 - '@babel/parser': 7.21.2 + '@babel/parser': 7.21.8 '@babel/template': 7.20.7 '@babel/traverse': 7.21.2 '@babel/types': 7.21.2 @@ -1478,6 +1478,13 @@ packages: dependencies: '@babel/types': 7.21.2 + /@babel/parser@7.21.8: + resolution: {integrity: sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.21.2 + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.12.3): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -2337,7 +2344,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.21.2 + '@babel/parser': 7.21.8 '@babel/types': 7.21.2 dev: true @@ -2351,7 +2358,7 @@ packages: '@babel/helper-function-name': 7.21.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.2 + '@babel/parser': 7.21.8 '@babel/types': 7.21.2 debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 @@ -2877,8 +2884,8 @@ packages: resolution: {integrity: sha512-6SCwI7P8ao+se1TUsdZ7B4XzL+gqeQZnBc+2EONZlcVa0dVrk0NjETxozFKgMv0eEGH8QzP1fkN+A1rH61l4eg==} dev: true - /@docsearch/css@3.3.4: - resolution: {integrity: sha512-vDwCDoVXDgopw/hvr0zEADew2wWaGP8Qq0Bxhgii1Ewz2t4fQeyJwIRN/mWADeLFYPVkpz8TpEbxya/i6Tm0WA==} + /@docsearch/css@3.3.5: + resolution: {integrity: sha512-NaXVp3I8LdmJ54fn038KHgG7HmbIzZlKS2FkVf6mKcW5bYMJovkx4947joQyZk5yubxOZ+ddHSh79y39Aevufg==} dev: true /@docsearch/js@3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0): @@ -2893,10 +2900,10 @@ packages: - react-dom dev: true - /@docsearch/js@3.3.4(@algolia/client-search@4.14.2): - resolution: {integrity: sha512-Xd2saBziXJ1UuVpcDz94zAFEFAM6ap993agh0za2e3LDZLhaW993b1f9gyUL4e1CZLsR076tztG2un2gVncvpA==} + /@docsearch/js@3.3.5(@algolia/client-search@4.14.2): + resolution: {integrity: sha512-nZi074OCryZnzva2LNcbQkwBJIND6cvuFI4s1FIe6Ygf6n9g6B/IYUULXNx05rpoCZ+KEoEt3taROpsHBliuSw==} dependencies: - '@docsearch/react': 3.3.4(@algolia/client-search@4.14.2) + '@docsearch/react': 3.3.5(@algolia/client-search@4.14.2) preact: 10.11.0 transitivePeerDependencies: - '@algolia/client-search' @@ -2929,8 +2936,8 @@ packages: - '@algolia/client-search' dev: true - /@docsearch/react@3.3.4(@algolia/client-search@4.14.2): - resolution: {integrity: sha512-aeOf1WC5zMzBEi2SI6WWznOmIo9rnpN4p7a3zHXxowVciqlI4HsZGtOR9nFOufLeolv7HibwLlaM0oyUqJxasw==} + /@docsearch/react@3.3.5(@algolia/client-search@4.14.2): + resolution: {integrity: sha512-Zuxf4z5PZ9eIQkVCNu76v1H+KAztKItNn3rLzZa7kpBS+++TgNARITnZeUS7C1DKoAhJZFr6T/H+Lvc6h/iiYg==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' react: '>= 16.8.0 < 19.0.0' @@ -2945,7 +2952,7 @@ packages: dependencies: '@algolia/autocomplete-core': 1.8.2 '@algolia/autocomplete-preset-algolia': 1.8.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) - '@docsearch/css': 3.3.4 + '@docsearch/css': 3.3.5 algoliasearch: 4.14.2 transitivePeerDependencies: - '@algolia/client-search' @@ -3799,7 +3806,7 @@ packages: /@types/babel__core@7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: - '@babel/parser': 7.21.2 + '@babel/parser': 7.21.8 '@babel/types': 7.21.2 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 @@ -3815,7 +3822,7 @@ packages: /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.21.2 + '@babel/parser': 7.21.8 '@babel/types': 7.21.2 dev: true @@ -4380,6 +4387,10 @@ packages: /@types/web-bluetooth@0.0.16: resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} + /@types/web-bluetooth@0.0.17: + resolution: {integrity: sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==} + dev: true + /@types/ws@8.5.3: resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} dependencies: @@ -4748,6 +4759,17 @@ packages: vue: 3.2.47 dev: true + /@vitejs/plugin-vue@4.2.3(vite@4.3.8)(vue@3.3.4): + resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 + vue: ^3.2.25 + dependencies: + vite: 4.3.8(@types/node@18.16.0) + vue: 3.3.4 + dev: true + /@vitest/coverage-c8@0.31.0(vitest@0.31.0): resolution: {integrity: sha512-h72qN1D962AO7UefQVulm9JFP5ACS7OfhCdBHioXU8f7ohH/+NTZCgAqmgcfRNHHO/8wLFxx+93YVxhodkEJVA==} peerDependencies: @@ -4818,17 +4840,33 @@ packages: /@vue/compiler-core@3.2.47: resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} dependencies: - '@babel/parser': 7.21.2 + '@babel/parser': 7.21.8 '@vue/shared': 3.2.47 estree-walker: 2.0.2 source-map: 0.6.1 + /@vue/compiler-core@3.3.4: + resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} + dependencies: + '@babel/parser': 7.21.8 + '@vue/shared': 3.3.4 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + dev: true + /@vue/compiler-dom@3.2.47: resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==} dependencies: '@vue/compiler-core': 3.2.47 '@vue/shared': 3.2.47 + /@vue/compiler-dom@3.3.4: + resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} + dependencies: + '@vue/compiler-core': 3.3.4 + '@vue/shared': 3.3.4 + dev: true + /@vue/compiler-sfc@3.2.47: resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} dependencies: @@ -4843,12 +4881,34 @@ packages: postcss: 8.4.23 source-map: 0.6.1 + /@vue/compiler-sfc@3.3.4: + resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} + dependencies: + '@babel/parser': 7.21.2 + '@vue/compiler-core': 3.3.4 + '@vue/compiler-dom': 3.3.4 + '@vue/compiler-ssr': 3.3.4 + '@vue/reactivity-transform': 3.3.4 + '@vue/shared': 3.3.4 + estree-walker: 2.0.2 + magic-string: 0.30.0 + postcss: 8.4.23 + source-map-js: 1.0.2 + dev: true + /@vue/compiler-ssr@3.2.47: resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==} dependencies: '@vue/compiler-dom': 3.2.47 '@vue/shared': 3.2.47 + /@vue/compiler-ssr@3.3.4: + resolution: {integrity: sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==} + dependencies: + '@vue/compiler-dom': 3.3.4 + '@vue/shared': 3.3.4 + dev: true + /@vue/devtools-api@6.5.0: resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} dev: true @@ -4856,23 +4916,46 @@ packages: /@vue/reactivity-transform@3.2.47: resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} dependencies: - '@babel/parser': 7.21.2 + '@babel/parser': 7.21.8 '@vue/compiler-core': 3.2.47 '@vue/shared': 3.2.47 estree-walker: 2.0.2 magic-string: 0.25.9 + /@vue/reactivity-transform@3.3.4: + resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} + dependencies: + '@babel/parser': 7.21.8 + '@vue/compiler-core': 3.3.4 + '@vue/shared': 3.3.4 + estree-walker: 2.0.2 + magic-string: 0.30.0 + dev: true + /@vue/reactivity@3.2.47: resolution: {integrity: sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==} dependencies: '@vue/shared': 3.2.47 + /@vue/reactivity@3.3.4: + resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} + dependencies: + '@vue/shared': 3.3.4 + dev: true + /@vue/runtime-core@3.2.47: resolution: {integrity: sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==} dependencies: '@vue/reactivity': 3.2.47 '@vue/shared': 3.2.47 + /@vue/runtime-core@3.3.4: + resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==} + dependencies: + '@vue/reactivity': 3.3.4 + '@vue/shared': 3.3.4 + dev: true + /@vue/runtime-dom@3.2.47: resolution: {integrity: sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==} dependencies: @@ -4880,6 +4963,14 @@ packages: '@vue/shared': 3.2.47 csstype: 2.6.21 + /@vue/runtime-dom@3.3.4: + resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==} + dependencies: + '@vue/runtime-core': 3.3.4 + '@vue/shared': 3.3.4 + csstype: 3.1.2 + dev: true + /@vue/server-renderer@3.2.47(vue@3.2.47): resolution: {integrity: sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==} peerDependencies: @@ -4889,9 +4980,23 @@ packages: '@vue/shared': 3.2.47 vue: 3.2.47 + /@vue/server-renderer@3.3.4(vue@3.3.4): + resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==} + peerDependencies: + vue: 3.3.4 + dependencies: + '@vue/compiler-ssr': 3.3.4 + '@vue/shared': 3.3.4 + vue: 3.3.4 + dev: true + /@vue/shared@3.2.47: resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} + /@vue/shared@3.3.4: + resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} + dev: true + /@vueuse/core@10.1.0(vue@3.2.47): resolution: {integrity: sha512-3Znoa5m5RO+z4/C9w6DRaKTR3wCVJvD5rav8HTDGsr+7rOZRHtcgFJ8NcCs0ZvIpmev2kExTa311ns5j2RbzDQ==} dependencies: @@ -4903,9 +5008,75 @@ packages: - '@vue/composition-api' - vue + /@vueuse/core@10.1.2(vue@3.3.4): + resolution: {integrity: sha512-roNn8WuerI56A5uiTyF/TEYX0Y+VKlhZAF94unUfdhbDUI+NfwQMn4FUnUscIRUhv3344qvAghopU4bzLPNFlA==} + dependencies: + '@types/web-bluetooth': 0.0.17 + '@vueuse/metadata': 10.1.2 + '@vueuse/shared': 10.1.2(vue@3.3.4) + vue-demi: 0.14.0(vue@3.3.4) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + + /@vueuse/integrations@10.1.2(focus-trap@7.4.3)(vue@3.3.4): + resolution: {integrity: sha512-wUpG3Wv6LiWerOwCzOAM0iGhNQ4vfFUTkhj/xQy7TLXduh2M3D8N08aS0KqlxsejY6R8NLxydDIM+68QfHZZ8Q==} + peerDependencies: + async-validator: '*' + axios: '*' + change-case: '*' + drauu: '*' + focus-trap: '*' + fuse.js: '*' + idb-keyval: '*' + jwt-decode: '*' + nprogress: '*' + qrcode: '*' + sortablejs: '*' + universal-cookie: '*' + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + dependencies: + '@vueuse/core': 10.1.2(vue@3.3.4) + '@vueuse/shared': 10.1.2(vue@3.3.4) + focus-trap: 7.4.3 + vue-demi: 0.14.0(vue@3.3.4) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + /@vueuse/metadata@10.1.0: resolution: {integrity: sha512-cM28HjDEw5FIrPE9rgSPFZvQ0ZYnOLAOr8hl1XM6tFl80U3WAR5ROdnAqiYybniwP5gt9MKKAJAqd/ab2aHkqg==} + /@vueuse/metadata@10.1.2: + resolution: {integrity: sha512-3mc5BqN9aU2SqBeBuWE7ne4OtXHoHKggNgxZR2K+zIW4YLsy6xoZ4/9vErQs6tvoKDX6QAqm3lvsrv0mczAwIQ==} + dev: true + /@vueuse/shared@10.1.0(vue@3.2.47): resolution: {integrity: sha512-2X52ogu12i9DkKOQ01yeb/BKg9UO87RNnpm5sXkQvyORlbq8ONS5l39MYkjkeVWWjdT0teJru7a2S41dmHmqjQ==} dependencies: @@ -4914,6 +5085,15 @@ packages: - '@vue/composition-api' - vue + /@vueuse/shared@10.1.2(vue@3.3.4): + resolution: {integrity: sha512-1uoUTPBlgyscK9v6ScGeVYDDzlPSFXBlxuK7SfrDGyUTBiznb3mNceqhwvZHjtDRELZEN79V5uWPTF1VDV8svA==} + dependencies: + vue-demi: 0.14.0(vue@3.3.4) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + /@wdio/config@7.30.0(typescript@5.0.4): resolution: {integrity: sha512-/38rol9WCfFTMtXyd/C856/aexxIZnfVvXg7Fw2WXpqZ9qadLA+R4N35S2703n/RByjK/5XAYtHoljtvh3727w==} engines: {node: '>=12.0.0'} @@ -6689,7 +6869,6 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - dev: false /cypress-image-snapshot@4.0.1(cypress@12.10.0)(jest@29.5.0): resolution: {integrity: sha512-PBpnhX/XItlx3/DAk5ozsXQHUi72exybBNH5Mpqj1DVmjq+S5Jd9WE5CRa4q5q0zuMZb2V2VpXHth6MjFpgj9Q==} @@ -8318,6 +8497,12 @@ packages: resolution: {integrity: sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==} dev: true + /focus-trap@7.4.3: + resolution: {integrity: sha512-BgSSbK4GPnS2VbtZ50VtOv1Sti6DIkj3+LkVjiWMNjLeAp1SH1UlLx3ULu/DCu4vq5R4/uvTm+zrvsMsuYmGLg==} + dependencies: + tabbable: 6.1.2 + dev: true + /follow-redirects@1.15.2(debug@4.3.4): resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} @@ -9490,7 +9675,7 @@ packages: engines: {node: '>=8'} dependencies: '@babel/core': 7.12.3 - '@babel/parser': 7.21.2 + '@babel/parser': 7.21.8 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -11219,6 +11404,10 @@ packages: resolution: {integrity: sha512-Ly1w0nHKnlhAAh6/BF/+9NgzXfoJxaJ8nhopFhQ3NcvFJrFIL+iCg9gw9e9UMBD+XIsp/RyznJ/o5UIe5Kw+kg==} dev: true + /minisearch@6.1.0: + resolution: {integrity: sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==} + dev: true + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -13349,6 +13538,10 @@ packages: tslib: 2.5.0 dev: true + /tabbable@6.1.2: + resolution: {integrity: sha512-qCN98uP7i9z0fIS4amQ5zbGBOq+OSigYeGvPy7NDk8Y9yncqDZ9pRPgfsc2PJIVM9RrJj7GIfuRgmjoUU9zTHQ==} + dev: true + /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -14127,7 +14320,7 @@ packages: mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 - vite: 4.3.3(@types/node@18.16.0) + vite: 4.3.8(@types/node@18.16.0) transitivePeerDependencies: - '@types/node' - less @@ -14223,7 +14416,40 @@ packages: fsevents: 2.3.2 dev: true - /vitepress-plugin-search@1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-alpha.72)(vue@3.2.47): + /vite@4.3.8(@types/node@18.16.0): + resolution: {integrity: sha512-uYB8PwN7hbMrf4j1xzGDk/lqjsZvCDbt/JC5dyfxc19Pg8kRm14LinK/uq+HSLNswZEoKmweGdtpbnxRtrAXiQ==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.16.0 + esbuild: 0.17.18 + postcss: 8.4.23 + rollup: 3.21.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vitepress-plugin-search@1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-alpha.72)(vue@3.3.4): resolution: {integrity: sha512-zG+ev9pw1Mg7htABlFCNXb8XwnKN+qfTKw+vU0Ers6RIrABx+45EAAFBoaL1mEpl1FRFn1o/dQ7F4b8GP6HdGQ==} engines: {node: ^14.13.1 || ^16.7.0 || >=18} peerDependencies: @@ -14237,7 +14463,7 @@ packages: glob-to-regexp: 0.4.1 markdown-it: 13.0.1 vitepress: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0) - vue: 3.2.47 + vue: 3.3.4 dev: true /vitepress@1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0): @@ -14269,33 +14495,46 @@ packages: - terser dev: true - /vitepress@1.0.0-alpha.75(@algolia/client-search@4.14.2)(@types/node@18.16.0): - resolution: {integrity: sha512-twpPZ/6UnDR8X0Nmj767KwKhXlTQQM9V/J1i2BP9ryO29/w4hpxBfEum6nvfpNhJ4H3h+cIhwzAK/e9crZ6HEQ==} + /vitepress@1.0.0-alpha.76(@algolia/client-search@4.14.2)(@types/node@18.16.0): + resolution: {integrity: sha512-fzR1pDpGnSMeCJ+AnDdMe/ETD2G0Go+g6mTxDv9ps7Hmr1JjVqw97nasCyZg3jgfQxi2nt78EJ/bw7hY5n/rlw==} hasBin: true dependencies: - '@docsearch/css': 3.3.4 - '@docsearch/js': 3.3.4(@algolia/client-search@4.14.2) - '@vitejs/plugin-vue': 4.2.1(vite@4.3.3)(vue@3.2.47) + '@docsearch/css': 3.3.5 + '@docsearch/js': 3.3.5(@algolia/client-search@4.14.2) + '@vitejs/plugin-vue': 4.2.3(vite@4.3.8)(vue@3.3.4) '@vue/devtools-api': 6.5.0 - '@vueuse/core': 10.1.0(vue@3.2.47) + '@vueuse/core': 10.1.2(vue@3.3.4) + '@vueuse/integrations': 10.1.2(focus-trap@7.4.3)(vue@3.3.4) body-scroll-lock: 4.0.0-beta.0 + focus-trap: 7.4.3 mark.js: 8.11.1 - minisearch: 6.0.1 + minisearch: 6.1.0 shiki: 0.14.2 - vite: 4.3.3(@types/node@18.16.0) - vue: 3.2.47 + vite: 4.3.8(@types/node@18.16.0) + vue: 3.3.4 transitivePeerDependencies: - '@algolia/client-search' - '@types/node' - '@types/react' - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode - less + - nprogress + - qrcode - react - react-dom - sass + - sortablejs - stylus - sugarss - terser + - universal-cookie dev: true /vitest@0.31.0(@vitest/ui@0.31.0)(jsdom@21.1.1): @@ -14430,6 +14669,21 @@ packages: dependencies: vue: 3.2.47 + /vue-demi@0.14.0(vue@3.3.4): + resolution: {integrity: sha512-gt58r2ogsNQeVoQ3EhoUAvUsH9xviydl0dWJj7dabBC/2L4uBId7ujtCwDRD0JhkGsV1i0CtfLAeyYKBht9oWg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.3.4 + dev: true + /vue@3.2.47: resolution: {integrity: sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==} dependencies: @@ -14439,6 +14693,16 @@ packages: '@vue/server-renderer': 3.2.47(vue@3.2.47) '@vue/shared': 3.2.47 + /vue@3.3.4: + resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==} + dependencies: + '@vue/compiler-dom': 3.3.4 + '@vue/compiler-sfc': 3.3.4 + '@vue/runtime-dom': 3.3.4 + '@vue/server-renderer': 3.3.4(vue@3.3.4) + '@vue/shared': 3.3.4 + dev: true + /w3c-hr-time@1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} deprecated: Use your platform's native performance.now() and performance.timeOrigin. From ac23787084e2d35eb750ae0ce93746726bcce74d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 May 2023 06:07:58 +0000 Subject: [PATCH 130/255] Update all minor dependencies --- packages/mermaid/src/docs/package.json | 6 +- pnpm-lock.yaml | 293 +++++++++++-------------- 2 files changed, 137 insertions(+), 162 deletions(-) diff --git a/packages/mermaid/src/docs/package.json b/packages/mermaid/src/docs/package.json index 46c8af120..ea478279e 100644 --- a/packages/mermaid/src/docs/package.json +++ b/packages/mermaid/src/docs/package.json @@ -20,16 +20,16 @@ }, "devDependencies": { "@iconify-json/carbon": "^1.1.16", - "@unocss/reset": "^0.51.8", + "@unocss/reset": "^0.52.0", "@vite-pwa/vitepress": "^0.0.5", "@vitejs/plugin-vue": "^4.2.1", "fast-glob": "^3.2.12", "https-localhost": "^4.7.1", "pathe": "^1.1.0", - "unocss": "^0.51.8", + "unocss": "^0.52.0", "unplugin-vue-components": "^0.24.1", "vite": "^4.3.3", - "vite-plugin-pwa": "^0.14.7", + "vite-plugin-pwa": "^0.15.0", "vitepress": "1.0.0-alpha.76", "workbox-window": "^6.5.4" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0beab81fa..36d65544c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -389,11 +389,11 @@ importers: specifier: ^1.1.16 version: 1.1.16 '@unocss/reset': - specifier: ^0.51.8 - version: 0.51.8 + specifier: ^0.52.0 + version: 0.52.0 '@vite-pwa/vitepress': specifier: ^0.0.5 - version: 0.0.5(vite-plugin-pwa@0.14.7) + version: 0.0.5(vite-plugin-pwa@0.15.0) '@vitejs/plugin-vue': specifier: ^4.2.1 version: 4.2.1(vite@4.3.3)(vue@3.2.47) @@ -407,8 +407,8 @@ importers: specifier: ^1.1.0 version: 1.1.0 unocss: - specifier: ^0.51.8 - version: 0.51.8(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3) + specifier: ^0.52.0 + version: 0.52.0(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3) unplugin-vue-components: specifier: ^0.24.1 version: 0.24.1(rollup@2.79.1)(vue@3.2.47) @@ -416,8 +416,8 @@ importers: specifier: ^4.3.3 version: 4.3.3(@types/node@18.16.0) vite-plugin-pwa: - specifier: ^0.14.7 - version: 0.14.7(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) + specifier: ^0.15.0 + version: 0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) vitepress: specifier: 1.0.0-alpha.76 version: 1.0.0-alpha.76(@algolia/client-search@4.14.2)(@types/node@18.16.0) @@ -3652,20 +3652,6 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.21.0): - resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.21.0) - magic-string: 0.27.0 - rollup: 3.21.0 - dev: true - /@rollup/plugin-typescript@11.1.0(typescript@5.0.4): resolution: {integrity: sha512-86flrfE+bSHB69znnTV6kVjkncs2LBMhcTCyxWgRxLyfXfQrxg4UwlAqENnjrrxnSNS/XKCDJCl8EkdFJVHOxw==} engines: {node: '>=14.0.0'} @@ -3679,7 +3665,7 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.21.0) + '@rollup/pluginutils': 5.0.2(rollup@2.79.1) resolve: 1.22.1 typescript: 5.0.4 dev: true @@ -3711,21 +3697,6 @@ packages: rollup: 2.79.1 dev: true - /@rollup/pluginutils@5.0.2(rollup@3.21.0): - resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@types/estree': 1.0.0 - estree-walker: 2.0.2 - picomatch: 2.3.1 - rollup: 3.21.0 - dev: true - /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: @@ -4551,187 +4522,187 @@ packages: eslint-visitor-keys: 3.4.0 dev: true - /@unocss/astro@0.51.8(rollup@2.79.1)(vite@4.3.3): - resolution: {integrity: sha512-1cY22psmzeW6f29Os7nXhrIgbjR2QI2qPU+PDEMprWiaVHlIc86WUKNzPIcuKskAQMMhWVCIN/XlCNzxZzXJqw==} + /@unocss/astro@0.52.0(rollup@2.79.1)(vite@4.3.3): + resolution: {integrity: sha512-vgEOFj+q4DY1F0kwqydbaNQjZSSYBqCV8eiE5ZpRfhQ+k0S71e7yudgYW5Np2sYBbih7v57GKnuQDwno3M6yDQ==} dependencies: - '@unocss/core': 0.51.8 - '@unocss/reset': 0.51.8 - '@unocss/vite': 0.51.8(rollup@2.79.1)(vite@4.3.3) + '@unocss/core': 0.52.0 + '@unocss/reset': 0.52.0 + '@unocss/vite': 0.52.0(rollup@2.79.1)(vite@4.3.3) transitivePeerDependencies: - rollup - vite dev: true - /@unocss/cli@0.51.8(rollup@2.79.1): - resolution: {integrity: sha512-vZKct40rIXhp8tIUkBLn9pLq4xWMBi3+wFryBgoZDHSkRwWkuQLqCY5rAsNOv1DG2+tLfKef4guMaFFavDkYzA==} + /@unocss/cli@0.52.0(rollup@2.79.1): + resolution: {integrity: sha512-IVj8IDT2M1w7mux2m7HY4/rwmfumYxaEIkpDkHGPgZcUVzXaOenNvbun1Q4oDZ2oFKytTJqGNSieavugfmlrjA==} engines: {node: '>=14'} hasBin: true dependencies: '@ampproject/remapping': 2.2.1 '@rollup/pluginutils': 5.0.2(rollup@2.79.1) - '@unocss/config': 0.51.8 - '@unocss/core': 0.51.8 - '@unocss/preset-uno': 0.51.8 + '@unocss/config': 0.52.0 + '@unocss/core': 0.52.0 + '@unocss/preset-uno': 0.52.0 cac: 6.7.14 chokidar: 3.5.3 - colorette: 2.0.19 + colorette: 2.0.20 consola: 3.1.0 fast-glob: 3.2.12 magic-string: 0.30.0 pathe: 1.1.0 - perfect-debounce: 0.1.3 + perfect-debounce: 1.0.0 transitivePeerDependencies: - rollup dev: true - /@unocss/config@0.51.8: - resolution: {integrity: sha512-wiCn2aR82BdDMLfywTxUbyugBy1TxEdfND5BuLZxtNIKARnZoQXm+hfLbIBcOvmcWW1p940I6CImNFrSszOULQ==} + /@unocss/config@0.52.0: + resolution: {integrity: sha512-RbkFTAoPXPa0oXB/MuS+d0FOF4jXQHA7lm9D4zmKyrlTyPGBlzO/o4aPF9Z9tJUVjG0SRaSU3ZBQ2ZqTZK9P3Q==} engines: {node: '>=14'} dependencies: - '@unocss/core': 0.51.8 + '@unocss/core': 0.52.0 unconfig: 0.3.7 dev: true - /@unocss/core@0.51.8: - resolution: {integrity: sha512-myHRKBphEN3h0OnsUhg2JaFKjFGfqF/jmmzZCCMNU5UmxbheZomXANNLYXVgEP6LHvd4xAF0DEzrOBcDPLf0HQ==} + /@unocss/core@0.52.0: + resolution: {integrity: sha512-MGyG1LpiVtyrHmWmXiDRnf7j+JaJua14K058FGBAhNSLaG37dG6xIfwPuVDBOqEI8EgICmNTJs1T/ImQJYWxtw==} dev: true - /@unocss/extractor-arbitrary-variants@0.51.8: - resolution: {integrity: sha512-cCsdRLqmt3adcaRtoIP2pC8mYgH3ed8DEES3E7VOWghqLjwLULUMyBS+vy7n9CvnV75kuTKb1bZ+k9eu/rfh2w==} + /@unocss/extractor-arbitrary-variants@0.52.0: + resolution: {integrity: sha512-wJ7a9NWVywHwjWMeB8wN9PHl0fhwOcvAgmhDkyY7A9wXSazaecSMLbKrcnQe7q5bOFGvn5jyxYkk78XZqLWgyg==} dependencies: - '@unocss/core': 0.51.8 + '@unocss/core': 0.52.0 dev: true - /@unocss/inspector@0.51.8: - resolution: {integrity: sha512-g3gLl6h/AErv04jCTQOCtfBDzJ01FG2SnDxLErIm22bnKydP/QB15TyX9AXlUsOcxywcCFHYe73OdPqyMqPEFQ==} + /@unocss/inspector@0.52.0: + resolution: {integrity: sha512-oGMLht4hEBypglrLeNQWy8JBTvRyX3fdrtYChZpwjYTVsVC1SdF1m0ZjaPt7YQybZ+D4DG7bVCHYqxLgAFq5jw==} dependencies: gzip-size: 6.0.0 - sirv: 2.0.2 + sirv: 2.0.3 dev: true - /@unocss/postcss@0.51.8(postcss@8.4.23): - resolution: {integrity: sha512-IWwxGDfd/pqQMBjp1PKplQIeD6uwUs1qxUkJZXIf/BlGE+dMkjIw6Mp72FwYqkMn71hnjU2CMRTbX7RzkKxkmQ==} + /@unocss/postcss@0.52.0(postcss@8.4.23): + resolution: {integrity: sha512-1KzpQlcMrLV0ZSbP+pNYuvXg/1+8c2HNKHBBEbzlsXI7G+f4IJPsxtYXE3N2HVIkEjxumcMrxV8dqXhcBLQShA==} engines: {node: '>=14'} peerDependencies: postcss: ^8.4.21 dependencies: - '@unocss/config': 0.51.8 - '@unocss/core': 0.51.8 + '@unocss/config': 0.52.0 + '@unocss/core': 0.52.0 css-tree: 2.3.1 fast-glob: 3.2.12 magic-string: 0.30.0 postcss: 8.4.23 dev: true - /@unocss/preset-attributify@0.51.8: - resolution: {integrity: sha512-2JkGrutvVwvXAC48vCiEpiYLMXlV1rDigR1lwRrKxQC1s/1/j4Wei2RqY0649CkpWZBvdiJ5oPF38NV9pWOnKw==} + /@unocss/preset-attributify@0.52.0: + resolution: {integrity: sha512-5szz/NpviigXGCW2a1TnOhac+3akdx+zAWgHWaLJRpDzq8WuJyaNfN1603sEAyseUoTRjxq+P5fzxCrcvhPEGg==} dependencies: - '@unocss/core': 0.51.8 + '@unocss/core': 0.52.0 dev: true - /@unocss/preset-icons@0.51.8: - resolution: {integrity: sha512-qvHNsLYVJw6js+1+FNaNZm4qLTM+z4VnHHp1NNMtqHTMEOFUsxu+bAL6CIPkwja455F1GxyvYbHpB6eekSwNEA==} + /@unocss/preset-icons@0.52.0: + resolution: {integrity: sha512-GSDQIBXkK6rfJHT3SvbJExLoAddj93fC5DHS4eE3a6fne/NdQhFvbkhAZ5iPr4UZmMoJQOyAkkhuWD3PMSBjqw==} dependencies: '@iconify/utils': 2.1.5 - '@unocss/core': 0.51.8 + '@unocss/core': 0.52.0 ofetch: 1.0.1 transitivePeerDependencies: - supports-color dev: true - /@unocss/preset-mini@0.51.8: - resolution: {integrity: sha512-eDm70Kuw3gscq2bjjmM7i11ox2siAbzsI9dIIpJtXntuWdzwlhqNk40YH/YnM02OfWVi8QLdWuye4wOA3//Fjw==} + /@unocss/preset-mini@0.52.0: + resolution: {integrity: sha512-P4mQimuZ+yLba2FN3+hKA7anBvjypmEgNof/LdPhTydv138zlhDVly7KlYADISt7QPNIVaGD3U34HLKtgyfBmQ==} dependencies: - '@unocss/core': 0.51.8 - '@unocss/extractor-arbitrary-variants': 0.51.8 + '@unocss/core': 0.52.0 + '@unocss/extractor-arbitrary-variants': 0.52.0 dev: true - /@unocss/preset-tagify@0.51.8: - resolution: {integrity: sha512-QUUoyDor2AG5N2nQNI+SZ21HEKfJQxDRlZ+mAwT0NLSli5ZGgDN+BwsHGbffNhi2B0Gti/s5ovIDsQY0WyoYbA==} + /@unocss/preset-tagify@0.52.0: + resolution: {integrity: sha512-J4VOZG1ooBdMS2qGqqz9C7g49WpTrB3wnnq7Ph/td2/faQpRIZm1HYgXtWVsROlGvIaZWYOSOas9aX/WLZ6I2A==} dependencies: - '@unocss/core': 0.51.8 + '@unocss/core': 0.52.0 dev: true - /@unocss/preset-typography@0.51.8: - resolution: {integrity: sha512-cqHzwHj8cybQutPOXg5g81Lww0gWU0DIVNUpLy5g8qW+w5y4rTlQ4pNw5z1x3CyHUHO2++HApN8m07zJL6RA1w==} + /@unocss/preset-typography@0.52.0: + resolution: {integrity: sha512-lyMDe/vz9C18V//sieKVjIrkaiJwrY3PMPQtA8Nh233Ki+jnD6ymrEmDXKEHQeNorA2HsEqpmhS+B+g0waLjwA==} dependencies: - '@unocss/core': 0.51.8 - '@unocss/preset-mini': 0.51.8 + '@unocss/core': 0.52.0 + '@unocss/preset-mini': 0.52.0 dev: true - /@unocss/preset-uno@0.51.8: - resolution: {integrity: sha512-akBkjSDqFhuiLPPOu+t+bhae1/ZRjcKnmMMGekSBoJvE3CfYsDpkYgzlj+U1NhCtmKXHeDZKD8spUJj5Jvea1g==} + /@unocss/preset-uno@0.52.0: + resolution: {integrity: sha512-0pZH0gUJ4hug6B0xV03VNi74GjW49UlnSjwK3xBL6la7WzrgQ+E/mD6CVKxB9Qa0Sfc9qZg8IvVuI97/msdkOA==} dependencies: - '@unocss/core': 0.51.8 - '@unocss/preset-mini': 0.51.8 - '@unocss/preset-wind': 0.51.8 + '@unocss/core': 0.52.0 + '@unocss/preset-mini': 0.52.0 + '@unocss/preset-wind': 0.52.0 dev: true - /@unocss/preset-web-fonts@0.51.8: - resolution: {integrity: sha512-s9kKEiV21qYTdrfb3uZRc+Eos1e1/UN6lCC4KPqzD5LfdsZgel5a0xD9RpKUoKOnPgzDkvg22yn8rfsC5NBafg==} + /@unocss/preset-web-fonts@0.52.0: + resolution: {integrity: sha512-JbHCKwt5KHpntE7CJMYcOaZ5c/KWIIU+96pTTRTOVM9c9ssozwS575BzWH+pD43fJ864W566gtu5R9mR03j2mg==} dependencies: - '@unocss/core': 0.51.8 + '@unocss/core': 0.52.0 ofetch: 1.0.1 dev: true - /@unocss/preset-wind@0.51.8: - resolution: {integrity: sha512-L8zqVQigmPiclCuUdXwzNpj3CcC0PX38m5DAb9fkYyEdeSMkM2BYsKgR56oxah+0crN1dRTjJsqK45MAjJiVKQ==} + /@unocss/preset-wind@0.52.0: + resolution: {integrity: sha512-y+x+MnXYwcKvPepjK9rbCwp3yiOiXv9XOO5T9YAHdzwrpfAOTjXOAhmW3XAFz2sODoy2xliLYQXsxthyzpf/7w==} dependencies: - '@unocss/core': 0.51.8 - '@unocss/preset-mini': 0.51.8 + '@unocss/core': 0.52.0 + '@unocss/preset-mini': 0.52.0 dev: true - /@unocss/reset@0.51.8: - resolution: {integrity: sha512-mVUP2F/ItPKatkRh5tWBNDZG2YqG7oKxfYxQUYbNAv/hiTKPlKc3PX9T4vZKEvJarbzucTIGbYHdzwqExzG9Kw==} + /@unocss/reset@0.52.0: + resolution: {integrity: sha512-hRdgzpxWkDriRneLCv8cRNWBVNJ9FQVLY6jLk7C3MMaab0FH9JufdNwRw/yiqtEEhnnT2GF8IfN3HY69T01tNw==} dev: true - /@unocss/scope@0.51.8: - resolution: {integrity: sha512-4B4nlmcwFGKzAyI8ltSSJIivqu+DHZ3/T9IccuoFgWzdr+whPwxO5x6ydkTaJo9bUyT9mcj+HhFEjmwsA98FmQ==} + /@unocss/scope@0.52.0: + resolution: {integrity: sha512-pGTBHdSWGzrcz/QnK4Dd8GUo0a1W3QbRNrIy8L0dgsI9QEBxSiAppiMMnnJZrQwUGDGy5DjkaCksOEArA28fCg==} dev: true - /@unocss/transformer-attributify-jsx-babel@0.51.8: - resolution: {integrity: sha512-GJ1NLLAn4MH/u5/qsAbnzY7Qyl1aqWi0fj2ggXcv3XP9KmllRmGymWVJB7lqH7AL5xzJD+tivUEH8m+tsaeZYQ==} + /@unocss/transformer-attributify-jsx-babel@0.52.0: + resolution: {integrity: sha512-DWhIFMGpyr/H9A3nmwj0kvilx9FYtNmEnSh5k5hPnOvfgp5TDjgt5LDy63ee3JaOsSsAhiDWKwQxkrF60wcspQ==} dependencies: - '@unocss/core': 0.51.8 + '@unocss/core': 0.52.0 dev: true - /@unocss/transformer-attributify-jsx@0.51.8: - resolution: {integrity: sha512-iq4WRj+IHVIRPSH7qaB8PqqlSNSHXkXjPki1n14Bcv1D1ILgDBnH6gRammB/Z7KqAP/k/TCK7bSMeHrQ6iTQoQ==} + /@unocss/transformer-attributify-jsx@0.52.0: + resolution: {integrity: sha512-cPGIsp1GsSBBm/3ST1TM1VlWhcUf1vX9EgROpzSopRNHDp3zWFIM8OtcAuywzGpgm3wdKi0412WrNdf0ncDVtQ==} dependencies: - '@unocss/core': 0.51.8 + '@unocss/core': 0.52.0 dev: true - /@unocss/transformer-compile-class@0.51.8: - resolution: {integrity: sha512-aSyUDjYGUX1qplby0wt9BcBwMsmKzIDyOkp3DBTlAfBjWbxes8ZytjutIzOMos1CrrHTuB/omCT9apG2JAbgDA==} + /@unocss/transformer-compile-class@0.52.0: + resolution: {integrity: sha512-dk4Ory57Pj7QvrvPdtUsPln5RX8qgFp8ZtFDQvjHNpARz7cr5RBL7Fw3yKrcne6HQi+Bee/i715yrFHut3OXgg==} dependencies: - '@unocss/core': 0.51.8 + '@unocss/core': 0.52.0 dev: true - /@unocss/transformer-directives@0.51.8: - resolution: {integrity: sha512-Q1vG0dZYaxbdz0pVnvpuFreGoSqmrk7TgKUHNuJP/XzTi04sriQoDSpC2QMIAuOyU7FyGpSjUORiaBm0/VNURw==} + /@unocss/transformer-directives@0.52.0: + resolution: {integrity: sha512-Epi5Lt1rMl8RgR2InlRw7ddNcUXekiZl+qEEmb2rAHPnROWMNbJB5gCxk9YzczD+8vIgmFUqacMEqEzOUZdpSQ==} dependencies: - '@unocss/core': 0.51.8 + '@unocss/core': 0.52.0 css-tree: 2.3.1 dev: true - /@unocss/transformer-variant-group@0.51.8: - resolution: {integrity: sha512-blFQtAntyijFOm+BiiQhroaPwFNX6zYi19wUjY6NdvMAl/g4JzOFTzo+KehQf+lCI3Dvhr8Z2dGtDcnwfqUcDg==} + /@unocss/transformer-variant-group@0.52.0: + resolution: {integrity: sha512-r+StO8aU+O22mIa1ALuGUxiFvGZf9MLIqriOG7qbjiUOgq6shzHKUsHyxRyTG7c597eTxcs6lwr9XKkLxuEVBw==} dependencies: - '@unocss/core': 0.51.8 + '@unocss/core': 0.52.0 dev: true - /@unocss/vite@0.51.8(rollup@2.79.1)(vite@4.3.3): - resolution: {integrity: sha512-0mVCgh2Bci2oey6VXGAJBI3x/p5whJiY32BpJaugCmLlZPc6rnWQ8o/FaOTed2EznWAGA8zRRF2l3fEVCURh9g==} + /@unocss/vite@0.52.0(rollup@2.79.1)(vite@4.3.3): + resolution: {integrity: sha512-Ip2Jyu7dywqEsy3EacnItE+VXB77R72mQ9oA6TyrZpov5ZKoS327kqQSzHS/lYXzZ2yomFq9EsqbKQWIEInH9Q==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 dependencies: '@ampproject/remapping': 2.2.1 '@rollup/pluginutils': 5.0.2(rollup@2.79.1) - '@unocss/config': 0.51.8 - '@unocss/core': 0.51.8 - '@unocss/inspector': 0.51.8 - '@unocss/scope': 0.51.8 - '@unocss/transformer-directives': 0.51.8 + '@unocss/config': 0.52.0 + '@unocss/core': 0.52.0 + '@unocss/inspector': 0.52.0 + '@unocss/scope': 0.52.0 + '@unocss/transformer-directives': 0.52.0 chokidar: 3.5.3 fast-glob: 3.2.12 magic-string: 0.30.0 @@ -4740,12 +4711,12 @@ packages: - rollup dev: true - /@vite-pwa/vitepress@0.0.5(vite-plugin-pwa@0.14.7): + /@vite-pwa/vitepress@0.0.5(vite-plugin-pwa@0.15.0): resolution: {integrity: sha512-B6xy9wxi9fen+/AnRkY2+XCrbhqh2b/TsVTka6qFQ3zJ8zHSoEUHUucYT3KHMcY5I124G0ZmPKNW+UF9Jx1k4w==} peerDependencies: vite-plugin-pwa: ^0.14.0 dependencies: - vite-plugin-pwa: 0.14.7(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) + vite-plugin-pwa: 0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) dev: true /@vitejs/plugin-vue@4.2.1(vite@4.3.3)(vue@3.2.47): @@ -6381,6 +6352,10 @@ packages: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} dev: true + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + /colors@0.5.1: resolution: {integrity: sha512-XjsuUwpDeY98+yz959OlUK6m7mLBM+1MEG5oaenfuQnNnrQk1WvtcvFgN3FNDP3f2NmZ211t0mNEfSEN1h0eIg==} engines: {node: '>=0.1.90'} @@ -10559,7 +10534,7 @@ packages: optional: true dependencies: cli-truncate: 2.1.0 - colorette: 2.0.19 + colorette: 2.0.20 enquirer: 2.3.6 log-update: 4.0.0 p-map: 4.0.0 @@ -10759,13 +10734,6 @@ packages: dependencies: sourcemap-codec: 1.4.8 - /magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - /magic-string@0.30.0: resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} engines: {node: '>=12'} @@ -11981,8 +11949,8 @@ packages: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true - /perfect-debounce@0.1.3: - resolution: {integrity: sha512-NOT9AcKiDGpnV/HBhI22Str++XWcErO/bALvHCuhv33owZW/CjH8KAFLZDCmu3727sihe0wTxpDhyGc6M8qacQ==} + /perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} dev: true /performance-now@2.1.0: @@ -13064,6 +13032,15 @@ packages: totalist: 3.0.0 dev: true + /sirv@2.0.3: + resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.21 + mrmime: 1.0.1 + totalist: 3.0.0 + dev: true + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true @@ -14100,35 +14077,35 @@ packages: engines: {node: '>= 10.0.0'} dev: true - /unocss@0.51.8(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3): - resolution: {integrity: sha512-uty78ilhQ/HxvjIDLRZ0J6Kb6fSfTKv0afyP7iWQmqoG/qTBR33ambnuTmi2Dt5GzCxAY6tyCaWjK/FZ7mfEYg==} + /unocss@0.52.0(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3): + resolution: {integrity: sha512-MholrJpVLH95SwCiQzXJiimkpUXqI1HWZCZBh4jklpfSGo3eZeo62f1BpXZThmLDPLZoBsf0qqItcvB803X37A==} engines: {node: '>=14'} peerDependencies: - '@unocss/webpack': 0.51.8 + '@unocss/webpack': 0.52.0 peerDependenciesMeta: '@unocss/webpack': optional: true dependencies: - '@unocss/astro': 0.51.8(rollup@2.79.1)(vite@4.3.3) - '@unocss/cli': 0.51.8(rollup@2.79.1) - '@unocss/core': 0.51.8 - '@unocss/extractor-arbitrary-variants': 0.51.8 - '@unocss/postcss': 0.51.8(postcss@8.4.23) - '@unocss/preset-attributify': 0.51.8 - '@unocss/preset-icons': 0.51.8 - '@unocss/preset-mini': 0.51.8 - '@unocss/preset-tagify': 0.51.8 - '@unocss/preset-typography': 0.51.8 - '@unocss/preset-uno': 0.51.8 - '@unocss/preset-web-fonts': 0.51.8 - '@unocss/preset-wind': 0.51.8 - '@unocss/reset': 0.51.8 - '@unocss/transformer-attributify-jsx': 0.51.8 - '@unocss/transformer-attributify-jsx-babel': 0.51.8 - '@unocss/transformer-compile-class': 0.51.8 - '@unocss/transformer-directives': 0.51.8 - '@unocss/transformer-variant-group': 0.51.8 - '@unocss/vite': 0.51.8(rollup@2.79.1)(vite@4.3.3) + '@unocss/astro': 0.52.0(rollup@2.79.1)(vite@4.3.3) + '@unocss/cli': 0.52.0(rollup@2.79.1) + '@unocss/core': 0.52.0 + '@unocss/extractor-arbitrary-variants': 0.52.0 + '@unocss/postcss': 0.52.0(postcss@8.4.23) + '@unocss/preset-attributify': 0.52.0 + '@unocss/preset-icons': 0.52.0 + '@unocss/preset-mini': 0.52.0 + '@unocss/preset-tagify': 0.52.0 + '@unocss/preset-typography': 0.52.0 + '@unocss/preset-uno': 0.52.0 + '@unocss/preset-web-fonts': 0.52.0 + '@unocss/preset-wind': 0.52.0 + '@unocss/reset': 0.52.0 + '@unocss/transformer-attributify-jsx': 0.52.0 + '@unocss/transformer-attributify-jsx-babel': 0.52.0 + '@unocss/transformer-compile-class': 0.52.0 + '@unocss/transformer-directives': 0.52.0 + '@unocss/transformer-variant-group': 0.52.0 + '@unocss/vite': 0.52.0(rollup@2.79.1)(vite@4.3.3) transitivePeerDependencies: - postcss - rollup @@ -14331,18 +14308,16 @@ packages: - terser dev: true - /vite-plugin-pwa@0.14.7(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4): - resolution: {integrity: sha512-dNJaf0fYOWncmjxv9HiSa2xrSjipjff7IkYE5oIUJ2x5HKu3cXgA8LRgzOwTc5MhwyFYRSU0xyN0Phbx3NsQYw==} + /vite-plugin-pwa@0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4): + resolution: {integrity: sha512-gpmx3BeubsRIXRBkjPToOTJbo8fknNmZFQs24i0TPZyaNVa0n27YHDo0Y72amnO70WvHKGE3e1fn8SYUP7e8SA==} peerDependencies: vite: ^3.1.0 || ^4.0.0 workbox-build: ^6.5.4 workbox-window: ^6.5.4 dependencies: - '@rollup/plugin-replace': 5.0.2(rollup@3.21.0) debug: 4.3.4(supports-color@8.1.1) fast-glob: 3.2.12 pretty-bytes: 6.1.0 - rollup: 3.21.0 vite: 4.3.3(@types/node@18.16.0) workbox-build: 6.5.4 workbox-window: 6.5.4 @@ -14834,7 +14809,7 @@ packages: peerDependencies: webpack: ^4.0.0 || ^5.0.0 dependencies: - colorette: 2.0.19 + colorette: 2.0.20 memfs: 3.4.11 mime-types: 2.1.35 range-parser: 1.2.1 From 9fb25310e8d4cedd7ade5e3286a5713c119296a1 Mon Sep 17 00:00:00 2001 From: Knut Sveidqvist <knsv@sveido.com> Date: Wed, 24 May 2023 11:27:17 +0200 Subject: [PATCH 131/255] Fix for regression error in sequenceDiagrams --- cypress/platform/knsv.html | 393 +++--------------- .../mermaid/src/diagrams/sequence/svgDraw.js | 35 +- 2 files changed, 84 insertions(+), 344 deletions(-) diff --git a/cypress/platform/knsv.html b/cypress/platform/knsv.html index f6ee1ef03..32710ae8c 100644 --- a/cypress/platform/knsv.html +++ b/cypress/platform/knsv.html @@ -42,368 +42,75 @@ </style> </head> <body> - <pre class="mermaid2" style="width: 50%"> -flowchart LR - subgraph one - direction LR - A[myClass1] --> B[default] - subgraph two - direction BT - C[myClass2] --> D[default] - end - end - + <pre class="mermaid" style="width: 50%"> + sequenceDiagram + Alice->>Bob: Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be + loop Loopy + Bob->>Alice: Pasten + end </pre> - <pre class="mermaid2" style="width: 50%"> -flowchart LR - classDef aPID stroke:#4e4403,fill:#fdde29,color:#4e4403,rx:5px,ry:5px; - classDef crm stroke:#333333,fill:#DCDCDC,color:#333333,rx:5px,ry:5px; - classDef type stroke:#502604,fill:#FAB565,color:#502604,rx:20px,ry:20px;; - - O0("Joe") - class O0 aPID; - - O1("Person") - class O1 crm; - O0 -- has type -->O1["Person"] - - O2("aat:300411314") - class O2 type; - click O2 function "Sorry the newline html tags are not being processed correctly<br/> So all of this appears on the <br/> same line." - O0 -- has type -->O2["Bug"] - click O0 function "Lots of great info about Joe<br>Lots of great info about Joe<br>burt<br>fred"; - </pre> - <pre class="mermaid2" style="width: 50%"> -flowchart TD - subgraph test - direction TB - subgraph test2 - direction LR - F --> D - end - subgraph test3 - direction TB - G --> H - end - end - </pre> - <pre class="mermaid2" style="width: 50%"> -flowchart TD - - release-branch[Create Release Branch]:::relClass - develop-branch[Update Develop Branch]:::relClass - github-release-draft[GitHub Release Draft]:::relClass - trigger-pipeline[Trigger Jenkins pipeline]:::fixClass - github-release[GitHub Release]:::postClass - - build-ready --> release-branch - build-ready --> develop-branch - release-branch --> jenkins-release-build - jenkins-release-build --> github-release-draft - jenkins-release-build --> install-release - install-release --> verify-release - jenkins-release-build --> announce - github-release-draft --> github-release - verify-release --> verify-check - verify-check -- Yes --> github-release - verify-check -- No --> release-fix - release-fix --> release-branch-pr - verify-check -- No --> delete-artifacts - release-branch-pr --> trigger-pipeline - delete-artifacts --> trigger-pipeline - trigger-pipeline --> jenkins-release-build - - - </pre> - <pre class="mermaid2" style="width: 50%"> -flowchart LR - a["<strong>Haiya</strong>"]===>b - </pre> - <pre class="mermaid2" style="width: 50%"> -flowchart TD - A --> B - A --> C - B --> C - </pre> - <pre class="mermaid2" style="width: 50%"> -flowchart TD - A([stadium shape test]) - A -->|Get money| B([Go shopping]) - B --> C([Let me think...<br />Do I want something for work,<br />something to spend every free second with,<br />or something to get around?]) - C -->|One| D([Laptop]) - C -->|Two| E([iPhone]) - C -->|Three| F([Car<br/>wroom wroom]) - click A "index.html#link-clicked" "link test" - click B testClick "click test" - classDef someclass fill:#f96; - class A someclass; - class C someclass; - </pre> - <pre class="mermaid2" style="width: 50%"> - sequenceDiagram - title: My Sequence Diagram Title - accTitle: My Acc Sequence Diagram - accDescr: My Sequence Diagram Description - - Alice->>John: Hello John, how are you? - John-->>Alice: Great! - Alice-)John: See you later! - </pre> - <pre class="mermaid2" style="width: 50%"> -graph TD - A -->|000| B - B -->|111| C - - linkStyle 1 stroke:#ff3,stroke-width:4px,color:red; - </pre> - <pre class="mermaid2" style="width: 100%"> - journey - accTitle: My User Journey Diagram - accDescr: My User Journey Diagram Description - - title My working day - section Go to work - Make tea: 5: Me - Go upstairs: 3: Me - Do work: 1: Me, Cat - section Go home - Go downstairs: 5: Me - Sit down: 5: Me - </pre> - <pre class="mermaid2" style="width: 100%"> - info - </pre> - <pre class="mermaid2" style="width: 100%"> -requirementDiagram - accTitle: My req Diagram - accDescr: My req Diagram Description - - requirement test_req { - id: 1 - text: the test text. - risk: high - verifymethod: test - } - - functionalRequirement test_req2 { - id: 1.1 - text: the second test text. - risk: low - verifymethod: inspection - } - - performanceRequirement test_req3 { - id: 1.2 - text: the third test text. - risk: medium - verifymethod: demonstration - } - - element test_entity { - type: simulation - } - - element test_entity2 { - type: word doc - docRef: reqs/test_entity - } - - - test_entity - satisfies -> test_req2 - test_req - traces -> test_req2 - test_req - contains -> test_req3 - test_req <- copies - test_entity2 - </pre> - <pre class="mermaid2" style="width: 100%"> -gantt - dateFormat YYYY-MM-DD - title Adding GANTT diagram functionality to mermaid - excludes weekends - %% (`excludes` accepts specific dates in YYYY-MM-DD format, days of the week ("sunday") or "weekends", but not the word "weekdays".) - - section A section - Completed task :done, des1, 2014-01-06,2014-01-08 - Active task :active, des2, 2014-01-09, 3d - Future task : des3, after des2, 5d - Future task2 : des4, after des3, 5d - - section Critical tasks - Completed task in the critical line :crit, done, 2014-01-06,24h - Implement parser and jison :crit, done, after des1, 2d - Create tests for parser :crit, active, 3d - Future task in critical line :crit, 5d - Create tests for renderer :2d - Add to mermaid :1d - Functionality added :milestone, 2014-01-25, 0d - - section Documentation - Describe gantt syntax :active, a1, after des1, 3d - Add gantt diagram to demo page :after a1 , 20h - Add another diagram to demo page :doc1, after a1 , 48h - - section Last section - Describe gantt syntax :after doc1, 3d - Add gantt diagram to demo page :20h - Add another diagram to demo page :48h - </pre> - <pre class="mermaid2" style="width: 100%"> -stateDiagram - state Active { - Idle - } - Inactive --> Idle: ACT - Active --> Active: LOG - </pre> - <pre class="mermaid2" style="width: 100%"> - flowchart TB - accTitle: My flowchart - accDescr: My flowchart Description - subgraph One - a1-->a2-->a3 + <pre class="mermaid" style="width: 50%"> + sequenceDiagram + participant Alice + participant Bob + participant John as John<br/>Second Line + Alice ->> Bob: Hello Bob, how are you? + Bob-->>John: How about you John? + Bob--x Alice: I am good thanks! + Bob-x John: I am good thanks! + Note right of John: Bob thinks a long<br/>long time, so long<br/>that the text does<br/>not fit on a row. + Bob-->Alice: Checking with John... + alt either this + Alice->>John: Yes + else or this + Alice->>John: No + else or this will happen + Alice->John: Maybe + end + par this happens in parallel + Alice -->> Bob: Parallel message 1 + and + Alice -->> John: Parallel message 2 end </pre> - <pre class="mermaid2" style="width: 100%"> - sequenceDiagram - A ->> B: 1 - rect rgb(204, 0, 102) - break yes - rect rgb(0, 204, 204) - C ->> C: 0 - end - end - end - B ->> A: Return - </pre> - <pre class="mermaid2" style="width: 100%"> -classDiagram -accTitle: My class diagram -accDescr: My class diagram Description -Class01 <|-- AveryLongClass : Cool -Class09 --> C2 : Where am i? -Class09 --* C3 -Class09 --|> Class07 -Class07 : equals() -Class07 : Object[] elementData -Class01 : size() -Class01 : int chimp -Class01 : int gorilla -class Class10 { - int id - size() -} - </pre> - <pre class="mermaid2" style="width: 100%"> -%%{init: {'config': {'wrap': true }}}%% - sequenceDiagram - participant A as Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be - A->>Bob: Hola - Bob-->A: Pasten ! - </pre> - <pre class="mermaid2" style="width: 100%"> - gitGraph - commit id: "ZERO" - branch develop - commit id:"A" - checkout main - commit id:"ONE" - checkout develop - commit id:"B" - branch featureA - commit id:"FIX" - commit id: "FIX-2" - checkout main - commit id:"TWO" - cherry-pick id:"A" - commit id:"THREE" - cherry-pick id:"FIX" - checkout develop - commit id:"C" - merge featureA - </pre> - <pre class="mermaid2" style="width: 100%"> -flowchart TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - C -->|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - </pre> - <pre class="mermaid2" style="width: 100%"> - classDiagram - Animal "1" <|-- Duck - Animal <|-- Fish - Animal <--o Zebra - Animal : +int age - Animal : +String gender - Animal: +isMammal() - Animal: +mate() - class Duck{ - +String beakColor - +swim() - +quack() - } - class Fish{ - -int sizeInFeet - -canEat() - } - class Zebra{ - +bool is_wild - +run() - } - </pre> - <pre class="mermaid2" style="width: 100%"> - erDiagram - CAR ||--o{ NAMED-DRIVER : allows - CAR { - string registrationNumber - string make - string model - } - PERSON ||--o{ NAMED-DRIVER : is - PERSON { - string firstName - string lastName - int age - } - </pre> - - <!-- <script src="./mermaid.js"></script> --> - <script src="./mermaid.js"></script> - <script> + <script type="module"> + // import mindmap from '../../packages/mermaid-mindmap/src/detector'; + // import example from '../../packages/mermaid-example-diagram/src/mermaid-example-diagram.core.mjs'; + import mermaid from './mermaid.esm.mjs'; + // await mermaid.registerExternalDiagrams([example]); mermaid.parseError = function (err, hash) { // console.error('Mermaid error: ', err); }; mermaid.initialize({ - maxTextSize: 900000, + // theme: 'forest', startOnLoad: true, - securityLevel: 'loose', logLevel: 0, - fontFamily: 'courier', flowchart: { - // curve: 'curveLinear', - useMaxWidth: true, - htmlLabels: false, - fontFamily: 'courier', + // defaultRenderer: 'elk', + useMaxWidth: false, + // htmlLabels: false, + htmlLabels: true, }, - lazyLoadedDiagrams: ['./mermaid-mindmap-detector.js'], + // htmlLabels: false, + gantt: { + useMaxWidth: false, + }, + sequence: { + wrap: true, + }, + useMaxWidth: false, }); function callback() { alert('It worked'); } - - function clickByFlow(elemName) { - const div = document.createElement('div'); - div.className = 'created-by-click'; - div.style = 'padding: 20px; background: green; color: white;'; - div.innerText = 'Clicked By Flow'; - - document.getElementsByTagName('body')[0].appendChild(div); - } - mermaid.parseError = function (err, hash) { console.error('In parse error:'); console.error(err); }; + // mermaid.test1('first_slow', 1200).then((r) => console.info(r)); + // mermaid.test1('second_fast', 200).then((r) => console.info(r)); + // mermaid.test1('third_fast', 200).then((r) => console.info(r)); + // mermaid.test1('forth_slow', 1200).then((r) => console.info(r)); </script> </body> </html> diff --git a/packages/mermaid/src/diagrams/sequence/svgDraw.js b/packages/mermaid/src/diagrams/sequence/svgDraw.js index 2358b20ad..a8feea2a1 100644 --- a/packages/mermaid/src/diagrams/sequence/svgDraw.js +++ b/packages/mermaid/src/diagrams/sequence/svgDraw.js @@ -578,7 +578,7 @@ export const drawLoop = function (elem, loopModel, labelText, conf) { txt.class = 'labelText'; drawLabel(g, txt); - txt = svgDrawCommon.getTextObj(); + txt = getTextObj(); txt.text = loopModel.title; txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2; txt.y = loopModel.starty + boxMargin + boxTextMargin; @@ -764,6 +764,37 @@ export const insertArrowCrossHead = function (elem) { // this is actual shape for arrowhead }; +export const getTextObj = function () { + return { + x: 0, + y: 0, + fill: undefined, + anchor: undefined, + style: '#666', + width: undefined, + height: undefined, + textMargin: 0, + rx: 0, + ry: 0, + tspan: true, + valign: undefined, + }; +}; + +export const getNoteRect = function () { + return { + x: 0, + y: 0, + fill: '#EDF2AE', + stroke: '#666', + width: 100, + anchor: 'start', + height: 100, + rx: 0, + ry: 0, + }; +}; + const _drawTextCandidateFunc = (function () { /** * @param {any} content @@ -1004,6 +1035,8 @@ export default { insertDatabaseIcon, insertComputerIcon, insertClockIcon, + getTextObj, + getNoteRect, popupMenu, popdownMenu, fixLifeLineHeights, From bd616e0ef56bfeb6bed6fd36b924674f956b4fff Mon Sep 17 00:00:00 2001 From: Knut Sveidqvist <knsv@sveido.com> Date: Wed, 24 May 2023 12:27:30 +0200 Subject: [PATCH 132/255] Test commit --- cypress/platform/knsv.html | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/cypress/platform/knsv.html b/cypress/platform/knsv.html index 32710ae8c..dd4775f27 100644 --- a/cypress/platform/knsv.html +++ b/cypress/platform/knsv.html @@ -50,28 +50,21 @@ end </pre> <pre class="mermaid" style="width: 50%"> - sequenceDiagram - participant Alice - participant Bob - participant John as John<br/>Second Line - Alice ->> Bob: Hello Bob, how are you? - Bob-->>John: How about you John? - Bob--x Alice: I am good thanks! - Bob-x John: I am good thanks! - Note right of John: Bob thinks a long<br/>long time, so long<br/>that the text does<br/>not fit on a row. - Bob-->Alice: Checking with John... - alt either this - Alice->>John: Yes - else or this - Alice->>John: No - else or this will happen - Alice->John: Maybe - end - par this happens in parallel - Alice -->> Bob: Parallel message 1 - and - Alice -->> John: Parallel message 2 - end + %%{init: {"flowchart": {"htmlLabels": false}} }%% + flowchart LR + b("`The dog in **the** hog.(1) + NL`") --"`1o **bold**`"--> c[new strings svg labels] + </pre> + <pre class="mermaid" style="width: 50%"> + %%{init: {"flowchart": {"htmlLabels": true}} }%% + flowchart LR + b("`The dog in **the** hog.(1) + NL`") --"`1o **bold**`"--> c[new strings html labels] + </pre> + <pre class="mermaid" style="width: 50%"> + %%{init: {"flowchart": {"htmlLabels": true}} }%% + flowchart LR + b("The dog in the hog.(1)\nNL") --"1o bold"--> c[old strings svg labels] </pre> <script type="module"> // import mindmap from '../../packages/mermaid-mindmap/src/detector'; From 5bfe32524d479fe296af0801dcce04c187dab83e Mon Sep 17 00:00:00 2001 From: Knut Sveidqvist <knsv@sveido.com> Date: Wed, 24 May 2023 12:53:28 +0200 Subject: [PATCH 133/255] Label background fix --- packages/mermaid/src/diagrams/flowchart/styles.ts | 13 +++++++++++++ packages/mermaid/src/rendering-util/createText.js | 12 ++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/packages/mermaid/src/diagrams/flowchart/styles.ts b/packages/mermaid/src/diagrams/flowchart/styles.ts index 964505c2d..62ec1177e 100644 --- a/packages/mermaid/src/diagrams/flowchart/styles.ts +++ b/packages/mermaid/src/diagrams/flowchart/styles.ts @@ -82,6 +82,19 @@ const getStyles = (options: FlowChartStyleOptions) => text-align: center; } + /* For html labels only */ + .labelBkg { + background-color: ${options.edgeLabelBackground}; + background-color: ${options.edgeLabelBackground}; + opacity: 0.5; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: -1; + } + .cluster rect { fill: ${options.clusterBkg}; stroke: ${options.clusterBorder}; diff --git a/packages/mermaid/src/rendering-util/createText.js b/packages/mermaid/src/rendering-util/createText.js index d9ba1b9cd..43869f3f2 100644 --- a/packages/mermaid/src/rendering-util/createText.js +++ b/packages/mermaid/src/rendering-util/createText.js @@ -16,9 +16,10 @@ function applyStyle(dom, styleFn) { * @param {any} node * @param width * @param classes + * @param addBackground * @returns {SVGForeignObjectElement} Node */ -function addHtmlSpan(element, node, width, classes) { +function addHtmlSpan(element, node, width, classes, addBackground = false) { const fo = element.append('foreignObject'); // const newEl = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'); // const newEl = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'); @@ -28,12 +29,15 @@ function addHtmlSpan(element, node, width, classes) { const label = node.label; const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel'; + const bkgHtml = addBackground ? '<span class="labelBkg"></span>' : ''; div.html( - `<span class="${labelClass} ${classes}" ` + + `<span> + ${bkgHtml} + <span class="${labelClass} ${classes}" ` + (node.labelStyle ? 'style="' + node.labelStyle + '"' : '') + '>' + label + - '</span>' + '</span></span>' ); applyStyle(div, node.labelStyle); @@ -200,7 +204,7 @@ export const createText = ( ), labelStyle: style.replace('fill:', 'color:'), }; - let vertexNode = addHtmlSpan(el, node, width, classes); + let vertexNode = addHtmlSpan(el, node, width, classes, addSvgBackground); return vertexNode; } else { const structuredText = markdownToLines(text); From 9c12c42a26e9b9091af1be8f0fa00d905a9a07fc Mon Sep 17 00:00:00 2001 From: Knut Sveidqvist <knsv@sveido.com> Date: Wed, 24 May 2023 18:18:54 +0200 Subject: [PATCH 134/255] Mermaid Version 10.2.0-rc.4 --- cypress/platform/knsv.html | 18 +++++++ package.json | 2 +- .../mermaid/src/diagrams/flowchart/styles.ts | 26 ++++++---- .../mermaid/src/rendering-util/createText.js | 9 ++-- packages/mermaid/src/themes/theme-base.js | 2 +- pnpm-lock.yaml | 52 ------------------- 6 files changed, 42 insertions(+), 67 deletions(-) diff --git a/cypress/platform/knsv.html b/cypress/platform/knsv.html index dd4775f27..512333c01 100644 --- a/cypress/platform/knsv.html +++ b/cypress/platform/knsv.html @@ -42,6 +42,24 @@ </style> </head> <body> + <pre class="mermaid" style="width: 50%"> + %%{init: {"flowchart": {"htmlLabels": true}} }%% + flowchart LR + b("`The dog in **the** hog.(1).. a a a a *very long text* about it + Word! + + Another line with many, many words. Another line with many, many words. Another line with many, many words. Another line with many, many words. Another line with many, many words. Another line with many, many words. Another line with many, many words. Another line with many, many words.`") --apa--> c + + </pre + > + <pre class="mermaid" style="width: 50%"> + classDiagram-v2 + + classA -- classB : Inheritance + classA -- classC : link + classC -- classD : link + classB -- classD + </pre> <pre class="mermaid" style="width: 50%"> sequenceDiagram Alice->>Bob: Extremely utterly long line of longness which had previously overflown the actor box as it is much longer than what it should be diff --git a/package.json b/package.json index fe7a3ba00..b3be538da 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mermaid-monorepo", "private": true, - "version": "10.1.0", + "version": "10.2.0-rc.1", "description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "type": "module", "packageManager": "pnpm@8.4.0", diff --git a/packages/mermaid/src/diagrams/flowchart/styles.ts b/packages/mermaid/src/diagrams/flowchart/styles.ts index 62ec1177e..d0c3c77c6 100644 --- a/packages/mermaid/src/diagrams/flowchart/styles.ts +++ b/packages/mermaid/src/diagrams/flowchart/styles.ts @@ -1,3 +1,6 @@ +// import khroma from 'khroma'; +import * as khroma from 'khroma'; + /** Returns the styles given options */ export interface FlowChartStyleOptions { arrowheadColor: string; @@ -15,6 +18,18 @@ export interface FlowChartStyleOptions { titleColor: string; } +const fade = (color: string, opacity: number) => { + // @ts-ignore TODO: incorrect types from khroma + const channel = khroma.channel; + + const r = channel(color, 'r'); + const g = channel(color, 'g'); + const b = channel(color, 'b'); + + // @ts-ignore incorrect types from khroma + return khroma.rgba(r, g, b, opacity); +}; + const getStyles = (options: FlowChartStyleOptions) => `.label { font-family: ${options.fontFamily}; @@ -84,15 +99,8 @@ const getStyles = (options: FlowChartStyleOptions) => /* For html labels only */ .labelBkg { - background-color: ${options.edgeLabelBackground}; - background-color: ${options.edgeLabelBackground}; - opacity: 0.5; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: -1; + background-color: ${fade(options.edgeLabelBackground, 0.5)}; + // background-color: } .cluster rect { diff --git a/packages/mermaid/src/rendering-util/createText.js b/packages/mermaid/src/rendering-util/createText.js index 43869f3f2..121621775 100644 --- a/packages/mermaid/src/rendering-util/createText.js +++ b/packages/mermaid/src/rendering-util/createText.js @@ -29,15 +29,13 @@ function addHtmlSpan(element, node, width, classes, addBackground = false) { const label = node.label; const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel'; - const bkgHtml = addBackground ? '<span class="labelBkg"></span>' : ''; div.html( - `<span> - ${bkgHtml} + ` <span class="${labelClass} ${classes}" ` + (node.labelStyle ? 'style="' + node.labelStyle + '"' : '') + '>' + label + - '</span></span>' + '</span>' ); applyStyle(div, node.labelStyle); @@ -45,6 +43,9 @@ function addHtmlSpan(element, node, width, classes, addBackground = false) { div.style('white-space', 'nowrap'); div.style('max-width', width + 'px'); div.attr('xmlns', 'http://www.w3.org/1999/xhtml'); + if (addBackground) { + div.attr('class', 'labelBkg'); + } let bbox = div.node().getBoundingClientRect(); if (bbox.width === width) { diff --git a/packages/mermaid/src/themes/theme-base.js b/packages/mermaid/src/themes/theme-base.js index 495df2e41..ce1700d0b 100644 --- a/packages/mermaid/src/themes/theme-base.js +++ b/packages/mermaid/src/themes/theme-base.js @@ -1,4 +1,4 @@ -import { darken, lighten, adjust, invert, isDark } from 'khroma'; +import { darken, lighten, adjust, invert, isDark, toRgba } from 'khroma'; import { mkBorder } from './theme-helpers.js'; import { oldAttributeBackgroundColorEven, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d021684f9..1ec7f3a7b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -425,58 +425,6 @@ importers: specifier: ^6.5.4 version: 6.5.4 - packages/mermaid/src/vitepress: - dependencies: - '@vueuse/core': - specifier: ^10.1.0 - version: 10.1.0(vue@3.2.47) - jiti: - specifier: ^1.18.2 - version: 1.18.2 - vue: - specifier: ^3.2.47 - version: 3.2.47 - devDependencies: - '@iconify-json/carbon': - specifier: ^1.1.16 - version: 1.1.16 - '@unocss/reset': - specifier: ^0.51.8 - version: 0.51.8 - '@vite-pwa/vitepress': - specifier: ^0.0.5 - version: 0.0.5(vite-plugin-pwa@0.14.7) - '@vitejs/plugin-vue': - specifier: ^4.2.1 - version: 4.2.1(vite@4.3.3)(vue@3.2.47) - fast-glob: - specifier: ^3.2.12 - version: 3.2.12 - https-localhost: - specifier: ^4.7.1 - version: 4.7.1 - pathe: - specifier: ^1.1.0 - version: 1.1.0 - unocss: - specifier: ^0.51.8 - version: 0.51.8(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3) - unplugin-vue-components: - specifier: ^0.24.1 - version: 0.24.1(rollup@2.79.1)(vue@3.2.47) - vite: - specifier: ^4.3.3 - version: 4.3.3(@types/node@18.16.0) - vite-plugin-pwa: - specifier: ^0.14.7 - version: 0.14.7(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) - vitepress: - specifier: 1.0.0-alpha.74 - version: 1.0.0-alpha.74(@algolia/client-search@4.14.2)(@types/node@18.16.0) - workbox-window: - specifier: ^6.5.4 - version: 6.5.4 - tests/webpack: dependencies: '@mermaid-js/mermaid-example-diagram': From 8d43b87200ba0b59f6800942e03154dccc6b57b7 Mon Sep 17 00:00:00 2001 From: Knut Sveidqvist <knsv@sveido.com> Date: Wed, 24 May 2023 19:03:22 +0200 Subject: [PATCH 135/255] Mermaid version 10.2.0 --- package.json | 2 +- packages/mermaid/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b3be538da..83be32bf2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mermaid-monorepo", "private": true, - "version": "10.2.0-rc.1", + "version": "10.2.0", "description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "type": "module", "packageManager": "pnpm@8.4.0", diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index 61a9e44e6..6e1e1f36a 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -1,6 +1,6 @@ { "name": "mermaid", - "version": "10.2.0-rc.3", + "version": "10.2.0", "description": "Markdown-ish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "type": "module", "module": "./dist/mermaid.core.mjs", From 6093383d450e6f8c7c6e63ef630a6230c7a3bcf2 Mon Sep 17 00:00:00 2001 From: Alois Klink <alois@aloisklink.com> Date: Wed, 24 May 2023 21:59:22 +0100 Subject: [PATCH 136/255] build(deps): fix broken pnpm-lock.yaml file Looks like a bad merge conflict resolution broke this file, and for some reason, the `packages/mermaid/src/vitepress` bit got removed when releasing v10.2.0-rc.4. Fixes: bd1343648e983290693eddd16e95db09ae0526d3 Fixes: 9c12c42a26e9b9091af1be8f0fa00d905a9a07fc --- pnpm-lock.yaml | 129 +++++++++++++++++++++++++------------------------ 1 file changed, 66 insertions(+), 63 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f73f54076..d781383eb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -425,6 +425,58 @@ importers: specifier: ^6.5.4 version: 6.5.4 + packages/mermaid/src/vitepress: + dependencies: + '@vueuse/core': + specifier: ^10.1.0 + version: 10.1.0(vue@3.2.47) + jiti: + specifier: ^1.18.2 + version: 1.18.2 + vue: + specifier: ^3.2.47 + version: 3.2.47 + devDependencies: + '@iconify-json/carbon': + specifier: ^1.1.16 + version: 1.1.16 + '@unocss/reset': + specifier: ^0.52.0 + version: 0.52.0 + '@vite-pwa/vitepress': + specifier: ^0.0.5 + version: 0.0.5(vite-plugin-pwa@0.15.0) + '@vitejs/plugin-vue': + specifier: ^4.2.1 + version: 4.2.1(vite@4.3.3)(vue@3.2.47) + fast-glob: + specifier: ^3.2.12 + version: 3.2.12 + https-localhost: + specifier: ^4.7.1 + version: 4.7.1 + pathe: + specifier: ^1.1.0 + version: 1.1.0 + unocss: + specifier: ^0.52.0 + version: 0.52.0(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3) + unplugin-vue-components: + specifier: ^0.24.1 + version: 0.24.1(rollup@2.79.1)(vue@3.2.47) + vite: + specifier: ^4.3.3 + version: 4.3.3(@types/node@18.16.0) + vite-plugin-pwa: + specifier: ^0.15.0 + version: 0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) + vitepress: + specifier: 1.0.0-alpha.76 + version: 1.0.0-alpha.76(@algolia/client-search@4.14.2)(@types/node@18.16.0) + workbox-window: + specifier: ^6.5.4 + version: 6.5.4 + tests/webpack: dependencies: '@mermaid-js/mermaid-example-diagram': @@ -446,29 +498,12 @@ importers: packages: - /@algolia/autocomplete-core@1.7.4: - resolution: {integrity: sha512-daoLpQ3ps/VTMRZDEBfU8ixXd+amZcNJ4QSP3IERGyzqnL5Ch8uSRFt/4G8pUvW9c3o6GA4vtVv4I4lmnkdXyg==} - dependencies: - '@algolia/autocomplete-shared': 1.7.4 - dev: true - /@algolia/autocomplete-core@1.8.2: resolution: {integrity: sha512-mTeshsyFhAqw/ebqNsQpMtbnjr+qVOSKXArEj4K0d7sqc8It1XD0gkASwecm9mF/jlOQ4Z9RNg1HbdA8JPdRwQ==} dependencies: '@algolia/autocomplete-shared': 1.8.2 dev: true - /@algolia/autocomplete-preset-algolia@1.7.4(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): - resolution: {integrity: sha512-s37hrvLEIfcmKY8VU9LsAXgm2yfmkdHT3DnA3SgHaY93yjZ2qL57wzb5QweVkYuEBZkT2PIREvRoLXC2sxTbpQ==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - dependencies: - '@algolia/autocomplete-shared': 1.7.4 - '@algolia/client-search': 4.14.2 - algoliasearch: 4.14.2 - dev: true - /@algolia/autocomplete-preset-algolia@1.8.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): resolution: {integrity: sha512-J0oTx4me6ZM9kIKPuL3lyU3aB8DEvpVvR6xWmHVROx5rOYJGQcZsdG4ozxwcOyiiu3qxMkIbzntnV1S1VWD8yA==} peerDependencies: @@ -480,10 +515,6 @@ packages: algoliasearch: 4.14.2 dev: true - /@algolia/autocomplete-shared@1.7.4: - resolution: {integrity: sha512-2VGCk7I9tA9Ge73Km99+Qg87w0wzW4tgUruvWAn/gfey1ZXgmxZtyIRBebk35R1O8TbK77wujVtCnpsGpRy1kg==} - dev: true - /@algolia/autocomplete-shared@1.8.2: resolution: {integrity: sha512-b6Z/X4MczChMcfhk6kfRmBzPgjoPzuS9KGR4AFsiLulLNRAAqhP+xZTKtMnZGhLuc61I20d5WqlId02AZvcO6g==} dev: true @@ -2888,18 +2919,6 @@ packages: resolution: {integrity: sha512-NaXVp3I8LdmJ54fn038KHgG7HmbIzZlKS2FkVf6mKcW5bYMJovkx4947joQyZk5yubxOZ+ddHSh79y39Aevufg==} dev: true - /@docsearch/js@3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0): - resolution: {integrity: sha512-2xAv2GFuHzzmG0SSZgf8wHX0qZX8n9Y1ZirKUk5Wrdc+vH9CL837x2hZIUdwcPZI9caBA+/CzxsS68O4waYjUQ==} - dependencies: - '@docsearch/react': 3.3.3(@algolia/client-search@4.14.2) - preact: 10.11.0 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/react' - - react - - react-dom - dev: true - /@docsearch/js@3.3.5(@algolia/client-search@4.14.2): resolution: {integrity: sha512-nZi074OCryZnzva2LNcbQkwBJIND6cvuFI4s1FIe6Ygf6n9g6B/IYUULXNx05rpoCZ+KEoEt3taROpsHBliuSw==} dependencies: @@ -2912,28 +2931,6 @@ packages: - react-dom dev: true - /@docsearch/react@3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0): - resolution: {integrity: sha512-pLa0cxnl+G0FuIDuYlW+EBK6Rw2jwLw9B1RHIeS4N4s2VhsfJ/wzeCi3CWcs5yVfxLd5ZK50t//TMA5e79YT7Q==} - peerDependencies: - '@types/react': '>= 16.8.0 < 19.0.0' - react: '>= 16.8.0 < 19.0.0' - react-dom: '>= 16.8.0 < 19.0.0' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - react-dom: - optional: true - dependencies: - '@algolia/autocomplete-core': 1.7.4 - '@algolia/autocomplete-preset-algolia': 1.7.4(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) - '@docsearch/css': 3.3.3 - algoliasearch: 4.14.2 - transitivePeerDependencies: - - '@algolia/client-search' - dev: true - /@docsearch/react@3.3.5(@algolia/client-search@4.14.2): resolution: {integrity: sha512-Zuxf4z5PZ9eIQkVCNu76v1H+KAztKItNn3rLzZa7kpBS+++TgNARITnZeUS7C1DKoAhJZFr6T/H+Lvc6h/iiYg==} peerDependencies: @@ -4324,6 +4321,7 @@ packages: /@types/web-bluetooth@0.0.16: resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} + dev: false /@types/web-bluetooth@0.0.17: resolution: {integrity: sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==} @@ -4822,7 +4820,7 @@ packages: /@vue/compiler-sfc@3.3.4: resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} dependencies: - '@babel/parser': 7.21.2 + '@babel/parser': 7.21.8 '@vue/compiler-core': 3.3.4 '@vue/compiler-dom': 3.3.4 '@vue/compiler-ssr': 3.3.4 @@ -4945,6 +4943,7 @@ packages: transitivePeerDependencies: - '@vue/composition-api' - vue + dev: false /@vueuse/core@10.1.2(vue@3.3.4): resolution: {integrity: sha512-roNn8WuerI56A5uiTyF/TEYX0Y+VKlhZAF94unUfdhbDUI+NfwQMn4FUnUscIRUhv3344qvAghopU4bzLPNFlA==} @@ -5010,6 +5009,7 @@ packages: /@vueuse/metadata@10.1.0: resolution: {integrity: sha512-cM28HjDEw5FIrPE9rgSPFZvQ0ZYnOLAOr8hl1XM6tFl80U3WAR5ROdnAqiYybniwP5gt9MKKAJAqd/ab2aHkqg==} + dev: false /@vueuse/metadata@10.1.2: resolution: {integrity: sha512-3mc5BqN9aU2SqBeBuWE7ne4OtXHoHKggNgxZR2K+zIW4YLsy6xoZ4/9vErQs6tvoKDX6QAqm3lvsrv0mczAwIQ==} @@ -5022,6 +5022,7 @@ packages: transitivePeerDependencies: - '@vue/composition-api' - vue + dev: false /@vueuse/shared@10.1.2(vue@3.3.4): resolution: {integrity: sha512-1uoUTPBlgyscK9v6ScGeVYDDzlPSFXBlxuK7SfrDGyUTBiznb3mNceqhwvZHjtDRELZEN79V5uWPTF1VDV8svA==} @@ -6810,6 +6811,7 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: true /cypress-image-snapshot@4.0.1(cypress@12.10.0)(jest@29.5.0): resolution: {integrity: sha512-PBpnhX/XItlx3/DAk5ozsXQHUi72exybBNH5Mpqj1DVmjq+S5Jd9WE5CRa4q5q0zuMZb2V2VpXHth6MjFpgj9Q==} @@ -14329,7 +14331,7 @@ packages: flexsearch: 0.7.31 glob-to-regexp: 0.4.1 markdown-it: 13.0.1 - vitepress: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0) + vitepress: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0) vue: 3.3.4 dev: true @@ -14338,16 +14340,16 @@ packages: hasBin: true dependencies: '@docsearch/css': 3.3.3 - '@docsearch/js': 3.3.3(@algolia/client-search@4.14.2) - '@vitejs/plugin-vue': 4.2.1(vite@4.3.3)(vue@3.2.47) + '@docsearch/js': 3.3.5(@algolia/client-search@4.14.2) + '@vitejs/plugin-vue': 4.2.3(vite@4.3.8)(vue@3.3.4) '@vue/devtools-api': 6.5.0 - '@vueuse/core': 10.1.0(vue@3.2.47) + '@vueuse/core': 10.1.2(vue@3.3.4) body-scroll-lock: 4.0.0-beta.0 mark.js: 8.11.1 minisearch: 6.0.1 shiki: 0.14.1 - vite: 4.3.3(@types/node@18.16.0) - vue: 3.2.47 + vite: 4.3.8(@types/node@18.16.0) + vue: 3.3.4 transitivePeerDependencies: - '@algolia/client-search' - '@types/node' @@ -14459,7 +14461,7 @@ packages: strip-literal: 1.0.1 tinybench: 2.4.0 tinypool: 0.5.0 - vite: 4.3.3(@types/node@18.16.0) + vite: 4.3.8(@types/node@18.16.0) vite-node: 0.31.0(@types/node@18.16.0) why-is-node-running: 2.2.2 transitivePeerDependencies: @@ -14535,6 +14537,7 @@ packages: optional: true dependencies: vue: 3.2.47 + dev: false /vue-demi@0.14.0(vue@3.3.4): resolution: {integrity: sha512-gt58r2ogsNQeVoQ3EhoUAvUsH9xviydl0dWJj7dabBC/2L4uBId7ujtCwDRD0JhkGsV1i0CtfLAeyYKBht9oWg==} From 38d9ebc5dac271e1c5a56a1ba3395d8f6e34673b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 May 2023 02:06:17 +0000 Subject: [PATCH 137/255] chore(deps): update all patch dependencies --- packages/mermaid/src/docs/package.json | 2 +- pnpm-lock.yaml | 60 ++------------------------ 2 files changed, 5 insertions(+), 57 deletions(-) diff --git a/packages/mermaid/src/docs/package.json b/packages/mermaid/src/docs/package.json index ea478279e..aeb3d24f3 100644 --- a/packages/mermaid/src/docs/package.json +++ b/packages/mermaid/src/docs/package.json @@ -30,7 +30,7 @@ "unplugin-vue-components": "^0.24.1", "vite": "^4.3.3", "vite-plugin-pwa": "^0.15.0", - "vitepress": "1.0.0-alpha.76", + "vitepress": "1.0.0-beta.1", "workbox-window": "^6.5.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d781383eb..7c542dc9e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -419,60 +419,8 @@ importers: specifier: ^0.15.0 version: 0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) vitepress: - specifier: 1.0.0-alpha.76 - version: 1.0.0-alpha.76(@algolia/client-search@4.14.2)(@types/node@18.16.0) - workbox-window: - specifier: ^6.5.4 - version: 6.5.4 - - packages/mermaid/src/vitepress: - dependencies: - '@vueuse/core': - specifier: ^10.1.0 - version: 10.1.0(vue@3.2.47) - jiti: - specifier: ^1.18.2 - version: 1.18.2 - vue: - specifier: ^3.2.47 - version: 3.2.47 - devDependencies: - '@iconify-json/carbon': - specifier: ^1.1.16 - version: 1.1.16 - '@unocss/reset': - specifier: ^0.52.0 - version: 0.52.0 - '@vite-pwa/vitepress': - specifier: ^0.0.5 - version: 0.0.5(vite-plugin-pwa@0.15.0) - '@vitejs/plugin-vue': - specifier: ^4.2.1 - version: 4.2.1(vite@4.3.3)(vue@3.2.47) - fast-glob: - specifier: ^3.2.12 - version: 3.2.12 - https-localhost: - specifier: ^4.7.1 - version: 4.7.1 - pathe: - specifier: ^1.1.0 - version: 1.1.0 - unocss: - specifier: ^0.52.0 - version: 0.52.0(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3) - unplugin-vue-components: - specifier: ^0.24.1 - version: 0.24.1(rollup@2.79.1)(vue@3.2.47) - vite: - specifier: ^4.3.3 - version: 4.3.3(@types/node@18.16.0) - vite-plugin-pwa: - specifier: ^0.15.0 - version: 0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) - vitepress: - specifier: 1.0.0-alpha.76 - version: 1.0.0-alpha.76(@algolia/client-search@4.14.2)(@types/node@18.16.0) + specifier: 1.0.0-beta.1 + version: 1.0.0-beta.1(@algolia/client-search@4.14.2)(@types/node@18.16.0) workbox-window: specifier: ^6.5.4 version: 6.5.4 @@ -14364,8 +14312,8 @@ packages: - terser dev: true - /vitepress@1.0.0-alpha.76(@algolia/client-search@4.14.2)(@types/node@18.16.0): - resolution: {integrity: sha512-fzR1pDpGnSMeCJ+AnDdMe/ETD2G0Go+g6mTxDv9ps7Hmr1JjVqw97nasCyZg3jgfQxi2nt78EJ/bw7hY5n/rlw==} + /vitepress@1.0.0-beta.1(@algolia/client-search@4.14.2)(@types/node@18.16.0): + resolution: {integrity: sha512-V2yyCwQ+v9fh7rbnGDLp8M7vHa9sLElexXf/JHtBOsOwv7ed9wt1QI4WUagYgKR3TeoJT9v2s6f0UaQSne0EvQ==} hasBin: true dependencies: '@docsearch/css': 3.3.5 From ce9bdcc53f18603fcb6d7c4e53a977fed6bf11cc Mon Sep 17 00:00:00 2001 From: Zihua Li <i@zihua.li> Date: Mon, 29 May 2023 21:00:37 +0800 Subject: [PATCH 138/255] Fix exceptions for empty lines --- cypress/integration/rendering/sequencediagram.spec.js | 10 ++++++++++ packages/mermaid/src/utils.ts | 3 +++ 2 files changed, 13 insertions(+) diff --git a/cypress/integration/rendering/sequencediagram.spec.js b/cypress/integration/rendering/sequencediagram.spec.js index e5459637b..8ab21315f 100644 --- a/cypress/integration/rendering/sequencediagram.spec.js +++ b/cypress/integration/rendering/sequencediagram.spec.js @@ -88,6 +88,16 @@ context('Sequence diagram', () => { {} ); }); + it('should handle empty lines', () => { + imgSnapshotTest( + ` + sequenceDiagram + Alice->>John: Hello John<br/> + John-->>Alice: Great! + `, + {} + ); + }); it('should handle line breaks and wrap annotations', () => { imgSnapshotTest( ` diff --git a/packages/mermaid/src/utils.ts b/packages/mermaid/src/utils.ts index 6f824062d..3f70b2a7c 100644 --- a/packages/mermaid/src/utils.ts +++ b/packages/mermaid/src/utils.ts @@ -764,6 +764,9 @@ export const calculateTextDimensions: ( let cheight = 0; const dim = { width: 0, height: 0, lineHeight: 0 }; for (const line of lines) { + if (!line) { + continue; + } const textObj = getTextObj(); textObj.text = line; const textElem = drawSimpleText(g, textObj) From 180c695f2ff68744aebc36aedf582b7e96c2d76f Mon Sep 17 00:00:00 2001 From: Anna Tomanek <a.tomanek@cksource.com> Date: Wed, 31 May 2023 12:15:40 +0200 Subject: [PATCH 139/255] Added CKEditor and GitHub Writer to available integrations. --- packages/mermaid/src/docs/ecosystem/integrations.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/mermaid/src/docs/ecosystem/integrations.md b/packages/mermaid/src/docs/ecosystem/integrations.md index 92529d7c7..f4f78d7be 100644 --- a/packages/mermaid/src/docs/ecosystem/integrations.md +++ b/packages/mermaid/src/docs/ecosystem/integrations.md @@ -10,6 +10,7 @@ They also serve as proof of concept, for the variety of things that can be built - [Using code blocks](https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/) (**Native support**) - [GitHub action: Compile mermaid to image](https://github.com/neenjaw/compile-mermaid-markdown-action) - [svg-generator](https://github.com/SimonKenyonShepard/mermaidjs-github-svg-generator) + - [GitHub Writer](https://github.com/ckeditor/github-writer) - [GitLab](https://docs.gitlab.com/ee/user/markdown.html#diagrams-and-flowcharts) (**Native support**) - [Gitea](https://gitea.io) (**Native support**) - [Azure Devops](https://docs.microsoft.com/en-us/azure/devops/project/wiki/wiki-markdown-guidance?view=azure-devops#add-mermaid-diagrams-to-a-wiki-page) (**Native support**) @@ -136,6 +137,8 @@ They also serve as proof of concept, for the variety of things that can be built - [Named block =Diagram](https://github.com/zag/podlite/tree/main/packages/podlite-diagrams) - [GNU Nano](https://www.nano-editor.org/) - [Nano Mermaid](https://github.com/Yash-Singh1/nano-mermaid) +- [CKEditor](https://github.com/ckeditor/ckeditor5) + - [CKEditor 5 Mermaid plugin](https://github.com/ckeditor/ckeditor5-mermaid) ## Document Generation From c2c802471802e9e006fa02b5f817eb92c22d0a4e Mon Sep 17 00:00:00 2001 From: sidharthv96 <sidharthv96@users.noreply.github.com> Date: Wed, 31 May 2023 11:11:04 +0000 Subject: [PATCH 140/255] Update docs --- docs/ecosystem/integrations.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/ecosystem/integrations.md b/docs/ecosystem/integrations.md index 128e86d21..2aa2456f3 100644 --- a/docs/ecosystem/integrations.md +++ b/docs/ecosystem/integrations.md @@ -16,6 +16,7 @@ They also serve as proof of concept, for the variety of things that can be built - [Using code blocks](https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/) (**Native support**) - [GitHub action: Compile mermaid to image](https://github.com/neenjaw/compile-mermaid-markdown-action) - [svg-generator](https://github.com/SimonKenyonShepard/mermaidjs-github-svg-generator) + - [GitHub Writer](https://github.com/ckeditor/github-writer) - [GitLab](https://docs.gitlab.com/ee/user/markdown.html#diagrams-and-flowcharts) (**Native support**) - [Gitea](https://gitea.io) (**Native support**) - [Azure Devops](https://docs.microsoft.com/en-us/azure/devops/project/wiki/wiki-markdown-guidance?view=azure-devops#add-mermaid-diagrams-to-a-wiki-page) (**Native support**) @@ -142,6 +143,8 @@ They also serve as proof of concept, for the variety of things that can be built - [Named block =Diagram](https://github.com/zag/podlite/tree/main/packages/podlite-diagrams) - [GNU Nano](https://www.nano-editor.org/) - [Nano Mermaid](https://github.com/Yash-Singh1/nano-mermaid) +- [CKEditor](https://github.com/ckeditor/ckeditor5) + - [CKEditor 5 Mermaid plugin](https://github.com/ckeditor/ckeditor5-mermaid) ## Document Generation From 641098e6029879ca8aa0f6e80b1c904db6b72847 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Wed, 31 May 2023 19:06:36 +0530 Subject: [PATCH 141/255] Fix Contributor link in homepage --- packages/mermaid/package.json | 2 +- .../src/docs/.vitepress/components/Contributors.vue | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index 46ddbcf96..20669097a 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -28,7 +28,7 @@ "docs:build": "rimraf ../../docs && pnpm docs:spellcheck && pnpm docs:code && ts-node-esm src/docs.mts", "docs:verify": "pnpm docs:spellcheck && pnpm docs:code && ts-node-esm src/docs.mts --verify", "docs:pre:vitepress": "rimraf src/vitepress && pnpm docs:code && ts-node-esm src/docs.mts --vitepress", - "docs:build:vitepress": "pnpm docs:pre:vitepress && (cd src/vitepress && pnpm --filter ./ install --no-frozen-lockfile && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing", + "docs:build:vitepress": "pnpm docs:pre:vitepress && (cd src/vitepress && pnpm --filter ./ install --no-frozen-lockfile --ignore-scripts && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing", "docs:dev": "pnpm docs:pre:vitepress && concurrently \"pnpm --filter ./ src/vitepress dev\" \"ts-node-esm src/docs.mts --watch --vitepress\"", "docs:serve": "pnpm docs:build:vitepress && vitepress serve src/vitepress", "docs:spellcheck": "cspell --config ../../cSpell.json \"src/docs/**/*.md\"", diff --git a/packages/mermaid/src/docs/.vitepress/components/Contributors.vue b/packages/mermaid/src/docs/.vitepress/components/Contributors.vue index 37b7b9133..94e918027 100644 --- a/packages/mermaid/src/docs/.vitepress/components/Contributors.vue +++ b/packages/mermaid/src/docs/.vitepress/components/Contributors.vue @@ -5,12 +5,12 @@ import { contributors } from '../contributors'; <template> <div flex="~ wrap gap2" justify-center> <a - v-for="{ name, avatar } of contributors" - :key="name" - :href="`https://github.com/${name}`" + v-for="{ username, avatar } of contributors" + :key="username" + :href="`https://github.com/${username}`" m-0 rel="noopener noreferrer" - :aria-label="`${name} on GitHub`" + :aria-label="`${username} on GitHub`" > <img loading="lazy" @@ -20,7 +20,7 @@ import { contributors } from '../contributors'; rounded-full h-12 w-12 - :alt="`${name}'s avatar`" + :alt="`${username}'s avatar`" /> </a> </div> From abcae14fa7497681a1fc6eae40940de34bdc575f Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Wed, 31 May 2023 19:10:42 +0530 Subject: [PATCH 142/255] Fix compile error in docs. --- docs/syntax/quadrantChart.md | 7 ++----- packages/mermaid/src/docs/syntax/quadrantChart.md | 6 +----- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/docs/syntax/quadrantChart.md b/docs/syntax/quadrantChart.md index 86aa21f72..10becf2e4 100644 --- a/docs/syntax/quadrantChart.md +++ b/docs/syntax/quadrantChart.md @@ -46,9 +46,6 @@ quadrantChart ## Syntax -> **Note** -> In place of `<text>` you can use text like `this is a sample text` or inside **double quotes** like `"This type of text may contain unicode like ❤"`. - > **Note** > If there is no points available in the chart both **axis** text and **quadrant** will be rendered in the center of the respective quadrant. > If there are points **x-axis** labels will rendered from left of the respective quadrant also they will be displayed in bottom of the chart, and **y-axis** lables will be rendered in bottom of the respective quadrant, the quadrant text will render at top of the respective quadrant. @@ -152,7 +149,7 @@ Points are used to plot a circle inside the quadrantChart. The syntax is `<text> %%{init: {"quadrantChart": {"chartWidth": 400, "chartHeight": 400}, "themeVariables": {"quadrant1TextFill": "#ff0000"} }}%% quadrantChart x-axis Urgent --> Not Urgent - y-axis Not Important --> important + y-axis Not Important --> "Important ❤" quadrant-1 Plan quadrant-2 Do quadrant-3 Deligate @@ -163,7 +160,7 @@ quadrantChart %%{init: {"quadrantChart": {"chartWidth": 400, "chartHeight": 400}, "themeVariables": {"quadrant1TextFill": "#ff0000"} }}%% quadrantChart x-axis Urgent --> Not Urgent - y-axis Not Important --> important + y-axis Not Important --> "Important ❤" quadrant-1 Plan quadrant-2 Do quadrant-3 Deligate diff --git a/packages/mermaid/src/docs/syntax/quadrantChart.md b/packages/mermaid/src/docs/syntax/quadrantChart.md index 351dd1ad1..4f5d8cbe5 100644 --- a/packages/mermaid/src/docs/syntax/quadrantChart.md +++ b/packages/mermaid/src/docs/syntax/quadrantChart.md @@ -23,10 +23,6 @@ quadrantChart ## Syntax -```note -In place of `<text>` you can use text like `this is a sample text` or inside **double quotes** like `"This type of text may contain unicode like ❤"`. -``` - ```note If there is no points available in the chart both **axis** text and **quadrant** will be rendered in the center of the respective quadrant. If there are points **x-axis** labels will rendered from left of the respective quadrant also they will be displayed in bottom of the chart, and **y-axis** lables will be rendered in bottom of the respective quadrant, the quadrant text will render at top of the respective quadrant. @@ -134,7 +130,7 @@ Points are used to plot a circle inside the quadrantChart. The syntax is `<text> %%{init: {"quadrantChart": {"chartWidth": 400, "chartHeight": 400}, "themeVariables": {"quadrant1TextFill": "#ff0000"} }}%% quadrantChart x-axis Urgent --> Not Urgent - y-axis Not Important --> important + y-axis Not Important --> "Important ❤" quadrant-1 Plan quadrant-2 Do quadrant-3 Deligate From 0cec854f3b39f48b65a14a64bc0b2b20fe299d6d Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Wed, 31 May 2023 19:33:30 +0530 Subject: [PATCH 143/255] Fix download --- .../docs/.vitepress/scripts/fetch-avatars.ts | 20 ++++++++++--------- .../.vitepress/scripts/fetch-contributors.ts | 3 +-- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts b/packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts index 732373354..bbea31bc1 100644 --- a/packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts +++ b/packages/mermaid/src/docs/.vitepress/scripts/fetch-avatars.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-console */ import { mkdir, writeFile, readFile } from 'node:fs/promises'; import { existsSync } from 'node:fs'; import { fileURLToPath } from 'url'; @@ -12,22 +13,23 @@ async function download(url: string, fileName: URL) { if (existsSync(fileName)) { return; } - // eslint-disable-next-line no-console - console.log('downloading', fileName); + console.log('downloading', url); try { const image = await fetch(url); await writeFile(fileName, Buffer.from(await image.arrayBuffer())); - } catch {} + } catch (error) { + console.error(error); + } } async function fetchAvatars() { - await mkdir(fileURLToPath(new URL('..', getAvatarPath('none'))), { recursive: true }); + await mkdir(fileURLToPath(new URL(getAvatarPath('none'))).replace('none.png', ''), { + recursive: true, + }); contributors = JSON.parse(await readFile(pathContributors, { encoding: 'utf-8' })); - await Promise.allSettled( - contributors.map((name) => - download(`https://github.com/${name}.png?size=100`, getAvatarPath(name)) - ) - ); + for (const name of contributors) { + await download(`https://github.com/${name}.png?size=100`, getAvatarPath(name)); + } } fetchAvatars(); diff --git a/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts b/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts index 308171c38..fd5409d0f 100644 --- a/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts +++ b/packages/mermaid/src/docs/.vitepress/scripts/fetch-contributors.ts @@ -23,9 +23,8 @@ async function fetchContributors() { } ); data = await response.json(); - console.log(response.status, response.statusText); - console.log(data); collaborators.push(...data.map((i) => i.login)); + console.log(`Fetched page ${page}`); page++; } while (data.length === 100); return collaborators.filter((name) => !name.includes('[bot]')); From 98e75959ccfb69bf004e221e409aa1c5f1f7e59d Mon Sep 17 00:00:00 2001 From: Knut Sveidqvist <knsv@sveido.com> Date: Thu, 1 Jun 2023 12:53:21 +0200 Subject: [PATCH 144/255] #4438 Reverted to the changes from #4285 --- package.json | 2 +- packages/mermaid/package.json | 2 +- packages/mermaid/src/diagrams/gantt/ganttDb.js | 8 ++++---- packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts | 2 +- packages/mermaid/src/diagrams/gantt/ganttRenderer.js | 2 +- packages/mermaid/src/logger.ts | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index c5f3d1969..1dc38121e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mermaid-monorepo", "private": true, - "version": "10.2.0", + "version": "10.2.1", "description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "type": "module", "packageManager": "pnpm@8.5.1", diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index 20669097a..17edba523 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -1,6 +1,6 @@ { "name": "mermaid", - "version": "10.2.0", + "version": "10.2.1", "description": "Markdown-ish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "type": "module", "module": "./dist/mermaid.core.mjs", diff --git a/packages/mermaid/src/diagrams/gantt/ganttDb.js b/packages/mermaid/src/diagrams/gantt/ganttDb.js index 81ff6d755..396402702 100644 --- a/packages/mermaid/src/diagrams/gantt/ganttDb.js +++ b/packages/mermaid/src/diagrams/gantt/ganttDb.js @@ -1,8 +1,8 @@ import { sanitizeUrl } from '@braintree/sanitize-url'; -import dayjs from 'dayjs/esm/index.js'; -import dayjsIsoWeek from 'dayjs/esm/plugin/isoWeek/index.js'; -import dayjsCustomParseFormat from 'dayjs/esm/plugin/customParseFormat/index.js'; -import dayjsAdvancedFormat from 'dayjs/esm/plugin/advancedFormat/index.js'; +import dayjs from 'dayjs'; +import dayjsIsoWeek from 'dayjs/plugin/isoWeek.js'; +import dayjsCustomParseFormat from 'dayjs/plugin/customParseFormat.js'; +import dayjsAdvancedFormat from 'dayjs/plugin/advancedFormat.js'; import { log } from '../../logger.js'; import * as configApi from '../../config.js'; import utils from '../../utils.js'; diff --git a/packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts b/packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts index 123b4a52d..416368e8f 100644 --- a/packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts +++ b/packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts @@ -1,5 +1,5 @@ // @ts-nocheck TODO: Fix TS -import dayjs from 'dayjs/esm/index.js'; +import dayjs from 'dayjs'; import ganttDb from './ganttDb.js'; import { convert } from '../../tests/util.js'; diff --git a/packages/mermaid/src/diagrams/gantt/ganttRenderer.js b/packages/mermaid/src/diagrams/gantt/ganttRenderer.js index a148d8a9e..ff16fef7c 100644 --- a/packages/mermaid/src/diagrams/gantt/ganttRenderer.js +++ b/packages/mermaid/src/diagrams/gantt/ganttRenderer.js @@ -1,4 +1,4 @@ -import dayjs from 'dayjs/esm/index.js'; +import dayjs from 'dayjs'; import { log } from '../../logger.js'; import { select, diff --git a/packages/mermaid/src/logger.ts b/packages/mermaid/src/logger.ts index da5e8a221..44b98315c 100644 --- a/packages/mermaid/src/logger.ts +++ b/packages/mermaid/src/logger.ts @@ -2,7 +2,7 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable @typescript-eslint/no-empty-function */ /* eslint-disable no-console */ -import dayjs from 'dayjs/esm/index.js'; +import dayjs from 'dayjs'; export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal'; From 7b6cb4f9747a86f556d70e2ee20c7afc0c828742 Mon Sep 17 00:00:00 2001 From: Knut Sveidqvist <knsv@sveido.com> Date: Thu, 1 Jun 2023 16:30:57 +0200 Subject: [PATCH 145/255] #4446 Updating the cleanup criteria --- cypress/helpers/util.js | 2 +- cypress/integration/other/ghsa.spec.js | 9 ++- cypress/platform/xss23-css.html | 85 ++++++++++++++++++++++++++ packages/mermaid/src/mermaidAPI.ts | 2 +- 4 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 cypress/platform/xss23-css.html diff --git a/cypress/helpers/util.js b/cypress/helpers/util.js index 7ec960b97..4d13b3590 100644 --- a/cypress/helpers/util.js +++ b/cypress/helpers/util.js @@ -60,7 +60,7 @@ export const renderGraph = (graphStr, options, api) => { openURLAndVerifyRendering(url, options); }; -const openURLAndVerifyRendering = (url, options, validation = undefined) => { +export const openURLAndVerifyRendering = (url, options, validation = undefined) => { const useAppli = Cypress.env('useAppli'); const name = (options.name || cy.state('runnable').fullTitle()).replace(/\s+/g, '-'); diff --git a/cypress/integration/other/ghsa.spec.js b/cypress/integration/other/ghsa.spec.js index 8f28d9f53..912f35728 100644 --- a/cypress/integration/other/ghsa.spec.js +++ b/cypress/integration/other/ghsa.spec.js @@ -1,4 +1,4 @@ -import { urlSnapshotTest } from '../../helpers/util.js'; +import { urlSnapshotTest, openURLAndVerifyRendering } from '../../helpers/util.js'; describe('CSS injections', () => { it('should not allow CSS injections outside of the diagram', () => { @@ -13,4 +13,11 @@ describe('CSS injections', () => { flowchart: { htmlLabels: false }, }); }); + it('should not allow manipulating styletags using arrowheads', () => { + openURLAndVerifyRendering('http://localhost:9000/xss23-css.html', { + logLevel: 1, + arrowMarkerAbsolute: false, + flowchart: { htmlLabels: true }, + }); + }); }); diff --git a/cypress/platform/xss23-css.html b/cypress/platform/xss23-css.html new file mode 100644 index 000000000..cc5b6f0bf --- /dev/null +++ b/cypress/platform/xss23-css.html @@ -0,0 +1,85 @@ +<html> + <head> + <link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet" /> + <link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet" /> + <link + rel="stylesheet" + href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" + /> + <link + href="https://fonts.googleapis.com/css?family=Noto+Sans+SC&display=swap" + rel="stylesheet" + /> + <style> + body { + /* background: rgb(221, 208, 208); */ + /* background:#333; */ + font-family: 'Arial'; + /* font-size: 18px !important; */ + } + h1 { + color: grey; + } + .mermaid2 { + display: none; + } + .mermaid svg { + /* font-size: 18px !important; */ + } + .malware { + position: fixed; + bottom: 0; + left: 0; + right: 0; + height: 150px; + background: red; + color: black; + display: flex; + display: flex; + justify-content: center; + align-items: center; + font-family: monospace; + font-size: 72px; + } + </style> + </head> + <body> + <div>Security check</div> + <div class="flex"> + <div id="diagram" class="mermaid"></div> + <div id="graph-div"></div> + <div id="res" class=""></div> + </div> + <script type="module"> + import mermaid from './mermaid.esm.mjs'; + mermaid.parseError = function (err, hash) { + // console.error('Mermaid error: ', err); + }; + mermaid.initialize({ + theme: 'base', + startOnLoad: false, + flowcharts: { htmlLabels: true }, + }); + function callback() { + alert('It worked'); + } + function xssAttack() { + const div = document.createElement('div'); + div.id = 'the-malware'; + div.className = 'malware'; + div.innerHTML = 'XSS Succeeded'; + document.getElementsByTagName('body')[0].appendChild(div); + throw new Error('XSS Succeeded'); + } + + let diagram = `graph TD +A[["a marker-end=#quot;url(<s title='#<style>*{background:red}</style>'>b"]] +`; + const el = document.querySelector('#graph-div'); + console.log(diagram); + const { svg } = await mermaid.render('graph-div', diagram); + document.querySelector('#res').innerHTML = svg; + window.rendered = true; + </script> + </body> +</html> diff --git a/packages/mermaid/src/mermaidAPI.ts b/packages/mermaid/src/mermaidAPI.ts index e96407638..8e7f4d4b1 100644 --- a/packages/mermaid/src/mermaidAPI.ts +++ b/packages/mermaid/src/mermaidAPI.ts @@ -263,7 +263,7 @@ export const cleanUpSvgCode = ( // Replace marker-end urls with just the # anchor (remove the preceding part of the URL) if (!useArrowMarkerUrls && !inSandboxMode) { - cleanedUpSvg = cleanedUpSvg.replace(/marker-end="url\(.*?#/g, 'marker-end="url(#'); + cleanedUpSvg = cleanedUpSvg.replace(/marker-end="url\([/:A-Za-z-]*?#/g, 'marker-end="url(#'); } cleanedUpSvg = decodeEntities(cleanedUpSvg); From 55092f532f52df13c91e5e6e9dbdea33c40bd4b4 Mon Sep 17 00:00:00 2001 From: Knut Sveidqvist <knsv@sveido.com> Date: Thu, 1 Jun 2023 17:39:54 +0200 Subject: [PATCH 146/255] #4446 Improved regular expression --- docs/config/setup/modules/mermaidAPI.md | 8 ++++---- packages/mermaid/src/mermaidAPI.ts | 5 ++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/config/setup/modules/mermaidAPI.md b/docs/config/setup/modules/mermaidAPI.md index ef04c10c3..b5e48b229 100644 --- a/docs/config/setup/modules/mermaidAPI.md +++ b/docs/config/setup/modules/mermaidAPI.md @@ -96,7 +96,7 @@ mermaid.initialize(config); #### Defined in -[mermaidAPI.ts:667](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L667) +[mermaidAPI.ts:670](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L670) ## Functions @@ -127,7 +127,7 @@ Return the last node appended #### Defined in -[mermaidAPI.ts:306](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L306) +[mermaidAPI.ts:309](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L309) --- @@ -295,7 +295,7 @@ Put the svgCode into an iFrame. Return the iFrame code #### Defined in -[mermaidAPI.ts:285](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L285) +[mermaidAPI.ts:288](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L288) --- @@ -320,4 +320,4 @@ Remove any existing elements from the given document #### Defined in -[mermaidAPI.ts:356](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L356) +[mermaidAPI.ts:359](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L359) diff --git a/packages/mermaid/src/mermaidAPI.ts b/packages/mermaid/src/mermaidAPI.ts index 8e7f4d4b1..755fa8258 100644 --- a/packages/mermaid/src/mermaidAPI.ts +++ b/packages/mermaid/src/mermaidAPI.ts @@ -263,7 +263,10 @@ export const cleanUpSvgCode = ( // Replace marker-end urls with just the # anchor (remove the preceding part of the URL) if (!useArrowMarkerUrls && !inSandboxMode) { - cleanedUpSvg = cleanedUpSvg.replace(/marker-end="url\([/:A-Za-z-]*?#/g, 'marker-end="url(#'); + cleanedUpSvg = cleanedUpSvg.replace( + /marker-end="url\([\d+./:=?A-Za-z-]*?#/g, + 'marker-end="url(#' + ); } cleanedUpSvg = decodeEntities(cleanedUpSvg); From 74ccf6410d111866b6db80632b8d2ac828efe695 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Fri, 2 Jun 2023 11:50:49 +0530 Subject: [PATCH 147/255] Update diagram proposal --- .github/ISSUE_TEMPLATE/diagram_proposal.yml | 26 +++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/diagram_proposal.yml b/.github/ISSUE_TEMPLATE/diagram_proposal.yml index 67dad5d3a..59bda6d6d 100644 --- a/.github/ISSUE_TEMPLATE/diagram_proposal.yml +++ b/.github/ISSUE_TEMPLATE/diagram_proposal.yml @@ -3,6 +3,7 @@ description: Suggest a new Diagram Type to add to Mermaid. labels: - 'Status: Triage' - 'Type: Enhancement' + - 'Type: New Diagram' body: - type: markdown @@ -17,6 +18,14 @@ body: - Use a clear and concise title - Fill out the text fields with as much detail as possible. - Never be shy to give us screenshots and/or code samples. It will help! + + ## Example issues + + Refer to the discussions here to get an idea of how the diagram syntax is created. + + - https://github.com/mermaid-js/mermaid/issues/4269 + - https://github.com/mermaid-js/mermaid/issues/4282 + - type: textarea attributes: label: Proposal @@ -35,8 +44,17 @@ body: description: If applicable, add screenshots to show possible examples of how the diagram may look like. - type: textarea attributes: - label: Code Sample + label: Syntax description: |- - If applicable, add a code sample for how to implement this new diagram. - The text will automatically be rendered as JavaScript code. - render: javascript + If possible, include a syntax which could be used to write the diagram. + Try to add one or two examples of valid use-cases here. + - type: dropdown + id: implementation + attributes: + label: Implementation + description: |- + Would you like to implement this yourself, or is it a proposal for the community? + If there is no corresponding PR from your side after 30 days, the diagram will be open for everyone to implement. + options: + - I will try and implement it myself. + - This is a proposal which I'd love to see built into mermaid by the wonderful community. From d2409dc1638f1e8c3d006a3350b598d69d2f7a50 Mon Sep 17 00:00:00 2001 From: Knut Sveidqvist <knsv@sveido.com> Date: Fri, 2 Jun 2023 08:50:59 +0200 Subject: [PATCH 148/255] Setting version to 10.2.2 --- package.json | 2 +- packages/mermaid/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 1dc38121e..5572bf1b4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mermaid-monorepo", "private": true, - "version": "10.2.1", + "version": "10.2.2", "description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "type": "module", "packageManager": "pnpm@8.5.1", diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index 17edba523..cd870e15e 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -1,6 +1,6 @@ { "name": "mermaid", - "version": "10.2.1", + "version": "10.2.2", "description": "Markdown-ish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "type": "module", "module": "./dist/mermaid.core.mjs", From da1beb36bf237d857b987880b48fb290b40d51db Mon Sep 17 00:00:00 2001 From: Yoav Sternberg <yoav.sternberg@gmail.com> Date: Fri, 2 Jun 2023 22:10:39 +0300 Subject: [PATCH 149/255] Restore classes on edges for elk --- .../integration/rendering/flowchart-elk.spec.js | 14 ++++++++++++++ .../src/diagrams/flowchart/elk/flowRenderer-elk.js | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/cypress/integration/rendering/flowchart-elk.spec.js b/cypress/integration/rendering/flowchart-elk.spec.js index d0ef42c5d..4f90646a2 100644 --- a/cypress/integration/rendering/flowchart-elk.spec.js +++ b/cypress/integration/rendering/flowchart-elk.spec.js @@ -684,6 +684,20 @@ A --> B { titleTopMargin: 0 } ); }); + it('elk: should include classes on the edges', () => { + renderGraph( + `flowchart-elk TD + A --> B --> C --> D + `, + {} + ); + cy.get('svg').should((svg) => { + const edges = svg.querySelectorAll('.edges > path'); + edges.forEach((edge) => { + expect(edge).to.have.class('flowchart-link'); + }); + }); + }); describe('Markdown strings flowchart-elk (#4220)', () => { describe('html labels', () => { it('With styling and classes', () => { diff --git a/packages/mermaid/src/diagrams/flowchart/elk/flowRenderer-elk.js b/packages/mermaid/src/diagrams/flowchart/elk/flowRenderer-elk.js index 6a90c46f5..5ed06723e 100644 --- a/packages/mermaid/src/diagrams/flowchart/elk/flowRenderer-elk.js +++ b/packages/mermaid/src/diagrams/flowchart/elk/flowRenderer-elk.js @@ -717,7 +717,7 @@ const insertEdge = function (edgesEl, edge, edgeData, diagObj, parentLookupDb) { const edgePath = edgesEl .insert('path') .attr('d', curve(points)) - .attr('class', 'path') + .attr('class', 'path ' + edgeData.classes) .attr('fill', 'none'); const edgeG = edgesEl.insert('g').attr('class', 'edgeLabel'); const edgeWithLabel = select(edgeG.node().appendChild(edge.labelEl)); From 2a6603b33a4f7527fb3b84b3650b091269ef91a0 Mon Sep 17 00:00:00 2001 From: Zihua Li <i@zihua.li> Date: Sun, 4 Jun 2023 16:24:41 +0800 Subject: [PATCH 150/255] Render empty lines correctly --- cypress/integration/rendering/sequencediagram.spec.js | 2 +- packages/mermaid/src/diagrams/sequence/svgDraw.js | 7 ++++--- packages/mermaid/src/utils.ts | 7 +++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cypress/integration/rendering/sequencediagram.spec.js b/cypress/integration/rendering/sequencediagram.spec.js index 8ab21315f..185cc4133 100644 --- a/cypress/integration/rendering/sequencediagram.spec.js +++ b/cypress/integration/rendering/sequencediagram.spec.js @@ -93,7 +93,7 @@ context('Sequence diagram', () => { ` sequenceDiagram Alice->>John: Hello John<br/> - John-->>Alice: Great! + John-->>Alice: Great<br/><br/>day! `, {} ); diff --git a/packages/mermaid/src/diagrams/sequence/svgDraw.js b/packages/mermaid/src/diagrams/sequence/svgDraw.js index a8feea2a1..a3f7514f6 100644 --- a/packages/mermaid/src/diagrams/sequence/svgDraw.js +++ b/packages/mermaid/src/diagrams/sequence/svgDraw.js @@ -1,7 +1,7 @@ import common from '../common/common.js'; import * as svgDrawCommon from '../common/svgDrawCommon'; import { addFunction } from '../../interactionDb.js'; -import { parseFontSize } from '../../utils.js'; +import { ZERO_WIDTH_SPACE, parseFontSize } from '../../utils.js'; import { sanitizeUrl } from '@braintree/sanitize-url'; export const drawRect = function (elem, rectData) { @@ -224,15 +224,16 @@ export const drawText = function (elem, textData) { textElem.attr('dy', dy); } + const text = line || ZERO_WIDTH_SPACE; if (textData.tspan) { const span = textElem.append('tspan'); span.attr('x', textData.x); if (textData.fill !== undefined) { span.attr('fill', textData.fill); } - span.text(line); + span.text(text); } else { - textElem.text(line); + textElem.text(text); } if ( textData.valign !== undefined && diff --git a/packages/mermaid/src/utils.ts b/packages/mermaid/src/utils.ts index 3f70b2a7c..e48b49fcd 100644 --- a/packages/mermaid/src/utils.ts +++ b/packages/mermaid/src/utils.ts @@ -32,6 +32,8 @@ import assignWithDepth from './assignWithDepth.js'; import { MermaidConfig } from './config.type.js'; import memoize from 'lodash-es/memoize.js'; +export const ZERO_WIDTH_SPACE = '\u200b'; + // Effectively an enum of the supported curve types, accessible by name const d3CurveTypes = { curveBasis: curveBasis, @@ -764,11 +766,8 @@ export const calculateTextDimensions: ( let cheight = 0; const dim = { width: 0, height: 0, lineHeight: 0 }; for (const line of lines) { - if (!line) { - continue; - } const textObj = getTextObj(); - textObj.text = line; + textObj.text = line || ZERO_WIDTH_SPACE; const textElem = drawSimpleText(g, textObj) .style('font-size', _fontSizePx) .style('font-weight', fontWeight) From ab627802a8cd5cff47ba892a693ccf6230a767ed Mon Sep 17 00:00:00 2001 From: Jonathan Young <jonathan.young@kyndryl.com> Date: Mon, 5 Jun 2023 12:01:37 +0100 Subject: [PATCH 151/255] =?UTF-8?q?Changed=20C4=20stereotype=20braces=20to?= =?UTF-8?q?=20=C2=AB=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/mermaid/src/diagrams/c4/c4Renderer.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/mermaid/src/diagrams/c4/c4Renderer.js b/packages/mermaid/src/diagrams/c4/c4Renderer.js index 28600241c..16960f453 100644 --- a/packages/mermaid/src/diagrams/c4/c4Renderer.js +++ b/packages/mermaid/src/diagrams/c4/c4Renderer.js @@ -220,7 +220,7 @@ export const drawC4ShapeArray = function (currentBounds, diagram, c4ShapeArray, let c4ShapeTypeConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text); c4ShapeTypeConf.fontSize = c4ShapeTypeConf.fontSize - 2; c4Shape.typeC4Shape.width = calculateTextWidth( - '<<' + c4Shape.typeC4Shape.text + '>>', + '«' + c4Shape.typeC4Shape.text + '»', c4ShapeTypeConf ); c4Shape.typeC4Shape.height = c4ShapeTypeConf.fontSize + 2; @@ -665,13 +665,13 @@ export const draw = function (_text, id, _version, diagObj) { diagram.attr( 'viewBox', box.startx - - conf.diagramMarginX + - ' -' + - (conf.diagramMarginY + extraVertForTitle) + - ' ' + - width + - ' ' + - (height + extraVertForTitle) + conf.diagramMarginX + + ' -' + + (conf.diagramMarginY + extraVertForTitle) + + ' ' + + width + + ' ' + + (height + extraVertForTitle) ); log.debug(`models:`, box); From 0cb6df1ef887c23d18d827d3cc94cfe943f65e89 Mon Sep 17 00:00:00 2001 From: mikejeffers <mike.s.jeffers@gmail.com> Date: Tue, 6 Jun 2023 23:11:07 -0400 Subject: [PATCH 152/255] refactor text width computing func --- packages/mermaid/src/rendering-util/createText.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/mermaid/src/rendering-util/createText.js b/packages/mermaid/src/rendering-util/createText.js index b37781dc9..d966d10d0 100644 --- a/packages/mermaid/src/rendering-util/createText.js +++ b/packages/mermaid/src/rendering-util/createText.js @@ -83,13 +83,13 @@ function createTspan(textElement, lineIndex, lineHeight) { * @param {string} text * @returns {number} */ -function testWidthOfText(parentNode, lineHeight, text) { - const testElement = parentNode.append('text').attr('y', '-10.1'); +function computeWidthOfText(parentNode, lineHeight, text) { + const testElement = parentNode.append('text'); const testSpan = createTspan(testElement, 1, lineHeight); updateTextContentAndStyles(testSpan, [{ content: text, type: 'normal' }]); - const val = testSpan.node().getComputedTextLength(); + const textLength = testSpan.node().getComputedTextLength(); testElement.remove(); - return val; + return textLength; } /** @@ -122,7 +122,7 @@ function createFormattedText(width, g, structuredText, addBackground = false) { for (let i = 0; i <= fullStr.length; i++) { tempStr = fullStr.slice(prevIndex, i); log.info(tempStr, prevIndex, i); - if (testWidthOfText(labelGroup, lineHeight, tempStr) > width) { + if (computeWidthOfText(labelGroup, lineHeight, tempStr) > width) { const subStr = fullStr.slice(prevIndex, i); // Break at space if any const lastSpaceIndex = subStr.lastIndexOf(' '); From eef6745272b1073af168309b92a1c9a395d8afea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=AE=E7=AC=91?= <wang1234561211@outlook.com> Date: Wed, 7 Jun 2023 16:06:52 +0800 Subject: [PATCH 153/255] Update docs: Added Nextra to Blogs category on integrations page --- packages/mermaid/src/docs/ecosystem/integrations.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/mermaid/src/docs/ecosystem/integrations.md b/packages/mermaid/src/docs/ecosystem/integrations.md index f4f78d7be..cd6f5058d 100644 --- a/packages/mermaid/src/docs/ecosystem/integrations.md +++ b/packages/mermaid/src/docs/ecosystem/integrations.md @@ -53,6 +53,8 @@ They also serve as proof of concept, for the variety of things that can be built - [hexo-filter-mermaid-diagrams](https://github.com/webappdevelp/hexo-filter-mermaid-diagrams) - [hexo-tag-mermaid](https://github.com/JameChou/hexo-tag-mermaid) - [hexo-mermaid-diagrams](https://github.com/mslxl/hexo-mermaid-diagrams) +- [Nextra](https://nextra.site/) + - [Mermaid](https://nextra.site/docs/guide/mermaid) ## CMS From ad09d63f65a810bea006762fed11e561682edc52 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Thu, 8 Jun 2023 00:07:33 +0530 Subject: [PATCH 154/255] only split if string is over length. --- .../mermaid/src/rendering-util/createText.js | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/packages/mermaid/src/rendering-util/createText.js b/packages/mermaid/src/rendering-util/createText.js index d966d10d0..a024425a2 100644 --- a/packages/mermaid/src/rendering-util/createText.js +++ b/packages/mermaid/src/rendering-util/createText.js @@ -119,23 +119,27 @@ function createFormattedText(width, g, structuredText, addBackground = false) { let tempStr = ''; let linesUnderWidth = []; let prevIndex = 0; - for (let i = 0; i <= fullStr.length; i++) { - tempStr = fullStr.slice(prevIndex, i); - log.info(tempStr, prevIndex, i); - if (computeWidthOfText(labelGroup, lineHeight, tempStr) > width) { - const subStr = fullStr.slice(prevIndex, i); - // Break at space if any - const lastSpaceIndex = subStr.lastIndexOf(' '); - if (lastSpaceIndex > -1) { - i = prevIndex + lastSpaceIndex + 1; + if (computeWidthOfText(labelGroup, lineHeight, fullStr) <= width) { + linesUnderWidth.push(fullStr); + } else { + for (let i = 0; i <= fullStr.length; i++) { + tempStr = fullStr.slice(prevIndex, i); + log.info(tempStr, prevIndex, i); + if (computeWidthOfText(labelGroup, lineHeight, tempStr) > width) { + const subStr = fullStr.slice(prevIndex, i); + // Break at space if any + const lastSpaceIndex = subStr.lastIndexOf(' '); + if (lastSpaceIndex > -1) { + i = prevIndex + lastSpaceIndex + 1; + } + linesUnderWidth.push(fullStr.slice(prevIndex, i).trim()); + prevIndex = i; + tempStr = null; } - linesUnderWidth.push(fullStr.slice(prevIndex, i).trim()); - prevIndex = i; - tempStr = null; } - } - if (tempStr != null) { - linesUnderWidth.push(tempStr); + if (tempStr != null) { + linesUnderWidth.push(tempStr); + } } /** Add each prepared line as a tspan to the parent node */ const preparedLines = linesUnderWidth.map((w) => ({ content: w, type: line.type })); From e9b76bba9b09ede37734f9bd7750ecdacfb42dde Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Thu, 8 Jun 2023 00:16:12 +0530 Subject: [PATCH 155/255] Add nextra to cSpell --- cSpell.json | 1 + 1 file changed, 1 insertion(+) diff --git a/cSpell.json b/cSpell.json index 3fcc6ff4a..786e8ca2c 100644 --- a/cSpell.json +++ b/cSpell.json @@ -84,6 +84,7 @@ "mkdocs", "mmorel", "mult", + "nextra", "orlandoni", "pathe", "pbrolin", From d00d20fc371c7e4476c3eab090ced80409806563 Mon Sep 17 00:00:00 2001 From: sidharthv96 <sidharthv96@users.noreply.github.com> Date: Wed, 7 Jun 2023 18:49:51 +0000 Subject: [PATCH 156/255] Update docs --- docs/ecosystem/integrations.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/ecosystem/integrations.md b/docs/ecosystem/integrations.md index 2aa2456f3..24e3609d8 100644 --- a/docs/ecosystem/integrations.md +++ b/docs/ecosystem/integrations.md @@ -59,6 +59,8 @@ They also serve as proof of concept, for the variety of things that can be built - [hexo-filter-mermaid-diagrams](https://github.com/webappdevelp/hexo-filter-mermaid-diagrams) - [hexo-tag-mermaid](https://github.com/JameChou/hexo-tag-mermaid) - [hexo-mermaid-diagrams](https://github.com/mslxl/hexo-mermaid-diagrams) +- [Nextra](https://nextra.site/) + - [Mermaid](https://nextra.site/docs/guide/mermaid) ## CMS From e2e9d0f1f31745c3c63d7614ce4df4a73a2fa9c8 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Thu, 8 Jun 2023 11:36:47 +0530 Subject: [PATCH 157/255] Remove old changelog --- docs/CHANGELOG.md | 1054 --------------------------------------------- 1 file changed, 1054 deletions(-) delete mode 100644 docs/CHANGELOG.md diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md deleted file mode 100644 index 5a822425a..000000000 --- a/docs/CHANGELOG.md +++ /dev/null @@ -1,1054 +0,0 @@ -> **Warning** -> -> ## THIS IS AN AUTOGENERATED FILE. DO NOT EDIT. -> -> ## Please edit the corresponding file in [/packages/mermaid/src/docs/CHANGELOG.md](../packages/mermaid/src/docs/CHANGELOG.md). - -# Change Log - -All changes are in descending order, beginning with the newest (latest) version. - -## Unreleased - -[Full Changelog](https://github.com/knsv/mermaid/compare/8.7.0...HEAD) - -## 8.7.0 (2020-08-09) - -🔖 [Release Notes](https://github.com/mermaid-js/mermaid/releases/tag/8.7.0) | -📜 [Full Changelog](https://github.com/mermaid-js/mermaid/compare/8.6.0...8.7.0) - -This version brings with it a system for [dynamic and integrated configuration of the diagram themes](config/theming.md). -The objective of this is to increase the customizability of mermaid and the ease of Styling, with the customization of themes through the `%%init%%` directive and `initialize` calls. - -Themes follow and build upon the Levels of Configuration and employ `directives` to modify and create custom configurations, as they were introduced in Version [8.6.0](config/8.6.0_docs.md). - -**These Theming Configurations, similar to directives, will also be made applicable in the Live-Editor, for easier styling.** - -### Site-wide Themes - -Site-wide themes are still declared via `initialize` by site owners. - -Example of `Initalize` call setting `theme` to `base`: - -```javascript -mermaidAPI.initialize({ - securityLevel: 'loose', - theme: 'base', -}); -``` - -**Notes**: Only site owners can use the `mermaidAPI.initialize` call, to set values. Site-Users will have to use `%%init%%` to modify or create the theme for their diagrams. - -### Themes at the Local or Current Level - -When Generating a diagram using on a webpage that supports mermaid. -It is also possible to override site-wide theme settings locally, for a specific diagram, using directives, as long as it is not prohibited by the `secure` array. - -**Following is an example:** - -```mermaid-example -%%{init: {'theme':'base'}}%% - graph TD - a --> b -``` - -```mermaid -%%{init: {'theme':'base'}}%% - graph TD - a --> b -``` - -### Making a Custom Theme with `themeVariables` - -The easiest way to make a custom theme is to start with the base theme, and just modify theme variables through `themeVariables`, via `%%init%%`. - -| Parameter | Description | Type | Required | Objects contained | -| -------------- | ------------------------------------------------------------------ | ----- | -------- | ---------------------------------- | -| themeVariables | Array containing objects, modifiable with the `%%init%%` directive | Array | Required | primaryColor, lineColor, textColor | - -Here is an example of overriding `primaryColor` and giving everything a different look, using `%%init%%`. - -```mermaid-example -%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% - graph TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[/Another/] - C ==>|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -```mermaid -%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% - graph TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[/Another/] - C ==>|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -**Notes:** -Leaving it empty will set all variable values to default. - -## 8.6.0 (2020-07-13) - -🔖 [Release Notes](https://github.com/mermaid-js/mermaid/releases/tag/8.6.0) - -[Version 8.6.0](../getting-started/8.6.0_docs.md) introduces New Configuration Protocols and Directives and a Beta for the [New Mermaid Live-Editor](https://mermaid-js.github.io/docs/mermaid-live-editor-beta/#/edit/eyJjb2RlIjoiJSV7aW5pdDoge1widGhlbWVcIjogXCJmb3Jlc3RcIiwgXCJsb2dMZXZlbFwiOiAxIH19JSVcbmdyYXBoIFREXG4gIEFbQ2hyaXN0bWFzXSAtLT58R2V0IG1vbmV5fCBCKEdvIHNob3BwaW5nKVxuICBCIC0tPiBDe0xldCBtZSB0aGlua31cbiAgQyAtLT58T25lfCBEW0xhcHRvcF1cbiAgQyAtLT58VHdvfCBFW2lQaG9uZV1cbiAgQyAtLT58VGhyZWV8IEZbZmE6ZmEtY2FyIENhcl1cblx0XHQiLCJtZXJtYWlkIjp7InRoZW1lIjoiZGFyayJ9fQ) - -**With version 8.6.0 comes the release of directives for mermaid, a new system for modifying configurations, with the aim of establishing centralized, sane defaults and simple implementation.** - -Directives allow for a diagram specific overriding of config, as it has been discussed in Configurations. -This allows site users to input modifications to config alongside diagram definitions, when creating diagrams on a private webpage that supports Mermaid. - -## 8.5.0 (2020-04-11) - -🔖 [Release Notes](https://github.com/mermaid-js/mermaid/releases/tag/untagged-31c93788afe260d914bb) - -This version introduces New diagrams! - -**New diagrams in 8.5** - -With version 8.5 there are some bug fixes and enhancements, plus a new diagram type, entity relationship diagrams. - -![Image showing the new ER diagram type](./img/er.png) - -## 8.2.0 (2019-07-17) - -🏷️ [Tag](https://github.com/mermaid-js/mermaid/tree/8.2.0) - -Version 8.2.0, introduces a security improvement. - -A `securityLevel` configuration has to first be cleared, `securityLevel` sets the level of trust for the parsed diagrams and limits click functionality. -This was introduced in version 8.2 as a security improvement, aimed at preventing malicious use. - -### securityLevel - -| Parameter | Description | Type | Required | Values | -| ------------- | --------------------------------- | ------ | -------- | ------------------------- | -| securitylevel | Level of trust for parsed diagram | String | Required | Strict, Loose, antiscript | - -**Notes:** - -- **strict**: (**default**) tags in text are encoded, click functionality is disabled -- **loose**: tags in text are allowed, click functionality is enabled -- **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled - -⚠️ **Note**: This changes the default behaviour of mermaid so that after upgrade to 8.2, if the `securityLevel` is not configured, tags in flowcharts are encoded as tags and clicking is prohibited. - -If you are taking responsibility for the diagram source security you can set the `securityLevel` to a value of your choosing. -By doing this clicks and tags are again allowed. - -### To change `securityLevel` with `mermaidAPI.initialize`: - -```javascript -mermaidAPI.initialize({ - securityLevel: 'loose', -}); -``` - -**Closed issues:** - -- please add tag for 8.0.0 release [#863](https://github.com/knsv/mermaid/issues/863) -- classDiagram breaks on any edit [#858](https://github.com/knsv/mermaid/issues/858) - -## [8.1.0](https://github.com/knsv/mermaid/tree/8.1.0) (2019-06-25) - -[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.5...8.1.0) - -**Implemented enhancements:** - -- Theme for dark background [#301](https://github.com/knsv/mermaid/issues/301) -- \[Feature request] gantt diagram axis format [#269](https://github.com/knsv/mermaid/issues/269) -- Implement render function for server side rendering using phantomjs [#169](https://github.com/knsv/mermaid/issues/169) - -**Fixed bugs:** - -- mermaid -v filename.mmd gives You must specify at least one source file. [#328](https://github.com/knsv/mermaid/issues/328) -- Not Able to See Labels even htmlLabels:false added [#268](https://github.com/knsv/mermaid/issues/268) - -**Closed issues:** - -- Gantt and sequence diagram do not render [#853](https://github.com/knsv/mermaid/issues/853) -- margins around flowchart are not balanced [#852](https://github.com/knsv/mermaid/issues/852) -- Smaller bundles [#843](https://github.com/knsv/mermaid/issues/843) -- unicode in labels [#776](https://github.com/knsv/mermaid/issues/776) -- Hard-changing drawing of arrows per edge type [#775](https://github.com/knsv/mermaid/issues/775) -- SequenceDiagram wrong [#773](https://github.com/knsv/mermaid/issues/773) -- Render mermaid on github pages with simple code [#772](https://github.com/knsv/mermaid/issues/772) -- FlowChart - large space between text and the image [#754](https://github.com/knsv/mermaid/issues/754) -- Class Diagram Issues when using Mermaid in Stackedit [#748](https://github.com/knsv/mermaid/issues/748) -- Multi-platform CI [#744](https://github.com/knsv/mermaid/issues/744) -- gantt: sections can't have a colon [#742](https://github.com/knsv/mermaid/issues/742) -- Yarn build does not add mermaid.min.css to dist [#732](https://github.com/knsv/mermaid/issues/732) -- Is there a grammar / keyword / more than just the basic examples? [#718](https://github.com/knsv/mermaid/issues/718) -- Click event and react component [#717](https://github.com/knsv/mermaid/issues/717) -- Long text going outside the box [#706](https://github.com/knsv/mermaid/issues/706) -- How to migrate from yUML to mermaid? [#704](https://github.com/knsv/mermaid/issues/704) -- Issue on Dynamic Creation in PHP [#690](https://github.com/knsv/mermaid/issues/690) -- `click "\#target"` and `click "http://url"` should create regular links [#689](https://github.com/knsv/mermaid/issues/689) -- Support Chinese punctuation [#687](https://github.com/knsv/mermaid/issues/687) -- \[Question] Proper way to install on Mac? [#681](https://github.com/knsv/mermaid/issues/681) -- Has Mermaid a graphical interface to make diagrams? [#668](https://github.com/knsv/mermaid/issues/668) -- mermaid installation on debian [#649](https://github.com/knsv/mermaid/issues/649) -- "Cannot activate" in sequenceDiagram [#647](https://github.com/knsv/mermaid/issues/647) -- Link ("click" statement) in flowchart does not work in exported SVG [#646](https://github.com/knsv/mermaid/issues/646) -- How to pass styling [#639](https://github.com/knsv/mermaid/issues/639) -- The live editor cant show seq diagram with notes for 8.0.0-alpha.3 [#638](https://github.com/knsv/mermaid/issues/638) -- import mermaid.css with ES6 + NPM [#634](https://github.com/knsv/mermaid/issues/634) -- Actor line cuts through other elements [#633](https://github.com/knsv/mermaid/issues/633) -- Graph TD line out of the picture (left side) [#630](https://github.com/knsv/mermaid/issues/630) -- Flowchart labels appear "cutoff" [#628](https://github.com/knsv/mermaid/issues/628) -- Uncaught TypeError: \_.constant is not a function (mermaid.js) [#626](https://github.com/knsv/mermaid/issues/626) -- Missing tags and releases for newer versions [#623](https://github.com/knsv/mermaid/issues/623) -- Mermaid and Leo / Leo Vue [#622](https://github.com/knsv/mermaid/issues/622) -- mermaidAPI gantt Vue.js [#621](https://github.com/knsv/mermaid/issues/621) -- Gantt sections are not separated by colors - Fix: set numberSectionStyles to 4 instead of 3 [#620](https://github.com/knsv/mermaid/issues/620) -- how to get mermaidAPI? [#617](https://github.com/knsv/mermaid/issues/617) -- Error in startOnLoad documentation? [#616](https://github.com/knsv/mermaid/issues/616) -- Example export to SVG generates error [#614](https://github.com/knsv/mermaid/issues/614) -- The new online editor does not support previously generated links [#613](https://github.com/knsv/mermaid/issues/613) -- Grammar / Syntax documentation for flowcharts [#607](https://github.com/knsv/mermaid/issues/607) -- Mermaid does not work with d3.js [#606](https://github.com/knsv/mermaid/issues/606) -- Why does this code's flowchart lines get cut-off on screen? [#604](https://github.com/knsv/mermaid/issues/604) -- click keyword does not fire my callback (on the demo Website too) [#603](https://github.com/knsv/mermaid/issues/603) -- Online Editor fails to show exported SVG [#601](https://github.com/knsv/mermaid/issues/601) -- Just saying thanks! [#597](https://github.com/knsv/mermaid/issues/597) -- stylesheet crashed with other library like abcjs [#596](https://github.com/knsv/mermaid/issues/596) -- Missing connection [#594](https://github.com/knsv/mermaid/issues/594) -- How to use mermaid on node.js restful api? [#593](https://github.com/knsv/mermaid/issues/593) -- Remove status code [#589](https://github.com/knsv/mermaid/issues/589) -- Golang based editor [#588](https://github.com/knsv/mermaid/issues/588) -- sequenceDiagram -> notetext css font is hardcoded [#587](https://github.com/knsv/mermaid/issues/587) -- Multiple graph in the live editor [#586](https://github.com/knsv/mermaid/issues/586) -- All \<svg> elements in page are colored black [#584](https://github.com/knsv/mermaid/issues/584) -- Styling: classes aren't applied to elements. [#582](https://github.com/knsv/mermaid/issues/582) -- Rounded connections [#580](https://github.com/knsv/mermaid/issues/580) -- Arrows are not being shown correctly in the dark theme [#578](https://github.com/knsv/mermaid/issues/578) -- The documentation for CLI seems outdated. [#572](https://github.com/knsv/mermaid/issues/572) -- No effect of click event:can not open link [#571](https://github.com/knsv/mermaid/issues/571) -- Text colors are not correct in VSCODE [#570](https://github.com/knsv/mermaid/issues/570) -- Nodes aren't aligned properly (just need an explanation) [#568](https://github.com/knsv/mermaid/issues/568) -- setting margin around figure in R [#567](https://github.com/knsv/mermaid/issues/567) -- Arrows should Come out in upward and Downward direction from decision Node [#566](https://github.com/knsv/mermaid/issues/566) -- TypeError: Cannot read property 'select' of undefined [#563](https://github.com/knsv/mermaid/issues/563) -- A little bug [#557](https://github.com/knsv/mermaid/issues/557) -- Japanese text appears garbled [#554](https://github.com/knsv/mermaid/issues/554) -- classdiagram not works in mermaid live_editor [#553](https://github.com/knsv/mermaid/issues/553) -- font awesome in link text? [#546](https://github.com/knsv/mermaid/issues/546) -- q: heard of the cosmogol standard? [#545](https://github.com/knsv/mermaid/issues/545) -- Arrow heads missing (cli, 7.0.3) [#544](https://github.com/knsv/mermaid/issues/544) -- No Edge Boxes if useHtmlLabels=false [#541](https://github.com/knsv/mermaid/issues/541) -- how to change mermaid text color or line text block color? [#534](https://github.com/knsv/mermaid/issues/534) -- FlowChart visualization broken when downloading from live editor [#533](https://github.com/knsv/mermaid/issues/533) -- Can't get flowchart to render paths at the top of the diagram; I even tried the online editor and that shows the same issue. Thoughts? [#532](https://github.com/knsv/mermaid/issues/532) -- live editor make browser(safari on macOS\&iOS) not longer respond [#531](https://github.com/knsv/mermaid/issues/531) -- css classes need a prefix/namespace [#527](https://github.com/knsv/mermaid/issues/527) -- input activate/deactivate cause safari unresponding [#521](https://github.com/knsv/mermaid/issues/521) -- Cannot Render the Mermaid Graph to PDF ? [#520](https://github.com/knsv/mermaid/issues/520) -- clicking links works from inset in subgraph but not from nodes [#516](https://github.com/knsv/mermaid/issues/516) -- Strange syntax error - when importing mermaid.js [#515](https://github.com/knsv/mermaid/issues/515) -- gantt x-axis display [#510](https://github.com/knsv/mermaid/issues/510) -- phantomjs renamed to phantomjs-prebuilt [#508](https://github.com/knsv/mermaid/issues/508) -- issue when using sphinxcontrib-mermaid extension for sphinx [#507](https://github.com/knsv/mermaid/issues/507) -- layout of docs page looks broken [#504](https://github.com/knsv/mermaid/issues/504) -- Problem showing graph with php on localhost [#502](https://github.com/knsv/mermaid/issues/502) -- logLevel's option doesn't work at 7.0.0 [#501](https://github.com/knsv/mermaid/issues/501) -- How do I get the log for a render or parse attempt? [#500](https://github.com/knsv/mermaid/issues/500) -- Mermaid neutral style style to built in latest release [#499](https://github.com/knsv/mermaid/issues/499) -- Any plans for adding a typescript definition file? [#495](https://github.com/knsv/mermaid/issues/495) -- Gantt diagrams too narrow [#493](https://github.com/knsv/mermaid/issues/493) -- Flowchart edge labels placement [#490](https://github.com/knsv/mermaid/issues/490) -- Very different styles when rendering as png vs. svg [#489](https://github.com/knsv/mermaid/issues/489) -- New editor that supports mermaid: Caret [#488](https://github.com/knsv/mermaid/issues/488) -- Gant PNG margin [#486](https://github.com/knsv/mermaid/issues/486) -- ReferenceError: window is not defined [#485](https://github.com/knsv/mermaid/issues/485) -- Menu and layout bugs in docs [#484](https://github.com/knsv/mermaid/issues/484) -- Mermaid resets some of the page CSS styles [#482](https://github.com/knsv/mermaid/issues/482) -- Arrows rendering incorrectly in online editor [#480](https://github.com/knsv/mermaid/issues/480) -- CSS stroke-dasharray ignored by browsers but not other viewers [#474](https://github.com/knsv/mermaid/issues/474) -- mermaid - Browser Support issue [#472](https://github.com/knsv/mermaid/issues/472) -- Totally love mermaid I might pop! [#471](https://github.com/knsv/mermaid/issues/471) -- Sequence Diagram: Missing x on async arrows (png) [#469](https://github.com/knsv/mermaid/issues/469) -- live editor: the svg file rendered from graph is not supported by browsers [#468](https://github.com/knsv/mermaid/issues/468) -- Not found css [#462](https://github.com/knsv/mermaid/issues/462) -- Phantomjs Dependency [#461](https://github.com/knsv/mermaid/issues/461) -- Mermaid cli not working for subgraphs [#459](https://github.com/knsv/mermaid/issues/459) -- Support for notes across multiple participants? [#458](https://github.com/knsv/mermaid/issues/458) -- Related to Issue #329: Phantomjs issues. [#455](https://github.com/knsv/mermaid/issues/455) -- Add a click style [#426](https://github.com/knsv/mermaid/issues/426) -- Add Parallel block (par) to sequence diagrams [#425](https://github.com/knsv/mermaid/issues/425) -- updating shapes after the flow chart rendering complete [#424](https://github.com/knsv/mermaid/issues/424) -- can't catch parse error Maximum call stack size exceeded on safari [#421](https://github.com/knsv/mermaid/issues/421) -- Arrows endings are missing [#419](https://github.com/knsv/mermaid/issues/419) -- shouldn't mermaid become more like Markdown ? [#417](https://github.com/knsv/mermaid/issues/417) -- Live editor show rendered diagram if syntax invalid [#415](https://github.com/knsv/mermaid/issues/415) -- Linkstyle stroke does not work [#410](https://github.com/knsv/mermaid/issues/410) -- flowchart id's with dots in them .. break links [#408](https://github.com/knsv/mermaid/issues/408) -- Flowchart: Link text beginning with lowercase 'o' causes flowchart to break [#407](https://github.com/knsv/mermaid/issues/407) -- Some Chinese character will case Safari no responding. [#405](https://github.com/knsv/mermaid/issues/405) -- Cannot center-justify text in nodes? [#397](https://github.com/knsv/mermaid/issues/397) -- Edge labels should have white background in live editor [#396](https://github.com/knsv/mermaid/issues/396) -- Live editor does not support activate/deactivate [#394](https://github.com/knsv/mermaid/issues/394) -- Styling subgraph? [#391](https://github.com/knsv/mermaid/issues/391) -- Update live editor to version 6.0.0 [#387](https://github.com/knsv/mermaid/issues/387) -- sequence diagram config issue [#385](https://github.com/knsv/mermaid/issues/385) -- How to add newline in the text [#384](https://github.com/knsv/mermaid/issues/384) -- PhantomJS crashes on a large graph [#380](https://github.com/knsv/mermaid/issues/380) -- Finnish support for class diagrams using plantuml syntax [#377](https://github.com/knsv/mermaid/issues/377) -- mermaidAPI.render generated different svg code from mermaid.int() [#374](https://github.com/knsv/mermaid/issues/374) -- Put your own action on the chart [#372](https://github.com/knsv/mermaid/issues/372) -- when declaring participants the elements are generated twice [#370](https://github.com/knsv/mermaid/issues/370) -- Example Flowchart is cut in display (Chrome). [#368](https://github.com/knsv/mermaid/issues/368) -- Add shebang support to diagrams [#365](https://github.com/knsv/mermaid/issues/365) -- Silencing CLI output [#352](https://github.com/knsv/mermaid/issues/352) -- SequenceDiagram: 3+ Alternative Paths [#348](https://github.com/knsv/mermaid/issues/348) -- Smaller height of actor boxes [#342](https://github.com/knsv/mermaid/issues/342) -- Question: lib/phantomscript.js - foreignObjects in SVG - related to #58 [#340](https://github.com/knsv/mermaid/issues/340) -- npm test fails on osx being blocked at Can not load "PhantomJS", it is not registered! [#337](https://github.com/knsv/mermaid/issues/337) -- Tabs & subgraphs cause rendering error [#336](https://github.com/knsv/mermaid/issues/336) -- Display question: right angles [#335](https://github.com/knsv/mermaid/issues/335) -- No Arrows rendered v0.5.8 [#330](https://github.com/knsv/mermaid/issues/330) -- You had errors in your syntax. Use --help for further information. [#327](https://github.com/knsv/mermaid/issues/327) -- Allow alternate arrow syntax that doesn't close html comments [#322](https://github.com/knsv/mermaid/issues/322) -- Comment in subgraph [#319](https://github.com/knsv/mermaid/issues/319) -- Update graph [#311](https://github.com/knsv/mermaid/issues/311) -- css conflicts with boostrap's css [#308](https://github.com/knsv/mermaid/issues/308) -- Can not get click event to fire. [#306](https://github.com/knsv/mermaid/issues/306) -- Fix phantomjs2 compatibility [#304](https://github.com/knsv/mermaid/issues/304) -- Flowcharts do not work in native IE11 [#303](https://github.com/knsv/mermaid/issues/303) -- Integration with remark.js - tutorial added [#302](https://github.com/knsv/mermaid/issues/302) -- Sequence diagram Loops: changing boxMargin spoils the "loop" notation [#299](https://github.com/knsv/mermaid/issues/299) -- src/mermaid.js generates bad code [#297](https://github.com/knsv/mermaid/issues/297) -- Fresh fork: jasmine tests fail [#294](https://github.com/knsv/mermaid/issues/294) -- CSS clash [#292](https://github.com/knsv/mermaid/issues/292) -- Mermaid does not work in Chrome 48 [#281](https://github.com/knsv/mermaid/issues/281) -- circle and ellipse cannot change color by classDef [#271](https://github.com/knsv/mermaid/issues/271) -- npm run watch doesn't work due missing dependencies [#266](https://github.com/knsv/mermaid/issues/266) -- label out of node [#262](https://github.com/knsv/mermaid/issues/262) -- IE11 Support issue [#261](https://github.com/knsv/mermaid/issues/261) -- mermaid without browser [#260](https://github.com/knsv/mermaid/issues/260) -- Insufficient capacity of gantt diagrams [#226](https://github.com/knsv/mermaid/issues/226) -- some WARN about installation [#222](https://github.com/knsv/mermaid/issues/222) -- Live editor offline access [#217](https://github.com/knsv/mermaid/issues/217) -- suggest: code highlight mode config for editors [#212](https://github.com/knsv/mermaid/issues/212) -- Uncaught RangeError: Maximum call stack size exceeded [#189](https://github.com/knsv/mermaid/issues/189) -- Styling label texts [#50](https://github.com/knsv/mermaid/issues/50) - -**Merged pull requests:** - -- Remove console.log in classDB. [#861](https://github.com/knsv/mermaid/pull/861) ([Arthaey](https://github.com/Arthaey)) -- Bump sshpk from 1.13.1 to 1.16.1 [#851](https://github.com/knsv/mermaid/pull/851) ([dependabot\[bot\]](https://github.com/apps/dependabot)) -- Significantly smaller bundles [#850](https://github.com/knsv/mermaid/pull/850) ([fabiospampinato](https://github.com/fabiospampinato)) -- Support styling of subgraphs [#845](https://github.com/knsv/mermaid/pull/845) ([Qix-](https://github.com/Qix-)) -- fix dark theme loop labels not visible [#837](https://github.com/knsv/mermaid/pull/837) ([jnnnnn](https://github.com/jnnnnn)) -- fix draw function can only call once [#832](https://github.com/knsv/mermaid/pull/832) ([vaniship](https://github.com/vaniship)) -- Fix dotted lines not appearing in flowcharts when HTML labels disabled [#828](https://github.com/knsv/mermaid/pull/828) ([stanhu](https://github.com/stanhu)) -- Fix issue with XML line breaks inside vertex labels [#824](https://github.com/knsv/mermaid/pull/824) ([jsyang](https://github.com/jsyang)) -- fixed diagrams [#810](https://github.com/knsv/mermaid/pull/810) ([0xflotus](https://github.com/0xflotus)) -- Clickable gantt tasks [#804](https://github.com/knsv/mermaid/pull/804) ([abzicht](https://github.com/abzicht)) -- linkStyle now supports list of indexes with a few tests [#798](https://github.com/knsv/mermaid/pull/798) ([ivan-danilov](https://github.com/ivan-danilov)) -- fix class diagram mermaid [#795](https://github.com/knsv/mermaid/pull/795) ([DanShai](https://github.com/DanShai)) -- Added exclude weekdays to definition [#792](https://github.com/knsv/mermaid/pull/792) ([jopapo](https://github.com/jopapo)) -- SVG link rendering [#791](https://github.com/knsv/mermaid/pull/791) ([flying-sheep](https://github.com/flying-sheep)) -- Gantt milestones [#788](https://github.com/knsv/mermaid/pull/788) ([gijswijs](https://github.com/gijswijs)) -- Remove duplicate code [#768](https://github.com/knsv/mermaid/pull/768) ([znxkznxk1030](https://github.com/znxkznxk1030)) -- Render nodes as real links [#765](https://github.com/knsv/mermaid/pull/765) ([flying-sheep](https://github.com/flying-sheep)) -- Fix issue with marker-end. [#757](https://github.com/knsv/mermaid/pull/757) ([gjlubbertsen](https://github.com/gjlubbertsen)) -- Make Class Diagrams usable in Stackedit and Live Editor [#749](https://github.com/knsv/mermaid/pull/749) ([monsterkrampe](https://github.com/monsterkrampe)) -- Adding trapezoid and inverse trapezoid vertex options. [#741](https://github.com/knsv/mermaid/pull/741) ([adamwulf](https://github.com/adamwulf)) -- Add option for right angles [#721](https://github.com/knsv/mermaid/pull/721) ([paulbland](https://github.com/paulbland)) -- Add nested activation classes [#720](https://github.com/knsv/mermaid/pull/720) ([paulbland](https://github.com/paulbland)) -- wip: class diagram cardinality display [#705](https://github.com/knsv/mermaid/pull/705) ([Vrixyz](https://github.com/Vrixyz)) -- add comments about CSS in config [#688](https://github.com/knsv/mermaid/pull/688) ([imma90](https://github.com/imma90)) -- SequenceDiagram: Add support for multiple alt else statements [#641](https://github.com/knsv/mermaid/pull/641) ([sechel](https://github.com/sechel)) -- fix #426 - add class .clickable on nodes with click function or link [#598](https://github.com/knsv/mermaid/pull/598) ([thomasleveil](https://github.com/thomasleveil)) -- Spec fix 1 [#595](https://github.com/knsv/mermaid/pull/595) ([frankschmitt](https://github.com/frankschmitt)) - -## [7.0.5](https://github.com/knsv/mermaid/tree/7.0.5) (2017-09-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.3...7.0.5) - -**Closed issues:** - -- live editor latin error after update [#560](https://github.com/knsv/mermaid/issues/560) -- Simple full example in online documentation is broken [#558](https://github.com/knsv/mermaid/issues/558) -- Graph No Arrow Head v7.0.3 [#543](https://github.com/knsv/mermaid/issues/543) -- Conflict while using mermaid along with core-js [#512](https://github.com/knsv/mermaid/issues/512) -- Export to pdf on website [#496](https://github.com/knsv/mermaid/issues/496) -- New downstream project: Mermaid Preview for VSCode [#442](https://github.com/knsv/mermaid/issues/442) -- Can't Zoom the flowchart ? [#399](https://github.com/knsv/mermaid/issues/399) -- line labels are not rendered correctly in live editor [#366](https://github.com/knsv/mermaid/issues/366) -- mermaid-loader [#361](https://github.com/knsv/mermaid/issues/361) -- Are there any documentation or examples for classDiagram and gitGraph? [#359](https://github.com/knsv/mermaid/issues/359) -- \# character broken in 0.5.8 [#347](https://github.com/knsv/mermaid/issues/347) -- Documentation issue: CSS example is not visible [#345](https://github.com/knsv/mermaid/issues/345) -- Include documentation for command line usage [#326](https://github.com/knsv/mermaid/issues/326) -- Fresh fork: can't build dist [#296](https://github.com/knsv/mermaid/issues/296) -- Invalid value for \<svg> attribute viewBox="0 0 -Infinity -Infinity" [#291](https://github.com/knsv/mermaid/issues/291) -- Webpack require fails [#277](https://github.com/knsv/mermaid/issues/277) -- New documentation - need improved logo [#216](https://github.com/knsv/mermaid/issues/216) - -## [7.0.3](https://github.com/knsv/mermaid/tree/7.0.3) (2017-06-04) - -[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.2...7.0.3) - -**Closed issues:** - -- the documentation website is down [#539](https://github.com/knsv/mermaid/issues/539) -- Good example of interactivity with mermaidAPI [#514](https://github.com/knsv/mermaid/issues/514) - -## [7.0.2](https://github.com/knsv/mermaid/tree/7.0.2) (2017-06-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.0...7.0.2) - -**Closed issues:** - -- CDN is not working [#511](https://github.com/knsv/mermaid/issues/511) -- A sampe sequenceDiagram crashes mermaid-cli [#492](https://github.com/knsv/mermaid/issues/492) -- Mermaid doesn't delete nodes when called multiple times [#491](https://github.com/knsv/mermaid/issues/491) -- API crashes on 2nd render() call [#478](https://github.com/knsv/mermaid/issues/478) -- sequenceDiagram: dotted line for alt and empty bracket should be hidden [#456](https://github.com/knsv/mermaid/issues/456) -- SVG output (almost) not correct [#434](https://github.com/knsv/mermaid/issues/434) -- How to set axisFormatter of gantt in mermaid CLI? [#428](https://github.com/knsv/mermaid/issues/428) -- customizing link style with any color sets `fill` property to `black` instead of `none` [#416](https://github.com/knsv/mermaid/issues/416) -- New line at the end of SVG file [#400](https://github.com/knsv/mermaid/issues/400) -- CLI doesn't work [#389](https://github.com/knsv/mermaid/issues/389) -- Can't render subgraphs with htmlLabels: false [#367](https://github.com/knsv/mermaid/issues/367) -- Color arrowhead [#362](https://github.com/knsv/mermaid/issues/362) -- CLI: Invisible text, lines in SVG output [#341](https://github.com/knsv/mermaid/issues/341) - -**Merged pull requests:** - -- Support Multi-line Actor Descriptions [#764](https://github.com/knsv/mermaid/pull/764) ([watsoncj](https://github.com/watsoncj)) -- Update Travis config [#538](https://github.com/knsv/mermaid/pull/538) ([tylerlong](https://github.com/tylerlong)) -- Fix spelling of 'you' in sequenceDiagram docs [#537](https://github.com/knsv/mermaid/pull/537) ([ctruelson](https://github.com/ctruelson)) -- Improve CLI output [#536](https://github.com/knsv/mermaid/pull/536) ([gibson042](https://github.com/gibson042)) -- Modernize mermaid [#524](https://github.com/knsv/mermaid/pull/524) ([tylerlong](https://github.com/tylerlong)) -- Modernize mermaid [#519](https://github.com/knsv/mermaid/pull/519) ([tylerlong](https://github.com/tylerlong)) -- Update CLI instructions [#509](https://github.com/knsv/mermaid/pull/509) ([filipedeschamps](https://github.com/filipedeschamps)) -- Add style for classDiagram to dark/default theme [#503](https://github.com/knsv/mermaid/pull/503) ([yudenzel](https://github.com/yudenzel)) -- Fix documentation for git graph. [#498](https://github.com/knsv/mermaid/pull/498) ([gomlgs](https://github.com/gomlgs)) -- Fix links in documentations [#497](https://github.com/knsv/mermaid/pull/497) ([saveman71](https://github.com/saveman71)) -- Update README.md with git graph sample [#481](https://github.com/knsv/mermaid/pull/481) ([raghur](https://github.com/raghur)) -- Fix misspelling of “another” [#479](https://github.com/knsv/mermaid/pull/479) ([stevenschobert](https://github.com/stevenschobert)) -- Fixed #456 sequenceDiagram: dotted line for alt and empty bracket sho… [#477](https://github.com/knsv/mermaid/pull/477) ([brookhong](https://github.com/brookhong)) -- Add viewbox attr to class diagram [#473](https://github.com/knsv/mermaid/pull/473) ([gnkm](https://github.com/gnkm)) -- add par statement to sequenceDiagram [#470](https://github.com/knsv/mermaid/pull/470) ([u-minor](https://github.com/u-minor)) - -## [7.0.0](https://github.com/knsv/mermaid/tree/7.0.0) (2017-01-29) - -[Full Changelog](https://github.com/knsv/mermaid/compare/6.0.0...7.0.0) - -**Implemented enhancements:** - -- npm install -g mermaid does not install phantomjs [#329](https://github.com/knsv/mermaid/issues/329) -- activation boxes [#313](https://github.com/knsv/mermaid/issues/313) - -**Closed issues:** - -- demos on io site not working [#466](https://github.com/knsv/mermaid/issues/466) -- Can not be generated PNG pictures through CLI with Chinese [#451](https://github.com/knsv/mermaid/issues/451) -- Round nodes cannot be styled with CSS classes [#443](https://github.com/knsv/mermaid/issues/443) -- webpack gulp UglifyJsPlugin error. [#440](https://github.com/knsv/mermaid/issues/440) -- String concatenation isn't working [#432](https://github.com/knsv/mermaid/issues/432) -- text flow/wrap in actor box of sequence diagram [#422](https://github.com/knsv/mermaid/issues/422) -- Online live editor still use old version [#402](https://github.com/knsv/mermaid/issues/402) -- uncaught TypeError: t.getTransformToElement is not a function [#401](https://github.com/knsv/mermaid/issues/401) -- Only works when using browserify'd code [#373](https://github.com/knsv/mermaid/issues/373) -- document the use of shebang line in mmd files [#364](https://github.com/knsv/mermaid/issues/364) -- Diagrams are small and unreadable in IE 11 - since 0.5.1 [#356](https://github.com/knsv/mermaid/issues/356) -- \[Feature Request] ER-Diagram Support [#354](https://github.com/knsv/mermaid/issues/354) -- The need for mermaid.css should be mentioned explicitly in the intro docs... [#273](https://github.com/knsv/mermaid/issues/273) - -**Merged pull requests:** - -- Update index.html [#465](https://github.com/knsv/mermaid/pull/465) ([bmsleight](https://github.com/bmsleight)) -- Fix for #416, customizing link style with any color sets `fill` property to `black` instead of `none` [#452](https://github.com/knsv/mermaid/pull/452) ([joshuacolvin](https://github.com/joshuacolvin)) -- Allow .node>circle to receive css styles [#449](https://github.com/knsv/mermaid/pull/449) ([bfriedz](https://github.com/bfriedz)) -- Fix spelling [#447](https://github.com/knsv/mermaid/pull/447) ([jawn](https://github.com/jawn)) -- added tests and fix cli css style selector lowercase problem [#445](https://github.com/knsv/mermaid/pull/445) ([whyzdev](https://github.com/whyzdev)) -- Update d3.js [#441](https://github.com/knsv/mermaid/pull/441) ([hetz](https://github.com/hetz)) -- added tests to reproduce #434 in flowchart [#439](https://github.com/knsv/mermaid/pull/439) ([whyzdev](https://github.com/whyzdev)) -- Code Climate config [#437](https://github.com/knsv/mermaid/pull/437) ([larkinscott](https://github.com/larkinscott)) -- fix gantt and sequence digram cli cfg [#435](https://github.com/knsv/mermaid/pull/435) ([whyzdev](https://github.com/whyzdev)) -- fix gantt chart cli configuration broken [#433](https://github.com/knsv/mermaid/pull/433) ([whyzdev](https://github.com/whyzdev)) -- fix gantt chart cli configuration parsing including functions [#430](https://github.com/knsv/mermaid/pull/430) ([whyzdev](https://github.com/whyzdev)) -- Uses an empty text node instead of a string for svg group labels [#429](https://github.com/knsv/mermaid/pull/429) ([daveaglick](https://github.com/daveaglick)) -- use tspan via d3.textwrap to place actor text in sequence diagram [#427](https://github.com/knsv/mermaid/pull/427) ([whyzdev](https://github.com/whyzdev)) -- \#422 use foreignObject/div to place actor label in sequence diagram [#423](https://github.com/knsv/mermaid/pull/423) ([whyzdev](https://github.com/whyzdev)) -- Clarify the need for a CSS stylesheet [#413](https://github.com/knsv/mermaid/pull/413) ([sifb](https://github.com/sifb)) -- Added hads downstream project [#412](https://github.com/knsv/mermaid/pull/412) ([sinedied](https://github.com/sinedied)) -- update usage and fix #273 [#406](https://github.com/knsv/mermaid/pull/406) ([jinntrance](https://github.com/jinntrance)) -- Add <https://github.com/raghur/mermaid-filter> to downstream projects docs page [#404](https://github.com/knsv/mermaid/pull/404) ([raghur](https://github.com/raghur)) -- New neutral theme [#395](https://github.com/knsv/mermaid/pull/395) ([sinedied](https://github.com/sinedied)) -- fix cli issues [#390](https://github.com/knsv/mermaid/pull/390) ([ben-page](https://github.com/ben-page)) -- Add missing space for 'Labels out of bounds' section [#386](https://github.com/knsv/mermaid/pull/386) ([The-Alchemist](https://github.com/The-Alchemist)) -- Fix typo: `pats` -> `paths` [#382](https://github.com/knsv/mermaid/pull/382) ([swhgoon](https://github.com/swhgoon)) -- Added class diagram example to README.md [#379](https://github.com/knsv/mermaid/pull/379) ([HustLion](https://github.com/HustLion)) -- override normal flowchart arrowhead to allow css styling [#376](https://github.com/knsv/mermaid/pull/376) ([dodoinblue](https://github.com/dodoinblue)) -- added sphinx extension [#371](https://github.com/knsv/mermaid/pull/371) ([mgaitan](https://github.com/mgaitan)) -- Fix typo in the sequence diagram documentation [#369](https://github.com/knsv/mermaid/pull/369) ([ggpasqualino](https://github.com/ggpasqualino)) - -## [6.0.0](https://github.com/knsv/mermaid/tree/6.0.0) (2016-05-29) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.8...6.0.0) - -**Closed issues:** - -- Docs css: code hard to read [#324](https://github.com/knsv/mermaid/issues/324) -- About Markpad integration [#323](https://github.com/knsv/mermaid/issues/323) -- How to link backwards in flowchart? [#321](https://github.com/knsv/mermaid/issues/321) -- Help with editor [#310](https://github.com/knsv/mermaid/issues/310) -- +1 [#293](https://github.com/knsv/mermaid/issues/293) -- Basic chart does not render on Chome, but does in Firefox [#290](https://github.com/knsv/mermaid/issues/290) -- Live editor is broken [#285](https://github.com/knsv/mermaid/issues/285) -- "No such file or directory" trying to run mermaid 0.5.7 on OS X [#284](https://github.com/knsv/mermaid/issues/284) -- participant name as "Long Long Name" [#283](https://github.com/knsv/mermaid/issues/283) -- Windows - cli - could not find phantomjs at the specified path [#236](https://github.com/knsv/mermaid/issues/236) - -**Merged pull requests:** - -- The option of gantt for the spaces for the section names. [#353](https://github.com/knsv/mermaid/pull/353) ([zeroyonichihachi](https://github.com/zeroyonichihachi)) -- Gitgraph: Make reset work with parent ref carets [#350](https://github.com/knsv/mermaid/pull/350) ([raghur](https://github.com/raghur)) -- Remove the text-shadows that make the text look blurry [#349](https://github.com/knsv/mermaid/pull/349) ([AsaAyers](https://github.com/AsaAyers)) -- add line interpolation to linkStyle in flowchart [#346](https://github.com/knsv/mermaid/pull/346) ([AlanHohn](https://github.com/AlanHohn)) -- Support git graph diagrams in mermaid [#344](https://github.com/knsv/mermaid/pull/344) ([raghur](https://github.com/raghur)) -- Build and test execution changes [#338](https://github.com/knsv/mermaid/pull/338) ([ssbarnea](https://github.com/ssbarnea)) -- Reformatting of css files [#331](https://github.com/knsv/mermaid/pull/331) ([Jmuccigr](https://github.com/Jmuccigr)) -- (WIP) Sequence Diagram Title Support [#320](https://github.com/knsv/mermaid/pull/320) ([bronsoja](https://github.com/bronsoja)) -- activations doc + few fixes [#318](https://github.com/knsv/mermaid/pull/318) ([ciekawy](https://github.com/ciekawy)) -- Dark theme for better contrast on darker backgrounds [#317](https://github.com/knsv/mermaid/pull/317) ([crodriguez1a](https://github.com/crodriguez1a)) -- Activations [#316](https://github.com/knsv/mermaid/pull/316) ([ciekawy](https://github.com/ciekawy)) -- Support leading comments for sequenceDiagrams [#312](https://github.com/knsv/mermaid/pull/312) ([ashsearle](https://github.com/ashsearle)) -- Show a little lenience for white-space around names [#309](https://github.com/knsv/mermaid/pull/309) ([ashsearle](https://github.com/ashsearle)) -- Update list of downstream projects [#307](https://github.com/knsv/mermaid/pull/307) ([maxArturo](https://github.com/maxArturo)) -- Issue 299: Sequence diagram Loops: changing boxMargin spoils the "loop" notation [#300](https://github.com/knsv/mermaid/pull/300) ([LarryKlugerDS](https://github.com/LarryKlugerDS)) -- Issue 297 - src/mermaid.js generates bad code [#298](https://github.com/knsv/mermaid/pull/298) ([LarryKlugerDS](https://github.com/LarryKlugerDS)) -- Updated instructions for running tests [#295](https://github.com/knsv/mermaid/pull/295) ([LarryKlugerDS](https://github.com/LarryKlugerDS)) -- Add Markdown Plus to Downstream projects [#288](https://github.com/knsv/mermaid/pull/288) ([tylerlong](https://github.com/tylerlong)) -- Quote phantomPath so that it doesn't fail on window [#286](https://github.com/knsv/mermaid/pull/286) ([raghur](https://github.com/raghur)) - -## [0.5.8](https://github.com/knsv/mermaid/tree/0.5.8) (2016-01-27) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.7...0.5.8) - -## [0.5.7](https://github.com/knsv/mermaid/tree/0.5.7) (2016-01-25) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.6...0.5.7) - -**Closed issues:** - -- Mermaid + LightPaper = ❤️ [#280](https://github.com/knsv/mermaid/issues/280) -- Bower Integration [#278](https://github.com/knsv/mermaid/issues/278) -- Mermaid breaks when variables end in 'v' [#276](https://github.com/knsv/mermaid/issues/276) -- sequence diagrams don't support participant aliasing [#263](https://github.com/knsv/mermaid/issues/263) -- One diagram that fails to render stops further execution on the page [#259](https://github.com/knsv/mermaid/issues/259) -- Where to find line layout algorithm? [#258](https://github.com/knsv/mermaid/issues/258) -- Compatibility with node.js [#257](https://github.com/knsv/mermaid/issues/257) -- Label resizing with dynamically loaded fonts [#255](https://github.com/knsv/mermaid/issues/255) -- SVG arrowheads are broken in the CLI [#249](https://github.com/knsv/mermaid/issues/249) -- Cannot read property 'replace' of undefined [#239](https://github.com/knsv/mermaid/issues/239) - -**Merged pull requests:** - -- gh-50 Allow styling of edge labels in css [#267](https://github.com/knsv/mermaid/pull/267) ([Anoia](https://github.com/Anoia)) -- Allow sequenceDiagram participant aliasing [#265](https://github.com/knsv/mermaid/pull/265) ([gibson042](https://github.com/gibson042)) - -## [0.5.6](https://github.com/knsv/mermaid/tree/0.5.6) (2015-11-22) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.5...0.5.6) - -**Implemented enhancements:** - -- Add download SVG link to the live editor [#144](https://github.com/knsv/mermaid/issues/144) - -**Fixed bugs:** - -- Live Editor: Permalink address not being parsed [#202](https://github.com/knsv/mermaid/issues/202) - -**Closed issues:** - -- title doesn't work in sequenceDiagram [#248](https://github.com/knsv/mermaid/issues/248) -- hypen-minus should be valid in sequence diagram alt/else/etc. descriptions [#247](https://github.com/knsv/mermaid/issues/247) -- Broken in firefox? [#245](https://github.com/knsv/mermaid/issues/245) -- When there is a Chinese symbol in the flowchart, it will crash。 [#238](https://github.com/knsv/mermaid/issues/238) -- Non-alpha characters included in ALPHA token (flow graph jison) [#232](https://github.com/knsv/mermaid/issues/232) -- subgraph not rendering with change to sample [#231](https://github.com/knsv/mermaid/issues/231) -- sequence diagram requires a new line at the end? [#229](https://github.com/knsv/mermaid/issues/229) - -**Merged pull requests:** - -- Make sequenceDiagram terminal newline optional [#253](https://github.com/knsv/mermaid/pull/253) ([gibson042](https://github.com/gibson042)) -- Support sequenceDiagram "over" notes [#252](https://github.com/knsv/mermaid/pull/252) ([gibson042](https://github.com/gibson042)) -- Properly handle "rest of line" statements [#251](https://github.com/knsv/mermaid/pull/251) ([gibson042](https://github.com/gibson042)) -- CLI: Propagate exit code from lib (i.e., phantomjs) [#250](https://github.com/knsv/mermaid/pull/250) ([gibson042](https://github.com/gibson042)) -- flowRender.js - Fix FontAwesome icon insert [#244](https://github.com/knsv/mermaid/pull/244) ([ma-zal](https://github.com/ma-zal)) -- updated sequence diagram link in live editor [#242](https://github.com/knsv/mermaid/pull/242) ([r-a-v-a-s](https://github.com/r-a-v-a-s)) -- updated links in README.md [#240](https://github.com/knsv/mermaid/pull/240) ([r-a-v-a-s](https://github.com/r-a-v-a-s)) -- Ellipse syntax [#237](https://github.com/knsv/mermaid/pull/237) ([spect88](https://github.com/spect88)) -- Allow keywords as suffixes of node ids [#235](https://github.com/knsv/mermaid/pull/235) ([spect88](https://github.com/spect88)) -- Highlighted the editor in the nav [#234](https://github.com/knsv/mermaid/pull/234) ([knsv](https://github.com/knsv)) -- Live editor tweaks [#233](https://github.com/knsv/mermaid/pull/233) ([spect88](https://github.com/spect88)) -- Add a Gitter chat badge to README.md [#230](https://github.com/knsv/mermaid/pull/230) ([gitter-badger](https://github.com/gitter-badger)) - -## [0.5.5](https://github.com/knsv/mermaid/tree/0.5.5) (2015-10-21) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.4...0.5.5) - -**Closed issues:** - -- sequence diagram, arrowhead instead of crosshead [#227](https://github.com/knsv/mermaid/issues/227) - -**Merged pull requests:** - -- Fix a typo: crosshead --> arrowhead [#228](https://github.com/knsv/mermaid/pull/228) ([tylerlong](https://github.com/tylerlong)) - -## [0.5.4](https://github.com/knsv/mermaid/tree/0.5.4) (2015-10-19) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.3...0.5.4) - -**Implemented enhancements:** - -- Set log level from mermaid configuration [#220](https://github.com/knsv/mermaid/issues/220) -- Links in sequence diagrams [#159](https://github.com/knsv/mermaid/issues/159) -- Add syntax for double headed arrows [#123](https://github.com/knsv/mermaid/issues/123) - -**Fixed bugs:** - -- comment characters `%%` cause parse error [#141](https://github.com/knsv/mermaid/issues/141) - -**Closed issues:** - -- Marker-end arrow cannot be shown for URL with query parameter [#225](https://github.com/knsv/mermaid/issues/225) -- Please update bower's D3 version [#221](https://github.com/knsv/mermaid/issues/221) -- Width fixed to 400px [#204](https://github.com/knsv/mermaid/issues/204) -- render to png from the cli does not display the marker-end arrow heads [#181](https://github.com/knsv/mermaid/issues/181) - -**Merged pull requests:** - -- Allow `end` as a substring of vertex id [#224](https://github.com/knsv/mermaid/pull/224) ([spect88](https://github.com/spect88)) -- Remove duplicate npm dependencies: d3 and he [#223](https://github.com/knsv/mermaid/pull/223) ([spect88](https://github.com/spect88)) - -## [0.5.3](https://github.com/knsv/mermaid/tree/0.5.3) (2015-10-04) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.2...0.5.3) - -## [0.5.2](https://github.com/knsv/mermaid/tree/0.5.2) (2015-10-04) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.1...0.5.2) - -**Implemented enhancements:** - -- Support for hyperlink and tooltip [#34](https://github.com/knsv/mermaid/issues/34) - -**Closed issues:** - -- Installing “atom-mermaid\@0.1.3” failed [#218](https://github.com/knsv/mermaid/issues/218) -- node feature request [#211](https://github.com/knsv/mermaid/issues/211) -- Please add prefix for styles [#208](https://github.com/knsv/mermaid/issues/208) -- Bad handling of block arguments [#207](https://github.com/knsv/mermaid/issues/207) -- please consider port to mac osx [#203](https://github.com/knsv/mermaid/issues/203) -- allow phantomjs >=1.9.x [#201](https://github.com/knsv/mermaid/issues/201) -- syntax for venn diagrams? [#200](https://github.com/knsv/mermaid/issues/200) -- Broken CLI Graphs? (v0.5.1) [#196](https://github.com/knsv/mermaid/issues/196) -- Static site does not render under HTTPS [#194](https://github.com/knsv/mermaid/issues/194) -- Error on simple graph [#192](https://github.com/knsv/mermaid/issues/192) -- Escape "\~" [#191](https://github.com/knsv/mermaid/issues/191) -- Trying to add link using 'click' to flowchart [#188](https://github.com/knsv/mermaid/issues/188) -- cli: no lines and arrowheads rendered / only dotted lines [#187](https://github.com/knsv/mermaid/issues/187) -- text of mermaid div displayed on page [#186](https://github.com/knsv/mermaid/issues/186) -- using mermaid with laravel [#185](https://github.com/knsv/mermaid/issues/185) -- Atom editor package [#183](https://github.com/knsv/mermaid/issues/183) -- Auto linewrap for notes in sequence diagrams [#178](https://github.com/knsv/mermaid/issues/178) -- Execute code after initialize [#176](https://github.com/knsv/mermaid/issues/176) -- Autoscaling for all diagram types [#175](https://github.com/knsv/mermaid/issues/175) -- Problem wit click event callback [#174](https://github.com/knsv/mermaid/issues/174) -- How to escape characters? [#170](https://github.com/knsv/mermaid/issues/170) -- it can not work [#167](https://github.com/knsv/mermaid/issues/167) -- Broken subgraph using the CLI [#153](https://github.com/knsv/mermaid/issues/153) -- IE Support issue [#142](https://github.com/knsv/mermaid/issues/142) -- Flowchart truncated [#140](https://github.com/knsv/mermaid/issues/140) -- Double Quote as text is not working [#219](https://github.com/knsv/mermaid/issues/219) -- classDef / class not working with htmlLabels? [#210](https://github.com/knsv/mermaid/issues/210) -- Links in graph missing [#209](https://github.com/knsv/mermaid/issues/209) -- Last word in comment boxes getting cut off by word wrap library : ( [#195](https://github.com/knsv/mermaid/issues/195) -- Escaping characters in sequence diagram [#193](https://github.com/knsv/mermaid/issues/193) -- SVG foreignObject rendering [#180](https://github.com/knsv/mermaid/issues/180) -- IE9 issue [#179](https://github.com/knsv/mermaid/issues/179) -- inoperable in an AMD/requirejs environment: IPython Notebook [#127](https://github.com/knsv/mermaid/issues/127) -- \[Parser] Hyphen in participant name bring TypeError [#74](https://github.com/knsv/mermaid/issues/74) - -**Merged pull requests:** - -- Update flowchart.md [#214](https://github.com/knsv/mermaid/pull/214) ([orschiro](https://github.com/orschiro)) -- Default style when using the CLI [#205](https://github.com/knsv/mermaid/pull/205) ([gillesdemey](https://github.com/gillesdemey)) -- Gantt chart - add minutes and seconds durations [#198](https://github.com/knsv/mermaid/pull/198) ([dbrans](https://github.com/dbrans)) -- Using QUnit for AMD testing [#190](https://github.com/knsv/mermaid/pull/190) ([bollwyvl](https://github.com/bollwyvl)) -- Update phantomscript.js [#182](https://github.com/knsv/mermaid/pull/182) ([phairow](https://github.com/phairow)) - -## [0.5.1](https://github.com/knsv/mermaid/tree/0.5.1) (2015-06-21) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.0...0.5.1) - -**Implemented enhancements:** - -- To SVG Export [#146](https://github.com/knsv/mermaid/issues/146) -- Possibility to set the width of the generated flowchart [#129](https://github.com/knsv/mermaid/issues/129) -- Special characters break parsing [#54](https://github.com/knsv/mermaid/issues/54) -- Responsive graph layout for mobile viewers [#51](https://github.com/knsv/mermaid/issues/51) -- Styling connector lines [#31](https://github.com/knsv/mermaid/issues/31) - -**Fixed bugs:** - -- flowchart - styling of edges via css overrides specific styles set in the graph definition [#128](https://github.com/knsv/mermaid/issues/128) - -**Closed issues:** - -- Live editor is broken [#173](https://github.com/knsv/mermaid/issues/173) -- 0.5.0 no longer respects custom date definitions in Gantt diagrams [#171](https://github.com/knsv/mermaid/issues/171) -- Drop label character restrictions [#162](https://github.com/knsv/mermaid/issues/162) -- can't nest subgraphs in flowchart [#161](https://github.com/knsv/mermaid/issues/161) -- Unable to generate gantt diagram with mermaid CLI [#158](https://github.com/knsv/mermaid/issues/158) -- Inline css by "mermaid" [#157](https://github.com/knsv/mermaid/issues/157) -- Finite State Machine Diagram [#152](https://github.com/knsv/mermaid/issues/152) -- How to center align gantt diagram [#150](https://github.com/knsv/mermaid/issues/150) -- Security concern regarding class definition [#148](https://github.com/knsv/mermaid/issues/148) -- File Extension [#147](https://github.com/knsv/mermaid/issues/147) -- `setTimeout` with clusters problematic with programmatic edits and no callback [#133](https://github.com/knsv/mermaid/issues/133) -- module.exports.cloneCssStyles() in combination with Angularjs breaks display in Chrome and IE [#126](https://github.com/knsv/mermaid/issues/126) -- Gantt - suitable xAxis for longer project [#125](https://github.com/knsv/mermaid/issues/125) -- How to get started with this project ? [#64](https://github.com/knsv/mermaid/issues/64) - -**Merged pull requests:** - -- Remove moot `version` property from bower.json [#172](https://github.com/knsv/mermaid/pull/172) ([kkirsche](https://github.com/kkirsche)) - -## [0.5.0](https://github.com/knsv/mermaid/tree/0.5.0) (2015-06-07) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.4.0...0.5.0) - -**Implemented enhancements:** - -- Add a css file, mermaid.css, with default styling [#122](https://github.com/knsv/mermaid/issues/122) -- software architecture diagram [#36](https://github.com/knsv/mermaid/issues/36) -- Support for bar charts and pie diagrams [#22](https://github.com/knsv/mermaid/issues/22) - -**Closed issues:** - -- uglifyjs wanrings which means we can improve the code [#156](https://github.com/knsv/mermaid/issues/156) -- New(er) features unavailable in downloadable js files? [#151](https://github.com/knsv/mermaid/issues/151) -- Add gh-gapes link to description [#143](https://github.com/knsv/mermaid/issues/143) -- Some examples not displayed on Firefox 36.0.1 [#138](https://github.com/knsv/mermaid/issues/138) -- tags ending in a "v" don't render [#132](https://github.com/knsv/mermaid/issues/132) -- Links in flowchart [#131](https://github.com/knsv/mermaid/issues/131) -- Using the library for iOS development [#130](https://github.com/knsv/mermaid/issues/130) -- Add capability for gantt diagrams [#118](https://github.com/knsv/mermaid/issues/118) -- lower case v causes error in the parser [#108](https://github.com/knsv/mermaid/issues/108) -- Label's css conflict with boostrap's .label [#67](https://github.com/knsv/mermaid/issues/67) -- TypeError: Cannot read property 'layout' of undefined [#37](https://github.com/knsv/mermaid/issues/37) - -**Merged pull requests:** - -- Dev 0.5.0 [#168](https://github.com/knsv/mermaid/pull/168) ([knsv](https://github.com/knsv)) -- Fix spacing [#164](https://github.com/knsv/mermaid/pull/164) ([rhcarvalho](https://github.com/rhcarvalho)) -- Fixing typo: "Think" -> "Thick" [#160](https://github.com/knsv/mermaid/pull/160) ([it0a](https://github.com/it0a)) -- IE, local html, cssRules access is denied [#155](https://github.com/knsv/mermaid/pull/155) ([tylerlong](https://github.com/tylerlong)) -- Add automatically generated change log file. [#139](https://github.com/knsv/mermaid/pull/139) ([skywinder](https://github.com/skywinder)) -- Adding init argument to the global API [#137](https://github.com/knsv/mermaid/pull/137) ([bollwyvl](https://github.com/bollwyvl)) -- Add description of manual calling of init [#136](https://github.com/knsv/mermaid/pull/136) ([bollwyvl](https://github.com/bollwyvl)) -- Allow other forms of node selection for init() [#135](https://github.com/knsv/mermaid/pull/135) ([bollwyvl](https://github.com/bollwyvl)) -- Use a library-level variable for assigning ids [#134](https://github.com/knsv/mermaid/pull/134) ([bollwyvl](https://github.com/bollwyvl)) - -## [0.4.0](https://github.com/knsv/mermaid/tree/0.4.0) (2015-03-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.5...0.4.0) - -**Implemented enhancements:** - -- Assymetric shapes not documented [#82](https://github.com/knsv/mermaid/issues/82) -- Improve arrows [#3](https://github.com/knsv/mermaid/issues/3) - -**Fixed bugs:** - -- NoModificationAllowedError [#23](https://github.com/knsv/mermaid/issues/23) - -**Closed issues:** - -- subgraph background is black in rendered flowchart PNG via CLI [#121](https://github.com/knsv/mermaid/issues/121) -- Integrate editor at <https://github.com/naseer/mermaid-webapp> [#110](https://github.com/knsv/mermaid/issues/110) -- Internet Explorer Support [#99](https://github.com/knsv/mermaid/issues/99) - -## [0.3.5](https://github.com/knsv/mermaid/tree/0.3.5) (2015-02-15) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.4...0.3.5) - -## [0.3.4](https://github.com/knsv/mermaid/tree/0.3.4) (2015-02-15) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.3...0.3.4) - -**Implemented enhancements:** - -- Apply styling from css when using the CLI utility [#85](https://github.com/knsv/mermaid/issues/85) -- Generated SVG works poorly outside web browsers [#58](https://github.com/knsv/mermaid/issues/58) -- Generating SVG text blob for use in Node [#2](https://github.com/knsv/mermaid/issues/2) - -**Closed issues:** - -- Subgraph syntax bug? [#120](https://github.com/knsv/mermaid/issues/120) -- Live editor [#115](https://github.com/knsv/mermaid/issues/115) -- Error in "Basic Syntax" wiki page [#113](https://github.com/knsv/mermaid/issues/113) -- semicolons, anyone? [#111](https://github.com/knsv/mermaid/issues/111) -- undefined `sequenceConfig` fails [#109](https://github.com/knsv/mermaid/issues/109) -- Sequence Diagrams: Show Actors below as well [#106](https://github.com/knsv/mermaid/issues/106) -- Allow overriding sequence diagram configuration (SVG properties) [#103](https://github.com/knsv/mermaid/issues/103) -- Error when rendering A-- This is the text -- B [#102](https://github.com/knsv/mermaid/issues/102) -- Clipping in documentation [#97](https://github.com/knsv/mermaid/issues/97) -- isolate class styling to the svg container [#92](https://github.com/knsv/mermaid/issues/92) -- Make the new graph declaration more visual [#40](https://github.com/knsv/mermaid/issues/40) - -**Merged pull requests:** - -- Add live editor [#119](https://github.com/knsv/mermaid/pull/119) ([naseer](https://github.com/naseer)) -- Adds CSS option to the CLI [#116](https://github.com/knsv/mermaid/pull/116) ([fardog](https://github.com/fardog)) -- Update flowchart.md in response Issue #113 [#114](https://github.com/knsv/mermaid/pull/114) ([vijay40](https://github.com/vijay40)) -- Ignore all files except the license and dist/ folder when installing with Bower. [#112](https://github.com/knsv/mermaid/pull/112) ([jasonbellamy](https://github.com/jasonbellamy)) - -## [0.3.3](https://github.com/knsv/mermaid/tree/0.3.3) (2015-01-25) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.2...0.3.3) - -**Implemented enhancements:** - -- Support for dotted links [#26](https://github.com/knsv/mermaid/issues/26) - -**Closed issues:** - -- Missing arrows in sequence diagram [#98](https://github.com/knsv/mermaid/issues/98) -- Error with >9 linkStyles [#95](https://github.com/knsv/mermaid/issues/95) - -**Merged pull requests:** - -- Require d3 directly to better support Node usage [#107](https://github.com/knsv/mermaid/pull/107) ([markdalgleish](https://github.com/markdalgleish)) -- update doc with -c option [#105](https://github.com/knsv/mermaid/pull/105) ([jjmr](https://github.com/jjmr)) -- Add new parameter to the console client to override the svg configuration in sequence diagrams [#104](https://github.com/knsv/mermaid/pull/104) ([jjmr](https://github.com/jjmr)) -- Text based labels, new shape [#101](https://github.com/knsv/mermaid/pull/101) ([bjowes](https://github.com/bjowes)) -- fix html tags in example usage [#100](https://github.com/knsv/mermaid/pull/100) ([deiwin](https://github.com/deiwin)) - -## [0.3.2](https://github.com/knsv/mermaid/tree/0.3.2) (2015-01-11) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.1...0.3.2) - -**Implemented enhancements:** - -- Make link text look like it is on the line [#53](https://github.com/knsv/mermaid/issues/53) - -**Closed issues:** - -- disable auto render [#91](https://github.com/knsv/mermaid/issues/91) -- Tidy breaks mermaid (linebreaks in \<div>) [#87](https://github.com/knsv/mermaid/issues/87) -- Bug: \<br> being rendered as text in node [#73](https://github.com/knsv/mermaid/issues/73) -- Graph edges appear to render outside of the canvas [#70](https://github.com/knsv/mermaid/issues/70) - -**Merged pull requests:** - -- Merge pull request #1 from knsv/master [#96](https://github.com/knsv/mermaid/pull/96) ([gkchic](https://github.com/gkchic)) -- Removed duplicated section in flowchart docs [#94](https://github.com/knsv/mermaid/pull/94) ([kaime](https://github.com/kaime)) -- Grammar changes to sequence page [#93](https://github.com/knsv/mermaid/pull/93) ([gkchic](https://github.com/gkchic)) -- Github buttons [#89](https://github.com/knsv/mermaid/pull/89) ([gkchic](https://github.com/gkchic)) -- Template change [#88](https://github.com/knsv/mermaid/pull/88) ([gkchic](https://github.com/gkchic)) - -## [0.3.1](https://github.com/knsv/mermaid/tree/0.3.1) (2015-01-05) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.0...0.3.1) - -**Implemented enhancements:** - -- Support for sequence diagrams [#16](https://github.com/knsv/mermaid/issues/16) -- Client utility for mermaid [#6](https://github.com/knsv/mermaid/issues/6) - -**Closed issues:** - -- Non ASCII chars in labels [#84](https://github.com/knsv/mermaid/issues/84) -- 'undefined' titles of Quicklinks on the usage page [#80](https://github.com/knsv/mermaid/issues/80) -- \[cli] Enhancement proposal: not fail --version / --help if phantomjs isn't installed [#71](https://github.com/knsv/mermaid/issues/71) - -**Merged pull requests:** - -- Flowchart doc: Text in the circle now in a circle [#81](https://github.com/knsv/mermaid/pull/81) ([Grahack](https://github.com/Grahack)) -- Fix for issue #73 [#79](https://github.com/knsv/mermaid/pull/79) ([it0a](https://github.com/it0a)) -- Ink template [#78](https://github.com/knsv/mermaid/pull/78) ([gkchic](https://github.com/gkchic)) -- Show help and version even if phantom isn't present. Fixes #71 [#75](https://github.com/knsv/mermaid/pull/75) ([fardog](https://github.com/fardog)) -- Add apostrophe & 'and' [#72](https://github.com/knsv/mermaid/pull/72) ([sudodoki](https://github.com/sudodoki)) - -## [0.3.0](https://github.com/knsv/mermaid/tree/0.3.0) (2014-12-22) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.16...0.3.0) - -**Implemented enhancements:** - -- How do I do comments? [#47](https://github.com/knsv/mermaid/issues/47) -- Improve readability with new line as terminator and whitespace [#38](https://github.com/knsv/mermaid/issues/38) - -**Fixed bugs:** - -- This characters failed the lexical parsing [#46](https://github.com/knsv/mermaid/issues/46) - -**Closed issues:** - -- Trailing whitespace at the end of lines is not ignored [#55](https://github.com/knsv/mermaid/issues/55) -- Use classes instead of inline style for easy styling [#24](https://github.com/knsv/mermaid/issues/24) - -**Merged pull requests:** - -- Adds Command Line Interface for generating PNGs from mermaid description files [#69](https://github.com/knsv/mermaid/pull/69) ([fardog](https://github.com/fardog)) -- Allow special symbols for direction along with acronyms [#66](https://github.com/knsv/mermaid/pull/66) ([vijay40](https://github.com/vijay40)) - -## [0.2.16](https://github.com/knsv/mermaid/tree/0.2.16) (2014-12-15) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.15...0.2.16) - -**Fixed bugs:** - -- Lines routed outside visible area [#19](https://github.com/knsv/mermaid/issues/19) - -**Closed issues:** - -- Mermaid not rendering properly on Wordpress pages [#59](https://github.com/knsv/mermaid/issues/59) -- Improve example page with live demo [#52](https://github.com/knsv/mermaid/issues/52) -- Does not render upon AngularJS Updates [#45](https://github.com/knsv/mermaid/issues/45) -- Download link in README.MD doesn't work. [#42](https://github.com/knsv/mermaid/issues/42) -- linkStyle usage is not obvious [#41](https://github.com/knsv/mermaid/issues/41) -- Move \*.spec.js in src/ to test/ [#35](https://github.com/knsv/mermaid/issues/35) - -**Merged pull requests:** - -- New grammar will allow statements ending without semicolon as disccused in Issue #38 [#63](https://github.com/knsv/mermaid/pull/63) ([vijay40](https://github.com/vijay40)) -- Class based styling [#62](https://github.com/knsv/mermaid/pull/62) ([bjowes](https://github.com/bjowes)) -- Fix typos [#60](https://github.com/knsv/mermaid/pull/60) ([sublimino](https://github.com/sublimino)) -- Included .DS_Store in gitignore [#57](https://github.com/knsv/mermaid/pull/57) ([alvynmcq](https://github.com/alvynmcq)) -- Improves readability discussed in issue #38 [#56](https://github.com/knsv/mermaid/pull/56) ([vijay40](https://github.com/vijay40)) -- Added a linting task for gulp [#43](https://github.com/knsv/mermaid/pull/43) ([serv](https://github.com/serv)) - -## [0.2.15](https://github.com/knsv/mermaid/tree/0.2.15) (2014-12-05) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.14...0.2.15) - -**Fixed bugs:** - -- Error with some characters [#25](https://github.com/knsv/mermaid/issues/25) -- Cap-cased words break parser [#8](https://github.com/knsv/mermaid/issues/8) - -**Closed issues:** - -- Question marks don't render properly with /dist/mermaid.full.min.js [#30](https://github.com/knsv/mermaid/issues/30) -- Provide parse function in browser widthout `require`? [#21](https://github.com/knsv/mermaid/issues/21) -- Better label text support [#18](https://github.com/knsv/mermaid/issues/18) - -**Merged pull requests:** - -- Include bower_components/ to .gitignore [#33](https://github.com/knsv/mermaid/pull/33) ([serv](https://github.com/serv)) -- Fixed reference to Git repo. [#32](https://github.com/knsv/mermaid/pull/32) ([guyellis](https://github.com/guyellis)) - -## [0.2.14](https://github.com/knsv/mermaid/tree/0.2.14) (2014-12-03) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.13...0.2.14) - -## [0.2.13](https://github.com/knsv/mermaid/tree/0.2.13) (2014-12-03) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.10...0.2.13) - -**Implemented enhancements:** - -- Publish to NPM [#7](https://github.com/knsv/mermaid/issues/7) - -**Closed issues:** - -- modified init to be applied more than once [#29](https://github.com/knsv/mermaid/issues/29) -- Wanted to know build process for the project. [#28](https://github.com/knsv/mermaid/issues/28) -- can not support Chinese description [#20](https://github.com/knsv/mermaid/issues/20) -- Support unicode chars in labels [#9](https://github.com/knsv/mermaid/issues/9) - -## [0.2.10](https://github.com/knsv/mermaid/tree/0.2.10) (2014-12-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.9...0.2.10) - -## [0.2.9](https://github.com/knsv/mermaid/tree/0.2.9) (2014-12-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.8...0.2.9) - -**Closed issues:** - -- Add link to jsbin playground to README [#11](https://github.com/knsv/mermaid/issues/11) -- What are the requirements ? [#10](https://github.com/knsv/mermaid/issues/10) - -**Merged pull requests:** - -- Allow unicode chars in labels [#13](https://github.com/knsv/mermaid/pull/13) ([codebeige](https://github.com/codebeige)) - -## [0.2.8](https://github.com/knsv/mermaid/tree/0.2.8) (2014-12-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.7...0.2.8) - -## [0.2.7](https://github.com/knsv/mermaid/tree/0.2.7) (2014-12-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.6...0.2.7) - -**Closed issues:** - -- Provide parser as separate module [#4](https://github.com/knsv/mermaid/issues/4) - -## [0.2.6](https://github.com/knsv/mermaid/tree/0.2.6) (2014-11-27) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.5...0.2.6) - -## [0.2.5](https://github.com/knsv/mermaid/tree/0.2.5) (2014-11-27) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.4...0.2.5) - -**Merged pull requests:** - -- Added new shapes! [#1](https://github.com/knsv/mermaid/pull/1) ([bjowes](https://github.com/bjowes)) - -## [0.2.4](https://github.com/knsv/mermaid/tree/0.2.4) (2014-11-25) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.3...0.2.4) - -## [0.2.3](https://github.com/knsv/mermaid/tree/0.2.3) (2014-11-24) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.2...0.2.3) - -## [0.2.2](https://github.com/knsv/mermaid/tree/0.2.2) (2014-11-22) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.1...0.2.2) - -## [0.2.1](https://github.com/knsv/mermaid/tree/0.2.1) (2014-11-22) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.0...0.2.1) - -## [0.2.0](https://github.com/knsv/mermaid/tree/0.2.0) (2014-11-22) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.1.1...0.2.0) - -## [0.1.1](https://github.com/knsv/mermaid/tree/0.1.1) (2014-11-17) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.1.0...0.1.1) - -## [0.1.0](https://github.com/knsv/mermaid/tree/0.1.0) (2014-11-16) From 0ad084182a72a101cd36432d845fa81bec86e653 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Thu, 8 Jun 2023 11:42:14 +0530 Subject: [PATCH 158/255] Remove old changelog --- packages/mermaid/src/docs/CHANGELOG.md | 1024 ------------------------ 1 file changed, 1024 deletions(-) delete mode 100644 packages/mermaid/src/docs/CHANGELOG.md diff --git a/packages/mermaid/src/docs/CHANGELOG.md b/packages/mermaid/src/docs/CHANGELOG.md deleted file mode 100644 index 52d959744..000000000 --- a/packages/mermaid/src/docs/CHANGELOG.md +++ /dev/null @@ -1,1024 +0,0 @@ -# Change Log - -All changes are in descending order, beginning with the newest (latest) version. - -## Unreleased - -[Full Changelog](https://github.com/knsv/mermaid/compare/8.7.0...HEAD) - -## 8.7.0 (2020-08-09) - -🔖 [Release Notes](https://github.com/mermaid-js/mermaid/releases/tag/8.7.0) | -📜 [Full Changelog](https://github.com/mermaid-js/mermaid/compare/8.6.0...8.7.0) - -This version brings with it a system for [dynamic and integrated configuration of the diagram themes](config/theming.md). -The objective of this is to increase the customizability of mermaid and the ease of Styling, with the customization of themes through the `%%init%%` directive and `initialize` calls. - -Themes follow and build upon the Levels of Configuration and employ `directives` to modify and create custom configurations, as they were introduced in Version [8.6.0](config/8.6.0_docs.md). - -**These Theming Configurations, similar to directives, will also be made applicable in the Live-Editor, for easier styling.** - -### Site-wide Themes - -Site-wide themes are still declared via `initialize` by site owners. - -Example of `Initalize` call setting `theme` to `base`: - -```javascript -mermaidAPI.initialize({ - securityLevel: 'loose', - theme: 'base', -}); -``` - -**Notes**: Only site owners can use the `mermaidAPI.initialize` call, to set values. Site-Users will have to use `%%init%%` to modify or create the theme for their diagrams. - -### Themes at the Local or Current Level - -When Generating a diagram using on a webpage that supports mermaid. -It is also possible to override site-wide theme settings locally, for a specific diagram, using directives, as long as it is not prohibited by the `secure` array. - -**Following is an example:** - -```mermaid -%%{init: {'theme':'base'}}%% - graph TD - a --> b -``` - -### Making a Custom Theme with `themeVariables` - -The easiest way to make a custom theme is to start with the base theme, and just modify theme variables through `themeVariables`, via `%%init%%`. - -| Parameter | Description | Type | Required | Objects contained | -| -------------- | ------------------------------------------------------------------ | ----- | -------- | ---------------------------------- | -| themeVariables | Array containing objects, modifiable with the `%%init%%` directive | Array | Required | primaryColor, lineColor, textColor | - -Here is an example of overriding `primaryColor` and giving everything a different look, using `%%init%%`. - -```mermaid -%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ff0000'}}}%% - graph TD - A[Christmas] -->|Get money| B(Go shopping) - B --> C{Let me think} - B --> G[/Another/] - C ==>|One| D[Laptop] - C -->|Two| E[iPhone] - C -->|Three| F[fa:fa-car Car] - subgraph section - C - D - E - F - G - end -``` - -**Notes:** -Leaving it empty will set all variable values to default. - -## 8.6.0 (2020-07-13) - -🔖 [Release Notes](https://github.com/mermaid-js/mermaid/releases/tag/8.6.0) - -[Version 8.6.0](../getting-started/8.6.0_docs.md) introduces New Configuration Protocols and Directives and a Beta for the [New Mermaid Live-Editor](https://mermaid-js.github.io/docs/mermaid-live-editor-beta/#/edit/eyJjb2RlIjoiJSV7aW5pdDoge1widGhlbWVcIjogXCJmb3Jlc3RcIiwgXCJsb2dMZXZlbFwiOiAxIH19JSVcbmdyYXBoIFREXG4gIEFbQ2hyaXN0bWFzXSAtLT58R2V0IG1vbmV5fCBCKEdvIHNob3BwaW5nKVxuICBCIC0tPiBDe0xldCBtZSB0aGlua31cbiAgQyAtLT58T25lfCBEW0xhcHRvcF1cbiAgQyAtLT58VHdvfCBFW2lQaG9uZV1cbiAgQyAtLT58VGhyZWV8IEZbZmE6ZmEtY2FyIENhcl1cblx0XHQiLCJtZXJtYWlkIjp7InRoZW1lIjoiZGFyayJ9fQ) - -**With version 8.6.0 comes the release of directives for mermaid, a new system for modifying configurations, with the aim of establishing centralized, sane defaults and simple implementation.** - -Directives allow for a diagram specific overriding of config, as it has been discussed in Configurations. -This allows site users to input modifications to config alongside diagram definitions, when creating diagrams on a private webpage that supports Mermaid. - -## 8.5.0 (2020-04-11) - -🔖 [Release Notes](https://github.com/mermaid-js/mermaid/releases/tag/untagged-31c93788afe260d914bb) - -This version introduces New diagrams! - -**New diagrams in 8.5** - -With version 8.5 there are some bug fixes and enhancements, plus a new diagram type, entity relationship diagrams. - -![Image showing the new ER diagram type](./img/er.png) - -## 8.2.0 (2019-07-17) - -🏷️ [Tag](https://github.com/mermaid-js/mermaid/tree/8.2.0) - -Version 8.2.0, introduces a security improvement. - -A `securityLevel` configuration has to first be cleared, `securityLevel` sets the level of trust for the parsed diagrams and limits click functionality. -This was introduced in version 8.2 as a security improvement, aimed at preventing malicious use. - -### securityLevel - -| Parameter | Description | Type | Required | Values | -| ------------- | --------------------------------- | ------ | -------- | ------------------------- | -| securitylevel | Level of trust for parsed diagram | String | Required | Strict, Loose, antiscript | - -**Notes:** - -- **strict**: (**default**) tags in text are encoded, click functionality is disabled -- **loose**: tags in text are allowed, click functionality is enabled -- **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled - -⚠️ **Note**: This changes the default behaviour of mermaid so that after upgrade to 8.2, if the `securityLevel` is not configured, tags in flowcharts are encoded as tags and clicking is prohibited. - -If you are taking responsibility for the diagram source security you can set the `securityLevel` to a value of your choosing. -By doing this clicks and tags are again allowed. - -### To change `securityLevel` with `mermaidAPI.initialize`: - -```javascript -mermaidAPI.initialize({ - securityLevel: 'loose', -}); -``` - -**Closed issues:** - -- please add tag for 8.0.0 release [\#863](https://github.com/knsv/mermaid/issues/863) -- classDiagram breaks on any edit [\#858](https://github.com/knsv/mermaid/issues/858) - -## [8.1.0](https://github.com/knsv/mermaid/tree/8.1.0) (2019-06-25) - -[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.5...8.1.0) - -**Implemented enhancements:** - -- Theme for dark background [\#301](https://github.com/knsv/mermaid/issues/301) -- \[Feature request\] gantt diagram axis format [\#269](https://github.com/knsv/mermaid/issues/269) -- Implement render function for server side rendering using phantomjs [\#169](https://github.com/knsv/mermaid/issues/169) - -**Fixed bugs:** - -- mermaid -v filename.mmd gives You must specify at least one source file. [\#328](https://github.com/knsv/mermaid/issues/328) -- Not Able to See Labels even htmlLabels:false added [\#268](https://github.com/knsv/mermaid/issues/268) - -**Closed issues:** - -- Gantt and sequence diagram do not render [\#853](https://github.com/knsv/mermaid/issues/853) -- margins around flowchart are not balanced [\#852](https://github.com/knsv/mermaid/issues/852) -- Smaller bundles [\#843](https://github.com/knsv/mermaid/issues/843) -- unicode in labels [\#776](https://github.com/knsv/mermaid/issues/776) -- Hard-changing drawing of arrows per edge type [\#775](https://github.com/knsv/mermaid/issues/775) -- SequenceDiagram wrong [\#773](https://github.com/knsv/mermaid/issues/773) -- Render mermaid on github pages with simple code [\#772](https://github.com/knsv/mermaid/issues/772) -- FlowChart - large space between text and the image [\#754](https://github.com/knsv/mermaid/issues/754) -- Class Diagram Issues when using Mermaid in Stackedit [\#748](https://github.com/knsv/mermaid/issues/748) -- Multi-platform CI [\#744](https://github.com/knsv/mermaid/issues/744) -- gantt: sections can't have a colon [\#742](https://github.com/knsv/mermaid/issues/742) -- Yarn build does not add mermaid.min.css to dist [\#732](https://github.com/knsv/mermaid/issues/732) -- Is there a grammar / keyword / more than just the basic examples? [\#718](https://github.com/knsv/mermaid/issues/718) -- Click event and react component [\#717](https://github.com/knsv/mermaid/issues/717) -- Long text going outside the box [\#706](https://github.com/knsv/mermaid/issues/706) -- How to migrate from yUML to mermaid? [\#704](https://github.com/knsv/mermaid/issues/704) -- Issue on Dynamic Creation in PHP [\#690](https://github.com/knsv/mermaid/issues/690) -- `click "\#target"` and `click "http://url"` should create regular links [\#689](https://github.com/knsv/mermaid/issues/689) -- Support Chinese punctuation [\#687](https://github.com/knsv/mermaid/issues/687) -- \[Question\] Proper way to install on Mac? [\#681](https://github.com/knsv/mermaid/issues/681) -- Has Mermaid a graphical interface to make diagrams? [\#668](https://github.com/knsv/mermaid/issues/668) -- mermaid installation on debian [\#649](https://github.com/knsv/mermaid/issues/649) -- "Cannot activate" in sequenceDiagram [\#647](https://github.com/knsv/mermaid/issues/647) -- Link \("click" statement\) in flowchart does not work in exported SVG [\#646](https://github.com/knsv/mermaid/issues/646) -- How to pass styling [\#639](https://github.com/knsv/mermaid/issues/639) -- The live editor cant show seq diagram with notes for 8.0.0-alpha.3 [\#638](https://github.com/knsv/mermaid/issues/638) -- import mermaid.css with ES6 + NPM [\#634](https://github.com/knsv/mermaid/issues/634) -- Actor line cuts through other elements [\#633](https://github.com/knsv/mermaid/issues/633) -- Graph TD line out of the picture \(left side\) [\#630](https://github.com/knsv/mermaid/issues/630) -- Flowchart labels appear "cutoff" [\#628](https://github.com/knsv/mermaid/issues/628) -- Uncaught TypeError: \_.constant is not a function \(mermaid.js\) [\#626](https://github.com/knsv/mermaid/issues/626) -- Missing tags and releases for newer versions [\#623](https://github.com/knsv/mermaid/issues/623) -- Mermaid and Leo / Leo Vue [\#622](https://github.com/knsv/mermaid/issues/622) -- mermaidAPI gantt Vue.js [\#621](https://github.com/knsv/mermaid/issues/621) -- Gantt sections are not separated by colors - Fix: set numberSectionStyles to 4 instead of 3 [\#620](https://github.com/knsv/mermaid/issues/620) -- how to get mermaidAPI? [\#617](https://github.com/knsv/mermaid/issues/617) -- Error in startOnLoad documentation? [\#616](https://github.com/knsv/mermaid/issues/616) -- Example export to SVG generates error [\#614](https://github.com/knsv/mermaid/issues/614) -- The new online editor does not support previously generated links [\#613](https://github.com/knsv/mermaid/issues/613) -- Grammar / Syntax documentation for flowcharts [\#607](https://github.com/knsv/mermaid/issues/607) -- Mermaid does not work with d3.js [\#606](https://github.com/knsv/mermaid/issues/606) -- Why does this code's flowchart lines get cut-off on screen? [\#604](https://github.com/knsv/mermaid/issues/604) -- click keyword does not fire my callback \(on the demo Website too\) [\#603](https://github.com/knsv/mermaid/issues/603) -- Online Editor fails to show exported SVG [\#601](https://github.com/knsv/mermaid/issues/601) -- Just saying thanks! [\#597](https://github.com/knsv/mermaid/issues/597) -- stylesheet crashed with other library like abcjs [\#596](https://github.com/knsv/mermaid/issues/596) -- Missing connection [\#594](https://github.com/knsv/mermaid/issues/594) -- How to use mermaid on node.js restful api? [\#593](https://github.com/knsv/mermaid/issues/593) -- Remove status code [\#589](https://github.com/knsv/mermaid/issues/589) -- Golang based editor [\#588](https://github.com/knsv/mermaid/issues/588) -- sequenceDiagram -\> notetext css font is hardcoded [\#587](https://github.com/knsv/mermaid/issues/587) -- Multiple graph in the live editor [\#586](https://github.com/knsv/mermaid/issues/586) -- All \<svg\> elements in page are colored black [\#584](https://github.com/knsv/mermaid/issues/584) -- Styling: classes aren't applied to elements. [\#582](https://github.com/knsv/mermaid/issues/582) -- Rounded connections [\#580](https://github.com/knsv/mermaid/issues/580) -- Arrows are not being shown correctly in the dark theme [\#578](https://github.com/knsv/mermaid/issues/578) -- The documentation for CLI seems outdated. [\#572](https://github.com/knsv/mermaid/issues/572) -- No effect of click event:can not open link [\#571](https://github.com/knsv/mermaid/issues/571) -- Text colors are not correct in VSCODE [\#570](https://github.com/knsv/mermaid/issues/570) -- Nodes aren't aligned properly \(just need an explanation\) [\#568](https://github.com/knsv/mermaid/issues/568) -- setting margin around figure in R [\#567](https://github.com/knsv/mermaid/issues/567) -- Arrows should Come out in upward and Downward direction from decision Node [\#566](https://github.com/knsv/mermaid/issues/566) -- TypeError: Cannot read property 'select' of undefined [\#563](https://github.com/knsv/mermaid/issues/563) -- A little bug [\#557](https://github.com/knsv/mermaid/issues/557) -- Japanese text appears garbled [\#554](https://github.com/knsv/mermaid/issues/554) -- classdiagram not works in mermaid live_editor [\#553](https://github.com/knsv/mermaid/issues/553) -- font awesome in link text? [\#546](https://github.com/knsv/mermaid/issues/546) -- q: heard of the cosmogol standard? [\#545](https://github.com/knsv/mermaid/issues/545) -- Arrow heads missing \(cli, 7.0.3\) [\#544](https://github.com/knsv/mermaid/issues/544) -- No Edge Boxes if useHtmlLabels=false [\#541](https://github.com/knsv/mermaid/issues/541) -- how to change mermaid text color or line text block color? [\#534](https://github.com/knsv/mermaid/issues/534) -- FlowChart visualization broken when downloading from live editor [\#533](https://github.com/knsv/mermaid/issues/533) -- Can't get flowchart to render paths at the top of the diagram; I even tried the online editor and that shows the same issue. Thoughts? [\#532](https://github.com/knsv/mermaid/issues/532) -- live editor make browser\(safari on macOS&iOS\) not longer respond [\#531](https://github.com/knsv/mermaid/issues/531) -- css classes need a prefix/namespace [\#527](https://github.com/knsv/mermaid/issues/527) -- input activate/deactivate cause safari unresponding [\#521](https://github.com/knsv/mermaid/issues/521) -- Cannot Render the Mermaid Graph to PDF ? [\#520](https://github.com/knsv/mermaid/issues/520) -- clicking links works from inset in subgraph but not from nodes [\#516](https://github.com/knsv/mermaid/issues/516) -- Strange syntax error - when importing mermaid.js [\#515](https://github.com/knsv/mermaid/issues/515) -- gantt x-axis display [\#510](https://github.com/knsv/mermaid/issues/510) -- phantomjs renamed to phantomjs-prebuilt [\#508](https://github.com/knsv/mermaid/issues/508) -- issue when using sphinxcontrib-mermaid extension for sphinx [\#507](https://github.com/knsv/mermaid/issues/507) -- layout of docs page looks broken [\#504](https://github.com/knsv/mermaid/issues/504) -- Problem showing graph with php on localhost [\#502](https://github.com/knsv/mermaid/issues/502) -- logLevel's option doesn't work at 7.0.0 [\#501](https://github.com/knsv/mermaid/issues/501) -- How do I get the log for a render or parse attempt? [\#500](https://github.com/knsv/mermaid/issues/500) -- Mermaid neutral style style to built in latest release [\#499](https://github.com/knsv/mermaid/issues/499) -- Any plans for adding a typescript definition file? [\#495](https://github.com/knsv/mermaid/issues/495) -- Gantt diagrams too narrow [\#493](https://github.com/knsv/mermaid/issues/493) -- Flowchart edge labels placement [\#490](https://github.com/knsv/mermaid/issues/490) -- Very different styles when rendering as png vs. svg [\#489](https://github.com/knsv/mermaid/issues/489) -- New editor that supports mermaid: Caret [\#488](https://github.com/knsv/mermaid/issues/488) -- Gant PNG margin [\#486](https://github.com/knsv/mermaid/issues/486) -- ReferenceError: window is not defined [\#485](https://github.com/knsv/mermaid/issues/485) -- Menu and layout bugs in docs [\#484](https://github.com/knsv/mermaid/issues/484) -- Mermaid resets some of the page CSS styles [\#482](https://github.com/knsv/mermaid/issues/482) -- Arrows rendering incorrectly in online editor [\#480](https://github.com/knsv/mermaid/issues/480) -- CSS stroke-dasharray ignored by browsers but not other viewers [\#474](https://github.com/knsv/mermaid/issues/474) -- mermaid - Browser Support issue [\#472](https://github.com/knsv/mermaid/issues/472) -- Totally love mermaid I might pop! [\#471](https://github.com/knsv/mermaid/issues/471) -- Sequence Diagram: Missing x on async arrows \(png\) [\#469](https://github.com/knsv/mermaid/issues/469) -- live editor: the svg file rendered from graph is not supported by browsers [\#468](https://github.com/knsv/mermaid/issues/468) -- Not found css [\#462](https://github.com/knsv/mermaid/issues/462) -- Phantomjs Dependency [\#461](https://github.com/knsv/mermaid/issues/461) -- Mermaid cli not working for subgraphs [\#459](https://github.com/knsv/mermaid/issues/459) -- Support for notes across multiple participants? [\#458](https://github.com/knsv/mermaid/issues/458) -- Related to Issue \#329: Phantomjs issues. [\#455](https://github.com/knsv/mermaid/issues/455) -- Add a click style [\#426](https://github.com/knsv/mermaid/issues/426) -- Add Parallel block \(par\) to sequence diagrams [\#425](https://github.com/knsv/mermaid/issues/425) -- updating shapes after the flow chart rendering complete [\#424](https://github.com/knsv/mermaid/issues/424) -- can't catch parse error Maximum call stack size exceeded on safari [\#421](https://github.com/knsv/mermaid/issues/421) -- Arrows endings are missing [\#419](https://github.com/knsv/mermaid/issues/419) -- shouldn't mermaid become more like Markdown ? [\#417](https://github.com/knsv/mermaid/issues/417) -- Live editor show rendered diagram if syntax invalid [\#415](https://github.com/knsv/mermaid/issues/415) -- Linkstyle stroke does not work [\#410](https://github.com/knsv/mermaid/issues/410) -- flowchart id's with dots in them .. break links [\#408](https://github.com/knsv/mermaid/issues/408) -- Flowchart: Link text beginning with lowercase 'o' causes flowchart to break [\#407](https://github.com/knsv/mermaid/issues/407) -- Some Chinese character will case Safari no responding. [\#405](https://github.com/knsv/mermaid/issues/405) -- Cannot center-justify text in nodes? [\#397](https://github.com/knsv/mermaid/issues/397) -- Edge labels should have white background in live editor [\#396](https://github.com/knsv/mermaid/issues/396) -- Live editor does not support activate/deactivate [\#394](https://github.com/knsv/mermaid/issues/394) -- Styling subgraph? [\#391](https://github.com/knsv/mermaid/issues/391) -- Update live editor to version 6.0.0 [\#387](https://github.com/knsv/mermaid/issues/387) -- sequence diagram config issue [\#385](https://github.com/knsv/mermaid/issues/385) -- How to add newline in the text [\#384](https://github.com/knsv/mermaid/issues/384) -- PhantomJS crashes on a large graph [\#380](https://github.com/knsv/mermaid/issues/380) -- Finnish support for class diagrams using plantuml syntax [\#377](https://github.com/knsv/mermaid/issues/377) -- mermaidAPI.render generated different svg code from mermaid.int\(\) [\#374](https://github.com/knsv/mermaid/issues/374) -- Put your own action on the chart [\#372](https://github.com/knsv/mermaid/issues/372) -- when declaring participants the elements are generated twice [\#370](https://github.com/knsv/mermaid/issues/370) -- Example Flowchart is cut in display \(Chrome\). [\#368](https://github.com/knsv/mermaid/issues/368) -- Add shebang support to diagrams [\#365](https://github.com/knsv/mermaid/issues/365) -- Silencing CLI output [\#352](https://github.com/knsv/mermaid/issues/352) -- SequenceDiagram: 3+ Alternative Paths [\#348](https://github.com/knsv/mermaid/issues/348) -- Smaller height of actor boxes [\#342](https://github.com/knsv/mermaid/issues/342) -- Question: lib/phantomscript.js - foreignObjects in SVG - related to \#58 [\#340](https://github.com/knsv/mermaid/issues/340) -- npm test fails on osx being blocked at Can not load "PhantomJS", it is not registered! [\#337](https://github.com/knsv/mermaid/issues/337) -- Tabs & subgraphs cause rendering error [\#336](https://github.com/knsv/mermaid/issues/336) -- Display question: right angles [\#335](https://github.com/knsv/mermaid/issues/335) -- No Arrows rendered v0.5.8 [\#330](https://github.com/knsv/mermaid/issues/330) -- You had errors in your syntax. Use --help for further information. [\#327](https://github.com/knsv/mermaid/issues/327) -- Allow alternate arrow syntax that doesn't close html comments [\#322](https://github.com/knsv/mermaid/issues/322) -- Comment in subgraph [\#319](https://github.com/knsv/mermaid/issues/319) -- Update graph [\#311](https://github.com/knsv/mermaid/issues/311) -- css conflicts with boostrap's css [\#308](https://github.com/knsv/mermaid/issues/308) -- Can not get click event to fire. [\#306](https://github.com/knsv/mermaid/issues/306) -- Fix phantomjs2 compatibility [\#304](https://github.com/knsv/mermaid/issues/304) -- Flowcharts do not work in native IE11 [\#303](https://github.com/knsv/mermaid/issues/303) -- Integration with remark.js - tutorial added [\#302](https://github.com/knsv/mermaid/issues/302) -- Sequence diagram Loops: changing boxMargin spoils the "loop" notation [\#299](https://github.com/knsv/mermaid/issues/299) -- src/mermaid.js generates bad code [\#297](https://github.com/knsv/mermaid/issues/297) -- Fresh fork: jasmine tests fail [\#294](https://github.com/knsv/mermaid/issues/294) -- CSS clash [\#292](https://github.com/knsv/mermaid/issues/292) -- Mermaid does not work in Chrome 48 [\#281](https://github.com/knsv/mermaid/issues/281) -- circle and ellipse cannot change color by classDef [\#271](https://github.com/knsv/mermaid/issues/271) -- npm run watch doesn't work due missing dependencies [\#266](https://github.com/knsv/mermaid/issues/266) -- label out of node [\#262](https://github.com/knsv/mermaid/issues/262) -- IE11 Support issue [\#261](https://github.com/knsv/mermaid/issues/261) -- mermaid without browser [\#260](https://github.com/knsv/mermaid/issues/260) -- Insufficient capacity of gantt diagrams [\#226](https://github.com/knsv/mermaid/issues/226) -- some WARN about installation [\#222](https://github.com/knsv/mermaid/issues/222) -- Live editor offline access [\#217](https://github.com/knsv/mermaid/issues/217) -- suggest: code highlight mode config for editors [\#212](https://github.com/knsv/mermaid/issues/212) -- Uncaught RangeError: Maximum call stack size exceeded [\#189](https://github.com/knsv/mermaid/issues/189) -- Styling label texts [\#50](https://github.com/knsv/mermaid/issues/50) - -**Merged pull requests:** - -- Remove console.log in classDB. [\#861](https://github.com/knsv/mermaid/pull/861) ([Arthaey](https://github.com/Arthaey)) -- Bump sshpk from 1.13.1 to 1.16.1 [\#851](https://github.com/knsv/mermaid/pull/851) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Significantly smaller bundles [\#850](https://github.com/knsv/mermaid/pull/850) ([fabiospampinato](https://github.com/fabiospampinato)) -- Support styling of subgraphs [\#845](https://github.com/knsv/mermaid/pull/845) ([Qix-](https://github.com/Qix-)) -- fix dark theme loop labels not visible [\#837](https://github.com/knsv/mermaid/pull/837) ([jnnnnn](https://github.com/jnnnnn)) -- fix draw function can only call once [\#832](https://github.com/knsv/mermaid/pull/832) ([vaniship](https://github.com/vaniship)) -- Fix dotted lines not appearing in flowcharts when HTML labels disabled [\#828](https://github.com/knsv/mermaid/pull/828) ([stanhu](https://github.com/stanhu)) -- Fix issue with XML line breaks inside vertex labels [\#824](https://github.com/knsv/mermaid/pull/824) ([jsyang](https://github.com/jsyang)) -- fixed diagrams [\#810](https://github.com/knsv/mermaid/pull/810) ([0xflotus](https://github.com/0xflotus)) -- Clickable gantt tasks [\#804](https://github.com/knsv/mermaid/pull/804) ([abzicht](https://github.com/abzicht)) -- linkStyle now supports list of indexes with a few tests [\#798](https://github.com/knsv/mermaid/pull/798) ([ivan-danilov](https://github.com/ivan-danilov)) -- fix class diagram mermaid [\#795](https://github.com/knsv/mermaid/pull/795) ([DanShai](https://github.com/DanShai)) -- Added exclude weekdays to definition [\#792](https://github.com/knsv/mermaid/pull/792) ([jopapo](https://github.com/jopapo)) -- SVG link rendering [\#791](https://github.com/knsv/mermaid/pull/791) ([flying-sheep](https://github.com/flying-sheep)) -- Gantt milestones [\#788](https://github.com/knsv/mermaid/pull/788) ([gijswijs](https://github.com/gijswijs)) -- Remove duplicate code [\#768](https://github.com/knsv/mermaid/pull/768) ([znxkznxk1030](https://github.com/znxkznxk1030)) -- Render nodes as real links [\#765](https://github.com/knsv/mermaid/pull/765) ([flying-sheep](https://github.com/flying-sheep)) -- Fix issue with marker-end. [\#757](https://github.com/knsv/mermaid/pull/757) ([gjlubbertsen](https://github.com/gjlubbertsen)) -- Make Class Diagrams usable in Stackedit and Live Editor [\#749](https://github.com/knsv/mermaid/pull/749) ([monsterkrampe](https://github.com/monsterkrampe)) -- Adding trapezoid and inverse trapezoid vertex options. [\#741](https://github.com/knsv/mermaid/pull/741) ([adamwulf](https://github.com/adamwulf)) -- Add option for right angles [\#721](https://github.com/knsv/mermaid/pull/721) ([paulbland](https://github.com/paulbland)) -- Add nested activation classes [\#720](https://github.com/knsv/mermaid/pull/720) ([paulbland](https://github.com/paulbland)) -- wip: class diagram cardinality display [\#705](https://github.com/knsv/mermaid/pull/705) ([Vrixyz](https://github.com/Vrixyz)) -- add comments about CSS in config [\#688](https://github.com/knsv/mermaid/pull/688) ([imma90](https://github.com/imma90)) -- SequenceDiagram: Add support for multiple alt else statements [\#641](https://github.com/knsv/mermaid/pull/641) ([sechel](https://github.com/sechel)) -- fix \#426 - add class .clickable on nodes with click function or link [\#598](https://github.com/knsv/mermaid/pull/598) ([thomasleveil](https://github.com/thomasleveil)) -- Spec fix 1 [\#595](https://github.com/knsv/mermaid/pull/595) ([frankschmitt](https://github.com/frankschmitt)) - -## [7.0.5](https://github.com/knsv/mermaid/tree/7.0.5) (2017-09-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.3...7.0.5) - -**Closed issues:** - -- live editor latin error after update [\#560](https://github.com/knsv/mermaid/issues/560) -- Simple full example in online documentation is broken [\#558](https://github.com/knsv/mermaid/issues/558) -- Graph No Arrow Head v7.0.3 [\#543](https://github.com/knsv/mermaid/issues/543) -- Conflict while using mermaid along with core-js [\#512](https://github.com/knsv/mermaid/issues/512) -- Export to pdf on website [\#496](https://github.com/knsv/mermaid/issues/496) -- New downstream project: Mermaid Preview for VSCode [\#442](https://github.com/knsv/mermaid/issues/442) -- Can't Zoom the flowchart ? [\#399](https://github.com/knsv/mermaid/issues/399) -- line labels are not rendered correctly in live editor [\#366](https://github.com/knsv/mermaid/issues/366) -- mermaid-loader [\#361](https://github.com/knsv/mermaid/issues/361) -- Are there any documentation or examples for classDiagram and gitGraph? [\#359](https://github.com/knsv/mermaid/issues/359) -- \# character broken in 0.5.8 [\#347](https://github.com/knsv/mermaid/issues/347) -- Documentation issue: CSS example is not visible [\#345](https://github.com/knsv/mermaid/issues/345) -- Include documentation for command line usage [\#326](https://github.com/knsv/mermaid/issues/326) -- Fresh fork: can't build dist [\#296](https://github.com/knsv/mermaid/issues/296) -- Invalid value for \<svg\> attribute viewBox="0 0 -Infinity -Infinity" [\#291](https://github.com/knsv/mermaid/issues/291) -- Webpack require fails [\#277](https://github.com/knsv/mermaid/issues/277) -- New documentation - need improved logo [\#216](https://github.com/knsv/mermaid/issues/216) - -## [7.0.3](https://github.com/knsv/mermaid/tree/7.0.3) (2017-06-04) - -[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.2...7.0.3) - -**Closed issues:** - -- the documentation website is down [\#539](https://github.com/knsv/mermaid/issues/539) -- Good example of interactivity with mermaidAPI [\#514](https://github.com/knsv/mermaid/issues/514) - -## [7.0.2](https://github.com/knsv/mermaid/tree/7.0.2) (2017-06-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/7.0.0...7.0.2) - -**Closed issues:** - -- CDN is not working [\#511](https://github.com/knsv/mermaid/issues/511) -- A sampe sequenceDiagram crashes mermaid-cli [\#492](https://github.com/knsv/mermaid/issues/492) -- Mermaid doesn't delete nodes when called multiple times [\#491](https://github.com/knsv/mermaid/issues/491) -- API crashes on 2nd render\(\) call [\#478](https://github.com/knsv/mermaid/issues/478) -- sequenceDiagram: dotted line for alt and empty bracket should be hidden [\#456](https://github.com/knsv/mermaid/issues/456) -- SVG output \(almost\) not correct [\#434](https://github.com/knsv/mermaid/issues/434) -- How to set axisFormatter of gantt in mermaid CLI? [\#428](https://github.com/knsv/mermaid/issues/428) -- customizing link style with any color sets `fill` property to `black` instead of `none` [\#416](https://github.com/knsv/mermaid/issues/416) -- New line at the end of SVG file [\#400](https://github.com/knsv/mermaid/issues/400) -- CLI doesn't work [\#389](https://github.com/knsv/mermaid/issues/389) -- Can't render subgraphs with htmlLabels: false [\#367](https://github.com/knsv/mermaid/issues/367) -- Color arrowhead [\#362](https://github.com/knsv/mermaid/issues/362) -- CLI: Invisible text, lines in SVG output [\#341](https://github.com/knsv/mermaid/issues/341) - -**Merged pull requests:** - -- Support Multi-line Actor Descriptions [\#764](https://github.com/knsv/mermaid/pull/764) ([watsoncj](https://github.com/watsoncj)) -- Update Travis config [\#538](https://github.com/knsv/mermaid/pull/538) ([tylerlong](https://github.com/tylerlong)) -- Fix spelling of 'you' in sequenceDiagram docs [\#537](https://github.com/knsv/mermaid/pull/537) ([ctruelson](https://github.com/ctruelson)) -- Improve CLI output [\#536](https://github.com/knsv/mermaid/pull/536) ([gibson042](https://github.com/gibson042)) -- Modernize mermaid [\#524](https://github.com/knsv/mermaid/pull/524) ([tylerlong](https://github.com/tylerlong)) -- Modernize mermaid [\#519](https://github.com/knsv/mermaid/pull/519) ([tylerlong](https://github.com/tylerlong)) -- Update CLI instructions [\#509](https://github.com/knsv/mermaid/pull/509) ([filipedeschamps](https://github.com/filipedeschamps)) -- Add style for classDiagram to dark/default theme [\#503](https://github.com/knsv/mermaid/pull/503) ([yudenzel](https://github.com/yudenzel)) -- Fix documentation for git graph. [\#498](https://github.com/knsv/mermaid/pull/498) ([gomlgs](https://github.com/gomlgs)) -- Fix links in documentations [\#497](https://github.com/knsv/mermaid/pull/497) ([saveman71](https://github.com/saveman71)) -- Update README.md with git graph sample [\#481](https://github.com/knsv/mermaid/pull/481) ([raghur](https://github.com/raghur)) -- Fix misspelling of “another” [\#479](https://github.com/knsv/mermaid/pull/479) ([stevenschobert](https://github.com/stevenschobert)) -- Fixed \#456 sequenceDiagram: dotted line for alt and empty bracket sho… [\#477](https://github.com/knsv/mermaid/pull/477) ([brookhong](https://github.com/brookhong)) -- Add viewbox attr to class diagram [\#473](https://github.com/knsv/mermaid/pull/473) ([gnkm](https://github.com/gnkm)) -- add par statement to sequenceDiagram [\#470](https://github.com/knsv/mermaid/pull/470) ([u-minor](https://github.com/u-minor)) - -## [7.0.0](https://github.com/knsv/mermaid/tree/7.0.0) (2017-01-29) - -[Full Changelog](https://github.com/knsv/mermaid/compare/6.0.0...7.0.0) - -**Implemented enhancements:** - -- npm install -g mermaid does not install phantomjs [\#329](https://github.com/knsv/mermaid/issues/329) -- activation boxes [\#313](https://github.com/knsv/mermaid/issues/313) - -**Closed issues:** - -- demos on io site not working [\#466](https://github.com/knsv/mermaid/issues/466) -- Can not be generated PNG pictures through CLI with Chinese [\#451](https://github.com/knsv/mermaid/issues/451) -- Round nodes cannot be styled with CSS classes [\#443](https://github.com/knsv/mermaid/issues/443) -- webpack gulp UglifyJsPlugin error. [\#440](https://github.com/knsv/mermaid/issues/440) -- String concatenation isn't working [\#432](https://github.com/knsv/mermaid/issues/432) -- text flow/wrap in actor box of sequence diagram [\#422](https://github.com/knsv/mermaid/issues/422) -- Online live editor still use old version [\#402](https://github.com/knsv/mermaid/issues/402) -- uncaught TypeError: t.getTransformToElement is not a function [\#401](https://github.com/knsv/mermaid/issues/401) -- Only works when using browserify'd code [\#373](https://github.com/knsv/mermaid/issues/373) -- document the use of shebang line in mmd files [\#364](https://github.com/knsv/mermaid/issues/364) -- Diagrams are small and unreadable in IE 11 - since 0.5.1 [\#356](https://github.com/knsv/mermaid/issues/356) -- \[Feature Request\] ER-Diagram Support [\#354](https://github.com/knsv/mermaid/issues/354) -- The need for mermaid.css should be mentioned explicitly in the intro docs... [\#273](https://github.com/knsv/mermaid/issues/273) - -**Merged pull requests:** - -- Update index.html [\#465](https://github.com/knsv/mermaid/pull/465) ([bmsleight](https://github.com/bmsleight)) -- Fix for \#416, customizing link style with any color sets `fill` property to `black` instead of `none` [\#452](https://github.com/knsv/mermaid/pull/452) ([joshuacolvin](https://github.com/joshuacolvin)) -- Allow .node\>circle to receive css styles [\#449](https://github.com/knsv/mermaid/pull/449) ([bfriedz](https://github.com/bfriedz)) -- Fix spelling [\#447](https://github.com/knsv/mermaid/pull/447) ([jawn](https://github.com/jawn)) -- added tests and fix cli css style selector lowercase problem [\#445](https://github.com/knsv/mermaid/pull/445) ([whyzdev](https://github.com/whyzdev)) -- Update d3.js [\#441](https://github.com/knsv/mermaid/pull/441) ([hetz](https://github.com/hetz)) -- added tests to reproduce \#434 in flowchart [\#439](https://github.com/knsv/mermaid/pull/439) ([whyzdev](https://github.com/whyzdev)) -- Code Climate config [\#437](https://github.com/knsv/mermaid/pull/437) ([larkinscott](https://github.com/larkinscott)) -- fix gantt and sequence digram cli cfg [\#435](https://github.com/knsv/mermaid/pull/435) ([whyzdev](https://github.com/whyzdev)) -- fix gantt chart cli configuration broken [\#433](https://github.com/knsv/mermaid/pull/433) ([whyzdev](https://github.com/whyzdev)) -- fix gantt chart cli configuration parsing including functions [\#430](https://github.com/knsv/mermaid/pull/430) ([whyzdev](https://github.com/whyzdev)) -- Uses an empty text node instead of a string for svg group labels [\#429](https://github.com/knsv/mermaid/pull/429) ([daveaglick](https://github.com/daveaglick)) -- use tspan via d3.textwrap to place actor text in sequence diagram [\#427](https://github.com/knsv/mermaid/pull/427) ([whyzdev](https://github.com/whyzdev)) -- \#422 use foreignObject/div to place actor label in sequence diagram [\#423](https://github.com/knsv/mermaid/pull/423) ([whyzdev](https://github.com/whyzdev)) -- Clarify the need for a CSS stylesheet [\#413](https://github.com/knsv/mermaid/pull/413) ([sifb](https://github.com/sifb)) -- Added hads downstream project [\#412](https://github.com/knsv/mermaid/pull/412) ([sinedied](https://github.com/sinedied)) -- update usage and fix \#273 [\#406](https://github.com/knsv/mermaid/pull/406) ([jinntrance](https://github.com/jinntrance)) -- Add https://github.com/raghur/mermaid-filter to downstream projects docs page [\#404](https://github.com/knsv/mermaid/pull/404) ([raghur](https://github.com/raghur)) -- New neutral theme [\#395](https://github.com/knsv/mermaid/pull/395) ([sinedied](https://github.com/sinedied)) -- fix cli issues [\#390](https://github.com/knsv/mermaid/pull/390) ([ben-page](https://github.com/ben-page)) -- Add missing space for 'Labels out of bounds' section [\#386](https://github.com/knsv/mermaid/pull/386) ([The-Alchemist](https://github.com/The-Alchemist)) -- Fix typo: `pats` -\> `paths` [\#382](https://github.com/knsv/mermaid/pull/382) ([swhgoon](https://github.com/swhgoon)) -- Added class diagram example to README.md [\#379](https://github.com/knsv/mermaid/pull/379) ([HustLion](https://github.com/HustLion)) -- override normal flowchart arrowhead to allow css styling [\#376](https://github.com/knsv/mermaid/pull/376) ([dodoinblue](https://github.com/dodoinblue)) -- added sphinx extension [\#371](https://github.com/knsv/mermaid/pull/371) ([mgaitan](https://github.com/mgaitan)) -- Fix typo in the sequence diagram documentation [\#369](https://github.com/knsv/mermaid/pull/369) ([ggpasqualino](https://github.com/ggpasqualino)) - -## [6.0.0](https://github.com/knsv/mermaid/tree/6.0.0) (2016-05-29) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.8...6.0.0) - -**Closed issues:** - -- Docs css: code hard to read [\#324](https://github.com/knsv/mermaid/issues/324) -- About Markpad integration [\#323](https://github.com/knsv/mermaid/issues/323) -- How to link backwards in flowchart? [\#321](https://github.com/knsv/mermaid/issues/321) -- Help with editor [\#310](https://github.com/knsv/mermaid/issues/310) -- +1 [\#293](https://github.com/knsv/mermaid/issues/293) -- Basic chart does not render on Chome, but does in Firefox [\#290](https://github.com/knsv/mermaid/issues/290) -- Live editor is broken [\#285](https://github.com/knsv/mermaid/issues/285) -- "No such file or directory" trying to run mermaid 0.5.7 on OS X [\#284](https://github.com/knsv/mermaid/issues/284) -- participant name as "Long Long Name" [\#283](https://github.com/knsv/mermaid/issues/283) -- Windows - cli - could not find phantomjs at the specified path [\#236](https://github.com/knsv/mermaid/issues/236) - -**Merged pull requests:** - -- The option of gantt for the spaces for the section names. [\#353](https://github.com/knsv/mermaid/pull/353) ([zeroyonichihachi](https://github.com/zeroyonichihachi)) -- Gitgraph: Make reset work with parent ref carets [\#350](https://github.com/knsv/mermaid/pull/350) ([raghur](https://github.com/raghur)) -- Remove the text-shadows that make the text look blurry [\#349](https://github.com/knsv/mermaid/pull/349) ([AsaAyers](https://github.com/AsaAyers)) -- add line interpolation to linkStyle in flowchart [\#346](https://github.com/knsv/mermaid/pull/346) ([AlanHohn](https://github.com/AlanHohn)) -- Support git graph diagrams in mermaid [\#344](https://github.com/knsv/mermaid/pull/344) ([raghur](https://github.com/raghur)) -- Build and test execution changes [\#338](https://github.com/knsv/mermaid/pull/338) ([ssbarnea](https://github.com/ssbarnea)) -- Reformatting of css files [\#331](https://github.com/knsv/mermaid/pull/331) ([Jmuccigr](https://github.com/Jmuccigr)) -- \(WIP\) Sequence Diagram Title Support [\#320](https://github.com/knsv/mermaid/pull/320) ([bronsoja](https://github.com/bronsoja)) -- activations doc + few fixes [\#318](https://github.com/knsv/mermaid/pull/318) ([ciekawy](https://github.com/ciekawy)) -- Dark theme for better contrast on darker backgrounds [\#317](https://github.com/knsv/mermaid/pull/317) ([crodriguez1a](https://github.com/crodriguez1a)) -- Activations [\#316](https://github.com/knsv/mermaid/pull/316) ([ciekawy](https://github.com/ciekawy)) -- Support leading comments for sequenceDiagrams [\#312](https://github.com/knsv/mermaid/pull/312) ([ashsearle](https://github.com/ashsearle)) -- Show a little lenience for white-space around names [\#309](https://github.com/knsv/mermaid/pull/309) ([ashsearle](https://github.com/ashsearle)) -- Update list of downstream projects [\#307](https://github.com/knsv/mermaid/pull/307) ([maxArturo](https://github.com/maxArturo)) -- Issue 299: Sequence diagram Loops: changing boxMargin spoils the "loop" notation [\#300](https://github.com/knsv/mermaid/pull/300) ([LarryKlugerDS](https://github.com/LarryKlugerDS)) -- Issue 297 - src/mermaid.js generates bad code [\#298](https://github.com/knsv/mermaid/pull/298) ([LarryKlugerDS](https://github.com/LarryKlugerDS)) -- Updated instructions for running tests [\#295](https://github.com/knsv/mermaid/pull/295) ([LarryKlugerDS](https://github.com/LarryKlugerDS)) -- Add Markdown Plus to Downstream projects [\#288](https://github.com/knsv/mermaid/pull/288) ([tylerlong](https://github.com/tylerlong)) -- Quote phantomPath so that it doesn't fail on window [\#286](https://github.com/knsv/mermaid/pull/286) ([raghur](https://github.com/raghur)) - -## [0.5.8](https://github.com/knsv/mermaid/tree/0.5.8) (2016-01-27) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.7...0.5.8) - -## [0.5.7](https://github.com/knsv/mermaid/tree/0.5.7) (2016-01-25) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.6...0.5.7) - -**Closed issues:** - -- Mermaid + LightPaper = ❤️ [\#280](https://github.com/knsv/mermaid/issues/280) -- Bower Integration [\#278](https://github.com/knsv/mermaid/issues/278) -- Mermaid breaks when variables end in 'v' [\#276](https://github.com/knsv/mermaid/issues/276) -- sequence diagrams don't support participant aliasing [\#263](https://github.com/knsv/mermaid/issues/263) -- One diagram that fails to render stops further execution on the page [\#259](https://github.com/knsv/mermaid/issues/259) -- Where to find line layout algorithm? [\#258](https://github.com/knsv/mermaid/issues/258) -- Compatibility with node.js [\#257](https://github.com/knsv/mermaid/issues/257) -- Label resizing with dynamically loaded fonts [\#255](https://github.com/knsv/mermaid/issues/255) -- SVG arrowheads are broken in the CLI [\#249](https://github.com/knsv/mermaid/issues/249) -- Cannot read property 'replace' of undefined [\#239](https://github.com/knsv/mermaid/issues/239) - -**Merged pull requests:** - -- gh-50 Allow styling of edge labels in css [\#267](https://github.com/knsv/mermaid/pull/267) ([Anoia](https://github.com/Anoia)) -- Allow sequenceDiagram participant aliasing [\#265](https://github.com/knsv/mermaid/pull/265) ([gibson042](https://github.com/gibson042)) - -## [0.5.6](https://github.com/knsv/mermaid/tree/0.5.6) (2015-11-22) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.5...0.5.6) - -**Implemented enhancements:** - -- Add download SVG link to the live editor [\#144](https://github.com/knsv/mermaid/issues/144) - -**Fixed bugs:** - -- Live Editor: Permalink address not being parsed [\#202](https://github.com/knsv/mermaid/issues/202) - -**Closed issues:** - -- title doesn't work in sequenceDiagram [\#248](https://github.com/knsv/mermaid/issues/248) -- hypen-minus should be valid in sequence diagram alt/else/etc. descriptions [\#247](https://github.com/knsv/mermaid/issues/247) -- Broken in firefox? [\#245](https://github.com/knsv/mermaid/issues/245) -- When there is a Chinese symbol in the flowchart, it will crash。 [\#238](https://github.com/knsv/mermaid/issues/238) -- Non-alpha characters included in ALPHA token \(flow graph jison\) [\#232](https://github.com/knsv/mermaid/issues/232) -- subgraph not rendering with change to sample [\#231](https://github.com/knsv/mermaid/issues/231) -- sequence diagram requires a new line at the end? [\#229](https://github.com/knsv/mermaid/issues/229) - -**Merged pull requests:** - -- Make sequenceDiagram terminal newline optional [\#253](https://github.com/knsv/mermaid/pull/253) ([gibson042](https://github.com/gibson042)) -- Support sequenceDiagram "over" notes [\#252](https://github.com/knsv/mermaid/pull/252) ([gibson042](https://github.com/gibson042)) -- Properly handle "rest of line" statements [\#251](https://github.com/knsv/mermaid/pull/251) ([gibson042](https://github.com/gibson042)) -- CLI: Propagate exit code from lib \(i.e., phantomjs\) [\#250](https://github.com/knsv/mermaid/pull/250) ([gibson042](https://github.com/gibson042)) -- flowRender.js - Fix FontAwesome icon insert [\#244](https://github.com/knsv/mermaid/pull/244) ([ma-zal](https://github.com/ma-zal)) -- updated sequence diagram link in live editor [\#242](https://github.com/knsv/mermaid/pull/242) ([r-a-v-a-s](https://github.com/r-a-v-a-s)) -- updated links in README.md [\#240](https://github.com/knsv/mermaid/pull/240) ([r-a-v-a-s](https://github.com/r-a-v-a-s)) -- Ellipse syntax [\#237](https://github.com/knsv/mermaid/pull/237) ([spect88](https://github.com/spect88)) -- Allow keywords as suffixes of node ids [\#235](https://github.com/knsv/mermaid/pull/235) ([spect88](https://github.com/spect88)) -- Highlighted the editor in the nav [\#234](https://github.com/knsv/mermaid/pull/234) ([knsv](https://github.com/knsv)) -- Live editor tweaks [\#233](https://github.com/knsv/mermaid/pull/233) ([spect88](https://github.com/spect88)) -- Add a Gitter chat badge to README.md [\#230](https://github.com/knsv/mermaid/pull/230) ([gitter-badger](https://github.com/gitter-badger)) - -## [0.5.5](https://github.com/knsv/mermaid/tree/0.5.5) (2015-10-21) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.4...0.5.5) - -**Closed issues:** - -- sequence diagram, arrowhead instead of crosshead [\#227](https://github.com/knsv/mermaid/issues/227) - -**Merged pull requests:** - -- Fix a typo: crosshead --\> arrowhead [\#228](https://github.com/knsv/mermaid/pull/228) ([tylerlong](https://github.com/tylerlong)) - -## [0.5.4](https://github.com/knsv/mermaid/tree/0.5.4) (2015-10-19) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.3...0.5.4) - -**Implemented enhancements:** - -- Set log level from mermaid configuration [\#220](https://github.com/knsv/mermaid/issues/220) -- Links in sequence diagrams [\#159](https://github.com/knsv/mermaid/issues/159) -- Add syntax for double headed arrows [\#123](https://github.com/knsv/mermaid/issues/123) - -**Fixed bugs:** - -- comment characters `%%` cause parse error [\#141](https://github.com/knsv/mermaid/issues/141) - -**Closed issues:** - -- Marker-end arrow cannot be shown for URL with query parameter [\#225](https://github.com/knsv/mermaid/issues/225) -- Please update bower's D3 version [\#221](https://github.com/knsv/mermaid/issues/221) -- Width fixed to 400px [\#204](https://github.com/knsv/mermaid/issues/204) -- render to png from the cli does not display the marker-end arrow heads [\#181](https://github.com/knsv/mermaid/issues/181) - -**Merged pull requests:** - -- Allow `end` as a substring of vertex id [\#224](https://github.com/knsv/mermaid/pull/224) ([spect88](https://github.com/spect88)) -- Remove duplicate npm dependencies: d3 and he [\#223](https://github.com/knsv/mermaid/pull/223) ([spect88](https://github.com/spect88)) - -## [0.5.3](https://github.com/knsv/mermaid/tree/0.5.3) (2015-10-04) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.2...0.5.3) - -## [0.5.2](https://github.com/knsv/mermaid/tree/0.5.2) (2015-10-04) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.1...0.5.2) - -**Implemented enhancements:** - -- Support for hyperlink and tooltip [\#34](https://github.com/knsv/mermaid/issues/34) - -**Closed issues:** - -- Installing “atom-mermaid@0.1.3” failed [\#218](https://github.com/knsv/mermaid/issues/218) -- node feature request [\#211](https://github.com/knsv/mermaid/issues/211) -- Please add prefix for styles [\#208](https://github.com/knsv/mermaid/issues/208) -- Bad handling of block arguments [\#207](https://github.com/knsv/mermaid/issues/207) -- please consider port to mac osx [\#203](https://github.com/knsv/mermaid/issues/203) -- allow phantomjs \>=1.9.x [\#201](https://github.com/knsv/mermaid/issues/201) -- syntax for venn diagrams? [\#200](https://github.com/knsv/mermaid/issues/200) -- Broken CLI Graphs? \(v0.5.1\) [\#196](https://github.com/knsv/mermaid/issues/196) -- Static site does not render under HTTPS [\#194](https://github.com/knsv/mermaid/issues/194) -- Error on simple graph [\#192](https://github.com/knsv/mermaid/issues/192) -- Escape "~" [\#191](https://github.com/knsv/mermaid/issues/191) -- Trying to add link using 'click' to flowchart [\#188](https://github.com/knsv/mermaid/issues/188) -- cli: no lines and arrowheads rendered / only dotted lines [\#187](https://github.com/knsv/mermaid/issues/187) -- text of mermaid div displayed on page [\#186](https://github.com/knsv/mermaid/issues/186) -- using mermaid with laravel [\#185](https://github.com/knsv/mermaid/issues/185) -- Atom editor package [\#183](https://github.com/knsv/mermaid/issues/183) -- Auto linewrap for notes in sequence diagrams [\#178](https://github.com/knsv/mermaid/issues/178) -- Execute code after initialize [\#176](https://github.com/knsv/mermaid/issues/176) -- Autoscaling for all diagram types [\#175](https://github.com/knsv/mermaid/issues/175) -- Problem wit click event callback [\#174](https://github.com/knsv/mermaid/issues/174) -- How to escape characters? [\#170](https://github.com/knsv/mermaid/issues/170) -- it can not work [\#167](https://github.com/knsv/mermaid/issues/167) -- Broken subgraph using the CLI [\#153](https://github.com/knsv/mermaid/issues/153) -- IE Support issue [\#142](https://github.com/knsv/mermaid/issues/142) -- Flowchart truncated [\#140](https://github.com/knsv/mermaid/issues/140) -- Double Quote as text is not working [\#219](https://github.com/knsv/mermaid/issues/219) -- classDef / class not working with htmlLabels? [\#210](https://github.com/knsv/mermaid/issues/210) -- Links in graph missing [\#209](https://github.com/knsv/mermaid/issues/209) -- Last word in comment boxes getting cut off by word wrap library : \( [\#195](https://github.com/knsv/mermaid/issues/195) -- Escaping characters in sequence diagram [\#193](https://github.com/knsv/mermaid/issues/193) -- SVG foreignObject rendering [\#180](https://github.com/knsv/mermaid/issues/180) -- IE9 issue [\#179](https://github.com/knsv/mermaid/issues/179) -- inoperable in an AMD/requirejs environment: IPython Notebook [\#127](https://github.com/knsv/mermaid/issues/127) -- \[Parser\] Hyphen in participant name bring TypeError [\#74](https://github.com/knsv/mermaid/issues/74) - -**Merged pull requests:** - -- Update flowchart.md [\#214](https://github.com/knsv/mermaid/pull/214) ([orschiro](https://github.com/orschiro)) -- Default style when using the CLI [\#205](https://github.com/knsv/mermaid/pull/205) ([gillesdemey](https://github.com/gillesdemey)) -- Gantt chart - add minutes and seconds durations [\#198](https://github.com/knsv/mermaid/pull/198) ([dbrans](https://github.com/dbrans)) -- Using QUnit for AMD testing [\#190](https://github.com/knsv/mermaid/pull/190) ([bollwyvl](https://github.com/bollwyvl)) -- Update phantomscript.js [\#182](https://github.com/knsv/mermaid/pull/182) ([phairow](https://github.com/phairow)) - -## [0.5.1](https://github.com/knsv/mermaid/tree/0.5.1) (2015-06-21) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.5.0...0.5.1) - -**Implemented enhancements:** - -- To SVG Export [\#146](https://github.com/knsv/mermaid/issues/146) -- Possibility to set the width of the generated flowchart [\#129](https://github.com/knsv/mermaid/issues/129) -- Special characters break parsing [\#54](https://github.com/knsv/mermaid/issues/54) -- Responsive graph layout for mobile viewers [\#51](https://github.com/knsv/mermaid/issues/51) -- Styling connector lines [\#31](https://github.com/knsv/mermaid/issues/31) - -**Fixed bugs:** - -- flowchart - styling of edges via css overrides specific styles set in the graph definition [\#128](https://github.com/knsv/mermaid/issues/128) - -**Closed issues:** - -- Live editor is broken [\#173](https://github.com/knsv/mermaid/issues/173) -- 0.5.0 no longer respects custom date definitions in Gantt diagrams [\#171](https://github.com/knsv/mermaid/issues/171) -- Drop label character restrictions [\#162](https://github.com/knsv/mermaid/issues/162) -- can't nest subgraphs in flowchart [\#161](https://github.com/knsv/mermaid/issues/161) -- Unable to generate gantt diagram with mermaid CLI [\#158](https://github.com/knsv/mermaid/issues/158) -- Inline css by "mermaid" [\#157](https://github.com/knsv/mermaid/issues/157) -- Finite State Machine Diagram [\#152](https://github.com/knsv/mermaid/issues/152) -- How to center align gantt diagram [\#150](https://github.com/knsv/mermaid/issues/150) -- Security concern regarding class definition [\#148](https://github.com/knsv/mermaid/issues/148) -- File Extension [\#147](https://github.com/knsv/mermaid/issues/147) -- `setTimeout` with clusters problematic with programmatic edits and no callback [\#133](https://github.com/knsv/mermaid/issues/133) -- module.exports.cloneCssStyles\(\) in combination with Angularjs breaks display in Chrome and IE [\#126](https://github.com/knsv/mermaid/issues/126) -- Gantt - suitable xAxis for longer project [\#125](https://github.com/knsv/mermaid/issues/125) -- How to get started with this project ? [\#64](https://github.com/knsv/mermaid/issues/64) - -**Merged pull requests:** - -- Remove moot `version` property from bower.json [\#172](https://github.com/knsv/mermaid/pull/172) ([kkirsche](https://github.com/kkirsche)) - -## [0.5.0](https://github.com/knsv/mermaid/tree/0.5.0) (2015-06-07) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.4.0...0.5.0) - -**Implemented enhancements:** - -- Add a css file, mermaid.css, with default styling [\#122](https://github.com/knsv/mermaid/issues/122) -- software architecture diagram [\#36](https://github.com/knsv/mermaid/issues/36) -- Support for bar charts and pie diagrams [\#22](https://github.com/knsv/mermaid/issues/22) - -**Closed issues:** - -- uglifyjs wanrings which means we can improve the code [\#156](https://github.com/knsv/mermaid/issues/156) -- New\(er\) features unavailable in downloadable js files? [\#151](https://github.com/knsv/mermaid/issues/151) -- Add gh-gapes link to description [\#143](https://github.com/knsv/mermaid/issues/143) -- Some examples not displayed on Firefox 36.0.1 [\#138](https://github.com/knsv/mermaid/issues/138) -- tags ending in a "v" don't render [\#132](https://github.com/knsv/mermaid/issues/132) -- Links in flowchart [\#131](https://github.com/knsv/mermaid/issues/131) -- Using the library for iOS development [\#130](https://github.com/knsv/mermaid/issues/130) -- Add capability for gantt diagrams [\#118](https://github.com/knsv/mermaid/issues/118) -- lower case v causes error in the parser [\#108](https://github.com/knsv/mermaid/issues/108) -- Label's css conflict with boostrap's .label [\#67](https://github.com/knsv/mermaid/issues/67) -- TypeError: Cannot read property 'layout' of undefined [\#37](https://github.com/knsv/mermaid/issues/37) - -**Merged pull requests:** - -- Dev 0.5.0 [\#168](https://github.com/knsv/mermaid/pull/168) ([knsv](https://github.com/knsv)) -- Fix spacing [\#164](https://github.com/knsv/mermaid/pull/164) ([rhcarvalho](https://github.com/rhcarvalho)) -- Fixing typo: "Think" -\> "Thick" [\#160](https://github.com/knsv/mermaid/pull/160) ([it0a](https://github.com/it0a)) -- IE, local html, cssRules access is denied [\#155](https://github.com/knsv/mermaid/pull/155) ([tylerlong](https://github.com/tylerlong)) -- Add automatically generated change log file. [\#139](https://github.com/knsv/mermaid/pull/139) ([skywinder](https://github.com/skywinder)) -- Adding init argument to the global API [\#137](https://github.com/knsv/mermaid/pull/137) ([bollwyvl](https://github.com/bollwyvl)) -- Add description of manual calling of init [\#136](https://github.com/knsv/mermaid/pull/136) ([bollwyvl](https://github.com/bollwyvl)) -- Allow other forms of node selection for init\(\) [\#135](https://github.com/knsv/mermaid/pull/135) ([bollwyvl](https://github.com/bollwyvl)) -- Use a library-level variable for assigning ids [\#134](https://github.com/knsv/mermaid/pull/134) ([bollwyvl](https://github.com/bollwyvl)) - -## [0.4.0](https://github.com/knsv/mermaid/tree/0.4.0) (2015-03-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.5...0.4.0) - -**Implemented enhancements:** - -- Assymetric shapes not documented [\#82](https://github.com/knsv/mermaid/issues/82) -- Improve arrows [\#3](https://github.com/knsv/mermaid/issues/3) - -**Fixed bugs:** - -- NoModificationAllowedError [\#23](https://github.com/knsv/mermaid/issues/23) - -**Closed issues:** - -- subgraph background is black in rendered flowchart PNG via CLI [\#121](https://github.com/knsv/mermaid/issues/121) -- Integrate editor at https://github.com/naseer/mermaid-webapp [\#110](https://github.com/knsv/mermaid/issues/110) -- Internet Explorer Support [\#99](https://github.com/knsv/mermaid/issues/99) - -## [0.3.5](https://github.com/knsv/mermaid/tree/0.3.5) (2015-02-15) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.4...0.3.5) - -## [0.3.4](https://github.com/knsv/mermaid/tree/0.3.4) (2015-02-15) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.3...0.3.4) - -**Implemented enhancements:** - -- Apply styling from css when using the CLI utility [\#85](https://github.com/knsv/mermaid/issues/85) -- Generated SVG works poorly outside web browsers [\#58](https://github.com/knsv/mermaid/issues/58) -- Generating SVG text blob for use in Node [\#2](https://github.com/knsv/mermaid/issues/2) - -**Closed issues:** - -- Subgraph syntax bug? [\#120](https://github.com/knsv/mermaid/issues/120) -- Live editor [\#115](https://github.com/knsv/mermaid/issues/115) -- Error in "Basic Syntax" wiki page [\#113](https://github.com/knsv/mermaid/issues/113) -- semicolons, anyone? [\#111](https://github.com/knsv/mermaid/issues/111) -- undefined `sequenceConfig` fails [\#109](https://github.com/knsv/mermaid/issues/109) -- Sequence Diagrams: Show Actors below as well [\#106](https://github.com/knsv/mermaid/issues/106) -- Allow overriding sequence diagram configuration \(SVG properties\) [\#103](https://github.com/knsv/mermaid/issues/103) -- Error when rendering A-- This is the text -- B [\#102](https://github.com/knsv/mermaid/issues/102) -- Clipping in documentation [\#97](https://github.com/knsv/mermaid/issues/97) -- isolate class styling to the svg container [\#92](https://github.com/knsv/mermaid/issues/92) -- Make the new graph declaration more visual [\#40](https://github.com/knsv/mermaid/issues/40) - -**Merged pull requests:** - -- Add live editor [\#119](https://github.com/knsv/mermaid/pull/119) ([naseer](https://github.com/naseer)) -- Adds CSS option to the CLI [\#116](https://github.com/knsv/mermaid/pull/116) ([fardog](https://github.com/fardog)) -- Update flowchart.md in response Issue \#113 [\#114](https://github.com/knsv/mermaid/pull/114) ([vijay40](https://github.com/vijay40)) -- Ignore all files except the license and dist/ folder when installing with Bower. [\#112](https://github.com/knsv/mermaid/pull/112) ([jasonbellamy](https://github.com/jasonbellamy)) - -## [0.3.3](https://github.com/knsv/mermaid/tree/0.3.3) (2015-01-25) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.2...0.3.3) - -**Implemented enhancements:** - -- Support for dotted links [\#26](https://github.com/knsv/mermaid/issues/26) - -**Closed issues:** - -- Missing arrows in sequence diagram [\#98](https://github.com/knsv/mermaid/issues/98) -- Error with \>9 linkStyles [\#95](https://github.com/knsv/mermaid/issues/95) - -**Merged pull requests:** - -- Require d3 directly to better support Node usage [\#107](https://github.com/knsv/mermaid/pull/107) ([markdalgleish](https://github.com/markdalgleish)) -- update doc with -c option [\#105](https://github.com/knsv/mermaid/pull/105) ([jjmr](https://github.com/jjmr)) -- Add new parameter to the console client to override the svg configuration in sequence diagrams [\#104](https://github.com/knsv/mermaid/pull/104) ([jjmr](https://github.com/jjmr)) -- Text based labels, new shape [\#101](https://github.com/knsv/mermaid/pull/101) ([bjowes](https://github.com/bjowes)) -- fix html tags in example usage [\#100](https://github.com/knsv/mermaid/pull/100) ([deiwin](https://github.com/deiwin)) - -## [0.3.2](https://github.com/knsv/mermaid/tree/0.3.2) (2015-01-11) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.1...0.3.2) - -**Implemented enhancements:** - -- Make link text look like it is on the line [\#53](https://github.com/knsv/mermaid/issues/53) - -**Closed issues:** - -- disable auto render [\#91](https://github.com/knsv/mermaid/issues/91) -- Tidy breaks mermaid \(linebreaks in \<div\>\) [\#87](https://github.com/knsv/mermaid/issues/87) -- Bug: \<br\> being rendered as text in node [\#73](https://github.com/knsv/mermaid/issues/73) -- Graph edges appear to render outside of the canvas [\#70](https://github.com/knsv/mermaid/issues/70) - -**Merged pull requests:** - -- Merge pull request \#1 from knsv/master [\#96](https://github.com/knsv/mermaid/pull/96) ([gkchic](https://github.com/gkchic)) -- Removed duplicated section in flowchart docs [\#94](https://github.com/knsv/mermaid/pull/94) ([kaime](https://github.com/kaime)) -- Grammar changes to sequence page [\#93](https://github.com/knsv/mermaid/pull/93) ([gkchic](https://github.com/gkchic)) -- Github buttons [\#89](https://github.com/knsv/mermaid/pull/89) ([gkchic](https://github.com/gkchic)) -- Template change [\#88](https://github.com/knsv/mermaid/pull/88) ([gkchic](https://github.com/gkchic)) - -## [0.3.1](https://github.com/knsv/mermaid/tree/0.3.1) (2015-01-05) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.3.0...0.3.1) - -**Implemented enhancements:** - -- Support for sequence diagrams [\#16](https://github.com/knsv/mermaid/issues/16) -- Client utility for mermaid [\#6](https://github.com/knsv/mermaid/issues/6) - -**Closed issues:** - -- Non ASCII chars in labels [\#84](https://github.com/knsv/mermaid/issues/84) -- 'undefined' titles of Quicklinks on the usage page [\#80](https://github.com/knsv/mermaid/issues/80) -- \[cli\] Enhancement proposal: not fail --version / --help if phantomjs isn't installed [\#71](https://github.com/knsv/mermaid/issues/71) - -**Merged pull requests:** - -- Flowchart doc: Text in the circle now in a circle [\#81](https://github.com/knsv/mermaid/pull/81) ([Grahack](https://github.com/Grahack)) -- Fix for issue \#73 [\#79](https://github.com/knsv/mermaid/pull/79) ([it0a](https://github.com/it0a)) -- Ink template [\#78](https://github.com/knsv/mermaid/pull/78) ([gkchic](https://github.com/gkchic)) -- Show help and version even if phantom isn't present. Fixes \#71 [\#75](https://github.com/knsv/mermaid/pull/75) ([fardog](https://github.com/fardog)) -- Add apostrophe & 'and' [\#72](https://github.com/knsv/mermaid/pull/72) ([sudodoki](https://github.com/sudodoki)) - -## [0.3.0](https://github.com/knsv/mermaid/tree/0.3.0) (2014-12-22) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.16...0.3.0) - -**Implemented enhancements:** - -- How do I do comments? [\#47](https://github.com/knsv/mermaid/issues/47) -- Improve readability with new line as terminator and whitespace [\#38](https://github.com/knsv/mermaid/issues/38) - -**Fixed bugs:** - -- This characters failed the lexical parsing [\#46](https://github.com/knsv/mermaid/issues/46) - -**Closed issues:** - -- Trailing whitespace at the end of lines is not ignored [\#55](https://github.com/knsv/mermaid/issues/55) -- Use classes instead of inline style for easy styling [\#24](https://github.com/knsv/mermaid/issues/24) - -**Merged pull requests:** - -- Adds Command Line Interface for generating PNGs from mermaid description files [\#69](https://github.com/knsv/mermaid/pull/69) ([fardog](https://github.com/fardog)) -- Allow special symbols for direction along with acronyms [\#66](https://github.com/knsv/mermaid/pull/66) ([vijay40](https://github.com/vijay40)) - -## [0.2.16](https://github.com/knsv/mermaid/tree/0.2.16) (2014-12-15) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.15...0.2.16) - -**Fixed bugs:** - -- Lines routed outside visible area [\#19](https://github.com/knsv/mermaid/issues/19) - -**Closed issues:** - -- Mermaid not rendering properly on Wordpress pages [\#59](https://github.com/knsv/mermaid/issues/59) -- Improve example page with live demo [\#52](https://github.com/knsv/mermaid/issues/52) -- Does not render upon AngularJS Updates [\#45](https://github.com/knsv/mermaid/issues/45) -- Download link in README.MD doesn't work. [\#42](https://github.com/knsv/mermaid/issues/42) -- linkStyle usage is not obvious [\#41](https://github.com/knsv/mermaid/issues/41) -- Move \*.spec.js in src/ to test/ [\#35](https://github.com/knsv/mermaid/issues/35) - -**Merged pull requests:** - -- New grammar will allow statements ending without semicolon as disccused in Issue \#38 [\#63](https://github.com/knsv/mermaid/pull/63) ([vijay40](https://github.com/vijay40)) -- Class based styling [\#62](https://github.com/knsv/mermaid/pull/62) ([bjowes](https://github.com/bjowes)) -- Fix typos [\#60](https://github.com/knsv/mermaid/pull/60) ([sublimino](https://github.com/sublimino)) -- Included .DS_Store in gitignore [\#57](https://github.com/knsv/mermaid/pull/57) ([alvynmcq](https://github.com/alvynmcq)) -- Improves readability discussed in issue \#38 [\#56](https://github.com/knsv/mermaid/pull/56) ([vijay40](https://github.com/vijay40)) -- Added a linting task for gulp [\#43](https://github.com/knsv/mermaid/pull/43) ([serv](https://github.com/serv)) - -## [0.2.15](https://github.com/knsv/mermaid/tree/0.2.15) (2014-12-05) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.14...0.2.15) - -**Fixed bugs:** - -- Error with some characters [\#25](https://github.com/knsv/mermaid/issues/25) -- Cap-cased words break parser [\#8](https://github.com/knsv/mermaid/issues/8) - -**Closed issues:** - -- Question marks don't render properly with /dist/mermaid.full.min.js [\#30](https://github.com/knsv/mermaid/issues/30) -- Provide parse function in browser widthout `require`? [\#21](https://github.com/knsv/mermaid/issues/21) -- Better label text support [\#18](https://github.com/knsv/mermaid/issues/18) - -**Merged pull requests:** - -- Include bower_components/ to .gitignore [\#33](https://github.com/knsv/mermaid/pull/33) ([serv](https://github.com/serv)) -- Fixed reference to Git repo. [\#32](https://github.com/knsv/mermaid/pull/32) ([guyellis](https://github.com/guyellis)) - -## [0.2.14](https://github.com/knsv/mermaid/tree/0.2.14) (2014-12-03) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.13...0.2.14) - -## [0.2.13](https://github.com/knsv/mermaid/tree/0.2.13) (2014-12-03) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.10...0.2.13) - -**Implemented enhancements:** - -- Publish to NPM [\#7](https://github.com/knsv/mermaid/issues/7) - -**Closed issues:** - -- modified init to be applied more than once [\#29](https://github.com/knsv/mermaid/issues/29) -- Wanted to know build process for the project. [\#28](https://github.com/knsv/mermaid/issues/28) -- can not support Chinese description [\#20](https://github.com/knsv/mermaid/issues/20) -- Support unicode chars in labels [\#9](https://github.com/knsv/mermaid/issues/9) - -## [0.2.10](https://github.com/knsv/mermaid/tree/0.2.10) (2014-12-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.9...0.2.10) - -## [0.2.9](https://github.com/knsv/mermaid/tree/0.2.9) (2014-12-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.8...0.2.9) - -**Closed issues:** - -- Add link to jsbin playground to README [\#11](https://github.com/knsv/mermaid/issues/11) -- What are the requirements ? [\#10](https://github.com/knsv/mermaid/issues/10) - -**Merged pull requests:** - -- Allow unicode chars in labels [\#13](https://github.com/knsv/mermaid/pull/13) ([codebeige](https://github.com/codebeige)) - -## [0.2.8](https://github.com/knsv/mermaid/tree/0.2.8) (2014-12-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.7...0.2.8) - -## [0.2.7](https://github.com/knsv/mermaid/tree/0.2.7) (2014-12-01) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.6...0.2.7) - -**Closed issues:** - -- Provide parser as separate module [\#4](https://github.com/knsv/mermaid/issues/4) - -## [0.2.6](https://github.com/knsv/mermaid/tree/0.2.6) (2014-11-27) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.5...0.2.6) - -## [0.2.5](https://github.com/knsv/mermaid/tree/0.2.5) (2014-11-27) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.4...0.2.5) - -**Merged pull requests:** - -- Added new shapes! [\#1](https://github.com/knsv/mermaid/pull/1) ([bjowes](https://github.com/bjowes)) - -## [0.2.4](https://github.com/knsv/mermaid/tree/0.2.4) (2014-11-25) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.3...0.2.4) - -## [0.2.3](https://github.com/knsv/mermaid/tree/0.2.3) (2014-11-24) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.2...0.2.3) - -## [0.2.2](https://github.com/knsv/mermaid/tree/0.2.2) (2014-11-22) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.1...0.2.2) - -## [0.2.1](https://github.com/knsv/mermaid/tree/0.2.1) (2014-11-22) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.2.0...0.2.1) - -## [0.2.0](https://github.com/knsv/mermaid/tree/0.2.0) (2014-11-22) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.1.1...0.2.0) - -## [0.1.1](https://github.com/knsv/mermaid/tree/0.1.1) (2014-11-17) - -[Full Changelog](https://github.com/knsv/mermaid/compare/0.1.0...0.1.1) - -## [0.1.0](https://github.com/knsv/mermaid/tree/0.1.0) (2014-11-16) From 75f9de3d4ae79b8939607872fa9467d5413855ff Mon Sep 17 00:00:00 2001 From: Knut Sveidqvist <knsv@sveido.com> Date: Thu, 8 Jun 2023 16:24:25 +0200 Subject: [PATCH 159/255] UPdated version to 10.2.3 --- package.json | 2 +- packages/mermaid/package.json | 2 +- pnpm-lock.yaml | 94 ----------------------------------- 3 files changed, 2 insertions(+), 96 deletions(-) diff --git a/package.json b/package.json index 11e88d725..da33ed70a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mermaid-monorepo", "private": true, - "version": "10.2.2", + "version": "10.2.3", "description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "type": "module", "packageManager": "pnpm@8.5.1", diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index cd870e15e..8064b15cf 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -1,6 +1,6 @@ { "name": "mermaid", - "version": "10.2.2", + "version": "10.2.3", "description": "Markdown-ish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "type": "module", "module": "./dist/mermaid.core.mjs", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b72cc3f6f..f88fda3ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -435,58 +435,6 @@ importers: specifier: ^6.5.4 version: 6.5.4 - packages/mermaid/src/vitepress: - dependencies: - '@vueuse/core': - specifier: ^10.1.0 - version: 10.1.0(vue@3.2.47) - jiti: - specifier: ^1.18.2 - version: 1.18.2 - vue: - specifier: ^3.2.47 - version: 3.2.47 - devDependencies: - '@iconify-json/carbon': - specifier: ^1.1.16 - version: 1.1.16 - '@unocss/reset': - specifier: ^0.52.0 - version: 0.52.0 - '@vite-pwa/vitepress': - specifier: ^0.0.5 - version: 0.0.5(vite-plugin-pwa@0.15.0) - '@vitejs/plugin-vue': - specifier: ^4.2.1 - version: 4.2.1(vite@4.3.3)(vue@3.2.47) - fast-glob: - specifier: ^3.2.12 - version: 3.2.12 - https-localhost: - specifier: ^4.7.1 - version: 4.7.1 - pathe: - specifier: ^1.1.0 - version: 1.1.0 - unocss: - specifier: ^0.52.0 - version: 0.52.0(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3) - unplugin-vue-components: - specifier: ^0.24.1 - version: 0.24.1(rollup@2.79.1)(vue@3.2.47) - vite: - specifier: ^4.3.3 - version: 4.3.3(@types/node@18.16.0) - vite-plugin-pwa: - specifier: ^0.15.0 - version: 0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) - vitepress: - specifier: 1.0.0-alpha.76 - version: 1.0.0-alpha.76(@algolia/client-search@4.14.2)(@types/node@18.16.0) - workbox-window: - specifier: ^6.5.4 - version: 6.5.4 - tests/webpack: dependencies: '@mermaid-js/mermaid-example-diagram': @@ -14657,48 +14605,6 @@ packages: - terser dev: true - /vitepress@1.0.0-alpha.76(@algolia/client-search@4.14.2)(@types/node@18.16.0): - resolution: {integrity: sha512-fzR1pDpGnSMeCJ+AnDdMe/ETD2G0Go+g6mTxDv9ps7Hmr1JjVqw97nasCyZg3jgfQxi2nt78EJ/bw7hY5n/rlw==} - hasBin: true - dependencies: - '@docsearch/css': 3.3.5 - '@docsearch/js': 3.3.5(@algolia/client-search@4.14.2) - '@vitejs/plugin-vue': 4.2.3(vite@4.3.8)(vue@3.3.4) - '@vue/devtools-api': 6.5.0 - '@vueuse/core': 10.1.2(vue@3.3.4) - '@vueuse/integrations': 10.1.2(focus-trap@7.4.3)(vue@3.3.4) - body-scroll-lock: 4.0.0-beta.0 - focus-trap: 7.4.3 - mark.js: 8.11.1 - minisearch: 6.1.0 - shiki: 0.14.2 - vite: 4.3.8(@types/node@18.16.0) - vue: 3.3.4 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/node' - - '@types/react' - - '@vue/composition-api' - - async-validator - - axios - - change-case - - drauu - - fuse.js - - idb-keyval - - jwt-decode - - less - - nprogress - - qrcode - - react - - react-dom - - sass - - sortablejs - - stylus - - sugarss - - terser - - universal-cookie - dev: true - /vitepress@1.0.0-beta.1(@algolia/client-search@4.14.2)(@types/node@18.16.0): resolution: {integrity: sha512-V2yyCwQ+v9fh7rbnGDLp8M7vHa9sLElexXf/JHtBOsOwv7ed9wt1QI4WUagYgKR3TeoJT9v2s6f0UaQSne0EvQ==} hasBin: true From 768e0122e223fe7386253d8cde220661f5f6e5d5 Mon Sep 17 00:00:00 2001 From: Adam Henley <adamazing@gmail.com> Date: Fri, 9 Jun 2023 16:40:28 +1200 Subject: [PATCH 160/255] Correct timeline spelling Spotted a spelling mistake while browsing the docs. s/Broze/Bronze/ --- packages/mermaid/src/docs/syntax/timeline.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/src/docs/syntax/timeline.md b/packages/mermaid/src/docs/syntax/timeline.md index 4f2fc705b..c9bc9161e 100644 --- a/packages/mermaid/src/docs/syntax/timeline.md +++ b/packages/mermaid/src/docs/syntax/timeline.md @@ -100,7 +100,7 @@ timeline section Stone Age 7600 BC : Britain's oldest known house was built in Orkney, Scotland 6000 BC : Sea levels rise and Britain becomes an island.<br> The people who live here are hunter-gatherers. - section Broze Age + section Bronze Age 2300 BC : People arrive from Europe and settle in Britain. <br>They bring farming and metalworking. : New styles of pottery and ways of burying the dead appear. 2200 BC : The last major building works are completed at Stonehenge.<br> People now bury their dead in stone circles. From a51e6e06f709a0b9c44142c315df791b58171188 Mon Sep 17 00:00:00 2001 From: steph <steph@huynhicode.dev> Date: Thu, 8 Jun 2023 21:55:20 -0700 Subject: [PATCH 161/255] update latest news section --- docs/news/announcements.md | 6 +++--- docs/news/blog.md | 6 ++++++ packages/mermaid/src/docs/news/announcements.md | 6 +++--- packages/mermaid/src/docs/news/blog.md | 6 ++++++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/docs/news/announcements.md b/docs/news/announcements.md index 0782aa328..a843ae419 100644 --- a/docs/news/announcements.md +++ b/docs/news/announcements.md @@ -6,8 +6,8 @@ # Announcements -## [Bad documentation is bad for developers](https://www.mermaidchart.com/blog/posts/bad-documentation-is-bad-for-developers) +## [subhash-halder contributed quadrant charts so you can show your manager what to select - just like the strategy consultants at BCG do](https://www.mermaidchart.com/blog/posts/subhash-halder-contributed-quadrant-charts-so-you-can-show-your-manager-what-to-select-just-like-the-strategy-consultants-at-bcg-do/) -26 April 2023 · 11 mins +8 June 2023 · 7 mins -Documentation tends to be bad because companies and projects don’t fully realize the costs of bad documentation. +A quadrant chart is a useful diagram that helps users visualize data and identify patterns in a data set. diff --git a/docs/news/blog.md b/docs/news/blog.md index 3f99a54f2..48b669d79 100644 --- a/docs/news/blog.md +++ b/docs/news/blog.md @@ -6,6 +6,12 @@ # Blog +## [subhash-halder contributed quadrant charts so you can show your manager what to select - just like the strategy consultants at BCG do](https://www.mermaidchart.com/blog/posts/subhash-halder-contributed-quadrant-charts-so-you-can-show-your-manager-what-to-select-just-like-the-strategy-consultants-at-bcg-do/) + +8 June 2023 · 7 mins + +A quadrant chart is a useful diagram that helps users visualize data and identify patterns in a data set. + ## [Bad documentation is bad for developers](https://www.mermaidchart.com/blog/posts/bad-documentation-is-bad-for-developers) 26 April 2023 · 11 mins diff --git a/packages/mermaid/src/docs/news/announcements.md b/packages/mermaid/src/docs/news/announcements.md index 689b5b6df..b752d3d57 100644 --- a/packages/mermaid/src/docs/news/announcements.md +++ b/packages/mermaid/src/docs/news/announcements.md @@ -1,7 +1,7 @@ # Announcements -## [Bad documentation is bad for developers](https://www.mermaidchart.com/blog/posts/bad-documentation-is-bad-for-developers) +## [subhash-halder contributed quadrant charts so you can show your manager what to select - just like the strategy consultants at BCG do](https://www.mermaidchart.com/blog/posts/subhash-halder-contributed-quadrant-charts-so-you-can-show-your-manager-what-to-select-just-like-the-strategy-consultants-at-bcg-do/) -26 April 2023 · 11 mins +8 June 2023 · 7 mins -Documentation tends to be bad because companies and projects don’t fully realize the costs of bad documentation. +A quadrant chart is a useful diagram that helps users visualize data and identify patterns in a data set. diff --git a/packages/mermaid/src/docs/news/blog.md b/packages/mermaid/src/docs/news/blog.md index f7ca1058e..e62a327b4 100644 --- a/packages/mermaid/src/docs/news/blog.md +++ b/packages/mermaid/src/docs/news/blog.md @@ -1,5 +1,11 @@ # Blog +## [subhash-halder contributed quadrant charts so you can show your manager what to select - just like the strategy consultants at BCG do](https://www.mermaidchart.com/blog/posts/subhash-halder-contributed-quadrant-charts-so-you-can-show-your-manager-what-to-select-just-like-the-strategy-consultants-at-bcg-do/) + +8 June 2023 · 7 mins + +A quadrant chart is a useful diagram that helps users visualize data and identify patterns in a data set. + ## [Bad documentation is bad for developers](https://www.mermaidchart.com/blog/posts/bad-documentation-is-bad-for-developers) 26 April 2023 · 11 mins From 4adc94761dddbbbdeeb20bbeaa6b8d55ebaa95ca Mon Sep 17 00:00:00 2001 From: steph <steph@huynhicode.dev> Date: Thu, 8 Jun 2023 22:00:50 -0700 Subject: [PATCH 162/255] update cSpell --- cSpell.json | 1 + 1 file changed, 1 insertion(+) diff --git a/cSpell.json b/cSpell.json index 786e8ca2c..8be55333b 100644 --- a/cSpell.json +++ b/cSpell.json @@ -114,6 +114,7 @@ "stopx", "stopy", "stylis", + "subhash-halder", "substate", "sveidqvist", "swimm", From 6e657e56a0732f837794e27fb7f9eecdb275fa3d Mon Sep 17 00:00:00 2001 From: Stanley Lim <slim679975@gmail.com> Date: Fri, 9 Jun 2023 10:41:54 -0700 Subject: [PATCH 163/255] Fix link to Tutorials from n00b-overview page --- packages/mermaid/src/docs/community/n00b-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/src/docs/community/n00b-overview.md b/packages/mermaid/src/docs/community/n00b-overview.md index a72e500bd..10f4df82d 100644 --- a/packages/mermaid/src/docs/community/n00b-overview.md +++ b/packages/mermaid/src/docs/community/n00b-overview.md @@ -63,6 +63,6 @@ In fact one can pick up the syntax for it quite easily from the examples given a ## Mermaid is for everyone. -Video [Tutorials](https://mermaid-js.github.io/mermaid/#/../config/Tutorials) are also available for the mermaid [live editor](https://mermaid.live/). +Video [Tutorials](https://mermaid-js.github.io/mermaid/#/./Tutorials) are also available for the mermaid [live editor](https://mermaid.live/). Alternatively you can use Mermaid [Plug-Ins](https://mermaid-js.github.io/mermaid/#/./integrations), with tools you already use, like Google Docs. From 071f490047ab4a967440da2a774c9d4c5c0aa772 Mon Sep 17 00:00:00 2001 From: Stanley Lim <slim679975@gmail.com> Date: Fri, 9 Jun 2023 11:17:03 -0700 Subject: [PATCH 164/255] Run build --- docs/community/n00b-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/community/n00b-overview.md b/docs/community/n00b-overview.md index e0056d912..7314655ab 100644 --- a/docs/community/n00b-overview.md +++ b/docs/community/n00b-overview.md @@ -69,6 +69,6 @@ In fact one can pick up the syntax for it quite easily from the examples given a ## Mermaid is for everyone. -Video [Tutorials](https://mermaid-js.github.io/mermaid/#/../config/Tutorials) are also available for the mermaid [live editor](https://mermaid.live/). +Video [Tutorials](https://mermaid-js.github.io/mermaid/#/./Tutorials) are also available for the mermaid [live editor](https://mermaid.live/). Alternatively you can use Mermaid [Plug-Ins](https://mermaid-js.github.io/mermaid/#/./integrations), with tools you already use, like Google Docs. From 9b6f2ecf42a5b8304930e1ca5e4b25be01840fa7 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Sat, 10 Jun 2023 01:20:48 +0530 Subject: [PATCH 165/255] feat: Add plausible --- .../src/docs/.vitepress/theme/index.ts | 7 ++ packages/mermaid/src/docs/package.json | 1 + pnpm-lock.yaml | 82 ++++++++++++++++--- 3 files changed, 80 insertions(+), 10 deletions(-) diff --git a/packages/mermaid/src/docs/.vitepress/theme/index.ts b/packages/mermaid/src/docs/.vitepress/theme/index.ts index 7a2b033ea..a9c11fdb9 100644 --- a/packages/mermaid/src/docs/.vitepress/theme/index.ts +++ b/packages/mermaid/src/docs/.vitepress/theme/index.ts @@ -9,6 +9,13 @@ import HomePage from '../components/HomePage.vue'; import { getRedirect } from './redirect.js'; import { h } from 'vue'; +import Plausible from 'plausible-tracker'; +// All tracked stats are public and available at https://p.mermaid.live/mermaid.js.org +const { enableAutoPageviews } = Plausible({ + apiHost: 'https://p.mermaid.live', +}); +enableAutoPageviews(); + import Theme from 'vitepress/theme'; import '../style/main.css'; import 'uno.css'; diff --git a/packages/mermaid/src/docs/package.json b/packages/mermaid/src/docs/package.json index aeb3d24f3..64b7b4823 100644 --- a/packages/mermaid/src/docs/package.json +++ b/packages/mermaid/src/docs/package.json @@ -16,6 +16,7 @@ "dependencies": { "@vueuse/core": "^10.1.0", "jiti": "^1.18.2", + "plausible-tracker": "^0.3.8", "vue": "^3.2.47" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f88fda3ee..91a103ce5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -391,6 +391,9 @@ importers: jiti: specifier: ^1.18.2 version: 1.18.2 + plausible-tracker: + specifier: ^0.3.8 + version: 0.3.8 vue: specifier: ^3.2.47 version: 3.2.47 @@ -435,6 +438,61 @@ importers: specifier: ^6.5.4 version: 6.5.4 + packages/mermaid/src/vitepress: + dependencies: + '@vueuse/core': + specifier: ^10.1.0 + version: 10.1.0(vue@3.2.47) + jiti: + specifier: ^1.18.2 + version: 1.18.2 + vue: + specifier: ^3.2.47 + version: 3.2.47 + vue-plausible: + specifier: ^1.3.2 + version: 1.3.2 + devDependencies: + '@iconify-json/carbon': + specifier: ^1.1.16 + version: 1.1.16 + '@unocss/reset': + specifier: ^0.52.0 + version: 0.52.0 + '@vite-pwa/vitepress': + specifier: ^0.0.5 + version: 0.0.5(vite-plugin-pwa@0.15.0) + '@vitejs/plugin-vue': + specifier: ^4.2.1 + version: 4.2.1(vite@4.3.3)(vue@3.2.47) + fast-glob: + specifier: ^3.2.12 + version: 3.2.12 + https-localhost: + specifier: ^4.7.1 + version: 4.7.1 + pathe: + specifier: ^1.1.0 + version: 1.1.0 + unocss: + specifier: ^0.52.0 + version: 0.52.0(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3) + unplugin-vue-components: + specifier: ^0.24.1 + version: 0.24.1(rollup@2.79.1)(vue@3.2.47) + vite: + specifier: ^4.3.3 + version: 4.3.3(@types/node@18.16.0) + vite-plugin-pwa: + specifier: ^0.15.0 + version: 0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) + vitepress: + specifier: 1.0.0-beta.1 + version: 1.0.0-beta.1(@algolia/client-search@4.14.2)(@types/node@18.16.0) + workbox-window: + specifier: ^6.5.4 + version: 6.5.4 + tests/webpack: dependencies: '@mermaid-js/mermaid-example-diagram': @@ -1209,7 +1267,7 @@ packages: gensync: 1.0.0-beta.2 json5: 2.2.1 lodash: 4.17.21 - resolve: 1.22.1 + resolve: 1.22.2 semver: 5.7.1 source-map: 0.5.7 transitivePeerDependencies: @@ -1465,13 +1523,6 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/parser@7.21.2: - resolution: {integrity: sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.21.2 - /@babel/parser@7.21.8: resolution: {integrity: sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==} engines: {node: '>=6.0.0'} @@ -4773,7 +4824,7 @@ packages: /@vue/compiler-sfc@3.2.47: resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} dependencies: - '@babel/parser': 7.21.2 + '@babel/parser': 7.21.8 '@vue/compiler-core': 3.2.47 '@vue/compiler-dom': 3.2.47 '@vue/compiler-ssr': 3.2.47 @@ -12018,6 +12069,11 @@ packages: pathe: 1.1.0 dev: true + /plausible-tracker@0.3.8: + resolution: {integrity: sha512-lmOWYQ7s9KOUJ1R+YTOR3HrjdbxIS2Z4de0P/Jx2dQPteznJl2eX3tXxKClpvbfyGP59B5bbhW8ftN59HbbFSg==} + engines: {node: '>=10'} + dev: false + /plist@3.0.6: resolution: {integrity: sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==} engines: {node: '>=6'} @@ -14277,7 +14333,7 @@ packages: local-pkg: 0.4.3 magic-string: 0.30.0 minimatch: 7.4.6 - resolve: 1.22.1 + resolve: 1.22.2 unplugin: 1.1.0 vue: 3.2.47 transitivePeerDependencies: @@ -14795,6 +14851,12 @@ packages: vue: 3.3.4 dev: true + /vue-plausible@1.3.2: + resolution: {integrity: sha512-7hdLrDjw0+qjdM9hxowOirQSHPCljWwd8scW0tRFHyXAQSE/yBWrJ3EPuEiZlJUoth9ac0KLbHM+wSSkWHttiA==} + dependencies: + plausible-tracker: 0.3.8 + dev: false + /vue@3.2.47: resolution: {integrity: sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==} dependencies: From 88bda42e74ddb6e8debff597e890d4d087eccd24 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Sat, 10 Jun 2023 01:37:39 +0530 Subject: [PATCH 166/255] Use script instead of npm package. --- packages/mermaid/src/docs/.vitepress/config.ts | 13 ++++++++++++- .../mermaid/src/docs/.vitepress/theme/index.ts | 6 ------ packages/mermaid/src/docs/package.json | 1 - pnpm-lock.yaml | 15 +++------------ 4 files changed, 15 insertions(+), 20 deletions(-) diff --git a/packages/mermaid/src/docs/.vitepress/config.ts b/packages/mermaid/src/docs/.vitepress/config.ts index 8403ff069..286c0c871 100644 --- a/packages/mermaid/src/docs/.vitepress/config.ts +++ b/packages/mermaid/src/docs/.vitepress/config.ts @@ -16,7 +16,18 @@ export default defineConfig({ description: 'Create diagrams and visualizations using text and code.', base: '/', markdown: allMarkdownTransformers, - head: [['link', { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }]], + head: [ + ['link', { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }], + [ + 'script', + { + defer: 'true', + 'data-domain': 'mermaid.js.org', + // All tracked stats are public and available at https://p.mermaid.live/mermaid.js.org + src: 'https://p.mermaid.live/js/script.js', + }, + ], + ], themeConfig: { nav: nav(), editLink: { diff --git a/packages/mermaid/src/docs/.vitepress/theme/index.ts b/packages/mermaid/src/docs/.vitepress/theme/index.ts index a9c11fdb9..ba1ac9bdb 100644 --- a/packages/mermaid/src/docs/.vitepress/theme/index.ts +++ b/packages/mermaid/src/docs/.vitepress/theme/index.ts @@ -9,12 +9,6 @@ import HomePage from '../components/HomePage.vue'; import { getRedirect } from './redirect.js'; import { h } from 'vue'; -import Plausible from 'plausible-tracker'; -// All tracked stats are public and available at https://p.mermaid.live/mermaid.js.org -const { enableAutoPageviews } = Plausible({ - apiHost: 'https://p.mermaid.live', -}); -enableAutoPageviews(); import Theme from 'vitepress/theme'; import '../style/main.css'; diff --git a/packages/mermaid/src/docs/package.json b/packages/mermaid/src/docs/package.json index 64b7b4823..aeb3d24f3 100644 --- a/packages/mermaid/src/docs/package.json +++ b/packages/mermaid/src/docs/package.json @@ -16,7 +16,6 @@ "dependencies": { "@vueuse/core": "^10.1.0", "jiti": "^1.18.2", - "plausible-tracker": "^0.3.8", "vue": "^3.2.47" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 91a103ce5..633990a3c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -391,9 +391,6 @@ importers: jiti: specifier: ^1.18.2 version: 1.18.2 - plausible-tracker: - specifier: ^0.3.8 - version: 0.3.8 vue: specifier: ^3.2.47 version: 3.2.47 @@ -446,12 +443,12 @@ importers: jiti: specifier: ^1.18.2 version: 1.18.2 + plausible-tracker: + specifier: ^0.3.8 + version: 0.3.8 vue: specifier: ^3.2.47 version: 3.2.47 - vue-plausible: - specifier: ^1.3.2 - version: 1.3.2 devDependencies: '@iconify-json/carbon': specifier: ^1.1.16 @@ -14851,12 +14848,6 @@ packages: vue: 3.3.4 dev: true - /vue-plausible@1.3.2: - resolution: {integrity: sha512-7hdLrDjw0+qjdM9hxowOirQSHPCljWwd8scW0tRFHyXAQSE/yBWrJ3EPuEiZlJUoth9ac0KLbHM+wSSkWHttiA==} - dependencies: - plausible-tracker: 0.3.8 - dev: false - /vue@3.2.47: resolution: {integrity: sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==} dependencies: From 19fab1f6a77417a55c233f9351602a5b3ee2608d Mon Sep 17 00:00:00 2001 From: Stanley Lim <slim679975@gmail.com> Date: Fri, 9 Jun 2023 16:52:49 -0700 Subject: [PATCH 167/255] Update tutorial link --- docs/community/n00b-overview.md | 2 +- packages/mermaid/src/docs/community/n00b-overview.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/community/n00b-overview.md b/docs/community/n00b-overview.md index 7314655ab..afb110e9e 100644 --- a/docs/community/n00b-overview.md +++ b/docs/community/n00b-overview.md @@ -69,6 +69,6 @@ In fact one can pick up the syntax for it quite easily from the examples given a ## Mermaid is for everyone. -Video [Tutorials](https://mermaid-js.github.io/mermaid/#/./Tutorials) are also available for the mermaid [live editor](https://mermaid.live/). +Video [Tutorials](https://mermaid.js.org/config/Tutorials.html) are also available for the mermaid [live editor](https://mermaid.live/). Alternatively you can use Mermaid [Plug-Ins](https://mermaid-js.github.io/mermaid/#/./integrations), with tools you already use, like Google Docs. diff --git a/packages/mermaid/src/docs/community/n00b-overview.md b/packages/mermaid/src/docs/community/n00b-overview.md index 10f4df82d..e8e84641a 100644 --- a/packages/mermaid/src/docs/community/n00b-overview.md +++ b/packages/mermaid/src/docs/community/n00b-overview.md @@ -63,6 +63,6 @@ In fact one can pick up the syntax for it quite easily from the examples given a ## Mermaid is for everyone. -Video [Tutorials](https://mermaid-js.github.io/mermaid/#/./Tutorials) are also available for the mermaid [live editor](https://mermaid.live/). +Video [Tutorials](https://mermaid.js.org/config/Tutorials.html) are also available for the mermaid [live editor](https://mermaid.live/). Alternatively you can use Mermaid [Plug-Ins](https://mermaid-js.github.io/mermaid/#/./integrations), with tools you already use, like Google Docs. From c76cb93f6f7c175999e05a9d89360d2766321efe Mon Sep 17 00:00:00 2001 From: Adam Henley <adamazing@gmail.com> Date: Sat, 10 Jun 2023 18:27:07 +1200 Subject: [PATCH 168/255] Run docs:build Signed-off-by: Adam Henley <adamazing@gmail.com> --- docs/syntax/timeline.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/syntax/timeline.md b/docs/syntax/timeline.md index f3db4bb59..d9915ff3e 100644 --- a/docs/syntax/timeline.md +++ b/docs/syntax/timeline.md @@ -137,7 +137,7 @@ timeline section Stone Age 7600 BC : Britain's oldest known house was built in Orkney, Scotland 6000 BC : Sea levels rise and Britain becomes an island.<br> The people who live here are hunter-gatherers. - section Broze Age + section Bronze Age 2300 BC : People arrive from Europe and settle in Britain. <br>They bring farming and metalworking. : New styles of pottery and ways of burying the dead appear. 2200 BC : The last major building works are completed at Stonehenge.<br> People now bury their dead in stone circles. @@ -151,7 +151,7 @@ timeline section Stone Age 7600 BC : Britain's oldest known house was built in Orkney, Scotland 6000 BC : Sea levels rise and Britain becomes an island.<br> The people who live here are hunter-gatherers. - section Broze Age + section Bronze Age 2300 BC : People arrive from Europe and settle in Britain. <br>They bring farming and metalworking. : New styles of pottery and ways of burying the dead appear. 2200 BC : The last major building works are completed at Stonehenge.<br> People now bury their dead in stone circles. From d32d935c44496a9e3ab9cad7ee4725b3f4dc8ae6 Mon Sep 17 00:00:00 2001 From: Adam Henley <adamazing@gmail.com> Date: Sat, 10 Jun 2023 23:27:22 +1200 Subject: [PATCH 169/255] Fix Directives Documentation Signed-off-by: Adam Henley <adamazing@gmail.com> --- docs/config/directives.md | 75 +++++++++---------- .../mermaid/src/docs/config/directives.md | 71 +++++++++--------- 2 files changed, 72 insertions(+), 74 deletions(-) diff --git a/docs/config/directives.md b/docs/config/directives.md index e845596ad..27fd767c7 100644 --- a/docs/config/directives.md +++ b/docs/config/directives.md @@ -8,11 +8,11 @@ ## Directives -Directives gives a diagram author the capability to alter the appearance of a diagram before rendering by changing the applied configuration. +Directives give a diagram author the capability to alter the appearance of a diagram before rendering by changing the applied configuration. -The significance of having directives is that you have them available while writing the diagram, and can modify the default global and diagram specific configurations. So, directives are applied on top of the default configurations. The beauty of directives is that you can use them to alter configuration settings for a specific diagram, i.e. at an individual level. +The significance of having directives is that you have them available while writing the diagram, and can modify the default global and diagram-specific configurations. So, directives are applied on top of the default configuration. The beauty of directives is that you can use them to alter configuration settings for a specific diagram, i.e. at an individual level. -While directives allow you to change most of the default configuration settings, there are some that are not available, that too for security reasons. Also, you do have the _option to define the set of configurations_ that you would allow to be available to the diagram author for overriding with help of directives. +While directives allow you to change most of the default configuration settings, there are some that are not available, for security reasons. Also, you have the _option to define the set of configurations_ that you wish to allow diagram authors to override with directives. ## Types of Directives options @@ -20,29 +20,29 @@ Mermaid basically supports two types of configuration options to be overridden b 1. _General/Top Level configurations_ : These are the configurations that are available and applied to all the diagram. **Some of the most important top-level** configurations are: -- theme -- fontFamily -- logLevel -- securityLevel -- startOnLoad -- secure + - theme + - fontFamily + - logLevel + - securityLevel + - startOnLoad + - secure -2. _Diagram specific configurations_ : These are the configurations that are available and applied to a specific diagram. For each diagram there are specific configuration that will alter how that particular diagram looks and behaves. - For example, `mirrorActors` is a configuration that is specific to the `SequenceDiagram` and alter whether the actors are mirrored or not. So this config is available only for the `SequenceDiagram` type. +2. _Diagram-specific configurations_ : These are the configurations that are available and applied to a specific diagram. For each diagram there are specific configuration that will alter how that particular diagram looks and behaves. + For example, `mirrorActors` is a configuration that is specific to the `SequenceDiagram` and alters whether the actors are mirrored or not. So this config is available only for the `SequenceDiagram` type. -**NOTE:** These options listed here are not all the configuration options. To get hold of all the configuration options, please refer to the [defaultConfig.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/defaultConfig.ts) in the source code. +**NOTE:** Not all configuration options are listed here. To get hold of all the configuration options, please refer to the [defaultConfig.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/defaultConfig.ts) in the source code. > **Note** -> We plan to publish a complete list of top-level configurations & all the diagram specific configurations, with their possible values in the docs soon. +> We plan to publish a complete list of top-level configurations & diagram-specific configurations with their possible values in the docs soon. ## Declaring directives Now that we have defined the types of configurations that are available, we can learn how to declare directives. -A directive always starts and end `%%` sign with directive text in between, like `%% {directive_text} %%`. +A directive always starts and ends with `%%` signs with directive text in between, like `%% {directive_text} %%`. Here the structure of a directive text is like a nested key-value pair map or a JSON object with root being _init_. Where all the general configurations are defined in the top level, and all the diagram specific configurations are defined one level deeper with diagram type as key/root for that section. -Following code snippet shows the structure of a directive: +The following code snippet shows the structure of a directive: %%{ init: { @@ -61,14 +61,14 @@ Following code snippet shows the structure of a directive: You can also define the directives in a single line, like this: - %%{init: { **insert argument here**}}%% + %%{init: { **insert configuration options here** } }%% For example, the following code snippet: %%{init: { "sequence": { "mirrorActors":false }}}%% **Notes:** -The json object that is passed as {**argument** } must be valid key value pairs and encased in quotation marks or it will be ignored. +The JSON object that is passed as {**argument**} must be valid key value pairs and encased in quotation marks or it will be ignored. Valid Key Value pairs can be found in config. Example with a simple graph: @@ -87,7 +87,7 @@ A-->B Here the directive declaration will set the `logLevel` to `debug` and the `theme` to `dark` for a rendered mermaid diagram, changing the appearance of the diagram itself. -Note: You can use 'init' or 'initialize' as both acceptable as init directives. Also note that `%%init%%` and `%%initialize%%` directives will be grouped together after they are parsed. This means: +Note: You can use 'init' or 'initialize' as both are acceptable as init directives. Also note that `%%init%%` and `%%initialize%%` directives will be grouped together after they are parsed. ```mermaid-example %%{init: { 'logLevel': 'debug', 'theme': 'forest' } }%% @@ -101,7 +101,7 @@ Note: You can use 'init' or 'initialize' as both acceptable as init directives. ... ``` -parsing the above generates a single `%%init%%` JSON object below, combining the two directives and carrying over the last value given for `loglevel`: +For example, parsing the above generates a single `%%init%%` JSON object below, combining the two directives and carrying over the last value given for `loglevel`: ```json { @@ -115,16 +115,15 @@ This will then be sent to `mermaid.initialize(...)` for rendering. ## Directive Examples -More directive examples for diagram specific configuration overrides -Now that the concept of directives has been explained, Let us see some more examples for directives usage: +Now that the concept of directives has been explained, let us see some more examples of directive usage: -### Changing Theme via directive +### Changing theme via directive -The following code snippet changes theme to forest: +The following code snippet changes `theme` to `forest`: `%%{init: { "theme": "forest" } }%%` -Possible themes value are: `default`,`base`, `dark`, `forest` and `neutral`. +Possible theme values are: `default`,`base`, `dark`, `forest` and `neutral`. Default Value is `default`. Example: @@ -155,7 +154,7 @@ A --> C[End] ### Changing fontFamily via directive -The following code snippet changes fontFamily to rebuchet MS, Verdana, Arial, Sans-Serif: +The following code snippet changes fontFamily to Trebuchet MS, Verdana, Arial, Sans-Serif: `%%{init: { "fontFamily": "Trebuchet MS, Verdana, Arial, Sans-Serif" } }%%` @@ -187,11 +186,11 @@ A --> C[End] ### Changing logLevel via directive -The following code snippet changes logLevel to 2: +The following code snippet changes `logLevel` to `2`: `%%{init: { "logLevel": 2 } }%%` -Possible logLevel values are: +Possible `logLevel` values are: - `1` for _debug_, - `2` for _info_ @@ -234,14 +233,14 @@ Some common flowchart configurations are: - _diagramPadding_: number - _useMaxWidth_: number -For complete list of flowchart configurations, see [defaultConfig.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/defaultConfig.ts) in the source code. -_Soon we plan to publish a complete list all diagram specific configurations updated in the docs_ +For a complete list of flowchart configurations, see [defaultConfig.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/defaultConfig.ts) in the source code. +_Soon we plan to publish a complete list of all diagram-specific configurations updated in the docs._ The following code snippet changes flowchart config: `%%{init: { "flowchart": { "htmlLabels": true, "curve": "linear" } } }%%` -Here were are overriding only the flowchart config, and not the general config, where HtmlLabels is set to true and curve is set to linear. +Here we are overriding only the flowchart config, and not the general config, setting `htmlLabels` to `true` and `curve` to `linear`. ```mermaid-example %%{init: { "flowchart": { "htmlLabels": true, "curve": "linear" } } }%% @@ -267,7 +266,7 @@ A --> C[End] ### Changing Sequence diagram config via directive -Some common sequence configurations are: +Some common sequence diagram configurations are: - _width_: number - _height_: number @@ -278,8 +277,8 @@ Some common sequence configurations are: - _showSequenceNumbers_: boolean - _wrap_: boolean -For complete list of sequence diagram configurations, see _defaultConfig.ts_ in the source code. -_Soon we plan to publish a complete list all diagram specific configurations updated in the docs_ +For a complete list of sequence diagram configurations, see [defaultConfig.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/defaultConfig.ts) in the source code. +_Soon we plan to publish a complete list of all diagram-specific configurations updated in the docs._ So, `wrap` by default has a value of `false` for sequence diagrams. @@ -289,7 +288,7 @@ Let us see an example: sequenceDiagram Alice->Bob: Hello Bob, how are you? -Bob->Alice: Fine, How did you mother like the book I suggested? And did you catch with the new book about alien invasion? +Bob->Alice: Fine, how did you mother like the book I suggested? And did you catch the new book about alien invasion? Alice->Bob: Good. Bob->Alice: Cool ``` @@ -298,7 +297,7 @@ Bob->Alice: Cool sequenceDiagram Alice->Bob: Hello Bob, how are you? -Bob->Alice: Fine, How did you mother like the book I suggested? And did you catch with the new book about alien invasion? +Bob->Alice: Fine, how did you mother like the book I suggested? And did you catch the new book about alien invasion? Alice->Bob: Good. Bob->Alice: Cool ``` @@ -309,13 +308,13 @@ The following code snippet changes sequence diagram config for `wrap` to `true`: `%%{init: { "sequence": { "wrap": true} } }%%` -Using in the diagram above, the wrap will be enabled. +By applying that snippet to the diagram above, `wrap` will be enabled: ```mermaid-example %%{init: { "sequence": { "wrap": true, "width":300 } } }%% sequenceDiagram Alice->Bob: Hello Bob, how are you? -Bob->Alice: Fine, How did you mother like the book I suggested? And did you catch with the new book about alien invasion? +Bob->Alice: Fine, how did you mother like the book I suggested? And did you catch the new book about alien invasion? Alice->Bob: Good. Bob->Alice: Cool ``` @@ -324,7 +323,7 @@ Bob->Alice: Cool %%{init: { "sequence": { "wrap": true, "width":300 } } }%% sequenceDiagram Alice->Bob: Hello Bob, how are you? -Bob->Alice: Fine, How did you mother like the book I suggested? And did you catch with the new book about alien invasion? +Bob->Alice: Fine, how did you mother like the book I suggested? And did you catch the new book about alien invasion? Alice->Bob: Good. Bob->Alice: Cool ``` diff --git a/packages/mermaid/src/docs/config/directives.md b/packages/mermaid/src/docs/config/directives.md index b1e0e6303..c85d1d245 100644 --- a/packages/mermaid/src/docs/config/directives.md +++ b/packages/mermaid/src/docs/config/directives.md @@ -2,11 +2,11 @@ ## Directives -Directives gives a diagram author the capability to alter the appearance of a diagram before rendering by changing the applied configuration. +Directives give a diagram author the capability to alter the appearance of a diagram before rendering by changing the applied configuration. -The significance of having directives is that you have them available while writing the diagram, and can modify the default global and diagram specific configurations. So, directives are applied on top of the default configurations. The beauty of directives is that you can use them to alter configuration settings for a specific diagram, i.e. at an individual level. +The significance of having directives is that you have them available while writing the diagram, and can modify the default global and diagram-specific configurations. So, directives are applied on top of the default configuration. The beauty of directives is that you can use them to alter configuration settings for a specific diagram, i.e. at an individual level. -While directives allow you to change most of the default configuration settings, there are some that are not available, that too for security reasons. Also, you do have the _option to define the set of configurations_ that you would allow to be available to the diagram author for overriding with help of directives. +While directives allow you to change most of the default configuration settings, there are some that are not available, for security reasons. Also, you have the _option to define the set of configurations_ that you wish to allow diagram authors to override with directives. ## Types of Directives options @@ -14,30 +14,30 @@ Mermaid basically supports two types of configuration options to be overridden b 1. _General/Top Level configurations_ : These are the configurations that are available and applied to all the diagram. **Some of the most important top-level** configurations are: -- theme -- fontFamily -- logLevel -- securityLevel -- startOnLoad -- secure + - theme + - fontFamily + - logLevel + - securityLevel + - startOnLoad + - secure -2. _Diagram specific configurations_ : These are the configurations that are available and applied to a specific diagram. For each diagram there are specific configuration that will alter how that particular diagram looks and behaves. - For example, `mirrorActors` is a configuration that is specific to the `SequenceDiagram` and alter whether the actors are mirrored or not. So this config is available only for the `SequenceDiagram` type. +2. _Diagram-specific configurations_ : These are the configurations that are available and applied to a specific diagram. For each diagram there are specific configuration that will alter how that particular diagram looks and behaves. + For example, `mirrorActors` is a configuration that is specific to the `SequenceDiagram` and alters whether the actors are mirrored or not. So this config is available only for the `SequenceDiagram` type. -**NOTE:** These options listed here are not all the configuration options. To get hold of all the configuration options, please refer to the [defaultConfig.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/defaultConfig.ts) in the source code. +**NOTE:** Not all configuration options are listed here. To get hold of all the configuration options, please refer to the [defaultConfig.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/defaultConfig.ts) in the source code. ```note -We plan to publish a complete list of top-level configurations & all the diagram specific configurations, with their possible values in the docs soon. +We plan to publish a complete list of top-level configurations & diagram-specific configurations with their possible values in the docs soon. ``` ## Declaring directives Now that we have defined the types of configurations that are available, we can learn how to declare directives. -A directive always starts and end `%%` sign with directive text in between, like `%% {directive_text} %%`. +A directive always starts and ends with `%%` signs with directive text in between, like `%% {directive_text} %%`. Here the structure of a directive text is like a nested key-value pair map or a JSON object with root being _init_. Where all the general configurations are defined in the top level, and all the diagram specific configurations are defined one level deeper with diagram type as key/root for that section. -Following code snippet shows the structure of a directive: +The following code snippet shows the structure of a directive: ``` %%{ @@ -59,7 +59,7 @@ Following code snippet shows the structure of a directive: You can also define the directives in a single line, like this: ``` -%%{init: { **insert argument here**}}%% +%%{init: { **insert configuration options here** } }%% ``` For example, the following code snippet: @@ -69,7 +69,7 @@ For example, the following code snippet: ``` **Notes:** -The json object that is passed as {**argument** } must be valid key value pairs and encased in quotation marks or it will be ignored. +The JSON object that is passed as {**argument**} must be valid key value pairs and encased in quotation marks or it will be ignored. Valid Key Value pairs can be found in config. Example with a simple graph: @@ -82,7 +82,7 @@ A-->B Here the directive declaration will set the `logLevel` to `debug` and the `theme` to `dark` for a rendered mermaid diagram, changing the appearance of the diagram itself. -Note: You can use 'init' or 'initialize' as both acceptable as init directives. Also note that `%%init%%` and `%%initialize%%` directives will be grouped together after they are parsed. This means: +Note: You can use 'init' or 'initialize' as both are acceptable as init directives. Also note that `%%init%%` and `%%initialize%%` directives will be grouped together after they are parsed. ```mermaid %%{init: { 'logLevel': 'debug', 'theme': 'forest' } }%% @@ -90,7 +90,7 @@ Note: You can use 'init' or 'initialize' as both acceptable as init directives. ... ``` -parsing the above generates a single `%%init%%` JSON object below, combining the two directives and carrying over the last value given for `loglevel`: +For example, parsing the above generates a single `%%init%%` JSON object below, combining the two directives and carrying over the last value given for `loglevel`: ```json { @@ -104,16 +104,15 @@ This will then be sent to `mermaid.initialize(...)` for rendering. ## Directive Examples -More directive examples for diagram specific configuration overrides -Now that the concept of directives has been explained, Let us see some more examples for directives usage: +Now that the concept of directives has been explained, let us see some more examples of directive usage: -### Changing Theme via directive +### Changing theme via directive -The following code snippet changes theme to forest: +The following code snippet changes `theme` to `forest`: `%%{init: { "theme": "forest" } }%%` -Possible themes value are: `default`,`base`, `dark`, `forest` and `neutral`. +Possible theme values are: `default`,`base`, `dark`, `forest` and `neutral`. Default Value is `default`. Example: @@ -132,7 +131,7 @@ A --> C[End] ### Changing fontFamily via directive -The following code snippet changes fontFamily to rebuchet MS, Verdana, Arial, Sans-Serif: +The following code snippet changes fontFamily to Trebuchet MS, Verdana, Arial, Sans-Serif: `%%{init: { "fontFamily": "Trebuchet MS, Verdana, Arial, Sans-Serif" } }%%` @@ -152,11 +151,11 @@ A --> C[End] ### Changing logLevel via directive -The following code snippet changes logLevel to 2: +The following code snippet changes `logLevel` to `2`: `%%{init: { "logLevel": 2 } }%%` -Possible logLevel values are: +Possible `logLevel` values are: - `1` for _debug_, - `2` for _info_ @@ -188,14 +187,14 @@ Some common flowchart configurations are: - _diagramPadding_: number - _useMaxWidth_: number -For complete list of flowchart configurations, see [defaultConfig.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/defaultConfig.ts) in the source code. -_Soon we plan to publish a complete list all diagram specific configurations updated in the docs_ +For a complete list of flowchart configurations, see [defaultConfig.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/defaultConfig.ts) in the source code. +_Soon we plan to publish a complete list of all diagram-specific configurations updated in the docs._ The following code snippet changes flowchart config: `%%{init: { "flowchart": { "htmlLabels": true, "curve": "linear" } } }%%` -Here were are overriding only the flowchart config, and not the general config, where HtmlLabels is set to true and curve is set to linear. +Here we are overriding only the flowchart config, and not the general config, setting `htmlLabels` to `true` and `curve` to `linear`. ```mermaid-example %%{init: { "flowchart": { "htmlLabels": true, "curve": "linear" } } }%% @@ -210,7 +209,7 @@ A --> C[End] ### Changing Sequence diagram config via directive -Some common sequence configurations are: +Some common sequence diagram configurations are: - _width_: number - _height_: number @@ -221,8 +220,8 @@ Some common sequence configurations are: - _showSequenceNumbers_: boolean - _wrap_: boolean -For complete list of sequence diagram configurations, see _defaultConfig.ts_ in the source code. -_Soon we plan to publish a complete list all diagram specific configurations updated in the docs_ +For a complete list of sequence diagram configurations, see [defaultConfig.ts](https://github.com/mermaid-js/mermaid/blob/develop/packages/mermaid/src/defaultConfig.ts) in the source code. +_Soon we plan to publish a complete list of all diagram-specific configurations updated in the docs._ So, `wrap` by default has a value of `false` for sequence diagrams. @@ -232,7 +231,7 @@ Let us see an example: sequenceDiagram Alice->Bob: Hello Bob, how are you? -Bob->Alice: Fine, How did you mother like the book I suggested? And did you catch with the new book about alien invasion? +Bob->Alice: Fine, how did you mother like the book I suggested? And did you catch the new book about alien invasion? Alice->Bob: Good. Bob->Alice: Cool ``` @@ -243,13 +242,13 @@ The following code snippet changes sequence diagram config for `wrap` to `true`: `%%{init: { "sequence": { "wrap": true} } }%%` -Using in the diagram above, the wrap will be enabled. +By applying that snippet to the diagram above, `wrap` will be enabled: ```mermaid-example %%{init: { "sequence": { "wrap": true, "width":300 } } }%% sequenceDiagram Alice->Bob: Hello Bob, how are you? -Bob->Alice: Fine, How did you mother like the book I suggested? And did you catch with the new book about alien invasion? +Bob->Alice: Fine, how did you mother like the book I suggested? And did you catch the new book about alien invasion? Alice->Bob: Good. Bob->Alice: Cool ``` From a754f7b69975091f7704813afdc19712e65117e5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 12 Jun 2023 05:43:36 +0000 Subject: [PATCH 170/255] Update all patch dependencies --- packages/mermaid/src/docs/package.json | 2 +- pnpm-lock.yaml | 152 +++++++++++++++++++++++-- 2 files changed, 144 insertions(+), 10 deletions(-) diff --git a/packages/mermaid/src/docs/package.json b/packages/mermaid/src/docs/package.json index aeb3d24f3..10edf6f36 100644 --- a/packages/mermaid/src/docs/package.json +++ b/packages/mermaid/src/docs/package.json @@ -30,7 +30,7 @@ "unplugin-vue-components": "^0.24.1", "vite": "^4.3.3", "vite-plugin-pwa": "^0.15.0", - "vitepress": "1.0.0-beta.1", + "vitepress": "1.0.0-beta.2", "workbox-window": "^6.5.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f88fda3ee..95f99e519 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -429,8 +429,8 @@ importers: specifier: ^0.15.0 version: 0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) vitepress: - specifier: 1.0.0-beta.1 - version: 1.0.0-beta.1(@algolia/client-search@4.14.2)(@types/node@18.16.0) + specifier: 1.0.0-beta.2 + version: 1.0.0-beta.2(@algolia/client-search@4.14.2)(@types/node@18.16.0)(search-insights@2.6.0) workbox-window: specifier: ^6.5.4 version: 6.5.4 @@ -462,6 +462,29 @@ packages: '@algolia/autocomplete-shared': 1.8.2 dev: true + /@algolia/autocomplete-core@1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.6.0): + resolution: {integrity: sha512-hkG80c9kx9ClVAEcUJbTd2ziVC713x9Bji9Ty4XJfKXlxlsx3iXsoNhAwfeR4ulzIUg7OE5gez0UU1zVDdG7kg==} + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.6.0) + '@algolia/autocomplete-shared': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + dev: true + + /@algolia/autocomplete-plugin-algolia-insights@1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.6.0): + resolution: {integrity: sha512-2LVsf4W66hVHQ3Ua/8k15oPlxjELCztbAkQm/hP42Sw+GLkHAdY1vaVRYziaWq64+Oljfg6FKkZHCdgXH+CGIA==} + peerDependencies: + search-insights: '>= 1 < 3' + dependencies: + '@algolia/autocomplete-shared': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) + search-insights: 2.6.0 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + dev: true + /@algolia/autocomplete-preset-algolia@1.8.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): resolution: {integrity: sha512-J0oTx4me6ZM9kIKPuL3lyU3aB8DEvpVvR6xWmHVROx5rOYJGQcZsdG4ozxwcOyiiu3qxMkIbzntnV1S1VWD8yA==} peerDependencies: @@ -473,10 +496,31 @@ packages: algoliasearch: 4.14.2 dev: true + /@algolia/autocomplete-preset-algolia@1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): + resolution: {integrity: sha512-pqgIm2GNqtCT59Y1ICctIPrYTi34+wNPiNWEclD/yDzp5uDUUsyGe5XrUjCNyQRTKonAlmYxoaEHOn8FWgmBHA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/autocomplete-shared': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) + '@algolia/client-search': 4.14.2 + algoliasearch: 4.14.2 + dev: true + /@algolia/autocomplete-shared@1.8.2: resolution: {integrity: sha512-b6Z/X4MczChMcfhk6kfRmBzPgjoPzuS9KGR4AFsiLulLNRAAqhP+xZTKtMnZGhLuc61I20d5WqlId02AZvcO6g==} dev: true + /@algolia/autocomplete-shared@1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): + resolution: {integrity: sha512-XxX6YDn+7LG+SmdpXEOnj7fc3TjiVpQ0CbGhjLwrd2tYr6LVY2D4Iiu/iuYJ4shvVDWWnpwArSk0uIWC/8OPUA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/client-search': 4.14.2 + algoliasearch: 4.14.2 + dev: true + /@algolia/cache-browser-local-storage@4.14.2: resolution: {integrity: sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA==} dependencies: @@ -2881,6 +2925,10 @@ packages: resolution: {integrity: sha512-NaXVp3I8LdmJ54fn038KHgG7HmbIzZlKS2FkVf6mKcW5bYMJovkx4947joQyZk5yubxOZ+ddHSh79y39Aevufg==} dev: true + /@docsearch/css@3.5.0: + resolution: {integrity: sha512-Ob5FQLubplcBNihAVtriR59FRBeP8u69F6mu4L4yIr60KfsPc10bOV0DoPErJw0zF9IBN2cNLW9qdmt8zWPxyg==} + dev: true + /@docsearch/js@3.3.5(@algolia/client-search@4.14.2): resolution: {integrity: sha512-nZi074OCryZnzva2LNcbQkwBJIND6cvuFI4s1FIe6Ygf6n9g6B/IYUULXNx05rpoCZ+KEoEt3taROpsHBliuSw==} dependencies: @@ -2893,6 +2941,19 @@ packages: - react-dom dev: true + /@docsearch/js@3.5.0(@algolia/client-search@4.14.2)(search-insights@2.6.0): + resolution: {integrity: sha512-WqB+z+zVKSXDkGq028nClT9RvMzfFlemZuIulX5ZwWkdUtl4k7M9cmZA/c6kuZf7FG24XQsMHWuBjeUo9hLRyA==} + dependencies: + '@docsearch/react': 3.5.0(@algolia/client-search@4.14.2)(search-insights@2.6.0) + preact: 10.11.0 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + dev: true + /@docsearch/react@3.3.5(@algolia/client-search@4.14.2): resolution: {integrity: sha512-Zuxf4z5PZ9eIQkVCNu76v1H+KAztKItNn3rLzZa7kpBS+++TgNARITnZeUS7C1DKoAhJZFr6T/H+Lvc6h/iiYg==} peerDependencies: @@ -2915,6 +2976,29 @@ packages: - '@algolia/client-search' dev: true + /@docsearch/react@3.5.0(@algolia/client-search@4.14.2)(search-insights@2.6.0): + resolution: {integrity: sha512-3IG8mmSMzSHNGy2S1VuPyYU9tFCxFpj5Ov8SYwsSHM4yMvFsaO9oFxXocA5lSenliIELhuOuS5+BdxHa/Qlf2A==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + dependencies: + '@algolia/autocomplete-core': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.6.0) + '@algolia/autocomplete-preset-algolia': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) + '@docsearch/css': 3.5.0 + algoliasearch: 4.14.2 + transitivePeerDependencies: + - '@algolia/client-search' + - search-insights + dev: true + /@es-joy/jsdoccomment@0.37.1: resolution: {integrity: sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==} engines: {node: ^14 || ^16 || ^17 || ^18 || ^19 || ^20} @@ -4664,6 +4748,17 @@ packages: vue: 3.3.4 dev: true + /@vitejs/plugin-vue@4.2.3(vite@4.3.9)(vue@3.3.4): + resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 + vue: ^3.2.25 + dependencies: + vite: 4.3.9(@types/node@18.16.0) + vue: 3.3.4 + dev: true + /@vitest/coverage-c8@0.31.0(vitest@0.31.0): resolution: {integrity: sha512-h72qN1D962AO7UefQVulm9JFP5ACS7OfhCdBHioXU8f7ohH/+NTZCgAqmgcfRNHHO/8wLFxx+93YVxhodkEJVA==} peerDependencies: @@ -12878,6 +12973,11 @@ packages: ajv-keywords: 5.1.0(ajv@8.11.0) dev: true + /search-insights@2.6.0: + resolution: {integrity: sha512-vU2/fJ+h/Mkm/DJOe+EaM5cafJv/1rRTZpGJTuFPf/Q5LjzgMDsqPdSaZsAe+GAWHHsfsu+rQSAn6c8IGtBEVw==} + engines: {node: '>=8.16.0'} + dev: true + /secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} dev: true @@ -14432,7 +14532,7 @@ packages: mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 - vite: 4.3.8(@types/node@18.16.0) + vite: 4.3.9(@types/node@18.16.0) transitivePeerDependencies: - '@types/node' - less @@ -14559,6 +14659,39 @@ packages: fsevents: 2.3.2 dev: true + /vite@4.3.9(@types/node@18.16.0): + resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.16.0 + esbuild: 0.17.18 + postcss: 8.4.23 + rollup: 3.21.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /vitepress-plugin-search@1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-alpha.72)(vue@3.3.4): resolution: {integrity: sha512-zG+ev9pw1Mg7htABlFCNXb8XwnKN+qfTKw+vU0Ers6RIrABx+45EAAFBoaL1mEpl1FRFn1o/dQ7F4b8GP6HdGQ==} engines: {node: ^14.13.1 || ^16.7.0 || >=18} @@ -14605,13 +14738,13 @@ packages: - terser dev: true - /vitepress@1.0.0-beta.1(@algolia/client-search@4.14.2)(@types/node@18.16.0): - resolution: {integrity: sha512-V2yyCwQ+v9fh7rbnGDLp8M7vHa9sLElexXf/JHtBOsOwv7ed9wt1QI4WUagYgKR3TeoJT9v2s6f0UaQSne0EvQ==} + /vitepress@1.0.0-beta.2(@algolia/client-search@4.14.2)(@types/node@18.16.0)(search-insights@2.6.0): + resolution: {integrity: sha512-DBXYjtYbm3W1IPPJ2TiCaK/XK+o/2XmL2+jslOGKm+txcbmG0kbeB+vadC5tCUZA9NdA+9Ywj3M4548c7t/SDg==} hasBin: true dependencies: - '@docsearch/css': 3.3.5 - '@docsearch/js': 3.3.5(@algolia/client-search@4.14.2) - '@vitejs/plugin-vue': 4.2.3(vite@4.3.8)(vue@3.3.4) + '@docsearch/css': 3.5.0 + '@docsearch/js': 3.5.0(@algolia/client-search@4.14.2)(search-insights@2.6.0) + '@vitejs/plugin-vue': 4.2.3(vite@4.3.9)(vue@3.3.4) '@vue/devtools-api': 6.5.0 '@vueuse/core': 10.1.2(vue@3.3.4) '@vueuse/integrations': 10.1.2(focus-trap@7.4.3)(vue@3.3.4) @@ -14620,7 +14753,7 @@ packages: mark.js: 8.11.1 minisearch: 6.1.0 shiki: 0.14.2 - vite: 4.3.8(@types/node@18.16.0) + vite: 4.3.9(@types/node@18.16.0) vue: 3.3.4 transitivePeerDependencies: - '@algolia/client-search' @@ -14640,6 +14773,7 @@ packages: - react - react-dom - sass + - search-insights - sortablejs - stylus - sugarss From 26d0e5cb04f0d6286ddcff3a0b99f4430b6fa9c9 Mon Sep 17 00:00:00 2001 From: Oliver Kopp <kopp.dev@gmail.com> Date: Mon, 12 Jun 2023 09:48:02 +0200 Subject: [PATCH 171/255] Rename "info" to "note" --- docs/syntax/flowchart.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/syntax/flowchart.md b/docs/syntax/flowchart.md index 33d663112..95eba3871 100644 --- a/docs/syntax/flowchart.md +++ b/docs/syntax/flowchart.md @@ -790,7 +790,7 @@ This feature is applicable to node labels, edge labels, and subgraph labels. It is possible to bind a click event to a node, the click can lead to either a javascript callback or to a link which will be opened in a new browser tab. -```info +```note This functionality is disabled when using `securityLevel='strict'` and enabled when using `securityLevel='loose'`. ``` @@ -1084,7 +1084,7 @@ You can change the renderer to elk by adding this directive: %%{init: {"flowchart": {"defaultRenderer": "elk"}} }%% -```info +```note Note that the site needs to use mermaid version 9.4+ for this to work and have this featured enabled in the lazy-loading configuration. ``` From ea138ef29f23a4398f5f92728d62cdcbb16b9a3f Mon Sep 17 00:00:00 2001 From: Oliver Kopp <kopp.dev@gmail.com> Date: Mon, 12 Jun 2023 09:48:28 +0200 Subject: [PATCH 172/255] Rename info to note --- packages/mermaid/src/docs/syntax/flowchart.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/docs/syntax/flowchart.md b/packages/mermaid/src/docs/syntax/flowchart.md index 01f23fc74..82b1cb945 100644 --- a/packages/mermaid/src/docs/syntax/flowchart.md +++ b/packages/mermaid/src/docs/syntax/flowchart.md @@ -500,7 +500,7 @@ This feature is applicable to node labels, edge labels, and subgraph labels. It is possible to bind a click event to a node, the click can lead to either a javascript callback or to a link which will be opened in a new browser tab. -```info +```note This functionality is disabled when using `securityLevel='strict'` and enabled when using `securityLevel='loose'`. ``` @@ -745,7 +745,7 @@ You can change the renderer to elk by adding this directive: %%{init: {"flowchart": {"defaultRenderer": "elk"}} }%% ``` -```info +```note Note that the site needs to use mermaid version 9.4+ for this to work and have this featured enabled in the lazy-loading configuration. ``` From bdd3ed41fc6392c3c155b2a0f0f90f38c05c91e5 Mon Sep 17 00:00:00 2001 From: koppor <koppor@users.noreply.github.com> Date: Mon, 12 Jun 2023 07:51:59 +0000 Subject: [PATCH 173/255] Update docs --- docs/syntax/flowchart.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/syntax/flowchart.md b/docs/syntax/flowchart.md index 95eba3871..0dbbc801b 100644 --- a/docs/syntax/flowchart.md +++ b/docs/syntax/flowchart.md @@ -790,9 +790,8 @@ This feature is applicable to node labels, edge labels, and subgraph labels. It is possible to bind a click event to a node, the click can lead to either a javascript callback or to a link which will be opened in a new browser tab. -```note -This functionality is disabled when using `securityLevel='strict'` and enabled when using `securityLevel='loose'`. -``` +> **Note** +> This functionality is disabled when using `securityLevel='strict'` and enabled when using `securityLevel='loose'`. click nodeId callback click nodeId call callback() @@ -1084,9 +1083,8 @@ You can change the renderer to elk by adding this directive: %%{init: {"flowchart": {"defaultRenderer": "elk"}} }%% -```note -Note that the site needs to use mermaid version 9.4+ for this to work and have this featured enabled in the lazy-loading configuration. -``` +> **Note** +> Note that the site needs to use mermaid version 9.4+ for this to work and have this featured enabled in the lazy-loading configuration. ### Width From 8cbe1a90466e7f8405546f05776f8ed96f027069 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Mon, 12 Jun 2023 15:23:43 +0530 Subject: [PATCH 174/255] Fix lint --- packages/mermaid/src/diagrams/c4/c4Renderer.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/mermaid/src/diagrams/c4/c4Renderer.js b/packages/mermaid/src/diagrams/c4/c4Renderer.js index 16960f453..e60e58f21 100644 --- a/packages/mermaid/src/diagrams/c4/c4Renderer.js +++ b/packages/mermaid/src/diagrams/c4/c4Renderer.js @@ -665,13 +665,13 @@ export const draw = function (_text, id, _version, diagObj) { diagram.attr( 'viewBox', box.startx - - conf.diagramMarginX + - ' -' + - (conf.diagramMarginY + extraVertForTitle) + - ' ' + - width + - ' ' + - (height + extraVertForTitle) + conf.diagramMarginX + + ' -' + + (conf.diagramMarginY + extraVertForTitle) + + ' ' + + width + + ' ' + + (height + extraVertForTitle) ); log.debug(`models:`, box); From 5b3e565b639e0ddb9b86036d4cdfebe27b084463 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Mon, 12 Jun 2023 13:25:36 +0300 Subject: [PATCH 175/255] update pnpm-lock.yaml file --- pnpm-lock.yaml | 105 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 100 insertions(+), 5 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 95f99e519..eb32033af 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -435,6 +435,58 @@ importers: specifier: ^6.5.4 version: 6.5.4 + packages/mermaid/src/vitepress: + dependencies: + '@vueuse/core': + specifier: ^10.1.0 + version: 10.1.0(vue@3.2.47) + jiti: + specifier: ^1.18.2 + version: 1.18.2 + vue: + specifier: ^3.2.47 + version: 3.2.47 + devDependencies: + '@iconify-json/carbon': + specifier: ^1.1.16 + version: 1.1.16 + '@unocss/reset': + specifier: ^0.52.0 + version: 0.52.0 + '@vite-pwa/vitepress': + specifier: ^0.0.5 + version: 0.0.5(vite-plugin-pwa@0.15.0) + '@vitejs/plugin-vue': + specifier: ^4.2.1 + version: 4.2.1(vite@4.3.3)(vue@3.2.47) + fast-glob: + specifier: ^3.2.12 + version: 3.2.12 + https-localhost: + specifier: ^4.7.1 + version: 4.7.1 + pathe: + specifier: ^1.1.0 + version: 1.1.0 + unocss: + specifier: ^0.52.0 + version: 0.52.0(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3) + unplugin-vue-components: + specifier: ^0.24.1 + version: 0.24.1(rollup@2.79.1)(vue@3.2.47) + vite: + specifier: ^4.3.3 + version: 4.3.3(@types/node@18.16.0) + vite-plugin-pwa: + specifier: ^0.15.0 + version: 0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) + vitepress: + specifier: 1.0.0-beta.1 + version: 1.0.0-beta.1(@algolia/client-search@4.14.2)(@types/node@18.16.0)(search-insights@2.6.0) + workbox-window: + specifier: ^6.5.4 + version: 6.5.4 + tests/webpack: dependencies: '@mermaid-js/mermaid-example-diagram': @@ -1253,7 +1305,7 @@ packages: gensync: 1.0.0-beta.2 json5: 2.2.1 lodash: 4.17.21 - resolve: 1.22.1 + resolve: 1.22.2 semver: 5.7.1 source-map: 0.5.7 transitivePeerDependencies: @@ -10066,7 +10118,7 @@ packages: jest-pnp-resolver: 1.2.2(jest-resolve@29.5.0) jest-util: 29.5.0 jest-validate: 29.5.0 - resolve: 1.22.1 + resolve: 1.22.2 resolve.exports: 2.0.2 slash: 3.0.0 dev: true @@ -11579,7 +11631,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.1 + resolve: 1.22.2 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -12755,7 +12807,7 @@ packages: /resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: - is-core-module: 2.10.0 + is-core-module: 2.12.1 path-parse: 1.0.7 dev: true @@ -14738,6 +14790,49 @@ packages: - terser dev: true + /vitepress@1.0.0-beta.1(@algolia/client-search@4.14.2)(@types/node@18.16.0)(search-insights@2.6.0): + resolution: {integrity: sha512-V2yyCwQ+v9fh7rbnGDLp8M7vHa9sLElexXf/JHtBOsOwv7ed9wt1QI4WUagYgKR3TeoJT9v2s6f0UaQSne0EvQ==} + hasBin: true + dependencies: + '@docsearch/css': 3.5.0 + '@docsearch/js': 3.5.0(@algolia/client-search@4.14.2)(search-insights@2.6.0) + '@vitejs/plugin-vue': 4.2.3(vite@4.3.9)(vue@3.3.4) + '@vue/devtools-api': 6.5.0 + '@vueuse/core': 10.1.2(vue@3.3.4) + '@vueuse/integrations': 10.1.2(focus-trap@7.4.3)(vue@3.3.4) + body-scroll-lock: 4.0.0-beta.0 + focus-trap: 7.4.3 + mark.js: 8.11.1 + minisearch: 6.1.0 + shiki: 0.14.2 + vite: 4.3.9(@types/node@18.16.0) + vue: 3.3.4 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - less + - nprogress + - qrcode + - react + - react-dom + - sass + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - universal-cookie + dev: true + /vitepress@1.0.0-beta.2(@algolia/client-search@4.14.2)(@types/node@18.16.0)(search-insights@2.6.0): resolution: {integrity: sha512-DBXYjtYbm3W1IPPJ2TiCaK/XK+o/2XmL2+jslOGKm+txcbmG0kbeB+vadC5tCUZA9NdA+9Ywj3M4548c7t/SDg==} hasBin: true @@ -14836,7 +14931,7 @@ packages: strip-literal: 1.0.1 tinybench: 2.4.0 tinypool: 0.5.0 - vite: 4.3.8(@types/node@18.16.0) + vite: 4.3.9(@types/node@18.16.0) vite-node: 0.31.0(@types/node@18.16.0) why-is-node-running: 2.2.2 transitivePeerDependencies: From b11c511c5ce1e5194e13d648e7e8be8c4b2bf570 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Mon, 12 Jun 2023 13:27:40 +0300 Subject: [PATCH 176/255] remove unnecessary `@ts-ignore` and `@ts-nocheck` --- .vite/jisonTransformer.ts | 2 -- __mocks__/d3.ts | 1 - .../interfaces/mermaidAPI.RenderResult.md | 4 ++-- docs/config/setup/modules/mermaidAPI.md | 22 +++++++++---------- packages/mermaid/src/accessibility.spec.ts | 2 -- .../mermaid/src/diagrams/class/classDb.ts | 1 - .../src/diagrams/class/classRenderer-v2.ts | 7 +----- packages/mermaid/src/diagrams/er/erDiagram.ts | 2 +- .../src/diagrams/timeline/timelineRenderer.ts | 4 +--- packages/mermaid/src/mermaidAPI.ts | 9 +------- 10 files changed, 17 insertions(+), 37 deletions(-) diff --git a/.vite/jisonTransformer.ts b/.vite/jisonTransformer.ts index a5734e125..314df8a33 100644 --- a/.vite/jisonTransformer.ts +++ b/.vite/jisonTransformer.ts @@ -1,8 +1,6 @@ -// @ts-ignore No typings for jison import jison from 'jison'; export const transformJison = (src: string): string => { - // @ts-ignore No typings for jison const parser = new jison.Generator(src, { moduleType: 'js', 'token-stack': true, diff --git a/__mocks__/d3.ts b/__mocks__/d3.ts index b472a3181..97bd01665 100644 --- a/__mocks__/d3.ts +++ b/__mocks__/d3.ts @@ -1,4 +1,3 @@ -// @ts-nocheck TODO: Fix TS import { MockedD3 } from '../packages/mermaid/src/tests/MockedD3.js'; export const select = function () { diff --git a/docs/config/setup/interfaces/mermaidAPI.RenderResult.md b/docs/config/setup/interfaces/mermaidAPI.RenderResult.md index f84a51b87..527b46d09 100644 --- a/docs/config/setup/interfaces/mermaidAPI.RenderResult.md +++ b/docs/config/setup/interfaces/mermaidAPI.RenderResult.md @@ -39,7 +39,7 @@ bindFunctions?.(div); // To call bindFunctions only if it's present. #### Defined in -[mermaidAPI.ts:98](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L98) +[mermaidAPI.ts:97](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L97) --- @@ -51,4 +51,4 @@ The svg code for the rendered graph. #### Defined in -[mermaidAPI.ts:88](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L88) +[mermaidAPI.ts:87](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L87) diff --git a/docs/config/setup/modules/mermaidAPI.md b/docs/config/setup/modules/mermaidAPI.md index b5e48b229..591b6841a 100644 --- a/docs/config/setup/modules/mermaidAPI.md +++ b/docs/config/setup/modules/mermaidAPI.md @@ -25,7 +25,7 @@ Renames and re-exports [mermaidAPI](mermaidAPI.md#mermaidapi) #### Defined in -[mermaidAPI.ts:82](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L82) +[mermaidAPI.ts:81](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L81) ## Variables @@ -96,7 +96,7 @@ mermaid.initialize(config); #### Defined in -[mermaidAPI.ts:670](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L670) +[mermaidAPI.ts:663](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L663) ## Functions @@ -127,7 +127,7 @@ Return the last node appended #### Defined in -[mermaidAPI.ts:309](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L309) +[mermaidAPI.ts:308](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L308) --- @@ -153,7 +153,7 @@ the cleaned up svgCode #### Defined in -[mermaidAPI.ts:257](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L257) +[mermaidAPI.ts:256](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L256) --- @@ -179,7 +179,7 @@ the string with all the user styles #### Defined in -[mermaidAPI.ts:186](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L186) +[mermaidAPI.ts:185](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L185) --- @@ -202,7 +202,7 @@ the string with all the user styles #### Defined in -[mermaidAPI.ts:234](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L234) +[mermaidAPI.ts:233](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L233) --- @@ -229,7 +229,7 @@ with an enclosing block that has each of the cssClasses followed by !important; #### Defined in -[mermaidAPI.ts:170](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L170) +[mermaidAPI.ts:169](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L169) --- @@ -249,7 +249,7 @@ with an enclosing block that has each of the cssClasses followed by !important; #### Defined in -[mermaidAPI.ts:156](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L156) +[mermaidAPI.ts:155](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L155) --- @@ -269,7 +269,7 @@ with an enclosing block that has each of the cssClasses followed by !important; #### Defined in -[mermaidAPI.ts:127](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L127) +[mermaidAPI.ts:126](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L126) --- @@ -295,7 +295,7 @@ Put the svgCode into an iFrame. Return the iFrame code #### Defined in -[mermaidAPI.ts:288](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L288) +[mermaidAPI.ts:287](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L287) --- @@ -320,4 +320,4 @@ Remove any existing elements from the given document #### Defined in -[mermaidAPI.ts:359](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L359) +[mermaidAPI.ts:358](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L358) diff --git a/packages/mermaid/src/accessibility.spec.ts b/packages/mermaid/src/accessibility.spec.ts index eac82ee34..7a3ab7f10 100644 --- a/packages/mermaid/src/accessibility.spec.ts +++ b/packages/mermaid/src/accessibility.spec.ts @@ -51,7 +51,6 @@ describe('accessibility', () => { desc: string | null | undefined, givenId: string ) { - // @ts-ignore Required to easily handle the d3 select types const svgAttrSpy = vi.spyOn(svgD3Node, 'attr').mockReturnValue(svgD3Node); addSVGa11yTitleDescription(svgD3Node, title, desc, givenId); expect(svgAttrSpy).toHaveBeenCalledWith('aria-labelledby', `chart-title-${givenId}`); @@ -63,7 +62,6 @@ describe('accessibility', () => { desc: string | null | undefined, givenId: string ) { - // @ts-ignore Required to easily handle the d3 select types const svgAttrSpy = vi.spyOn(svgD3Node, 'attr').mockReturnValue(svgD3Node); addSVGa11yTitleDescription(svgD3Node, title, desc, givenId); expect(svgAttrSpy).toHaveBeenCalledWith('aria-describedby', `chart-desc-${givenId}`); diff --git a/packages/mermaid/src/diagrams/class/classDb.ts b/packages/mermaid/src/diagrams/class/classDb.ts index d9e17db54..a0a7f05d9 100644 --- a/packages/mermaid/src/diagrams/class/classDb.ts +++ b/packages/mermaid/src/diagrams/class/classDb.ts @@ -367,7 +367,6 @@ export const relationType = { const setupToolTips = function (element: Element) { let tooltipElem: Selection<HTMLDivElement, unknown, HTMLElement, unknown> = select('.mermaidTooltip'); - // @ts-ignore - _groups is a dynamic property if ((tooltipElem._groups || tooltipElem)[0][0] === null) { tooltipElem = select('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0); } diff --git a/packages/mermaid/src/diagrams/class/classRenderer-v2.ts b/packages/mermaid/src/diagrams/class/classRenderer-v2.ts index 352002242..b0a8ce89c 100644 --- a/packages/mermaid/src/diagrams/class/classRenderer-v2.ts +++ b/packages/mermaid/src/diagrams/class/classRenderer-v2.ts @@ -353,15 +353,11 @@ export const draw = async function (text: string, id: string, _version: string, } const root = securityLevel === 'sandbox' - ? // @ts-ignore Ignore type error for now - - select(sandboxElement.nodes()[0].contentDocument.body) + ? select(sandboxElement.nodes()[0].contentDocument.body) : select('body'); - // @ts-ignore Ignore type error for now const svg = root.select(`[id="${id}"]`); // Run the renderer. This is what draws the final graph. - // @ts-ignore Ignore type error for now const element = root.select('#' + id + ' g'); await render( element, @@ -377,7 +373,6 @@ export const draw = async function (text: string, id: string, _version: string, // Add label rects for non html labels if (!conf?.htmlLabels) { - // @ts-ignore Ignore type error for now const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document; const labels = doc.querySelectorAll('[id="' + id + '"] .edgeLabel .label'); for (const label of labels) { diff --git a/packages/mermaid/src/diagrams/er/erDiagram.ts b/packages/mermaid/src/diagrams/er/erDiagram.ts index da3d777ad..7cc9e37b2 100644 --- a/packages/mermaid/src/diagrams/er/erDiagram.ts +++ b/packages/mermaid/src/diagrams/er/erDiagram.ts @@ -1,4 +1,4 @@ -// @ts-ignore: TODO Fix ts errors +// @ts-ignore: TODs Fix ts errors import erParser from './parser/erDiagram.jison'; import erDb from './erDb.js'; import erRenderer from './erRenderer.js'; diff --git a/packages/mermaid/src/diagrams/timeline/timelineRenderer.ts b/packages/mermaid/src/diagrams/timeline/timelineRenderer.ts index 65abe8fd9..0b82ffdce 100644 --- a/packages/mermaid/src/diagrams/timeline/timelineRenderer.ts +++ b/packages/mermaid/src/diagrams/timeline/timelineRenderer.ts @@ -46,11 +46,9 @@ export const draw = function (text: string, id: string, version: string, diagObj } const root = securityLevel === 'sandbox' - ? // @ts-ignore d3 types are wrong - select(sandboxElement.nodes()[0].contentDocument.body) + ? select(sandboxElement.nodes()[0].contentDocument.body) : select('body'); - // @ts-ignore d3 types are wrong const svg = root.select('#' + id); svg.append('g'); diff --git a/packages/mermaid/src/mermaidAPI.ts b/packages/mermaid/src/mermaidAPI.ts index 755fa8258..753e4944a 100644 --- a/packages/mermaid/src/mermaidAPI.ts +++ b/packages/mermaid/src/mermaidAPI.ts @@ -78,7 +78,6 @@ export interface ParseOptions { } // This makes it clear that we're working with a d3 selected element of some kind, even though it's hard to specify the exact type. -// @ts-ignore Could replicate the type definition in d3. This also makes it possible to use the untyped info from the js diagram files. export type D3Element = any; export interface RenderResult { @@ -491,13 +490,7 @@ const render = async function ( ? diag.renderer.getClasses(text, diag) : {}; - const rules = createUserStyles( - config, - graphType, - // @ts-ignore convert renderer to TS. - diagramClassDefs, - idSelector - ); + const rules = createUserStyles(config, graphType, diagramClassDefs, idSelector); const style1 = document.createElement('style'); style1.innerHTML = rules; From e688138167f84e576a954f0385e202a18bc28b45 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Mon, 12 Jun 2023 14:45:08 +0300 Subject: [PATCH 177/255] pref: change detectors from `.match` into `.test` there is no need for matching, capturing results, and validating nullablity just using `.test` would be enough and significantly faster for more info, see https://stackoverflow.com/10940138/16476610 --- packages/mermaid-example-diagram/src/detector.ts | 2 +- packages/mermaid-zenuml/src/detector.ts | 3 +-- packages/mermaid/src/diagrams/c4/c4Detector.ts | 2 +- packages/mermaid/src/diagrams/class/classDetector-V2.ts | 7 ++----- packages/mermaid/src/diagrams/class/classDetector.ts | 2 +- packages/mermaid/src/diagrams/er/erDetector.ts | 2 +- packages/mermaid/src/diagrams/flowchart/elk/detector.ts | 4 ++-- .../mermaid/src/diagrams/flowchart/flowDetector-v2.ts | 4 ++-- packages/mermaid/src/diagrams/flowchart/flowDetector.ts | 2 +- packages/mermaid/src/diagrams/gantt/ganttDetector.ts | 2 +- packages/mermaid/src/diagrams/git/gitGraphDetector.ts | 2 +- packages/mermaid/src/diagrams/info/infoDetector.ts | 2 +- packages/mermaid/src/diagrams/mindmap/detector.ts | 2 +- packages/mermaid/src/diagrams/pie/pieDetector.ts | 2 +- .../src/diagrams/quadrant-chart/quadrantDetector.ts | 2 +- .../src/diagrams/requirement/requirementDetector.ts | 2 +- .../mermaid/src/diagrams/sequence/sequenceDetector.ts | 2 +- packages/mermaid/src/diagrams/state/stateDetector-V2.ts | 9 +++------ packages/mermaid/src/diagrams/state/stateDetector.ts | 2 +- packages/mermaid/src/diagrams/timeline/detector.ts | 2 +- .../mermaid/src/diagrams/user-journey/journeyDetector.ts | 2 +- 21 files changed, 26 insertions(+), 33 deletions(-) diff --git a/packages/mermaid-example-diagram/src/detector.ts b/packages/mermaid-example-diagram/src/detector.ts index 93fd42762..54b9d555b 100644 --- a/packages/mermaid-example-diagram/src/detector.ts +++ b/packages/mermaid-example-diagram/src/detector.ts @@ -3,7 +3,7 @@ import type { ExternalDiagramDefinition } from 'mermaid'; const id = 'example-diagram'; const detector = (txt: string) => { - return txt.match(/^\s*example-diagram/) !== null; + return /^\s*example-diagram/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid-zenuml/src/detector.ts b/packages/mermaid-zenuml/src/detector.ts index b22af469f..d782ffe33 100644 --- a/packages/mermaid-zenuml/src/detector.ts +++ b/packages/mermaid-zenuml/src/detector.ts @@ -1,10 +1,9 @@ import type { ExternalDiagramDefinition } from 'mermaid'; const id = 'zenuml'; -const regexp = /^\s*zenuml/; const detector = (txt: string) => { - return txt.match(regexp) !== null; + return /^\s*zenuml/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/c4/c4Detector.ts b/packages/mermaid/src/diagrams/c4/c4Detector.ts index e6e82c6be..d8f6c6adc 100644 --- a/packages/mermaid/src/diagrams/c4/c4Detector.ts +++ b/packages/mermaid/src/diagrams/c4/c4Detector.ts @@ -3,7 +3,7 @@ import type { ExternalDiagramDefinition } from '../../diagram-api/types.js'; const id = 'c4'; const detector = (txt: string) => { - return txt.match(/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/) !== null; + return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/class/classDetector-V2.ts b/packages/mermaid/src/diagrams/class/classDetector-V2.ts index 9eda53a4b..4ec6fe158 100644 --- a/packages/mermaid/src/diagrams/class/classDetector-V2.ts +++ b/packages/mermaid/src/diagrams/class/classDetector-V2.ts @@ -4,14 +4,11 @@ const id = 'classDiagram'; const detector: DiagramDetector = (txt, config) => { // If we have configured to use dagre-wrapper then we should return true in this function for classDiagram code thus making it use the new class diagram - if ( - txt.match(/^\s*classDiagram/) !== null && - config?.class?.defaultRenderer === 'dagre-wrapper' - ) { + if (/^\s*classDiagram/.test(txt) && config?.class?.defaultRenderer === 'dagre-wrapper') { return true; } // We have not opted to use the new renderer so we should return true if we detect a class diagram - return txt.match(/^\s*classDiagram-v2/) !== null; + return /^\s*classDiagram-v2/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/class/classDetector.ts b/packages/mermaid/src/diagrams/class/classDetector.ts index e2eee9bb3..fec172b0a 100644 --- a/packages/mermaid/src/diagrams/class/classDetector.ts +++ b/packages/mermaid/src/diagrams/class/classDetector.ts @@ -8,7 +8,7 @@ const detector: DiagramDetector = (txt, config) => { return false; } // We have not opted to use the new renderer so we should return true if we detect a class diagram - return txt.match(/^\s*classDiagram/) !== null; + return /^\s*classDiagram/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/er/erDetector.ts b/packages/mermaid/src/diagrams/er/erDetector.ts index b8a191af2..a708be257 100644 --- a/packages/mermaid/src/diagrams/er/erDetector.ts +++ b/packages/mermaid/src/diagrams/er/erDetector.ts @@ -3,7 +3,7 @@ import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-a const id = 'er'; const detector: DiagramDetector = (txt) => { - return txt.match(/^\s*erDiagram/) !== null; + return /^\s*erDiagram/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/flowchart/elk/detector.ts b/packages/mermaid/src/diagrams/flowchart/elk/detector.ts index 482bc961c..f2c707aa3 100644 --- a/packages/mermaid/src/diagrams/flowchart/elk/detector.ts +++ b/packages/mermaid/src/diagrams/flowchart/elk/detector.ts @@ -6,9 +6,9 @@ const id = 'flowchart-elk'; const detector: DiagramDetector = (txt: string, config?: MermaidConfig): boolean => { if ( // If diagram explicitly states flowchart-elk - txt.match(/^\s*flowchart-elk/) || + /^\s*flowchart-elk/.test(txt) || // If a flowchart/graph diagram has their default renderer set to elk - (txt.match(/^\s*flowchart|graph/) && config?.flowchart?.defaultRenderer === 'elk') + (/^\s*flowchart|graph/.test(txt) && config?.flowchart?.defaultRenderer === 'elk') ) { return true; } diff --git a/packages/mermaid/src/diagrams/flowchart/flowDetector-v2.ts b/packages/mermaid/src/diagrams/flowchart/flowDetector-v2.ts index 9c00545bf..36df8ddfc 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowDetector-v2.ts +++ b/packages/mermaid/src/diagrams/flowchart/flowDetector-v2.ts @@ -12,10 +12,10 @@ const detector: DiagramDetector = (txt, config) => { } // If we have configured to use dagre-wrapper then we should return true in this function for graph code thus making it use the new flowchart diagram - if (txt.match(/^\s*graph/) !== null && config?.flowchart?.defaultRenderer === 'dagre-wrapper') { + if (/^\s*graph/.test(txt) && config?.flowchart?.defaultRenderer === 'dagre-wrapper') { return true; } - return txt.match(/^\s*flowchart/) !== null; + return /^\s*flowchart/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/flowchart/flowDetector.ts b/packages/mermaid/src/diagrams/flowchart/flowDetector.ts index 84aafa249..d49c32389 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowDetector.ts +++ b/packages/mermaid/src/diagrams/flowchart/flowDetector.ts @@ -11,7 +11,7 @@ const detector: DiagramDetector = (txt, config) => { ) { return false; } - return txt.match(/^\s*graph/) !== null; + return /^\s*graph/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/gantt/ganttDetector.ts b/packages/mermaid/src/diagrams/gantt/ganttDetector.ts index 4a736cb90..211d41cc4 100644 --- a/packages/mermaid/src/diagrams/gantt/ganttDetector.ts +++ b/packages/mermaid/src/diagrams/gantt/ganttDetector.ts @@ -3,7 +3,7 @@ import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-a const id = 'gantt'; const detector: DiagramDetector = (txt) => { - return txt.match(/^\s*gantt/) !== null; + return /^\s*gantt/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/git/gitGraphDetector.ts b/packages/mermaid/src/diagrams/git/gitGraphDetector.ts index aeb37e5bc..83f72a4c7 100644 --- a/packages/mermaid/src/diagrams/git/gitGraphDetector.ts +++ b/packages/mermaid/src/diagrams/git/gitGraphDetector.ts @@ -4,7 +4,7 @@ import type { ExternalDiagramDefinition } from '../../diagram-api/types.js'; const id = 'gitGraph'; const detector: DiagramDetector = (txt) => { - return txt.match(/^\s*gitGraph/) !== null; + return /^\s*gitGraph/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/info/infoDetector.ts b/packages/mermaid/src/diagrams/info/infoDetector.ts index ad9b9163d..433dc5296 100644 --- a/packages/mermaid/src/diagrams/info/infoDetector.ts +++ b/packages/mermaid/src/diagrams/info/infoDetector.ts @@ -3,7 +3,7 @@ import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-a const id = 'info'; const detector: DiagramDetector = (txt) => { - return txt.match(/^\s*info/) !== null; + return /^\s*info/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/mindmap/detector.ts b/packages/mermaid/src/diagrams/mindmap/detector.ts index 95e16dea9..0ab3187f7 100644 --- a/packages/mermaid/src/diagrams/mindmap/detector.ts +++ b/packages/mermaid/src/diagrams/mindmap/detector.ts @@ -2,7 +2,7 @@ import type { ExternalDiagramDefinition } from '../../diagram-api/types.js'; const id = 'mindmap'; const detector = (txt: string) => { - return txt.match(/^\s*mindmap/) !== null; + return /^\s*mindmap/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/pie/pieDetector.ts b/packages/mermaid/src/diagrams/pie/pieDetector.ts index 34d3c0cf6..b0c0df681 100644 --- a/packages/mermaid/src/diagrams/pie/pieDetector.ts +++ b/packages/mermaid/src/diagrams/pie/pieDetector.ts @@ -3,7 +3,7 @@ import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-a const id = 'pie'; const detector: DiagramDetector = (txt) => { - return txt.match(/^\s*pie/) !== null; + return /^\s*pie/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDetector.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDetector.ts index 06d02356b..ebb7195f6 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDetector.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDetector.ts @@ -3,7 +3,7 @@ import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-a const id = 'quadrantChart'; const detector: DiagramDetector = (txt) => { - return txt.match(/^\s*quadrantChart/) !== null; + return /^\s*quadrantChart/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/requirement/requirementDetector.ts b/packages/mermaid/src/diagrams/requirement/requirementDetector.ts index 87fcea790..996c132cf 100644 --- a/packages/mermaid/src/diagrams/requirement/requirementDetector.ts +++ b/packages/mermaid/src/diagrams/requirement/requirementDetector.ts @@ -3,7 +3,7 @@ import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-a const id = 'requirement'; const detector: DiagramDetector = (txt) => { - return txt.match(/^\s*requirement(Diagram)?/) !== null; + return /^\s*requirement(Diagram)?/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/sequence/sequenceDetector.ts b/packages/mermaid/src/diagrams/sequence/sequenceDetector.ts index a808feea2..0aa7de994 100644 --- a/packages/mermaid/src/diagrams/sequence/sequenceDetector.ts +++ b/packages/mermaid/src/diagrams/sequence/sequenceDetector.ts @@ -3,7 +3,7 @@ import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-a const id = 'sequence'; const detector: DiagramDetector = (txt) => { - return txt.match(/^\s*sequenceDiagram/) !== null; + return /^\s*sequenceDiagram/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/state/stateDetector-V2.ts b/packages/mermaid/src/diagrams/state/stateDetector-V2.ts index 8a96e93a2..313c487b6 100644 --- a/packages/mermaid/src/diagrams/state/stateDetector-V2.ts +++ b/packages/mermaid/src/diagrams/state/stateDetector-V2.ts @@ -2,14 +2,11 @@ import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-a const id = 'stateDiagram'; -const detector: DiagramDetector = (text, config) => { - if (text.match(/^\s*stateDiagram-v2/) !== null) { +const detector: DiagramDetector = (txt, config) => { + if (/^\s*stateDiagram-v2/.test(txt)) { return true; } - if (text.match(/^\s*stateDiagram/) && config?.state?.defaultRenderer === 'dagre-wrapper') { - return true; - } - if (text.match(/^\s*stateDiagram/) && config?.state?.defaultRenderer === 'dagre-wrapper') { + if (/^\s*stateDiagram/.test(txt) && config?.state?.defaultRenderer === 'dagre-wrapper') { return true; } return false; diff --git a/packages/mermaid/src/diagrams/state/stateDetector.ts b/packages/mermaid/src/diagrams/state/stateDetector.ts index eb252305c..28e121a07 100644 --- a/packages/mermaid/src/diagrams/state/stateDetector.ts +++ b/packages/mermaid/src/diagrams/state/stateDetector.ts @@ -8,7 +8,7 @@ const detector: DiagramDetector = (txt, config) => { if (config?.state?.defaultRenderer === 'dagre-wrapper') { return false; } - return txt.match(/^\s*stateDiagram/) !== null; + return /^\s*stateDiagram/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/timeline/detector.ts b/packages/mermaid/src/diagrams/timeline/detector.ts index 57d8f66ad..60fecb832 100644 --- a/packages/mermaid/src/diagrams/timeline/detector.ts +++ b/packages/mermaid/src/diagrams/timeline/detector.ts @@ -3,7 +3,7 @@ import type { ExternalDiagramDefinition } from '../../diagram-api/types.js'; const id = 'timeline'; const detector = (txt: string) => { - return txt.match(/^\s*timeline/) !== null; + return /^\s*timeline/.test(txt); }; const loader = async () => { diff --git a/packages/mermaid/src/diagrams/user-journey/journeyDetector.ts b/packages/mermaid/src/diagrams/user-journey/journeyDetector.ts index 0dd488782..9d355ce9b 100644 --- a/packages/mermaid/src/diagrams/user-journey/journeyDetector.ts +++ b/packages/mermaid/src/diagrams/user-journey/journeyDetector.ts @@ -3,7 +3,7 @@ import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-a const id = 'journey'; const detector: DiagramDetector = (txt) => { - return txt.match(/^\s*journey/) !== null; + return /^\s*journey/.test(txt); }; const loader = async () => { From 6ced1673b0f53ee528692176dea785e5580aecbf Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Mon, 12 Jun 2023 15:19:54 +0300 Subject: [PATCH 178/255] standardize detector function definition with `DiagramDetector` type --- packages/mermaid/src/diagrams/c4/c4Detector.ts | 4 ++-- packages/mermaid/src/diagrams/flowchart/elk/detector.ts | 3 +-- packages/mermaid/src/diagrams/mindmap/detector.ts | 4 ++-- packages/mermaid/src/diagrams/timeline/detector.ts | 4 ++-- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/mermaid/src/diagrams/c4/c4Detector.ts b/packages/mermaid/src/diagrams/c4/c4Detector.ts index d8f6c6adc..2e32496b2 100644 --- a/packages/mermaid/src/diagrams/c4/c4Detector.ts +++ b/packages/mermaid/src/diagrams/c4/c4Detector.ts @@ -1,8 +1,8 @@ -import type { ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; const id = 'c4'; -const detector = (txt: string) => { +const detector: DiagramDetector = (txt) => { return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt); }; diff --git a/packages/mermaid/src/diagrams/flowchart/elk/detector.ts b/packages/mermaid/src/diagrams/flowchart/elk/detector.ts index f2c707aa3..8d7f7c58c 100644 --- a/packages/mermaid/src/diagrams/flowchart/elk/detector.ts +++ b/packages/mermaid/src/diagrams/flowchart/elk/detector.ts @@ -1,9 +1,8 @@ -import type { MermaidConfig } from '../../../config.type.js'; import type { ExternalDiagramDefinition, DiagramDetector } from '../../../diagram-api/types.js'; const id = 'flowchart-elk'; -const detector: DiagramDetector = (txt: string, config?: MermaidConfig): boolean => { +const detector: DiagramDetector = (txt, config): boolean => { if ( // If diagram explicitly states flowchart-elk /^\s*flowchart-elk/.test(txt) || diff --git a/packages/mermaid/src/diagrams/mindmap/detector.ts b/packages/mermaid/src/diagrams/mindmap/detector.ts index 0ab3187f7..8627b41ae 100644 --- a/packages/mermaid/src/diagrams/mindmap/detector.ts +++ b/packages/mermaid/src/diagrams/mindmap/detector.ts @@ -1,7 +1,7 @@ -import type { ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; const id = 'mindmap'; -const detector = (txt: string) => { +const detector: DiagramDetector = (txt) => { return /^\s*mindmap/.test(txt); }; diff --git a/packages/mermaid/src/diagrams/timeline/detector.ts b/packages/mermaid/src/diagrams/timeline/detector.ts index 60fecb832..57848b2a2 100644 --- a/packages/mermaid/src/diagrams/timeline/detector.ts +++ b/packages/mermaid/src/diagrams/timeline/detector.ts @@ -1,8 +1,8 @@ -import type { ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; const id = 'timeline'; -const detector = (txt: string) => { +const detector: DiagramDetector = (txt) => { return /^\s*timeline/.test(txt); }; From 9573f336c3f48a05125d2011588e18bce921f565 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Mon, 12 Jun 2023 15:28:45 +0300 Subject: [PATCH 179/255] standardize detectors loeader function definition with `DiagramLoader` type --- packages/mermaid/src/diagrams/c4/c4Detector.ts | 8 ++++++-- packages/mermaid/src/diagrams/class/classDetector-V2.ts | 8 ++++++-- packages/mermaid/src/diagrams/class/classDetector.ts | 8 ++++++-- packages/mermaid/src/diagrams/er/erDetector.ts | 8 ++++++-- packages/mermaid/src/diagrams/flowchart/elk/detector.ts | 8 ++++++-- .../mermaid/src/diagrams/flowchart/flowDetector-v2.ts | 4 ++-- packages/mermaid/src/diagrams/flowchart/flowDetector.ts | 8 ++++++-- packages/mermaid/src/diagrams/gantt/ganttDetector.ts | 8 ++++++-- packages/mermaid/src/diagrams/git/gitGraphDetector.ts | 4 ++-- packages/mermaid/src/diagrams/info/infoDetector.ts | 8 ++++++-- packages/mermaid/src/diagrams/mindmap/detector.ts | 8 ++++++-- packages/mermaid/src/diagrams/pie/pieDetector.ts | 8 ++++++-- .../src/diagrams/quadrant-chart/quadrantDetector.ts | 8 ++++++-- .../src/diagrams/requirement/requirementDetector.ts | 8 ++++++-- .../mermaid/src/diagrams/sequence/sequenceDetector.ts | 8 ++++++-- packages/mermaid/src/diagrams/state/stateDetector-V2.ts | 8 ++++++-- packages/mermaid/src/diagrams/state/stateDetector.ts | 8 ++++++-- packages/mermaid/src/diagrams/timeline/detector.ts | 8 ++++++-- .../mermaid/src/diagrams/user-journey/journeyDetector.ts | 8 ++++++-- 19 files changed, 106 insertions(+), 38 deletions(-) diff --git a/packages/mermaid/src/diagrams/c4/c4Detector.ts b/packages/mermaid/src/diagrams/c4/c4Detector.ts index 2e32496b2..b06ab6cb1 100644 --- a/packages/mermaid/src/diagrams/c4/c4Detector.ts +++ b/packages/mermaid/src/diagrams/c4/c4Detector.ts @@ -1,4 +1,8 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'c4'; @@ -6,7 +10,7 @@ const detector: DiagramDetector = (txt) => { return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./c4Diagram.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/class/classDetector-V2.ts b/packages/mermaid/src/diagrams/class/classDetector-V2.ts index 4ec6fe158..1823ad002 100644 --- a/packages/mermaid/src/diagrams/class/classDetector-V2.ts +++ b/packages/mermaid/src/diagrams/class/classDetector-V2.ts @@ -1,4 +1,8 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'classDiagram'; @@ -11,7 +15,7 @@ const detector: DiagramDetector = (txt, config) => { return /^\s*classDiagram-v2/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./classDiagram-v2.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/class/classDetector.ts b/packages/mermaid/src/diagrams/class/classDetector.ts index fec172b0a..d814003cb 100644 --- a/packages/mermaid/src/diagrams/class/classDetector.ts +++ b/packages/mermaid/src/diagrams/class/classDetector.ts @@ -1,4 +1,8 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'class'; @@ -11,7 +15,7 @@ const detector: DiagramDetector = (txt, config) => { return /^\s*classDiagram/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./classDiagram.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/er/erDetector.ts b/packages/mermaid/src/diagrams/er/erDetector.ts index a708be257..7da6804e0 100644 --- a/packages/mermaid/src/diagrams/er/erDetector.ts +++ b/packages/mermaid/src/diagrams/er/erDetector.ts @@ -1,4 +1,8 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'er'; @@ -6,7 +10,7 @@ const detector: DiagramDetector = (txt) => { return /^\s*erDiagram/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./erDiagram.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/flowchart/elk/detector.ts b/packages/mermaid/src/diagrams/flowchart/elk/detector.ts index 8d7f7c58c..6cfcf2619 100644 --- a/packages/mermaid/src/diagrams/flowchart/elk/detector.ts +++ b/packages/mermaid/src/diagrams/flowchart/elk/detector.ts @@ -1,4 +1,8 @@ -import type { ExternalDiagramDefinition, DiagramDetector } from '../../../diagram-api/types.js'; +import type { + ExternalDiagramDefinition, + DiagramDetector, + DiagramLoader, +} from '../../../diagram-api/types.js'; const id = 'flowchart-elk'; @@ -14,7 +18,7 @@ const detector: DiagramDetector = (txt, config): boolean => { return false; }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./flowchart-elk-definition.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/flowchart/flowDetector-v2.ts b/packages/mermaid/src/diagrams/flowchart/flowDetector-v2.ts index 36df8ddfc..dda5a67f0 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowDetector-v2.ts +++ b/packages/mermaid/src/diagrams/flowchart/flowDetector-v2.ts @@ -1,4 +1,4 @@ -import type { DiagramDetector } from '../../diagram-api/types.js'; +import type { DiagramDetector, DiagramLoader } from '../../diagram-api/types.js'; import type { ExternalDiagramDefinition } from '../../diagram-api/types.js'; const id = 'flowchart-v2'; @@ -18,7 +18,7 @@ const detector: DiagramDetector = (txt, config) => { return /^\s*flowchart/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./flowDiagram-v2.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/flowchart/flowDetector.ts b/packages/mermaid/src/diagrams/flowchart/flowDetector.ts index d49c32389..8859ca883 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowDetector.ts +++ b/packages/mermaid/src/diagrams/flowchart/flowDetector.ts @@ -1,4 +1,8 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'flowchart'; @@ -14,7 +18,7 @@ const detector: DiagramDetector = (txt, config) => { return /^\s*graph/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./flowDiagram.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/gantt/ganttDetector.ts b/packages/mermaid/src/diagrams/gantt/ganttDetector.ts index 211d41cc4..e2f2a9784 100644 --- a/packages/mermaid/src/diagrams/gantt/ganttDetector.ts +++ b/packages/mermaid/src/diagrams/gantt/ganttDetector.ts @@ -1,4 +1,8 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'gantt'; @@ -6,7 +10,7 @@ const detector: DiagramDetector = (txt) => { return /^\s*gantt/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./ganttDiagram.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/git/gitGraphDetector.ts b/packages/mermaid/src/diagrams/git/gitGraphDetector.ts index 83f72a4c7..ded434a65 100644 --- a/packages/mermaid/src/diagrams/git/gitGraphDetector.ts +++ b/packages/mermaid/src/diagrams/git/gitGraphDetector.ts @@ -1,4 +1,4 @@ -import type { DiagramDetector } from '../../diagram-api/types.js'; +import type { DiagramDetector, DiagramLoader } from '../../diagram-api/types.js'; import type { ExternalDiagramDefinition } from '../../diagram-api/types.js'; const id = 'gitGraph'; @@ -7,7 +7,7 @@ const detector: DiagramDetector = (txt) => { return /^\s*gitGraph/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./gitGraphDiagram.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/info/infoDetector.ts b/packages/mermaid/src/diagrams/info/infoDetector.ts index 433dc5296..819400cd2 100644 --- a/packages/mermaid/src/diagrams/info/infoDetector.ts +++ b/packages/mermaid/src/diagrams/info/infoDetector.ts @@ -1,4 +1,8 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'info'; @@ -6,7 +10,7 @@ const detector: DiagramDetector = (txt) => { return /^\s*info/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./infoDiagram.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/mindmap/detector.ts b/packages/mermaid/src/diagrams/mindmap/detector.ts index 8627b41ae..2b31fc5e8 100644 --- a/packages/mermaid/src/diagrams/mindmap/detector.ts +++ b/packages/mermaid/src/diagrams/mindmap/detector.ts @@ -1,11 +1,15 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'mindmap'; const detector: DiagramDetector = (txt) => { return /^\s*mindmap/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./mindmap-definition.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/pie/pieDetector.ts b/packages/mermaid/src/diagrams/pie/pieDetector.ts index b0c0df681..93eded52c 100644 --- a/packages/mermaid/src/diagrams/pie/pieDetector.ts +++ b/packages/mermaid/src/diagrams/pie/pieDetector.ts @@ -1,4 +1,8 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'pie'; @@ -6,7 +10,7 @@ const detector: DiagramDetector = (txt) => { return /^\s*pie/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./pieDiagram.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDetector.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDetector.ts index ebb7195f6..9a77ca43a 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDetector.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDetector.ts @@ -1,4 +1,8 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'quadrantChart'; @@ -6,7 +10,7 @@ const detector: DiagramDetector = (txt) => { return /^\s*quadrantChart/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./quadrantDiagram.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/requirement/requirementDetector.ts b/packages/mermaid/src/diagrams/requirement/requirementDetector.ts index 996c132cf..f8fd33640 100644 --- a/packages/mermaid/src/diagrams/requirement/requirementDetector.ts +++ b/packages/mermaid/src/diagrams/requirement/requirementDetector.ts @@ -1,4 +1,8 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'requirement'; @@ -6,7 +10,7 @@ const detector: DiagramDetector = (txt) => { return /^\s*requirement(Diagram)?/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./requirementDiagram.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/sequence/sequenceDetector.ts b/packages/mermaid/src/diagrams/sequence/sequenceDetector.ts index 0aa7de994..c1df22130 100644 --- a/packages/mermaid/src/diagrams/sequence/sequenceDetector.ts +++ b/packages/mermaid/src/diagrams/sequence/sequenceDetector.ts @@ -1,4 +1,8 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'sequence'; @@ -6,7 +10,7 @@ const detector: DiagramDetector = (txt) => { return /^\s*sequenceDiagram/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./sequenceDiagram.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/state/stateDetector-V2.ts b/packages/mermaid/src/diagrams/state/stateDetector-V2.ts index 313c487b6..5201f3fae 100644 --- a/packages/mermaid/src/diagrams/state/stateDetector-V2.ts +++ b/packages/mermaid/src/diagrams/state/stateDetector-V2.ts @@ -1,4 +1,8 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'stateDiagram'; @@ -12,7 +16,7 @@ const detector: DiagramDetector = (txt, config) => { return false; }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./stateDiagram-v2.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/state/stateDetector.ts b/packages/mermaid/src/diagrams/state/stateDetector.ts index 28e121a07..5903d06cf 100644 --- a/packages/mermaid/src/diagrams/state/stateDetector.ts +++ b/packages/mermaid/src/diagrams/state/stateDetector.ts @@ -1,4 +1,8 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'state'; @@ -11,7 +15,7 @@ const detector: DiagramDetector = (txt, config) => { return /^\s*stateDiagram/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./stateDiagram.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/timeline/detector.ts b/packages/mermaid/src/diagrams/timeline/detector.ts index 57848b2a2..a6394bd54 100644 --- a/packages/mermaid/src/diagrams/timeline/detector.ts +++ b/packages/mermaid/src/diagrams/timeline/detector.ts @@ -1,4 +1,8 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'timeline'; @@ -6,7 +10,7 @@ const detector: DiagramDetector = (txt) => { return /^\s*timeline/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./timeline-definition.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/user-journey/journeyDetector.ts b/packages/mermaid/src/diagrams/user-journey/journeyDetector.ts index 9d355ce9b..cb1d1837f 100644 --- a/packages/mermaid/src/diagrams/user-journey/journeyDetector.ts +++ b/packages/mermaid/src/diagrams/user-journey/journeyDetector.ts @@ -1,4 +1,8 @@ -import type { DiagramDetector, ExternalDiagramDefinition } from '../../diagram-api/types.js'; +import type { + DiagramDetector, + DiagramLoader, + ExternalDiagramDefinition, +} from '../../diagram-api/types.js'; const id = 'journey'; @@ -6,7 +10,7 @@ const detector: DiagramDetector = (txt) => { return /^\s*journey/.test(txt); }; -const loader = async () => { +const loader: DiagramLoader = async () => { const { diagram } = await import('./journeyDiagram.js'); return { id, diagram }; }; From 64558ffa9cfcf951448202067d2a21d0d66fdc32 Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg <nick.bollweg@gmail.com> Date: Mon, 12 Jun 2023 09:09:29 -0500 Subject: [PATCH 180/255] strawman extension and mime type docs --- packages/mermaid/src/docs/ecosystem/integrations.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/mermaid/src/docs/ecosystem/integrations.md b/packages/mermaid/src/docs/ecosystem/integrations.md index cd6f5058d..2e67600d9 100644 --- a/packages/mermaid/src/docs/ecosystem/integrations.md +++ b/packages/mermaid/src/docs/ecosystem/integrations.md @@ -199,3 +199,14 @@ They also serve as proof of concept, for the variety of things that can be built - [NiceGUI: Let any browser be the frontend of your Python code](https://nicegui.io) - [ui.mermaid(...)](https://nicegui.io/reference#mermaid_diagrams) - [ui.markdown(..., extras=['mermaid'])](https://nicegui.io/reference#markdown_element) + +## Recommendations + +### File Extension + +Applications that support editing and saving mermaid files are encouraged to use the `.mmd` file extension. + +### MIME Type + +While not officially recognized by the [IANA](https://www.iana.org/assignments/media-types/media-types.xhtml), +the recommended MIME type for mermaid media is `text/vnd.mermaid`. From a7b75d71e4da0846225b2fe6c87a3b9535204244 Mon Sep 17 00:00:00 2001 From: bollwyvl <bollwyvl@users.noreply.github.com> Date: Mon, 12 Jun 2023 14:14:19 +0000 Subject: [PATCH 181/255] Update docs --- docs/ecosystem/integrations.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/ecosystem/integrations.md b/docs/ecosystem/integrations.md index 24e3609d8..3b43c414a 100644 --- a/docs/ecosystem/integrations.md +++ b/docs/ecosystem/integrations.md @@ -205,3 +205,14 @@ They also serve as proof of concept, for the variety of things that can be built - [NiceGUI: Let any browser be the frontend of your Python code](https://nicegui.io) - [ui.mermaid(...)](https://nicegui.io/reference#mermaid_diagrams) - [ui.markdown(..., extras=\['mermaid'\])](https://nicegui.io/reference#markdown_element) + +## Recommendations + +### File Extension + +Applications that support editing and saving mermaid files are encouraged to use the `.mmd` file extension. + +### MIME Type + +While not officially recognized by the [IANA](https://www.iana.org/assignments/media-types/media-types.xhtml), +the recommended MIME type for mermaid media is `text/vnd.mermaid`. From 372b57d54004f8aa2ca9943d2cf74f17af14940c Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Mon, 12 Jun 2023 19:36:54 +0300 Subject: [PATCH 182/255] create `DrawDefinition` function type --- packages/mermaid/src/diagram-api/types.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/mermaid/src/diagram-api/types.ts b/packages/mermaid/src/diagram-api/types.ts index f95ca5ab5..2e63a27c4 100644 --- a/packages/mermaid/src/diagram-api/types.ts +++ b/packages/mermaid/src/diagram-api/types.ts @@ -1,3 +1,4 @@ +import { Diagram } from '../Diagram.js'; import { MermaidConfig } from '../config.type.js'; export interface InjectUtils { @@ -52,3 +53,18 @@ export interface ExternalDiagramDefinition { export type DiagramDetector = (text: string, config?: MermaidConfig) => boolean; export type DiagramLoader = () => Promise<{ id: string; diagram: DiagramDefinition }>; + +/** + * Type for function draws diagram in the tag with id: id based on the graph definition in text. + * + * @param text - The text of the diagram. + * @param id - The id of the diagram which will be used as a DOM element id. + * @param version - MermaidJS version from package.json. + * @param diagramObject - A standard diagram containing the DB and the text and type etc of the diagram. + */ +export type DrawDefinition = ( + text: string, + id: string, + version: string, + diagramObject: Diagram +) => void; From e6a48f8bafcf20292995f1849e0adac2c0f024b3 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Mon, 12 Jun 2023 19:38:36 +0300 Subject: [PATCH 183/255] standardize info diagram definition * create types * remove unnessery db attributes * convert js files to ts * remove empty styles.js --- .../mermaid/src/diagrams/info/info.spec.js | 16 --------- .../mermaid/src/diagrams/info/info.spec.ts | 24 +++++++++++++ packages/mermaid/src/diagrams/info/infoDb.js | 36 ------------------- packages/mermaid/src/diagrams/info/infoDb.ts | 19 ++++++++++ .../mermaid/src/diagrams/info/infoDiagram.ts | 9 +++-- .../info/{infoRenderer.js => infoRenderer.ts} | 27 +++++++------- .../mermaid/src/diagrams/info/infoTypes.ts | 10 ++++++ packages/mermaid/src/diagrams/info/styles.js | 3 -- packages/mermaid/src/styles.spec.ts | 2 -- 9 files changed, 69 insertions(+), 77 deletions(-) delete mode 100644 packages/mermaid/src/diagrams/info/info.spec.js create mode 100644 packages/mermaid/src/diagrams/info/info.spec.ts delete mode 100644 packages/mermaid/src/diagrams/info/infoDb.js create mode 100644 packages/mermaid/src/diagrams/info/infoDb.ts rename packages/mermaid/src/diagrams/info/{infoRenderer.js => infoRenderer.ts} (71%) create mode 100644 packages/mermaid/src/diagrams/info/infoTypes.ts delete mode 100644 packages/mermaid/src/diagrams/info/styles.js diff --git a/packages/mermaid/src/diagrams/info/info.spec.js b/packages/mermaid/src/diagrams/info/info.spec.js deleted file mode 100644 index 6f1a59d1c..000000000 --- a/packages/mermaid/src/diagrams/info/info.spec.js +++ /dev/null @@ -1,16 +0,0 @@ -import { parser } from './parser/info.jison'; -import infoDb from './infoDb.js'; -describe('when parsing an info graph it', function () { - let ex; - beforeEach(function () { - ex = parser; - ex.yy = infoDb; - }); - - it('should handle an info definition', function () { - let str = `info - showInfo`; - - ex.parse(str); - }); -}); diff --git a/packages/mermaid/src/diagrams/info/info.spec.ts b/packages/mermaid/src/diagrams/info/info.spec.ts new file mode 100644 index 000000000..cccd74cc6 --- /dev/null +++ b/packages/mermaid/src/diagrams/info/info.spec.ts @@ -0,0 +1,24 @@ +// @ts-ignore Jison doesn't export types +import { parser } from './parser/info.jison'; +import infoDb from './infoDb.js'; + +describe('info graph', () => { + beforeEach(() => { + parser.yy = infoDb; + parser.yy.clear(); + }); + + it('should handle an info definition', () => { + const str = `info`; + parser.parse(str); + + expect(infoDb.getInfo()).toBeFalsy(); + }); + + it('should handle an info definition with showInfo', () => { + const str = `info showInfo`; + parser.parse(str); + + expect(infoDb.getInfo()).toBeTruthy(); + }); +}); diff --git a/packages/mermaid/src/diagrams/info/infoDb.js b/packages/mermaid/src/diagrams/info/infoDb.js deleted file mode 100644 index 81ba8057f..000000000 --- a/packages/mermaid/src/diagrams/info/infoDb.js +++ /dev/null @@ -1,36 +0,0 @@ -/** Created by knut on 15-01-14. */ -import { log } from '../../logger.js'; -import { clear } from '../../commonDb.js'; - -var message = ''; -var info = false; - -export const setMessage = (txt) => { - log.debug('Setting message to: ' + txt); - message = txt; -}; - -export const getMessage = () => { - return message; -}; - -export const setInfo = (inf) => { - info = inf; -}; - -export const getInfo = () => { - return info; -}; - -// export const parseError = (err, hash) => { -// global.mermaidAPI.parseError(err, hash) -// } - -export default { - setMessage, - getMessage, - setInfo, - getInfo, - clear, - // parseError -}; diff --git a/packages/mermaid/src/diagrams/info/infoDb.ts b/packages/mermaid/src/diagrams/info/infoDb.ts new file mode 100644 index 000000000..50c31de47 --- /dev/null +++ b/packages/mermaid/src/diagrams/info/infoDb.ts @@ -0,0 +1,19 @@ +/** Created by knut on 15-01-14. */ +import { clear } from '../../commonDb.js'; +import { InfoDb } from './infoTypes.js'; + +let info = false; + +export const setInfo = (inf: boolean): void => { + info = inf; +}; + +export const getInfo = (): boolean => info; + +const db: InfoDb = { + clear, + setInfo, + getInfo, +}; + +export default db; diff --git a/packages/mermaid/src/diagrams/info/infoDiagram.ts b/packages/mermaid/src/diagrams/info/infoDiagram.ts index a26e915e5..574a0d63f 100644 --- a/packages/mermaid/src/diagrams/info/infoDiagram.ts +++ b/packages/mermaid/src/diagrams/info/infoDiagram.ts @@ -2,12 +2,11 @@ import { DiagramDefinition } from '../../diagram-api/types.js'; // @ts-ignore: TODO Fix ts errors import parser from './parser/info.jison'; import db from './infoDb.js'; -import styles from './styles.js'; import renderer from './infoRenderer.js'; export const diagram: DiagramDefinition = { - parser, - db, - renderer, - styles, + parser: parser, + db: db, + renderer: renderer, + styles: () => '', }; diff --git a/packages/mermaid/src/diagrams/info/infoRenderer.js b/packages/mermaid/src/diagrams/info/infoRenderer.ts similarity index 71% rename from packages/mermaid/src/diagrams/info/infoRenderer.js rename to packages/mermaid/src/diagrams/info/infoRenderer.ts index 9441a3226..6aac69dbf 100644 --- a/packages/mermaid/src/diagrams/info/infoRenderer.js +++ b/packages/mermaid/src/diagrams/info/infoRenderer.ts @@ -1,19 +1,19 @@ /** Created by knut on 14-12-11. */ +// @ts-ignore - TODO: why import { select } from 'd3'; import { log } from '../../logger.js'; import { getConfig } from '../../config.js'; +import { DrawDefinition } from '../../diagram-api/types.js'; /** * Draws a an info picture in the tag with id: id based on the graph definition in text. * - * @param {any} text - * @param {any} id - * @param {any} version + * @param text - The text of the diagram. + * @param id - The id of the diagram which will be used as a DOM element id. + * @param version - MermaidJS version. */ -export const draw = (text, id, version) => { +export const draw: DrawDefinition = (text, id, version) => { try { - // const parser = infoParser.parser; - // parser.yy = db; log.debug('Rendering info diagram\n' + text); const securityLevel = getConfig().securityLevel; @@ -27,10 +27,6 @@ export const draw = (text, id, version) => { ? select(sandboxElement.nodes()[0].contentDocument.body) : select('body'); - // Parse the graph definition - // parser.parse(text); - // log.debug('Parsed info diagram'); - // Fetch the default direction, use TD if none was found const svg = root.select('#' + id); const g = svg.append('g'); @@ -45,13 +41,14 @@ export const draw = (text, id, version) => { svg.attr('height', 100); svg.attr('width', 400); - // svg.attr('viewBox', '0 0 300 150'); } catch (e) { log.error('Error while rendering info diagram'); - log.error(e.message); + if (e instanceof Error) { + log.error(e.message); + } else { + log.error('Unexpected error', e); + } } }; -export default { - draw, -}; +export default draw; diff --git a/packages/mermaid/src/diagrams/info/infoTypes.ts b/packages/mermaid/src/diagrams/info/infoTypes.ts new file mode 100644 index 000000000..93146b510 --- /dev/null +++ b/packages/mermaid/src/diagrams/info/infoTypes.ts @@ -0,0 +1,10 @@ +import { DiagramDb } from '../../diagram-api/types.js'; + +/** + * Info diagram DB. + */ +export interface InfoDb extends DiagramDb { + clear: () => void; + setInfo: (info: boolean) => void; + getInfo: () => boolean; +} diff --git a/packages/mermaid/src/diagrams/info/styles.js b/packages/mermaid/src/diagrams/info/styles.js deleted file mode 100644 index 0b0729813..000000000 --- a/packages/mermaid/src/diagrams/info/styles.js +++ /dev/null @@ -1,3 +0,0 @@ -const getStyles = () => ``; - -export default getStyles; diff --git a/packages/mermaid/src/styles.spec.ts b/packages/mermaid/src/styles.spec.ts index f827c611b..51951f190 100644 --- a/packages/mermaid/src/styles.spec.ts +++ b/packages/mermaid/src/styles.spec.ts @@ -22,7 +22,6 @@ import er from './diagrams/er/styles.js'; import error from './diagrams/error/styles.js'; import git from './diagrams/git/styles.js'; import gantt from './diagrams/gantt/styles.js'; -import info from './diagrams/info/styles.js'; import pie from './diagrams/pie/styles.js'; import requirement from './diagrams/requirement/styles.js'; import sequence from './diagrams/sequence/styles.js'; @@ -92,7 +91,6 @@ describe('styles', () => { flowchartElk, gantt, git, - info, journey, mindmap, pie, From dfdfa63009eadd20f793c85e7a5ec40096b18376 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Mon, 12 Jun 2023 19:44:36 +0300 Subject: [PATCH 184/255] add `type` keyword for import for info diagram files --- packages/mermaid/src/diagrams/info/infoDb.ts | 2 +- packages/mermaid/src/diagrams/info/infoDiagram.ts | 2 +- packages/mermaid/src/diagrams/info/infoRenderer.ts | 2 +- packages/mermaid/src/diagrams/info/infoTypes.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/mermaid/src/diagrams/info/infoDb.ts b/packages/mermaid/src/diagrams/info/infoDb.ts index 50c31de47..a757ad9c4 100644 --- a/packages/mermaid/src/diagrams/info/infoDb.ts +++ b/packages/mermaid/src/diagrams/info/infoDb.ts @@ -1,6 +1,6 @@ /** Created by knut on 15-01-14. */ import { clear } from '../../commonDb.js'; -import { InfoDb } from './infoTypes.js'; +import type { InfoDb } from './infoTypes.js'; let info = false; diff --git a/packages/mermaid/src/diagrams/info/infoDiagram.ts b/packages/mermaid/src/diagrams/info/infoDiagram.ts index 574a0d63f..73505a4bd 100644 --- a/packages/mermaid/src/diagrams/info/infoDiagram.ts +++ b/packages/mermaid/src/diagrams/info/infoDiagram.ts @@ -1,4 +1,4 @@ -import { DiagramDefinition } from '../../diagram-api/types.js'; +import type { DiagramDefinition } from '../../diagram-api/types.js'; // @ts-ignore: TODO Fix ts errors import parser from './parser/info.jison'; import db from './infoDb.js'; diff --git a/packages/mermaid/src/diagrams/info/infoRenderer.ts b/packages/mermaid/src/diagrams/info/infoRenderer.ts index 6aac69dbf..682bd133c 100644 --- a/packages/mermaid/src/diagrams/info/infoRenderer.ts +++ b/packages/mermaid/src/diagrams/info/infoRenderer.ts @@ -3,7 +3,7 @@ import { select } from 'd3'; import { log } from '../../logger.js'; import { getConfig } from '../../config.js'; -import { DrawDefinition } from '../../diagram-api/types.js'; +import type { DrawDefinition } from '../../diagram-api/types.js'; /** * Draws a an info picture in the tag with id: id based on the graph definition in text. diff --git a/packages/mermaid/src/diagrams/info/infoTypes.ts b/packages/mermaid/src/diagrams/info/infoTypes.ts index 93146b510..7d240e3d4 100644 --- a/packages/mermaid/src/diagrams/info/infoTypes.ts +++ b/packages/mermaid/src/diagrams/info/infoTypes.ts @@ -1,4 +1,4 @@ -import { DiagramDb } from '../../diagram-api/types.js'; +import type { DiagramDb } from '../../diagram-api/types.js'; /** * Info diagram DB. From 98d9205e6f5d007d41c2d59863677e9a2923425e Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Mon, 12 Jun 2023 19:49:37 +0300 Subject: [PATCH 185/255] update info @ts-ignore comments deception --- packages/mermaid/src/diagrams/info/infoDiagram.ts | 2 +- packages/mermaid/src/diagrams/info/infoRenderer.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/diagrams/info/infoDiagram.ts b/packages/mermaid/src/diagrams/info/infoDiagram.ts index 73505a4bd..b8b9a4859 100644 --- a/packages/mermaid/src/diagrams/info/infoDiagram.ts +++ b/packages/mermaid/src/diagrams/info/infoDiagram.ts @@ -1,5 +1,5 @@ import type { DiagramDefinition } from '../../diagram-api/types.js'; -// @ts-ignore: TODO Fix ts errors +// @ts-ignore jison doesn't export types import parser from './parser/info.jison'; import db from './infoDb.js'; import renderer from './infoRenderer.js'; diff --git a/packages/mermaid/src/diagrams/info/infoRenderer.ts b/packages/mermaid/src/diagrams/info/infoRenderer.ts index 682bd133c..932c7ba08 100644 --- a/packages/mermaid/src/diagrams/info/infoRenderer.ts +++ b/packages/mermaid/src/diagrams/info/infoRenderer.ts @@ -1,5 +1,5 @@ /** Created by knut on 14-12-11. */ -// @ts-ignore - TODO: why +// @ts-ignore - TODO: fix ts error from d3 import { select } from 'd3'; import { log } from '../../logger.js'; import { getConfig } from '../../config.js'; From 5b4356bd43f04098556fa1dc99a11b540c7cca41 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Mon, 12 Jun 2023 20:34:41 +0300 Subject: [PATCH 186/255] remove unnecessary typeof Error in info diagram renderer --- packages/mermaid/src/diagrams/info/infoRenderer.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/mermaid/src/diagrams/info/infoRenderer.ts b/packages/mermaid/src/diagrams/info/infoRenderer.ts index 932c7ba08..be1211150 100644 --- a/packages/mermaid/src/diagrams/info/infoRenderer.ts +++ b/packages/mermaid/src/diagrams/info/infoRenderer.ts @@ -42,12 +42,7 @@ export const draw: DrawDefinition = (text, id, version) => { svg.attr('height', 100); svg.attr('width', 400); } catch (e) { - log.error('Error while rendering info diagram'); - if (e instanceof Error) { - log.error(e.message); - } else { - log.error('Unexpected error', e); - } + log.error('error while rendering info diagram', e); } }; From 4320fe78391f4a8bd5bc90ffc258696715f25e00 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Mon, 12 Jun 2023 20:46:18 +0300 Subject: [PATCH 187/255] return draw function export in info renderer --- packages/mermaid/src/diagrams/info/infoRenderer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/info/infoRenderer.ts b/packages/mermaid/src/diagrams/info/infoRenderer.ts index be1211150..4c70e4e6f 100644 --- a/packages/mermaid/src/diagrams/info/infoRenderer.ts +++ b/packages/mermaid/src/diagrams/info/infoRenderer.ts @@ -46,4 +46,4 @@ export const draw: DrawDefinition = (text, id, version) => { } }; -export default draw; +export default { draw }; From c78ad7dbace7481e8698f45148f1a3b3169f0e10 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Mon, 12 Jun 2023 21:11:34 +0300 Subject: [PATCH 188/255] create `ParseDirectiveDefinition` type for parsing directives --- packages/mermaid/src/diagram-api/types.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/mermaid/src/diagram-api/types.ts b/packages/mermaid/src/diagram-api/types.ts index 2e63a27c4..7656acb6c 100644 --- a/packages/mermaid/src/diagram-api/types.ts +++ b/packages/mermaid/src/diagram-api/types.ts @@ -68,3 +68,12 @@ export type DrawDefinition = ( version: string, diagramObject: Diagram ) => void; + +/** + * Type for function parse directive from diagram code. + * + * @param statement - + * @param context - + * @param type - + */ +export type ParseDirectiveDefinition = (statement: string, context: string, type: string) => void; From af13f3430aa994e7dd258aa5964894c476dc00ac Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Mon, 12 Jun 2023 23:57:22 +0530 Subject: [PATCH 189/255] Ignore bundlephobia --- .lycheeignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.lycheeignore b/.lycheeignore index 5f7b9679e..22607d973 100644 --- a/.lycheeignore +++ b/.lycheeignore @@ -7,5 +7,8 @@ https://codepen.io # Timeout error, maybe Twitter has anti-bot defenses against GitHub's CI servers? https://twitter.com/mermaidjs_ +# Site is down occasionally +https://bundlephobia.com/ + # Don't check files that are generated during the build via `pnpm docs:code` packages/mermaid/src/docs/config/setup/* From f35e0cafdfbbc9decb2709cffa8e945ebfbbdd9f Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Mon, 12 Jun 2023 23:09:26 +0300 Subject: [PATCH 190/255] fix `TODs` type in erDiagram --- packages/mermaid/src/diagrams/er/erDiagram.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/er/erDiagram.ts b/packages/mermaid/src/diagrams/er/erDiagram.ts index 7cc9e37b2..adfa525fc 100644 --- a/packages/mermaid/src/diagrams/er/erDiagram.ts +++ b/packages/mermaid/src/diagrams/er/erDiagram.ts @@ -1,4 +1,4 @@ -// @ts-ignore: TODs Fix ts errors +// @ts-ignore: TODO: Fix ts errors import erParser from './parser/erDiagram.jison'; import erDb from './erDb.js'; import erRenderer from './erRenderer.js'; From e7b9b5a0a9e55b7179c027bef0aa02a18925f61d Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Mon, 12 Jun 2023 23:10:20 +0300 Subject: [PATCH 191/255] set styles as optional in `DiagramDefinition` --- packages/mermaid/src/diagram-api/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagram-api/types.ts b/packages/mermaid/src/diagram-api/types.ts index 7656acb6c..1687e1791 100644 --- a/packages/mermaid/src/diagram-api/types.ts +++ b/packages/mermaid/src/diagram-api/types.ts @@ -27,7 +27,7 @@ export interface DiagramDefinition { db: DiagramDb; renderer: any; parser: any; - styles: any; + styles?: any; init?: (config: MermaidConfig) => void; injectUtils?: ( _log: InjectUtils['_log'], From d0e8074de797d58461c3a3301a76449576176381 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Mon, 12 Jun 2023 23:15:24 +0300 Subject: [PATCH 192/255] remove empty styles in info diagram --- packages/mermaid/src/diagrams/info/infoDiagram.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/info/infoDiagram.ts b/packages/mermaid/src/diagrams/info/infoDiagram.ts index b8b9a4859..cb8d2af61 100644 --- a/packages/mermaid/src/diagrams/info/infoDiagram.ts +++ b/packages/mermaid/src/diagrams/info/infoDiagram.ts @@ -8,5 +8,4 @@ export const diagram: DiagramDefinition = { parser: parser, db: db, renderer: renderer, - styles: () => '', }; From cdea0ea829e87188e362bac49374a68fb6ec2299 Mon Sep 17 00:00:00 2001 From: Nikolay Rozhkov <rozhkov@bravy.com> Date: Sun, 11 Jun 2023 01:15:31 +0300 Subject: [PATCH 193/255] Support for development in Docker Updated lintignore and move dockerfile to .dev Fix Updated contributing Fixing GA Fix contributing.md Fixing issues after review No need to change .eslintignore --- .gitignore | 2 ++ CONTRIBUTING.md | 14 ++++++++++++++ docker-compose.yml | 9 +++++++++ run | 40 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 docker-compose.yml create mode 100755 run diff --git a/.gitignore b/.gitignore index efbfc8b36..27afa4008 100644 --- a/.gitignore +++ b/.gitignore @@ -3,8 +3,10 @@ node_modules/ coverage/ .idea/ +.pnpm-store/ dist +v8-compile-cache-0 yarn-error.log .npmrc diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 150a22341..272cd403e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,14 +18,28 @@ https://docs.github.com/en/get-started/quickstart/fork-a-repo ## Development Installation +If you don't have direct access to push to mermaid repositories, make a fork first. Then clone. Or clone directly from mermaid-js: + ```bash git clone git@github.com:mermaid-js/mermaid.git cd mermaid +``` + +Install required packages: + +```bash # npx is required for first install as volta support for pnpm is not added yet. npx pnpm install pnpm test ``` +If you are using docker and docker-compose, you have self-documented `run` bash script, which is a convenient alias for docker-compose commands: + +```bash +./run install # npx pnpm install +./run test # pnpm test +``` + ## Committing code We make all changes via pull requests. As we have many pull requests from developers new to mermaid, the current approach is to have _knsv, Knut Sveidqvist_ as a main reviewer of changes and merging pull requests. More precisely like this: diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..2762f3b99 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,9 @@ +version: '3.9' +services: + mermaid: + image: node:18.16.0-alpine3.18 + stdin_open: true + tty: true + working_dir: /mermaid + volumes: + - ./:/mermaid diff --git a/run b/run new file mode 100755 index 000000000..6afe76eee --- /dev/null +++ b/run @@ -0,0 +1,40 @@ +#!/bin/bash +RUN="docker-compose run --rm" +command=$1 +args=${@:2} + +case $command in + +sh) +$RUN mermaid sh $args +;; + +install) +$RUN mermaid sh -c "npx pnpm install" +;; + +test) +$RUN mermaid sh -c "npx pnpm test" +;; + +lint) +$RUN mermaid sh -c "npx pnpm -w run lint:fix" +;; + +help) +cat <<EOF +Run commonly used commands within docker containers + +$0 install # Equvalent of pnpm install +$0 lint # Equvalent of pnpm -w run lint:fix +$0 sh # Open sh inside docker container for development + +$0 help # Show this help +EOF +;; + +*) +$0 help +;; + +esac \ No newline at end of file From 616d4450741cdc52d1944a262ede8a545ce52fe4 Mon Sep 17 00:00:00 2001 From: Nikolay Rozhkov <rozhkov@bravy.com> Date: Tue, 13 Jun 2023 00:37:31 +0300 Subject: [PATCH 194/255] Rerun From 245c4f8c78e35f2cc69768f9ba8fa6127b4c5150 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Tue, 13 Jun 2023 11:49:43 +0530 Subject: [PATCH 195/255] Update coveralls --- .github/workflows/test.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6c01ba1b9..ea0912a8f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,10 +42,7 @@ jobs: pnpm exec vitest run ./packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts - name: Upload Coverage to Coveralls - # it feels a bit weird to use @master, but that's what the docs use - # (coveralls also doesn't publish a @v1 we can use) - # https://github.com/marketplace/actions/coveralls-github-action - uses: coverallsapp/github-action@master + uses: coverallsapp/github-action@v2 with: github-token: ${{ secrets.GITHUB_TOKEN }} flag-name: unit From 40199e28b80f4ab7f3a48a135db3913e547d424d Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Tue, 13 Jun 2023 12:23:41 +0530 Subject: [PATCH 196/255] Disable coveralls --- .github/workflows/test.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ea0912a8f..f09d047fc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -41,8 +41,9 @@ jobs: run: | pnpm exec vitest run ./packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts - - name: Upload Coverage to Coveralls - uses: coverallsapp/github-action@v2 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - flag-name: unit + # Coveralls is throwing 500. Disabled for now. + # - name: Upload Coverage to Coveralls + # uses: coverallsapp/github-action@v2 + # with: + # github-token: ${{ secrets.GITHUB_TOKEN }} + # flag-name: unit From 171d7a04f42e432aa77f65d742eeb26428fc9e8d Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Tue, 13 Jun 2023 12:24:10 +0300 Subject: [PATCH 197/255] caps `DB` part in `DiagramDb` and `InfoDb` --- packages/mermaid/src/diagram-api/frontmatter.ts | 4 ++-- packages/mermaid/src/diagram-api/types.ts | 4 ++-- packages/mermaid/src/diagrams/info/infoDb.ts | 4 ++-- packages/mermaid/src/diagrams/info/infoTypes.ts | 7 ++----- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/packages/mermaid/src/diagram-api/frontmatter.ts b/packages/mermaid/src/diagram-api/frontmatter.ts index 8c0e998f6..f8d2e9c41 100644 --- a/packages/mermaid/src/diagram-api/frontmatter.ts +++ b/packages/mermaid/src/diagram-api/frontmatter.ts @@ -1,4 +1,4 @@ -import { DiagramDb } from './types.js'; +import { DiagramDB } from './types.js'; // The "* as yaml" part is necessary for tree-shaking import * as yaml from 'js-yaml'; @@ -22,7 +22,7 @@ type FrontMatterMetadata = { * @param db - Diagram database, could be of any diagram. * @returns text with frontmatter stripped out */ -export function extractFrontMatter(text: string, db: DiagramDb): string { +export function extractFrontMatter(text: string, db: DiagramDB): string { const matches = text.match(frontMatterRegex); if (matches) { const parsed: FrontMatterMetadata = yaml.load(matches[1], { diff --git a/packages/mermaid/src/diagram-api/types.ts b/packages/mermaid/src/diagram-api/types.ts index 1687e1791..26cf33fbe 100644 --- a/packages/mermaid/src/diagram-api/types.ts +++ b/packages/mermaid/src/diagram-api/types.ts @@ -14,7 +14,7 @@ export interface InjectUtils { /** * Generic Diagram DB that may apply to any diagram type. */ -export interface DiagramDb { +export interface DiagramDB { clear?: () => void; setDiagramTitle?: (title: string) => void; setDisplayMode?: (title: string) => void; @@ -24,7 +24,7 @@ export interface DiagramDb { } export interface DiagramDefinition { - db: DiagramDb; + db: DiagramDB; renderer: any; parser: any; styles?: any; diff --git a/packages/mermaid/src/diagrams/info/infoDb.ts b/packages/mermaid/src/diagrams/info/infoDb.ts index a757ad9c4..71a1203e2 100644 --- a/packages/mermaid/src/diagrams/info/infoDb.ts +++ b/packages/mermaid/src/diagrams/info/infoDb.ts @@ -1,6 +1,6 @@ /** Created by knut on 15-01-14. */ import { clear } from '../../commonDb.js'; -import type { InfoDb } from './infoTypes.js'; +import type { InfoDB } from './infoTypes.js'; let info = false; @@ -10,7 +10,7 @@ export const setInfo = (inf: boolean): void => { export const getInfo = (): boolean => info; -const db: InfoDb = { +const db: InfoDB = { clear, setInfo, getInfo, diff --git a/packages/mermaid/src/diagrams/info/infoTypes.ts b/packages/mermaid/src/diagrams/info/infoTypes.ts index 7d240e3d4..9878642b1 100644 --- a/packages/mermaid/src/diagrams/info/infoTypes.ts +++ b/packages/mermaid/src/diagrams/info/infoTypes.ts @@ -1,9 +1,6 @@ -import type { DiagramDb } from '../../diagram-api/types.js'; +import type { DiagramDB } from '../../diagram-api/types.js'; -/** - * Info diagram DB. - */ -export interface InfoDb extends DiagramDb { +export interface InfoDB extends DiagramDB { clear: () => void; setInfo: (info: boolean) => void; getInfo: () => boolean; From f0b1529727bec12fbb6ebe2febabd52273aeeb8d Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Tue, 13 Jun 2023 13:27:15 +0300 Subject: [PATCH 198/255] rename `inf` into `toggle` for better readability in infoDb --- packages/mermaid/src/diagrams/info/infoDb.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/diagrams/info/infoDb.ts b/packages/mermaid/src/diagrams/info/infoDb.ts index 71a1203e2..b8e2fd14d 100644 --- a/packages/mermaid/src/diagrams/info/infoDb.ts +++ b/packages/mermaid/src/diagrams/info/infoDb.ts @@ -4,8 +4,8 @@ import type { InfoDB } from './infoTypes.js'; let info = false; -export const setInfo = (inf: boolean): void => { - info = inf; +export const setInfo = (toggle: boolean): void => { + info = toggle; }; export const getInfo = (): boolean => info; From e2a32e5040986b7da9b8a5d0d84f7aed5b519b5f Mon Sep 17 00:00:00 2001 From: Nicholas Bollweg <nick.bollweg@gmail.com> Date: Tue, 13 Jun 2023 06:57:16 -0500 Subject: [PATCH 199/255] Update integrations.md per review --- packages/mermaid/src/docs/ecosystem/integrations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/src/docs/ecosystem/integrations.md b/packages/mermaid/src/docs/ecosystem/integrations.md index 2e67600d9..8e062c10b 100644 --- a/packages/mermaid/src/docs/ecosystem/integrations.md +++ b/packages/mermaid/src/docs/ecosystem/integrations.md @@ -204,7 +204,7 @@ They also serve as proof of concept, for the variety of things that can be built ### File Extension -Applications that support editing and saving mermaid files are encouraged to use the `.mmd` file extension. +Applications that support editing and saving mermaid files are encouraged to use `.mermaid` or `.mmd` file extensions. ### MIME Type From 3e20a42b3e2232a2ccd816e84496f5cc1692b159 Mon Sep 17 00:00:00 2001 From: bollwyvl <bollwyvl@users.noreply.github.com> Date: Tue, 13 Jun 2023 12:00:46 +0000 Subject: [PATCH 200/255] Update docs --- docs/ecosystem/integrations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ecosystem/integrations.md b/docs/ecosystem/integrations.md index 3b43c414a..88d075f7e 100644 --- a/docs/ecosystem/integrations.md +++ b/docs/ecosystem/integrations.md @@ -210,7 +210,7 @@ They also serve as proof of concept, for the variety of things that can be built ### File Extension -Applications that support editing and saving mermaid files are encouraged to use the `.mmd` file extension. +Applications that support editing and saving mermaid files are encouraged to use `.mermaid` or `.mmd` file extensions. ### MIME Type From 2a5b122d0c446ecf5f96a3a776d29f13163011b2 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Tue, 13 Jun 2023 15:32:00 +0300 Subject: [PATCH 201/255] standardize ts-ignore for info graph --- packages/mermaid/src/diagrams/info/info.spec.ts | 2 +- packages/mermaid/src/diagrams/info/infoDb.ts | 1 - packages/mermaid/src/diagrams/info/infoDiagram.ts | 2 +- packages/mermaid/src/diagrams/info/infoRenderer.ts | 1 - 4 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/mermaid/src/diagrams/info/info.spec.ts b/packages/mermaid/src/diagrams/info/info.spec.ts index cccd74cc6..9caca6a2a 100644 --- a/packages/mermaid/src/diagrams/info/info.spec.ts +++ b/packages/mermaid/src/diagrams/info/info.spec.ts @@ -1,4 +1,4 @@ -// @ts-ignore Jison doesn't export types +// @ts-ignore - jison doesn't export types import { parser } from './parser/info.jison'; import infoDb from './infoDb.js'; diff --git a/packages/mermaid/src/diagrams/info/infoDb.ts b/packages/mermaid/src/diagrams/info/infoDb.ts index b8e2fd14d..968982034 100644 --- a/packages/mermaid/src/diagrams/info/infoDb.ts +++ b/packages/mermaid/src/diagrams/info/infoDb.ts @@ -1,4 +1,3 @@ -/** Created by knut on 15-01-14. */ import { clear } from '../../commonDb.js'; import type { InfoDB } from './infoTypes.js'; diff --git a/packages/mermaid/src/diagrams/info/infoDiagram.ts b/packages/mermaid/src/diagrams/info/infoDiagram.ts index cb8d2af61..277a14317 100644 --- a/packages/mermaid/src/diagrams/info/infoDiagram.ts +++ b/packages/mermaid/src/diagrams/info/infoDiagram.ts @@ -1,5 +1,5 @@ import type { DiagramDefinition } from '../../diagram-api/types.js'; -// @ts-ignore jison doesn't export types +// @ts-ignore - jison doesn't export types import parser from './parser/info.jison'; import db from './infoDb.js'; import renderer from './infoRenderer.js'; diff --git a/packages/mermaid/src/diagrams/info/infoRenderer.ts b/packages/mermaid/src/diagrams/info/infoRenderer.ts index 4c70e4e6f..f75ace9c7 100644 --- a/packages/mermaid/src/diagrams/info/infoRenderer.ts +++ b/packages/mermaid/src/diagrams/info/infoRenderer.ts @@ -1,4 +1,3 @@ -/** Created by knut on 14-12-11. */ // @ts-ignore - TODO: fix ts error from d3 import { select } from 'd3'; import { log } from '../../logger.js'; From ab0eb6c9bf69b61c8924c8e4adef6cebd5616c72 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Tue, 13 Jun 2023 17:58:25 +0300 Subject: [PATCH 202/255] add `@types/d3-selection` to mermaid dev deps --- packages/mermaid/package.json | 1 + pnpm-lock.yaml | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index 8064b15cf..d0c67ee58 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -73,6 +73,7 @@ "devDependencies": { "@types/cytoscape": "^3.19.9", "@types/d3": "^7.4.0", + "@types/d3-selection": "^3.0.5", "@types/dompurify": "^3.0.2", "@types/jsdom": "^21.1.1", "@types/lodash-es": "^4.17.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eb32033af..e0428101b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -236,6 +236,9 @@ importers: '@types/d3': specifier: ^7.4.0 version: 7.4.0 + '@types/d3-selection': + specifier: ^3.0.5 + version: 3.0.5 '@types/dompurify': specifier: ^3.0.2 version: 3.0.2 @@ -3942,13 +3945,13 @@ packages: /@types/d3-axis@3.0.1: resolution: {integrity: sha512-zji/iIbdd49g9WN0aIsGcwcTBUkgLsCSwB+uH+LPVDAiKWENMtI3cJEWt+7/YYwelMoZmbBfzA3qCdrZ2XFNnw==} dependencies: - '@types/d3-selection': 3.0.3 + '@types/d3-selection': 3.0.5 dev: true /@types/d3-brush@3.0.1: resolution: {integrity: sha512-B532DozsiTuQMHu2YChdZU0qsFJSio3Q6jmBYGYNp3gMDzBmuFFgPt9qKA4VYuLZMp4qc6eX7IUFUEsvHiXZAw==} dependencies: - '@types/d3-selection': 3.0.3 + '@types/d3-selection': 3.0.5 dev: true /@types/d3-chord@3.0.1: @@ -3977,7 +3980,7 @@ packages: /@types/d3-drag@3.0.1: resolution: {integrity: sha512-o1Va7bLwwk6h03+nSM8dpaGEYnoIG19P0lKqlic8Un36ymh9NSkNFX1yiXMKNMx8rJ0Kfnn2eovuFaL6Jvj0zA==} dependencies: - '@types/d3-selection': 3.0.3 + '@types/d3-selection': 3.0.5 dev: true /@types/d3-dsv@3.0.0: @@ -4044,8 +4047,8 @@ packages: '@types/d3-time': 3.0.0 dev: true - /@types/d3-selection@3.0.3: - resolution: {integrity: sha512-Mw5cf6nlW1MlefpD9zrshZ+DAWL4IQ5LnWfRheW6xwsdaWOb6IRRu2H7XPAQcyXEx1D7XQWgdoKR83ui1/HlEA==} + /@types/d3-selection@3.0.5: + resolution: {integrity: sha512-xCB0z3Hi8eFIqyja3vW8iV01+OHGYR2di/+e+AiOcXIOrY82lcvWW8Ke1DYE/EUVMsBl4Db9RppSBS3X1U6J0w==} dev: true /@types/d3-shape@3.1.0: @@ -4069,14 +4072,14 @@ packages: /@types/d3-transition@3.0.2: resolution: {integrity: sha512-jo5o/Rf+/u6uerJ/963Dc39NI16FQzqwOc54bwvksGAdVfvDrqDpVeq95bEvPtBwLCVZutAEyAtmSyEMxN7vxQ==} dependencies: - '@types/d3-selection': 3.0.3 + '@types/d3-selection': 3.0.5 dev: true /@types/d3-zoom@3.0.1: resolution: {integrity: sha512-7s5L9TjfqIYQmQQEUcpMAcBOahem7TRoSO/+Gkz02GbMVuULiZzjF2BOdw291dbO2aNon4m2OdFsRGaCq2caLQ==} dependencies: '@types/d3-interpolate': 3.0.1 - '@types/d3-selection': 3.0.3 + '@types/d3-selection': 3.0.5 dev: true /@types/d3@7.4.0: @@ -4105,7 +4108,7 @@ packages: '@types/d3-random': 3.0.1 '@types/d3-scale': 4.0.2 '@types/d3-scale-chromatic': 3.0.0 - '@types/d3-selection': 3.0.3 + '@types/d3-selection': 3.0.5 '@types/d3-shape': 3.1.0 '@types/d3-time': 3.0.0 '@types/d3-time-format': 4.0.0 From daee545e785b8db7ecbd496cf4140e28757f96a4 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Tue, 13 Jun 2023 17:59:41 +0300 Subject: [PATCH 203/255] ignore ts check for renders until handle them --- packages/mermaid/src/diagrams/class/classDb.ts | 2 +- packages/mermaid/src/diagrams/class/classRenderer-v2.ts | 2 +- .../mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts | 2 +- packages/mermaid/src/diagrams/timeline/timelineRenderer.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/mermaid/src/diagrams/class/classDb.ts b/packages/mermaid/src/diagrams/class/classDb.ts index a0a7f05d9..11a1eb37d 100644 --- a/packages/mermaid/src/diagrams/class/classDb.ts +++ b/packages/mermaid/src/diagrams/class/classDb.ts @@ -1,4 +1,4 @@ -// @ts-expect-error - d3 types issue +// @ts-nocheck - don't check until handle it import { select, Selection } from 'd3'; import { log } from '../../logger.js'; import * as configApi from '../../config.js'; diff --git a/packages/mermaid/src/diagrams/class/classRenderer-v2.ts b/packages/mermaid/src/diagrams/class/classRenderer-v2.ts index b0a8ce89c..e0cfea641 100644 --- a/packages/mermaid/src/diagrams/class/classRenderer-v2.ts +++ b/packages/mermaid/src/diagrams/class/classRenderer-v2.ts @@ -1,4 +1,4 @@ -// @ts-ignore d3 types are not available +// @ts-nocheck - don't check until handle it import { select, curveLinear } from 'd3'; import * as graphlib from 'dagre-d3-es/src/graphlib/index.js'; import { log } from '../../logger.js'; diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts index 46d3f773b..92943337a 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantRenderer.ts @@ -1,4 +1,4 @@ -// @ts-ignore: TODO Fix ts errors +// @ts-nocheck - don't check until handle it import { select } from 'd3'; import * as configApi from '../../config.js'; import { log } from '../../logger.js'; diff --git a/packages/mermaid/src/diagrams/timeline/timelineRenderer.ts b/packages/mermaid/src/diagrams/timeline/timelineRenderer.ts index 0b82ffdce..17460bac2 100644 --- a/packages/mermaid/src/diagrams/timeline/timelineRenderer.ts +++ b/packages/mermaid/src/diagrams/timeline/timelineRenderer.ts @@ -1,4 +1,4 @@ -// @ts-ignore - db not typed yet +// @ts-nocheck - don't check until handle it import { select, Selection } from 'd3'; import svgDraw from './svgDraw.js'; import { log } from '../../logger.js'; From ae14f6a947642bbe93fa4d2405adb4c539b9f8a9 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Tue, 13 Jun 2023 18:50:08 +0300 Subject: [PATCH 204/255] add parial parts to info graph --- packages/mermaid/src/diagram-api/types.ts | 2 ++ .../mermaid/src/diagrams/info/infoRenderer.ts | 24 ++++++++++--------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/packages/mermaid/src/diagram-api/types.ts b/packages/mermaid/src/diagram-api/types.ts index 26cf33fbe..0bb05dd5c 100644 --- a/packages/mermaid/src/diagram-api/types.ts +++ b/packages/mermaid/src/diagram-api/types.ts @@ -77,3 +77,5 @@ export type DrawDefinition = ( * @param type - */ export type ParseDirectiveDefinition = (statement: string, context: string, type: string) => void; + +export type SVG = d3.Selection<HTMLFrameElement, unknown, HTMLElement, unknown>; diff --git a/packages/mermaid/src/diagrams/info/infoRenderer.ts b/packages/mermaid/src/diagrams/info/infoRenderer.ts index f75ace9c7..72bf4a524 100644 --- a/packages/mermaid/src/diagrams/info/infoRenderer.ts +++ b/packages/mermaid/src/diagrams/info/infoRenderer.ts @@ -2,7 +2,7 @@ import { select } from 'd3'; import { log } from '../../logger.js'; import { getConfig } from '../../config.js'; -import type { DrawDefinition } from '../../diagram-api/types.js'; +import type { DrawDefinition, SVG } from '../../diagram-api/types.js'; /** * Draws a an info picture in the tag with id: id based on the graph definition in text. @@ -13,20 +13,25 @@ import type { DrawDefinition } from '../../diagram-api/types.js'; */ export const draw: DrawDefinition = (text, id, version) => { try { - log.debug('Rendering info diagram\n' + text); + log.debug('rendering info diagram\n' + text); const securityLevel = getConfig().securityLevel; - // Handle root and Document for when rendering in sandbox mode - let sandboxElement; + // handle root and document for when rendering in sandbox mode + let sandboxElement: SVG | undefined; if (securityLevel === 'sandbox') { sandboxElement = select('#i' + id); } - const root = - securityLevel === 'sandbox' - ? select(sandboxElement.nodes()[0].contentDocument.body) - : select('body'); + let root; + if (securityLevel === 'sandbox' && sandboxElement !== undefined) { + root = select(sandboxElement.nodes()[0].contentDocument!.body); + } else { + root = select('body'); + } + // @ts-ignore - TODO: figure out how to resolve this const svg = root.select('#' + id); + svg.attr('height', 100); + svg.attr('width', 400); const g = svg.append('g'); @@ -37,9 +42,6 @@ export const draw: DrawDefinition = (text, id, version) => { .attr('font-size', '32px') .style('text-anchor', 'middle') .text('v ' + version); - - svg.attr('height', 100); - svg.attr('width', 400); } catch (e) { log.error('error while rendering info diagram', e); } From 750b1d222391688caeaa684068cd7913d2e1086c Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Tue, 13 Jun 2023 19:55:00 +0300 Subject: [PATCH 205/255] add HTML type and change svg type generic types --- packages/mermaid/src/diagram-api/types.ts | 5 ++++- .../mermaid/src/diagrams/info/infoRenderer.ts | 21 ++++++++++--------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/packages/mermaid/src/diagram-api/types.ts b/packages/mermaid/src/diagram-api/types.ts index 0bb05dd5c..265af6587 100644 --- a/packages/mermaid/src/diagram-api/types.ts +++ b/packages/mermaid/src/diagram-api/types.ts @@ -1,5 +1,6 @@ import { Diagram } from '../Diagram.js'; import { MermaidConfig } from '../config.type.js'; +import type * as d3 from 'd3'; export interface InjectUtils { _log: any; @@ -78,4 +79,6 @@ export type DrawDefinition = ( */ export type ParseDirectiveDefinition = (statement: string, context: string, type: string) => void; -export type SVG = d3.Selection<HTMLFrameElement, unknown, HTMLElement, unknown>; +export type HTML = d3.Selection<HTMLIFrameElement, unknown, Element, unknown>; + +export type SVG = d3.Selection<SVGSVGElement, unknown, Element, unknown>; diff --git a/packages/mermaid/src/diagrams/info/infoRenderer.ts b/packages/mermaid/src/diagrams/info/infoRenderer.ts index 72bf4a524..f486ecac9 100644 --- a/packages/mermaid/src/diagrams/info/infoRenderer.ts +++ b/packages/mermaid/src/diagrams/info/infoRenderer.ts @@ -2,7 +2,7 @@ import { select } from 'd3'; import { log } from '../../logger.js'; import { getConfig } from '../../config.js'; -import type { DrawDefinition, SVG } from '../../diagram-api/types.js'; +import type { DrawDefinition, HTML, SVG } from '../../diagram-api/types.js'; /** * Draws a an info picture in the tag with id: id based on the graph definition in text. @@ -17,19 +17,20 @@ export const draw: DrawDefinition = (text, id, version) => { const securityLevel = getConfig().securityLevel; // handle root and document for when rendering in sandbox mode - let sandboxElement: SVG | undefined; + let sandboxElement: HTML | undefined; + let document: Document | null | undefined; if (securityLevel === 'sandbox') { sandboxElement = select('#i' + id); - } - let root; - if (securityLevel === 'sandbox' && sandboxElement !== undefined) { - root = select(sandboxElement.nodes()[0].contentDocument!.body); - } else { - root = select('body'); + document = sandboxElement.nodes()[0].contentDocument; } - // @ts-ignore - TODO: figure out how to resolve this - const svg = root.select('#' + id); + // @ts-ignore - figure out how to assign HTML to document type + const root: HTML = + sandboxElement !== undefined && document !== undefined && document !== null + ? select(document) + : select('body'); + + const svg: SVG = root.select('#' + id); svg.attr('height', 100); svg.attr('width', 400); From 921bbd1a9f8043f97ddda39eea1d12dd39776196 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod <sidharthv96@gmail.com> Date: Tue, 13 Jun 2023 21:19:01 +0530 Subject: [PATCH 206/255] Move filetype Recommendations to the top --- docs/ecosystem/integrations.md | 25 +++++++++++-------- .../src/docs/ecosystem/integrations.md | 25 +++++++++++-------- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/docs/ecosystem/integrations.md b/docs/ecosystem/integrations.md index 88d075f7e..28db3afff 100644 --- a/docs/ecosystem/integrations.md +++ b/docs/ecosystem/integrations.md @@ -6,6 +6,20 @@ # Integrations +## Recommendations + +### File Extension + +Applications that support mermaid files [SHOULD](https://datatracker.ietf.org/doc/html/rfc2119#section-3) use `.mermaid` or `.mmd` file extensions. + +### MIME Type + +The recommended [MIME type](https://www.iana.org/assignments/media-types/media-types.xhtml) for mermaid media is `text/vnd.mermaid`. + +[IANA](https://www.iana.org/) recognition pending. + +--- + The following list is a compilation of different integrations and plugins that allow the rendering of mermaid definitions within other applications. They also serve as proof of concept, for the variety of things that can be built with mermaid. @@ -205,14 +219,3 @@ They also serve as proof of concept, for the variety of things that can be built - [NiceGUI: Let any browser be the frontend of your Python code](https://nicegui.io) - [ui.mermaid(...)](https://nicegui.io/reference#mermaid_diagrams) - [ui.markdown(..., extras=\['mermaid'\])](https://nicegui.io/reference#markdown_element) - -## Recommendations - -### File Extension - -Applications that support editing and saving mermaid files are encouraged to use `.mermaid` or `.mmd` file extensions. - -### MIME Type - -While not officially recognized by the [IANA](https://www.iana.org/assignments/media-types/media-types.xhtml), -the recommended MIME type for mermaid media is `text/vnd.mermaid`. diff --git a/packages/mermaid/src/docs/ecosystem/integrations.md b/packages/mermaid/src/docs/ecosystem/integrations.md index 8e062c10b..be229a8aa 100644 --- a/packages/mermaid/src/docs/ecosystem/integrations.md +++ b/packages/mermaid/src/docs/ecosystem/integrations.md @@ -1,5 +1,19 @@ # Integrations +## Recommendations + +### File Extension + +Applications that support mermaid files [SHOULD](https://datatracker.ietf.org/doc/html/rfc2119#section-3) use `.mermaid` or `.mmd` file extensions. + +### MIME Type + +The recommended [MIME type](https://www.iana.org/assignments/media-types/media-types.xhtml) for mermaid media is `text/vnd.mermaid`. + +[IANA](https://www.iana.org/) recognition pending. + +--- + The following list is a compilation of different integrations and plugins that allow the rendering of mermaid definitions within other applications. They also serve as proof of concept, for the variety of things that can be built with mermaid. @@ -199,14 +213,3 @@ They also serve as proof of concept, for the variety of things that can be built - [NiceGUI: Let any browser be the frontend of your Python code](https://nicegui.io) - [ui.mermaid(...)](https://nicegui.io/reference#mermaid_diagrams) - [ui.markdown(..., extras=['mermaid'])](https://nicegui.io/reference#markdown_element) - -## Recommendations - -### File Extension - -Applications that support editing and saving mermaid files are encouraged to use `.mermaid` or `.mmd` file extensions. - -### MIME Type - -While not officially recognized by the [IANA](https://www.iana.org/assignments/media-types/media-types.xhtml), -the recommended MIME type for mermaid media is `text/vnd.mermaid`. From 6af2438474cf8601110a6d6bd36f51a6a2b82d94 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Wed, 14 Jun 2023 13:48:39 +0300 Subject: [PATCH 207/255] add default info db and recreate clear function for info --- packages/mermaid/src/diagrams/info/infoDb.ts | 9 ++++++--- packages/mermaid/src/diagrams/info/infoTypes.ts | 4 ++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/mermaid/src/diagrams/info/infoDb.ts b/packages/mermaid/src/diagrams/info/infoDb.ts index 968982034..4b6830675 100644 --- a/packages/mermaid/src/diagrams/info/infoDb.ts +++ b/packages/mermaid/src/diagrams/info/infoDb.ts @@ -1,7 +1,6 @@ -import { clear } from '../../commonDb.js'; -import type { InfoDB } from './infoTypes.js'; +import { DEFAULT_INFO_DB, type InfoDB } from './infoTypes.js'; -let info = false; +let info: boolean = DEFAULT_INFO_DB.info; export const setInfo = (toggle: boolean): void => { info = toggle; @@ -9,6 +8,10 @@ export const setInfo = (toggle: boolean): void => { export const getInfo = (): boolean => info; +const clear = (): void => { + info = DEFAULT_INFO_DB.info; +}; + const db: InfoDB = { clear, setInfo, diff --git a/packages/mermaid/src/diagrams/info/infoTypes.ts b/packages/mermaid/src/diagrams/info/infoTypes.ts index 9878642b1..2dff5322d 100644 --- a/packages/mermaid/src/diagrams/info/infoTypes.ts +++ b/packages/mermaid/src/diagrams/info/infoTypes.ts @@ -1,5 +1,9 @@ import type { DiagramDB } from '../../diagram-api/types.js'; +export const DEFAULT_INFO_DB = { + info: false, +} as const; + export interface InfoDB extends DiagramDB { clear: () => void; setInfo: (info: boolean) => void; From 8d60ef6d0a18d20d0a0f5ddeb1fe9e95b795e00b Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Wed, 14 Jun 2023 13:54:09 +0300 Subject: [PATCH 208/255] add info fields interface --- packages/mermaid/src/diagrams/info/infoTypes.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/info/infoTypes.ts b/packages/mermaid/src/diagrams/info/infoTypes.ts index 2dff5322d..ae422eea6 100644 --- a/packages/mermaid/src/diagrams/info/infoTypes.ts +++ b/packages/mermaid/src/diagrams/info/infoTypes.ts @@ -1,6 +1,10 @@ import type { DiagramDB } from '../../diagram-api/types.js'; -export const DEFAULT_INFO_DB = { +export interface InfoFields { + info: boolean; +} + +export const DEFAULT_INFO_DB: InfoFields = { info: false, } as const; From 0c449bbd27db43ee217a20ee028b569b53cca975 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Wed, 14 Jun 2023 17:27:04 +0300 Subject: [PATCH 209/255] handle optional `.styles` --- packages/mermaid/src/diagram-api/diagramAPI.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagram-api/diagramAPI.ts b/packages/mermaid/src/diagram-api/diagramAPI.ts index 7e89d9cd7..457dd673b 100644 --- a/packages/mermaid/src/diagram-api/diagramAPI.ts +++ b/packages/mermaid/src/diagram-api/diagramAPI.ts @@ -7,6 +7,7 @@ import { addStylesForDiagram } from '../styles.js'; import { DiagramDefinition, DiagramDetector } from './types.js'; import * as _commonDb from '../commonDb.js'; import { parseDirective as _parseDirective } from '../directiveUtils.js'; +import isEmpty from 'lodash-es/isEmpty.js'; /* Packaging and exposing resources for external diagrams so that they can import @@ -50,7 +51,9 @@ export const registerDiagram = ( if (detector) { addDetector(id, detector); } - addStylesForDiagram(id, diagram.styles); + if (!isEmpty(diagram.styles)) { + addStylesForDiagram(id, diagram.styles); + } if (diagram.injectUtils) { diagram.injectUtils( From 4b7ed7845b69e784c439da24b96c40dff5de5c5f Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Wed, 14 Jun 2023 17:28:37 +0300 Subject: [PATCH 210/255] remove handled `ts-ignore` in info diagram --- packages/mermaid/src/diagrams/info/infoRenderer.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/info/infoRenderer.ts b/packages/mermaid/src/diagrams/info/infoRenderer.ts index f486ecac9..dccc33c8d 100644 --- a/packages/mermaid/src/diagrams/info/infoRenderer.ts +++ b/packages/mermaid/src/diagrams/info/infoRenderer.ts @@ -1,4 +1,3 @@ -// @ts-ignore - TODO: fix ts error from d3 import { select } from 'd3'; import { log } from '../../logger.js'; import { getConfig } from '../../config.js'; From 599fb3a72823beddcef6be1ad9d05b74a3bfec23 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Wed, 14 Jun 2023 20:13:22 +0300 Subject: [PATCH 211/255] assign returned variables to their variables --- packages/mermaid/src/diagrams/info/infoDb.ts | 6 +++--- packages/mermaid/src/diagrams/info/infoDetector.ts | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/mermaid/src/diagrams/info/infoDb.ts b/packages/mermaid/src/diagrams/info/infoDb.ts index 4b6830675..7b837b7b2 100644 --- a/packages/mermaid/src/diagrams/info/infoDb.ts +++ b/packages/mermaid/src/diagrams/info/infoDb.ts @@ -13,9 +13,9 @@ const clear = (): void => { }; const db: InfoDB = { - clear, - setInfo, - getInfo, + clear: clear, + setInfo: setInfo, + getInfo: getInfo, }; export default db; diff --git a/packages/mermaid/src/diagrams/info/infoDetector.ts b/packages/mermaid/src/diagrams/info/infoDetector.ts index 819400cd2..e27c4b082 100644 --- a/packages/mermaid/src/diagrams/info/infoDetector.ts +++ b/packages/mermaid/src/diagrams/info/infoDetector.ts @@ -12,13 +12,13 @@ const detector: DiagramDetector = (txt) => { const loader: DiagramLoader = async () => { const { diagram } = await import('./infoDiagram.js'); - return { id, diagram }; + return { id: id, diagram: diagram }; }; const plugin: ExternalDiagramDefinition = { - id, - detector, - loader, + id: id, + detector: detector, + loader: loader, }; export default plugin; From 638c3691a831ce64922480ab91fabb0d5bdbcdfa Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Wed, 14 Jun 2023 21:14:55 +0300 Subject: [PATCH 212/255] remove id and diagram assigning in info loader --- packages/mermaid/src/diagrams/info/infoDetector.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/info/infoDetector.ts b/packages/mermaid/src/diagrams/info/infoDetector.ts index e27c4b082..08a780f39 100644 --- a/packages/mermaid/src/diagrams/info/infoDetector.ts +++ b/packages/mermaid/src/diagrams/info/infoDetector.ts @@ -12,7 +12,7 @@ const detector: DiagramDetector = (txt) => { const loader: DiagramLoader = async () => { const { diagram } = await import('./infoDiagram.js'); - return { id: id, diagram: diagram }; + return { id, diagram }; }; const plugin: ExternalDiagramDefinition = { From 6ff33149e0d4501ec32daeaf460a9916f0b910d0 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Wed, 14 Jun 2023 22:01:27 +0300 Subject: [PATCH 213/255] move default_info_db into infoDbOF --- packages/mermaid/src/diagrams/info/infoDb.ts | 6 +++++- packages/mermaid/src/diagrams/info/infoTypes.ts | 4 ---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/mermaid/src/diagrams/info/infoDb.ts b/packages/mermaid/src/diagrams/info/infoDb.ts index 7b837b7b2..0f81dff42 100644 --- a/packages/mermaid/src/diagrams/info/infoDb.ts +++ b/packages/mermaid/src/diagrams/info/infoDb.ts @@ -1,4 +1,8 @@ -import { DEFAULT_INFO_DB, type InfoDB } from './infoTypes.js'; +import type { InfoFields, InfoDB } from './infoTypes.js'; + +export const DEFAULT_INFO_DB: InfoFields = { + info: false, +} as const; let info: boolean = DEFAULT_INFO_DB.info; diff --git a/packages/mermaid/src/diagrams/info/infoTypes.ts b/packages/mermaid/src/diagrams/info/infoTypes.ts index ae422eea6..239f8fdda 100644 --- a/packages/mermaid/src/diagrams/info/infoTypes.ts +++ b/packages/mermaid/src/diagrams/info/infoTypes.ts @@ -4,10 +4,6 @@ export interface InfoFields { info: boolean; } -export const DEFAULT_INFO_DB: InfoFields = { - info: false, -} as const; - export interface InfoDB extends DiagramDB { clear: () => void; setInfo: (info: boolean) => void; From 0cc93d38c62b27d36b1aacf25b8bd96f7f4da154 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Wed, 14 Jun 2023 22:04:28 +0300 Subject: [PATCH 214/255] use object destructuring for getConfig in infoRenderer --- packages/mermaid/src/diagrams/info/infoRenderer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/info/infoRenderer.ts b/packages/mermaid/src/diagrams/info/infoRenderer.ts index dccc33c8d..010878021 100644 --- a/packages/mermaid/src/diagrams/info/infoRenderer.ts +++ b/packages/mermaid/src/diagrams/info/infoRenderer.ts @@ -14,7 +14,7 @@ export const draw: DrawDefinition = (text, id, version) => { try { log.debug('rendering info diagram\n' + text); - const securityLevel = getConfig().securityLevel; + const { securityLevel } = getConfig(); // handle root and document for when rendering in sandbox mode let sandboxElement: HTML | undefined; let document: Document | null | undefined; From d6bd59c46e8869ea8d9b5c17764ed21424f82412 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Wed, 14 Jun 2023 22:09:15 +0300 Subject: [PATCH 215/255] remove assigned variables to their variables and export db without default --- packages/mermaid/src/diagrams/info/infoDb.ts | 8 ++++---- packages/mermaid/src/diagrams/info/infoDetector.ts | 6 +++--- packages/mermaid/src/diagrams/info/infoDiagram.ts | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/mermaid/src/diagrams/info/infoDb.ts b/packages/mermaid/src/diagrams/info/infoDb.ts index 0f81dff42..e10790c32 100644 --- a/packages/mermaid/src/diagrams/info/infoDb.ts +++ b/packages/mermaid/src/diagrams/info/infoDb.ts @@ -17,9 +17,9 @@ const clear = (): void => { }; const db: InfoDB = { - clear: clear, - setInfo: setInfo, - getInfo: getInfo, + clear, + setInfo, + getInfo, }; -export default db; +export { db }; diff --git a/packages/mermaid/src/diagrams/info/infoDetector.ts b/packages/mermaid/src/diagrams/info/infoDetector.ts index 08a780f39..819400cd2 100644 --- a/packages/mermaid/src/diagrams/info/infoDetector.ts +++ b/packages/mermaid/src/diagrams/info/infoDetector.ts @@ -16,9 +16,9 @@ const loader: DiagramLoader = async () => { }; const plugin: ExternalDiagramDefinition = { - id: id, - detector: detector, - loader: loader, + id, + detector, + loader, }; export default plugin; diff --git a/packages/mermaid/src/diagrams/info/infoDiagram.ts b/packages/mermaid/src/diagrams/info/infoDiagram.ts index 277a14317..c136e15cb 100644 --- a/packages/mermaid/src/diagrams/info/infoDiagram.ts +++ b/packages/mermaid/src/diagrams/info/infoDiagram.ts @@ -1,11 +1,11 @@ import type { DiagramDefinition } from '../../diagram-api/types.js'; // @ts-ignore - jison doesn't export types import parser from './parser/info.jison'; -import db from './infoDb.js'; +import { db } from './infoDb.js'; import renderer from './infoRenderer.js'; export const diagram: DiagramDefinition = { - parser: parser, - db: db, - renderer: renderer, + parser, + db, + renderer, }; From bf346ea15537c8daf0c2e71efe5d69c89de774c4 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Wed, 14 Jun 2023 22:23:31 +0300 Subject: [PATCH 216/255] resolve db import in info.spec.ts --- packages/mermaid/src/diagrams/info/info.spec.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/mermaid/src/diagrams/info/info.spec.ts b/packages/mermaid/src/diagrams/info/info.spec.ts index 9caca6a2a..763573b72 100644 --- a/packages/mermaid/src/diagrams/info/info.spec.ts +++ b/packages/mermaid/src/diagrams/info/info.spec.ts @@ -1,10 +1,10 @@ // @ts-ignore - jison doesn't export types import { parser } from './parser/info.jison'; -import infoDb from './infoDb.js'; +import { db } from './infoDb.js'; describe('info graph', () => { beforeEach(() => { - parser.yy = infoDb; + parser.yy = db; parser.yy.clear(); }); @@ -12,13 +12,13 @@ describe('info graph', () => { const str = `info`; parser.parse(str); - expect(infoDb.getInfo()).toBeFalsy(); + expect(db.getInfo()).toBeFalsy(); }); it('should handle an info definition with showInfo', () => { const str = `info showInfo`; parser.parse(str); - expect(infoDb.getInfo()).toBeTruthy(); + expect(db.getInfo()).toBeTruthy(); }); }); From f630fba392041cddf7f2aa53891960e01102246c Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Wed, 14 Jun 2023 23:27:27 +0300 Subject: [PATCH 217/255] remove default export in info files --- packages/mermaid/src/diagram-api/diagram-orchestration.ts | 2 +- packages/mermaid/src/diagrams/info/infoDetector.ts | 2 +- packages/mermaid/src/diagrams/info/infoDiagram.ts | 2 +- packages/mermaid/src/diagrams/info/infoRenderer.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/mermaid/src/diagram-api/diagram-orchestration.ts b/packages/mermaid/src/diagram-api/diagram-orchestration.ts index 03c04ed09..0253be45d 100644 --- a/packages/mermaid/src/diagram-api/diagram-orchestration.ts +++ b/packages/mermaid/src/diagram-api/diagram-orchestration.ts @@ -4,7 +4,7 @@ import flowchartV2 from '../diagrams/flowchart/flowDetector-v2.js'; import er from '../diagrams/er/erDetector.js'; import git from '../diagrams/git/gitGraphDetector.js'; import gantt from '../diagrams/gantt/ganttDetector.js'; -import info from '../diagrams/info/infoDetector.js'; +import { info } from '../diagrams/info/infoDetector.js'; import pie from '../diagrams/pie/pieDetector.js'; import quadrantChart from '../diagrams/quadrant-chart/quadrantDetector.js'; import requirement from '../diagrams/requirement/requirementDetector.js'; diff --git a/packages/mermaid/src/diagrams/info/infoDetector.ts b/packages/mermaid/src/diagrams/info/infoDetector.ts index 819400cd2..0a5a73c94 100644 --- a/packages/mermaid/src/diagrams/info/infoDetector.ts +++ b/packages/mermaid/src/diagrams/info/infoDetector.ts @@ -21,4 +21,4 @@ const plugin: ExternalDiagramDefinition = { loader, }; -export default plugin; +export const info = plugin; diff --git a/packages/mermaid/src/diagrams/info/infoDiagram.ts b/packages/mermaid/src/diagrams/info/infoDiagram.ts index c136e15cb..b21827b5f 100644 --- a/packages/mermaid/src/diagrams/info/infoDiagram.ts +++ b/packages/mermaid/src/diagrams/info/infoDiagram.ts @@ -2,7 +2,7 @@ import type { DiagramDefinition } from '../../diagram-api/types.js'; // @ts-ignore - jison doesn't export types import parser from './parser/info.jison'; import { db } from './infoDb.js'; -import renderer from './infoRenderer.js'; +import { renderer } from './infoRenderer.js'; export const diagram: DiagramDefinition = { parser, diff --git a/packages/mermaid/src/diagrams/info/infoRenderer.ts b/packages/mermaid/src/diagrams/info/infoRenderer.ts index 010878021..970fe7791 100644 --- a/packages/mermaid/src/diagrams/info/infoRenderer.ts +++ b/packages/mermaid/src/diagrams/info/infoRenderer.ts @@ -47,4 +47,4 @@ export const draw: DrawDefinition = (text, id, version) => { } }; -export default { draw }; +export const renderer = { draw }; From 689ffbf5a54bc77b9b2cd9d75e9ec25d4e578547 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Thu, 15 Jun 2023 01:01:35 +0300 Subject: [PATCH 218/255] change infoDb db export --- packages/mermaid/src/diagrams/info/infoDb.ts | 4 +--- packages/mermaid/src/diagrams/info/infoRenderer.ts | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/mermaid/src/diagrams/info/infoDb.ts b/packages/mermaid/src/diagrams/info/infoDb.ts index e10790c32..ff4bfcae0 100644 --- a/packages/mermaid/src/diagrams/info/infoDb.ts +++ b/packages/mermaid/src/diagrams/info/infoDb.ts @@ -16,10 +16,8 @@ const clear = (): void => { info = DEFAULT_INFO_DB.info; }; -const db: InfoDB = { +export const db: InfoDB = { clear, setInfo, getInfo, }; - -export { db }; diff --git a/packages/mermaid/src/diagrams/info/infoRenderer.ts b/packages/mermaid/src/diagrams/info/infoRenderer.ts index 970fe7791..79f3ec992 100644 --- a/packages/mermaid/src/diagrams/info/infoRenderer.ts +++ b/packages/mermaid/src/diagrams/info/infoRenderer.ts @@ -10,7 +10,7 @@ import type { DrawDefinition, HTML, SVG } from '../../diagram-api/types.js'; * @param id - The id of the diagram which will be used as a DOM element id. * @param version - MermaidJS version. */ -export const draw: DrawDefinition = (text, id, version) => { +const draw: DrawDefinition = (text, id, version) => { try { log.debug('rendering info diagram\n' + text); From 9deae27c823ff537cdf385c53c51547f9cb47145 Mon Sep 17 00:00:00 2001 From: Yokozuna59 <u.yokozuna@gmail.com> Date: Thu, 15 Jun 2023 02:30:51 +0300 Subject: [PATCH 219/255] add messing timeline and info demoes links --- demos/index.html | 6 ++++++ demos/info.html | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 demos/info.html diff --git a/demos/index.html b/demos/index.html index 5299c2202..391042182 100644 --- a/demos/index.html +++ b/demos/index.html @@ -45,6 +45,9 @@ <li> <h2><a href="./git.html">Git</a></h2> </li> + <li> + <h2><a href="./info.html">Info</a></h2> + </li> <li> <h2><a href="./journey.html">Journey</a></h2> </li> @@ -66,6 +69,9 @@ <li> <h2><a href="./state.html">State</a></h2> </li> + <li> + <h2><a href="./timeline.html">Timeline</a></h2> + </li> <li> <h2><a href="./zenuml.html">ZenUML</a></h2> </li> diff --git a/demos/info.html b/demos/info.html new file mode 100644 index 000000000..7ef8f40fc --- /dev/null +++ b/demos/info.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <title>Mermaid Quick Test Page + + + + + +

    Info diagram demos

    +
    +    info
    +  
    + +
    +
    +    info showInfo
    +  
    + + + + From 7e639bec3ae72c6e1e1beb18a658047cf9480089 Mon Sep 17 00:00:00 2001 From: Yokozuna59 Date: Thu, 15 Jun 2023 02:31:51 +0300 Subject: [PATCH 220/255] convert the cypress info.spec.js into ts --- cypress/integration/rendering/info.spec.js | 13 ------------- cypress/integration/rendering/info.spec.ts | 11 +++++++++++ packages/mermaid/src/diagrams/info/info.spec.ts | 2 +- 3 files changed, 12 insertions(+), 14 deletions(-) delete mode 100644 cypress/integration/rendering/info.spec.js create mode 100644 cypress/integration/rendering/info.spec.ts diff --git a/cypress/integration/rendering/info.spec.js b/cypress/integration/rendering/info.spec.js deleted file mode 100644 index bcfce30e3..000000000 --- a/cypress/integration/rendering/info.spec.js +++ /dev/null @@ -1,13 +0,0 @@ -import { imgSnapshotTest } from '../../helpers/util.js'; - -describe('Sequencediagram', () => { - it('should render a simple info diagrams', () => { - imgSnapshotTest( - ` - info - showInfo - `, - {} - ); - }); -}); diff --git a/cypress/integration/rendering/info.spec.ts b/cypress/integration/rendering/info.spec.ts new file mode 100644 index 000000000..ea689f027 --- /dev/null +++ b/cypress/integration/rendering/info.spec.ts @@ -0,0 +1,11 @@ +import { imgSnapshotTest } from '../../helpers/util.js'; + +describe('info diagram', () => { + it('should handle an info definition', () => { + imgSnapshotTest(`info`, {}); + }); + + it('should handle an info definition with showInfo', () => { + imgSnapshotTest(`info showInfo`, {}); + }); +}); diff --git a/packages/mermaid/src/diagrams/info/info.spec.ts b/packages/mermaid/src/diagrams/info/info.spec.ts index 763573b72..076f04f69 100644 --- a/packages/mermaid/src/diagrams/info/info.spec.ts +++ b/packages/mermaid/src/diagrams/info/info.spec.ts @@ -2,7 +2,7 @@ import { parser } from './parser/info.jison'; import { db } from './infoDb.js'; -describe('info graph', () => { +describe('info diagram', () => { beforeEach(() => { parser.yy = db; parser.yy.clear(); From 35e81f3fd4f40db73ec06d8b958f0a048c5c627a Mon Sep 17 00:00:00 2001 From: Yokozuna59 Date: Thu, 15 Jun 2023 02:56:29 +0300 Subject: [PATCH 221/255] format and add theme to cypress info.html --- cypress/platform/info.html | 14 ++++++++------ demos/info.html | 11 +++++------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/cypress/platform/info.html b/cypress/platform/info.html index c35446153..1b32fe1d3 100644 --- a/cypress/platform/info.html +++ b/cypress/platform/info.html @@ -5,18 +5,20 @@

    info below

    -info
    +        info
         
    + +
    +
    +        info showInfo
    +    
    + diff --git a/demos/info.html b/demos/info.html index 7ef8f40fc..a6b53270d 100644 --- a/demos/info.html +++ b/demos/info.html @@ -15,19 +15,18 @@

    Info diagram demos

    -    info
    -  
    + info +

    fhpbVca0us^B#<) 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 `h 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

    fhpbVca0us^B#<) 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 `h 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


    -    info showInfo
    -  
    + info showInfo +
    - - From 95bba56bd82fc4b28df5bcae495e1c2e7fcb65f3 Mon Sep 17 00:00:00 2001 From: Yokozuna59 Date: Fri, 16 Jun 2023 00:07:06 +0300 Subject: [PATCH 238/255] rename plugin variable into info in infoDetector.ts --- packages/mermaid/src/diagrams/info/infoDetector.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/mermaid/src/diagrams/info/infoDetector.ts b/packages/mermaid/src/diagrams/info/infoDetector.ts index 0a5a73c94..04d2677ef 100644 --- a/packages/mermaid/src/diagrams/info/infoDetector.ts +++ b/packages/mermaid/src/diagrams/info/infoDetector.ts @@ -15,10 +15,8 @@ const loader: DiagramLoader = async () => { return { id, diagram }; }; -const plugin: ExternalDiagramDefinition = { +export const info: ExternalDiagramDefinition = { id, detector, loader, }; - -export const info = plugin; From 547358fc7e741561a37481be48dc52162535df4c Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 16 Jun 2023 20:25:40 +0530 Subject: [PATCH 239/255] Add coverage for E2E tests --- .gitignore | 1 + .vite/build.ts | 8 + cypress.config.cjs | 2 + cypress/support/e2e.js | 2 +- package.json | 18 +- packages/mermaid-example-diagram/package.json | 3 - pnpm-lock.yaml | 872 +++++++++++++++--- 7 files changed, 753 insertions(+), 153 deletions(-) diff --git a/.gitignore b/.gitignore index 8348f4ae4..009c6dfac 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,4 @@ stats/ **/user-avatars/* **/contributor-names.json .pnpm-store +.nyc_output diff --git a/.vite/build.ts b/.vite/build.ts index a8cfe919c..01cbb7393 100644 --- a/.vite/build.ts +++ b/.vite/build.ts @@ -6,10 +6,12 @@ import { readFileSync } from 'fs'; import typescript from '@rollup/plugin-typescript'; import { visualizer } from 'rollup-plugin-visualizer'; import type { TemplateType } from 'rollup-plugin-visualizer/dist/plugin/template-types.js'; +import istanbul from 'vite-plugin-istanbul'; const visualize = process.argv.includes('--visualize'); const watch = process.argv.includes('--watch'); const mermaidOnly = process.argv.includes('--mermaid'); +const coverage = process.env.VITE_COVERAGE === 'true'; const __dirname = fileURLToPath(new URL('.', import.meta.url)); const sourcemap = false; @@ -121,6 +123,12 @@ export const getBuildConfig = ({ minify, core, watch, entryName }: BuildOptions) jisonPlugin(), // @ts-expect-error According to the type definitions, rollup plugins are incompatible with vite typescript({ compilerOptions: { declaration: false } }), + istanbul({ + exclude: ['node_modules', 'test/'], + extension: ['.js', '.ts'], + requireEnv: true, + forceBuildInstrument: coverage, + }), ...visualizerOptions(packageName, core), ], }; diff --git a/cypress.config.cjs b/cypress.config.cjs index 6fe0ae5ab..30076c56e 100644 --- a/cypress.config.cjs +++ b/cypress.config.cjs @@ -2,12 +2,14 @@ const { defineConfig } = require('cypress'); const { addMatchImageSnapshotPlugin } = require('cypress-image-snapshot/plugin'); +const coverage = require('@cypress/code-coverage/task'); module.exports = defineConfig({ projectId: 'n2sma2', e2e: { specPattern: 'cypress/integration/**/*.{js,jsx,ts,tsx}', setupNodeEvents(on, config) { + coverage(on, config); addMatchImageSnapshotPlugin(on, config); // copy any needed variables from process.env to config.env config.env.useAppli = process.env.USE_APPLI ? true : false; diff --git a/cypress/support/e2e.js b/cypress/support/e2e.js index 69d93b4a4..ef985866e 100644 --- a/cypress/support/e2e.js +++ b/cypress/support/e2e.js @@ -13,8 +13,8 @@ // https://on.cypress.io/configuration // *********************************************************** +import '@cypress/code-coverage/support'; import '@applitools/eyes-cypress/commands'; - // Import commands.js using ES2015 syntax: import './commands'; diff --git a/package.json b/package.json index da33ed70a..0bbe30187 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "build:watch": "pnpm build:vite --watch", "build": "pnpm run -r clean && pnpm build:types && pnpm build:vite", "dev": "concurrently \"pnpm build:vite --watch\" \"ts-node-esm .vite/server.ts\"", + "dev:coverage": "VITE_COVERAGE=true pnpm dev", "release": "pnpm build", "lint": "eslint --cache --cache-strategy content --ignore-path .gitignore . && pnpm lint:jison && prettier --cache --check .", "lint:fix": "eslint --cache --cache-strategy content --fix --ignore-path .gitignore . && prettier --write . && ts-node-esm scripts/fixCSpell.ts", @@ -30,6 +31,7 @@ "cypress": "cypress run", "cypress:open": "cypress open", "e2e": "start-server-and-test dev http://localhost:9000/ cypress", + "e2e:coverage": "VITE_COVERAGE=true pnpm e2e", "ci": "vitest run", "test": "pnpm lint && vitest run", "test:watch": "vitest --watch", @@ -59,7 +61,8 @@ "@commitlint/cli": "^17.6.1", "@commitlint/config-conventional": "^17.6.1", "@cspell/eslint-plugin": "^6.31.1", - "@rollup/plugin-typescript": "^11.1.0", + "@cypress/code-coverage": "^3.10.7", + "@rollup/plugin-typescript": "^11.1.1", "@types/cors": "^2.8.13", "@types/eslint": "^8.37.0", "@types/express": "^4.17.17", @@ -72,9 +75,9 @@ "@types/rollup-plugin-visualizer": "^4.2.1", "@typescript-eslint/eslint-plugin": "^5.59.0", "@typescript-eslint/parser": "^5.59.0", - "@vitest/coverage-c8": "^0.31.0", - "@vitest/spy": "^0.31.0", - "@vitest/ui": "^0.31.0", + "@vitest/coverage-c8": "^0.32.0", + "@vitest/spy": "^0.32.0", + "@vitest/ui": "^0.32.0", "concurrently": "^8.0.1", "cors": "^2.8.5", "coveralls": "^3.1.1", @@ -106,11 +109,12 @@ "prettier": "^2.8.8", "prettier-plugin-jsdoc": "^0.4.2", "rimraf": "^5.0.0", - "rollup-plugin-visualizer": "^5.9.0", + "rollup-plugin-visualizer": "^5.9.2", "start-server-and-test": "^2.0.0", "ts-node": "^10.9.1", - "typescript": "^5.0.4", - "vite": "^4.3.1", + "typescript": "^5.1.3", + "vite": "^4.3.9", + "vite-plugin-istanbul": "^4.1.0", "vitest": "^0.31.0" }, "volta": { diff --git a/packages/mermaid-example-diagram/package.json b/packages/mermaid-example-diagram/package.json index 75272d5a4..1ea4135ef 100644 --- a/packages/mermaid-example-diagram/package.json +++ b/packages/mermaid-example-diagram/package.json @@ -52,9 +52,6 @@ "rimraf": "^5.0.0", "mermaid": "workspace:*" }, - "resolutions": { - "d3": "^7.0.0" - }, "files": [ "dist" ], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 633990a3c..3cbb544f1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,12 +1,16 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + importers: .: devDependencies: '@applitools/eyes-cypress': specifier: ^3.32.0 - version: 3.32.0(typescript@5.0.4) + version: 3.32.0(typescript@5.1.3) '@commitlint/cli': specifier: ^17.6.1 version: 17.6.1 @@ -16,9 +20,12 @@ importers: '@cspell/eslint-plugin': specifier: ^6.31.1 version: 6.31.1 + '@cypress/code-coverage': + specifier: ^3.10.7 + version: 3.10.7(@babel/core@7.12.3)(@babel/preset-env@7.20.2)(babel-loader@9.1.2)(cypress@12.10.0)(webpack@5.75.0) '@rollup/plugin-typescript': - specifier: ^11.1.0 - version: 11.1.0(typescript@5.0.4) + specifier: ^11.1.1 + version: 11.1.1(typescript@5.1.3) '@types/cors': specifier: ^2.8.13 version: 2.8.13 @@ -51,19 +58,19 @@ importers: version: 4.2.1 '@typescript-eslint/eslint-plugin': specifier: ^5.59.0 - version: 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.0.4) + version: 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.1.3) '@typescript-eslint/parser': specifier: ^5.59.0 - version: 5.59.0(eslint@8.39.0)(typescript@5.0.4) + version: 5.59.0(eslint@8.39.0)(typescript@5.1.3) '@vitest/coverage-c8': - specifier: ^0.31.0 - version: 0.31.0(vitest@0.31.0) + specifier: ^0.32.0 + version: 0.32.0(vitest@0.31.0) '@vitest/spy': - specifier: ^0.31.0 - version: 0.31.0 + specifier: ^0.32.0 + version: 0.32.0 '@vitest/ui': - specifier: ^0.31.0 - version: 0.31.0(vitest@0.31.0) + specifier: ^0.32.0 + version: 0.32.0(vitest@0.31.0) concurrently: specifier: ^8.0.1 version: 8.0.1 @@ -96,7 +103,7 @@ importers: version: 7.1.0 eslint-plugin-jest: specifier: ^27.2.1 - version: 27.2.1(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.39.0)(jest@29.5.0)(typescript@5.0.4) + version: 27.2.1(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.39.0)(jest@29.5.0)(typescript@5.1.3) eslint-plugin-jsdoc: specifier: ^43.0.7 version: 43.0.7(eslint@8.39.0) @@ -158,23 +165,26 @@ importers: specifier: ^5.0.0 version: 5.0.0 rollup-plugin-visualizer: - specifier: ^5.9.0 - version: 5.9.0 + specifier: ^5.9.2 + version: 5.9.2 start-server-and-test: specifier: ^2.0.0 version: 2.0.0 ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) + version: 10.9.1(@types/node@18.16.0)(typescript@5.1.3) typescript: - specifier: ^5.0.4 - version: 5.0.4 + specifier: ^5.1.3 + version: 5.1.3 vite: - specifier: ^4.3.1 - version: 4.3.1(@types/node@18.16.0) + specifier: ^4.3.9 + version: 4.3.9(@types/node@18.16.0) + vite-plugin-istanbul: + specifier: ^4.1.0 + version: 4.1.0(vite@4.3.9) vitest: specifier: ^0.31.0 - version: 0.31.0(@vitest/ui@0.31.0)(jsdom@21.1.1) + version: 0.31.0(@vitest/ui@0.32.0)(jsdom@21.1.1) packages/mermaid: dependencies: @@ -443,9 +453,6 @@ importers: jiti: specifier: ^1.18.2 version: 1.18.2 - plausible-tracker: - specifier: ^0.3.8 - version: 0.3.8 vue: specifier: ^3.2.47 version: 3.2.47 @@ -484,8 +491,8 @@ importers: specifier: ^0.15.0 version: 0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) vitepress: - specifier: 1.0.0-beta.1 - version: 1.0.0-beta.1(@algolia/client-search@4.14.2)(@types/node@18.16.0) + specifier: 1.0.0-beta.2 + version: 1.0.0-beta.2(@algolia/client-search@4.14.2)(@types/node@18.16.0)(search-insights@2.6.0) workbox-window: specifier: ^6.5.4 version: 6.5.4 @@ -517,6 +524,29 @@ packages: '@algolia/autocomplete-shared': 1.8.2 dev: true + /@algolia/autocomplete-core@1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.6.0): + resolution: {integrity: sha512-hkG80c9kx9ClVAEcUJbTd2ziVC713x9Bji9Ty4XJfKXlxlsx3iXsoNhAwfeR4ulzIUg7OE5gez0UU1zVDdG7kg==} + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.6.0) + '@algolia/autocomplete-shared': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + dev: true + + /@algolia/autocomplete-plugin-algolia-insights@1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.6.0): + resolution: {integrity: sha512-2LVsf4W66hVHQ3Ua/8k15oPlxjELCztbAkQm/hP42Sw+GLkHAdY1vaVRYziaWq64+Oljfg6FKkZHCdgXH+CGIA==} + peerDependencies: + search-insights: '>= 1 < 3' + dependencies: + '@algolia/autocomplete-shared': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) + search-insights: 2.6.0 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + dev: true + /@algolia/autocomplete-preset-algolia@1.8.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): resolution: {integrity: sha512-J0oTx4me6ZM9kIKPuL3lyU3aB8DEvpVvR6xWmHVROx5rOYJGQcZsdG4ozxwcOyiiu3qxMkIbzntnV1S1VWD8yA==} peerDependencies: @@ -528,10 +558,31 @@ packages: algoliasearch: 4.14.2 dev: true + /@algolia/autocomplete-preset-algolia@1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): + resolution: {integrity: sha512-pqgIm2GNqtCT59Y1ICctIPrYTi34+wNPiNWEclD/yDzp5uDUUsyGe5XrUjCNyQRTKonAlmYxoaEHOn8FWgmBHA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/autocomplete-shared': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) + '@algolia/client-search': 4.14.2 + algoliasearch: 4.14.2 + dev: true + /@algolia/autocomplete-shared@1.8.2: resolution: {integrity: sha512-b6Z/X4MczChMcfhk6kfRmBzPgjoPzuS9KGR4AFsiLulLNRAAqhP+xZTKtMnZGhLuc61I20d5WqlId02AZvcO6g==} dev: true + /@algolia/autocomplete-shared@1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): + resolution: {integrity: sha512-XxX6YDn+7LG+SmdpXEOnj7fc3TjiVpQ0CbGhjLwrd2tYr6LVY2D4Iiu/iuYJ4shvVDWWnpwArSk0uIWC/8OPUA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/client-search': 4.14.2 + algoliasearch: 4.14.2 + dev: true + /@algolia/cache-browser-local-storage@4.14.2: resolution: {integrity: sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA==} dependencies: @@ -690,7 +741,7 @@ packages: - supports-color dev: true - /@applitools/core@2.3.14(typescript@5.0.4): + /@applitools/core@2.3.14(typescript@5.1.3): resolution: {integrity: sha512-ubCQTGcoKKmgrt7QmIsrniDH8MqWgF66T+bEDRurNjpnC0RzjiCmEipr1pkMJGeXiUbe4Kr4uWP1+rg3QA8FBA==} engines: {node: '>=12.13.0'} hasBin: true @@ -714,7 +765,7 @@ packages: chalk: 4.1.2 node-fetch: 2.6.7 throat: 6.0.1 - webdriver: 7.30.0(typescript@5.0.4) + webdriver: 7.30.0(typescript@5.1.3) ws: 8.12.0 yargs: 17.6.2 transitivePeerDependencies: @@ -725,7 +776,7 @@ packages: - utf-8-validate dev: true - /@applitools/core@2.5.3(typescript@5.0.4): + /@applitools/core@2.5.3(typescript@5.1.3): resolution: {integrity: sha512-hYSwpH+uvLcsVt97ZHYjiXclKOzxGRzoWmykWuigRFoJGoczEyf6UnCrIS5OtaWaUgpY2hL7Ltl2vvDsCwkzSQ==} engines: {node: '>=12.13.0'} hasBin: true @@ -734,7 +785,7 @@ packages: '@applitools/dom-capture': 11.2.1 '@applitools/dom-snapshot': 4.7.9 '@applitools/driver': 1.11.43 - '@applitools/ec-client': 1.2.23(typescript@5.0.4) + '@applitools/ec-client': 1.2.23(typescript@5.1.3) '@applitools/logger': 1.1.48 '@applitools/nml-client': 1.3.47 '@applitools/req': 1.1.35 @@ -748,7 +799,7 @@ packages: abort-controller: 3.0.0 chalk: 4.1.2 node-fetch: 2.6.7 - webdriver: 7.30.0(typescript@5.0.4) + webdriver: 7.30.0(typescript@5.1.3) ws: 8.12.0 yargs: 17.6.2 transitivePeerDependencies: @@ -843,7 +894,7 @@ packages: - supports-color dev: true - /@applitools/ec-client@1.2.23(typescript@5.0.4): + /@applitools/ec-client@1.2.23(typescript@5.1.3): resolution: {integrity: sha512-YYamRWlclnOitpzNrDtcwAat+AL59mTIOlmUaki+dtfEf482e+Kxytpq5AdiTbIPRBA143D+b2PLtai+WJr7yA==} engines: {node: '>=12.13.0'} hasBin: true @@ -857,7 +908,7 @@ packages: '@applitools/spec-driver-webdriver': 1.0.24(webdriver@7.30.0) '@applitools/utils': 1.3.32 abort-controller: 3.0.0 - webdriver: 7.30.0(typescript@5.0.4) + webdriver: 7.30.0(typescript@5.1.3) yargs: 17.6.2 transitivePeerDependencies: - encoding @@ -928,11 +979,11 @@ packages: - supports-color dev: true - /@applitools/eyes-api@1.13.12(typescript@5.0.4): + /@applitools/eyes-api@1.13.12(typescript@5.1.3): resolution: {integrity: sha512-83pr95/6brMHnYmqFuoDezMzB5h6HtBz3NXPwJ6GtPj+37ksDVO6jwJz9fh/wmBx9KELd8FUGvWpYEUlhkJzuA==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/core': 2.3.14(typescript@5.0.4) + '@applitools/core': 2.3.14(typescript@5.1.3) '@applitools/logger': 1.1.46 '@applitools/utils': 1.3.30 transitivePeerDependencies: @@ -943,13 +994,13 @@ packages: - utf-8-validate dev: true - /@applitools/eyes-cypress@3.32.0(typescript@5.0.4): + /@applitools/eyes-cypress@3.32.0(typescript@5.1.3): resolution: {integrity: sha512-PgDZi3zg7Auh2V6XmxTGn/ONZA5yY5VpW+fpV2rUx22ByM7BL9P7fHDJrx/iIdP/s5YUNDTIVJUuSvGSB+Arcg==} engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@applitools/core': 2.5.3(typescript@5.0.4) - '@applitools/eyes-api': 1.13.12(typescript@5.0.4) + '@applitools/core': 2.5.3(typescript@5.1.3) + '@applitools/eyes-api': 1.13.12(typescript@5.1.3) '@applitools/functional-commons': 1.6.0 '@applitools/logger': 1.1.48 '@applitools/utils': 1.3.32 @@ -1170,7 +1221,7 @@ packages: '@applitools/driver': 1.11.35 '@applitools/utils': 1.3.30 proxy-agent: 5.0.0 - webdriver: 7.30.0(typescript@5.0.4) + webdriver: 7.30.0(typescript@5.1.3) transitivePeerDependencies: - supports-color dev: true @@ -1184,7 +1235,7 @@ packages: '@applitools/driver': 1.11.43 '@applitools/utils': 1.3.32 proxy-agent: 5.0.0 - webdriver: 7.30.0(typescript@5.0.4) + webdriver: 7.30.0(typescript@5.1.3) transitivePeerDependencies: - supports-color dev: true @@ -2524,13 +2575,13 @@ packages: '@types/node': 18.16.0 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.1.0(@types/node@18.16.0)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@5.0.4) + cosmiconfig-typescript-loader: 4.1.0(@types/node@18.16.0)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@5.1.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) - typescript: 5.0.4 + ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.1.3) + typescript: 5.1.3 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -2883,6 +2934,29 @@ packages: dependencies: '@jridgewell/trace-mapping': 0.3.9 + /@cypress/code-coverage@3.10.7(@babel/core@7.12.3)(@babel/preset-env@7.20.2)(babel-loader@9.1.2)(cypress@12.10.0)(webpack@5.75.0): + resolution: {integrity: sha512-kQFB8GemDAAk6JBINsR9MLEgCw2AKb3FcdHQjIJ3KV4ZER6ZF0NGdO8SRj5oTVp28oqfOab4cgoBdecRiOE3qA==} + peerDependencies: + cypress: '*' + dependencies: + '@cypress/webpack-preprocessor': 5.17.1(@babel/core@7.12.3)(@babel/preset-env@7.20.2)(babel-loader@9.1.2)(webpack@5.75.0) + chalk: 4.1.2 + cypress: 12.10.0 + dayjs: 1.10.7 + debug: 4.3.4(supports-color@8.1.1) + execa: 4.1.0 + globby: 11.0.4 + istanbul-lib-coverage: 3.0.0 + js-yaml: 4.1.0 + nyc: 15.1.0 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - babel-loader + - supports-color + - webpack + dev: true + /@cypress/request@2.88.10: resolution: {integrity: sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==} engines: {node: '>= 6'} @@ -2907,6 +2981,25 @@ packages: uuid: 8.3.2 dev: true + /@cypress/webpack-preprocessor@5.17.1(@babel/core@7.12.3)(@babel/preset-env@7.20.2)(babel-loader@9.1.2)(webpack@5.75.0): + resolution: {integrity: sha512-FE/e8ikPc8z4EVopJCaior3RGy0jd2q9Xcp5NtiwNG4XnLfEnUFTZlAGwXe75sEh4fNMPrBJW1KIz77PX5vGAw==} + peerDependencies: + '@babel/core': ^7.0.1 + '@babel/preset-env': ^7.0.0 + babel-loader: ^8.0.2 || ^9 + webpack: ^4 || ^5 + dependencies: + '@babel/core': 7.12.3 + '@babel/preset-env': 7.20.2(@babel/core@7.12.3) + babel-loader: 9.1.2(@babel/core@7.12.3)(webpack@5.75.0) + bluebird: 3.7.1 + debug: 4.3.4(supports-color@8.1.1) + lodash: 4.17.21 + webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + transitivePeerDependencies: + - supports-color + dev: true + /@cypress/xvfb@1.2.4(supports-color@8.1.1): resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} dependencies: @@ -2929,6 +3022,10 @@ packages: resolution: {integrity: sha512-NaXVp3I8LdmJ54fn038KHgG7HmbIzZlKS2FkVf6mKcW5bYMJovkx4947joQyZk5yubxOZ+ddHSh79y39Aevufg==} dev: true + /@docsearch/css@3.5.0: + resolution: {integrity: sha512-Ob5FQLubplcBNihAVtriR59FRBeP8u69F6mu4L4yIr60KfsPc10bOV0DoPErJw0zF9IBN2cNLW9qdmt8zWPxyg==} + dev: true + /@docsearch/js@3.3.5(@algolia/client-search@4.14.2): resolution: {integrity: sha512-nZi074OCryZnzva2LNcbQkwBJIND6cvuFI4s1FIe6Ygf6n9g6B/IYUULXNx05rpoCZ+KEoEt3taROpsHBliuSw==} dependencies: @@ -2941,6 +3038,19 @@ packages: - react-dom dev: true + /@docsearch/js@3.5.0(@algolia/client-search@4.14.2)(search-insights@2.6.0): + resolution: {integrity: sha512-WqB+z+zVKSXDkGq028nClT9RvMzfFlemZuIulX5ZwWkdUtl4k7M9cmZA/c6kuZf7FG24XQsMHWuBjeUo9hLRyA==} + dependencies: + '@docsearch/react': 3.5.0(@algolia/client-search@4.14.2)(search-insights@2.6.0) + preact: 10.11.0 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + dev: true + /@docsearch/react@3.3.5(@algolia/client-search@4.14.2): resolution: {integrity: sha512-Zuxf4z5PZ9eIQkVCNu76v1H+KAztKItNn3rLzZa7kpBS+++TgNARITnZeUS7C1DKoAhJZFr6T/H+Lvc6h/iiYg==} peerDependencies: @@ -2963,6 +3073,29 @@ packages: - '@algolia/client-search' dev: true + /@docsearch/react@3.5.0(@algolia/client-search@4.14.2)(search-insights@2.6.0): + resolution: {integrity: sha512-3IG8mmSMzSHNGy2S1VuPyYU9tFCxFpj5Ov8SYwsSHM4yMvFsaO9oFxXocA5lSenliIELhuOuS5+BdxHa/Qlf2A==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + dependencies: + '@algolia/autocomplete-core': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.6.0) + '@algolia/autocomplete-preset-algolia': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) + '@docsearch/css': 3.5.0 + algoliasearch: 4.14.2 + transitivePeerDependencies: + - '@algolia/client-search' + - search-insights + dev: true + /@es-joy/jsdoccomment@0.37.1: resolution: {integrity: sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==} engines: {node: ^14 || ^16 || ^17 || ^18 || ^19 || ^20} @@ -3637,8 +3770,8 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-typescript@11.1.0(typescript@5.0.4): - resolution: {integrity: sha512-86flrfE+bSHB69znnTV6kVjkncs2LBMhcTCyxWgRxLyfXfQrxg4UwlAqENnjrrxnSNS/XKCDJCl8EkdFJVHOxw==} + /@rollup/plugin-typescript@11.1.1(typescript@5.1.3): + resolution: {integrity: sha512-Ioir+x5Bejv72Lx2Zbz3/qGg7tvGbxQZALCLoJaGrkNXak/19+vKgKYJYM3i/fJxvsb23I9FuFQ8CUBEfsmBRg==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.14.0||^3.0.0 @@ -3651,8 +3784,8 @@ packages: optional: true dependencies: '@rollup/pluginutils': 5.0.2(rollup@2.79.1) - resolve: 1.22.1 - typescript: 5.0.4 + resolve: 1.22.2 + typescript: 5.1.3 dev: true /@rollup/pluginutils@3.1.0(rollup@2.79.1): @@ -4391,6 +4524,34 @@ packages: - supports-color dev: true + /@typescript-eslint/eslint-plugin@5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.1.3): + resolution: {integrity: sha512-p0QgrEyrxAWBecR56gyn3wkG15TJdI//eetInP3zYRewDh0XS+DhB3VUAd3QqvziFsfaQIoIuZMxZRB7vXYaYw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.5.0 + '@typescript-eslint/parser': 5.59.0(eslint@8.39.0)(typescript@5.1.3) + '@typescript-eslint/scope-manager': 5.59.0 + '@typescript-eslint/type-utils': 5.59.0(eslint@8.39.0)(typescript@5.1.3) + '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.1.3) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.39.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.0 + natural-compare-lite: 1.4.0 + semver: 7.3.8 + tsutils: 3.21.0(typescript@5.1.3) + typescript: 5.1.3 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser@5.59.0(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-qK9TZ70eJtjojSUMrrEwA9ZDQ4N0e/AuoOIgXuNBorXYcBDk397D2r5MIe1B3cok/oCtdNC5j+lUUpVB+Dpb+w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4411,6 +4572,26 @@ packages: - supports-color dev: true + /@typescript-eslint/parser@5.59.0(eslint@8.39.0)(typescript@5.1.3): + resolution: {integrity: sha512-qK9TZ70eJtjojSUMrrEwA9ZDQ4N0e/AuoOIgXuNBorXYcBDk397D2r5MIe1B3cok/oCtdNC5j+lUUpVB+Dpb+w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.59.0 + '@typescript-eslint/types': 5.59.0 + '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.1.3) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.39.0 + typescript: 5.1.3 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/scope-manager@5.59.0: resolution: {integrity: sha512-tsoldKaMh7izN6BvkK6zRMINj4Z2d6gGhO2UsI8zGZY3XhLq1DndP3Ycjhi1JwdwPRwtLMW4EFPgpuKhbCGOvQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4439,6 +4620,26 @@ packages: - supports-color dev: true + /@typescript-eslint/type-utils@5.59.0(eslint@8.39.0)(typescript@5.1.3): + resolution: {integrity: sha512-d/B6VSWnZwu70kcKQSCqjcXpVH+7ABKH8P1KNn4K7j5PXXuycZTPXF44Nui0TEm6rbWGi8kc78xRgOC4n7xFgA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.1.3) + '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.1.3) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.39.0 + tsutils: 3.21.0(typescript@5.1.3) + typescript: 5.1.3 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/types@5.59.0: resolution: {integrity: sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4465,6 +4666,27 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@5.59.0(typescript@5.1.3): + resolution: {integrity: sha512-sUNnktjmI8DyGzPdZ8dRwW741zopGxltGs/SAPgGL/AAgDpiLsCFLcMNSpbfXfmnNeHmK9h3wGmCkGRGAoUZAg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.0 + '@typescript-eslint/visitor-keys': 5.59.0 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0(typescript@5.1.3) + typescript: 5.1.3 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@5.59.0(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-GGLFd+86drlHSvPgN/el6dRQNYYGOvRSDVydsUaQluwIW3HvbXuxyuD5JETvBt/9qGYe+lOrDk6gRrWOHb/FvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4485,6 +4707,26 @@ packages: - typescript dev: true + /@typescript-eslint/utils@5.59.0(eslint@8.39.0)(typescript@5.1.3): + resolution: {integrity: sha512-GGLFd+86drlHSvPgN/el6dRQNYYGOvRSDVydsUaQluwIW3HvbXuxyuD5JETvBt/9qGYe+lOrDk6gRrWOHb/FvA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.12 + '@typescript-eslint/scope-manager': 5.59.0 + '@typescript-eslint/types': 5.59.0 + '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.1.3) + eslint: 8.39.0 + eslint-scope: 5.1.1 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/visitor-keys@5.59.0: resolution: {integrity: sha512-qZ3iXxQhanchCeaExlKPV3gDQFxMUmU35xfd5eCXB6+kUw1TUAbIy2n7QIrwz9s98DQLzNWyHp61fY0da4ZcbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4712,8 +4954,19 @@ packages: vue: 3.3.4 dev: true - /@vitest/coverage-c8@0.31.0(vitest@0.31.0): - resolution: {integrity: sha512-h72qN1D962AO7UefQVulm9JFP5ACS7OfhCdBHioXU8f7ohH/+NTZCgAqmgcfRNHHO/8wLFxx+93YVxhodkEJVA==} + /@vitejs/plugin-vue@4.2.3(vite@4.3.9)(vue@3.3.4): + resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 + vue: ^3.2.25 + dependencies: + vite: 4.3.9(@types/node@18.16.0) + vue: 3.3.4 + dev: true + + /@vitest/coverage-c8@0.32.0(vitest@0.31.0): + resolution: {integrity: sha512-FeTzRN5VCL7B6YTRK5ZPQO2iwJzl2x7/mTQ/2uEeKZatAYBtvczeAYnzSUhCPev7p99+5skxMQZwqVcFTrVCdg==} peerDependencies: vitest: '>=0.30.0 <1' dependencies: @@ -4722,7 +4975,7 @@ packages: magic-string: 0.30.0 picocolors: 1.0.0 std-env: 3.3.2 - vitest: 0.31.0(@vitest/ui@0.31.0)(jsdom@21.1.1) + vitest: 0.31.0(@vitest/ui@0.32.0)(jsdom@21.1.1) dev: true /@vitest/expect@0.31.0: @@ -4756,19 +5009,25 @@ packages: tinyspy: 2.1.0 dev: true - /@vitest/ui@0.31.0(vitest@0.31.0): - resolution: {integrity: sha512-Dy86l6r3/dbJposgm7w+oqb/15UWJ0lDBbEQaS1ived3+0CTaMbT8OMkUf9vNBkSL47kvBHEBnZLa5fw5i9gUQ==} + /@vitest/spy@0.32.0: + resolution: {integrity: sha512-MruAPlM0uyiq3d53BkwTeShXY0rYEfhNGQzVO5GHBmmX3clsxcWp79mMnkOVcV244sNTeDcHbcPFWIjOI4tZvw==} + dependencies: + tinyspy: 2.1.0 + dev: true + + /@vitest/ui@0.32.0(vitest@0.31.0): + resolution: {integrity: sha512-55gugh6+owrOqW83RCgLm9q+o3SlzvFVgl1lyfnr0WB8ABxLoM+3pgusEjosscgEYGzTjTXaZY6xLd4qlfH/RQ==} peerDependencies: vitest: '>=0.30.1 <1' dependencies: - '@vitest/utils': 0.31.0 + '@vitest/utils': 0.32.0 fast-glob: 3.2.12 fflate: 0.7.4 flatted: 3.2.7 pathe: 1.1.0 picocolors: 1.0.0 - sirv: 2.0.2 - vitest: 0.31.0(@vitest/ui@0.31.0)(jsdom@21.1.1) + sirv: 2.0.3 + vitest: 0.31.0(@vitest/ui@0.32.0)(jsdom@21.1.1) dev: true /@vitest/utils@0.31.0: @@ -4779,6 +5038,14 @@ packages: pretty-format: 27.5.1 dev: true + /@vitest/utils@0.32.0: + resolution: {integrity: sha512-53yXunzx47MmbuvcOPpLaVljHaeSu1G2dHdmy7+9ngMnQIkBQcvwOcoclWFnxDMxFbnq8exAfh3aKSZaK71J5A==} + dependencies: + concordance: 5.0.4 + loupe: 2.3.6 + pretty-format: 27.5.1 + dev: true + /@vue/compat@3.3.4(vue@3.3.4): resolution: {integrity: sha512-VwAsPqUqRJVxeLQPUC03Sa5d+T8UG2Qv4VItq74KmNvtQlRXICpa/sqq12BcyBB4Tz1U5paOEZxWCUoXkrZ9QQ==} peerDependencies: @@ -5039,13 +5306,13 @@ packages: - vue dev: true - /@wdio/config@7.30.0(typescript@5.0.4): + /@wdio/config@7.30.0(typescript@5.1.3): resolution: {integrity: sha512-/38rol9WCfFTMtXyd/C856/aexxIZnfVvXg7Fw2WXpqZ9qadLA+R4N35S2703n/RByjK/5XAYtHoljtvh3727w==} engines: {node: '>=12.0.0'} dependencies: '@wdio/logger': 7.26.0 - '@wdio/types': 7.26.0(typescript@5.0.4) - '@wdio/utils': 7.26.0(typescript@5.0.4) + '@wdio/types': 7.26.0(typescript@5.1.3) + '@wdio/utils': 7.26.0(typescript@5.1.3) deepmerge: 4.2.2 glob: 8.0.3 transitivePeerDependencies: @@ -5067,7 +5334,7 @@ packages: engines: {node: '>=12.0.0'} dev: true - /@wdio/types@7.26.0(typescript@5.0.4): + /@wdio/types@7.26.0(typescript@5.1.3): resolution: {integrity: sha512-mOTfWAGQ+iT58iaZhJMwlUkdEn3XEWE4jthysMLXFnSuZ2eaODVAiK31SmlS/eUqgSIaupeGqYUrtCuSNbLefg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5078,15 +5345,15 @@ packages: dependencies: '@types/node': 18.16.0 got: 11.8.5 - typescript: 5.0.4 + typescript: 5.1.3 dev: true - /@wdio/utils@7.26.0(typescript@5.0.4): + /@wdio/utils@7.26.0(typescript@5.1.3): resolution: {integrity: sha512-pVq2MPXZAYLkKGKIIHktHejnHqg4TYKoNYSi2EDv+I3GlT8VZKXHazKhci82ov0tD+GdF27+s4DWNDCfGYfBdQ==} engines: {node: '>=12.0.0'} dependencies: '@wdio/logger': 7.26.0 - '@wdio/types': 7.26.0(typescript@5.0.4) + '@wdio/types': 7.26.0(typescript@5.1.3) p-iteration: 1.1.8 transitivePeerDependencies: - typescript @@ -5553,6 +5820,13 @@ packages: resolution: {integrity: sha512-ZbH3ezXfnT/YE3NdqduIt4lBV+H0ybvA2Qx3K76gIjQvh8gROpDFdDLpx6B1QJtW7zxisCbpTlCLhKqoR8cDBw==} dev: true + /append-transform@2.0.0: + resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} + engines: {node: '>=8'} + dependencies: + default-require-extensions: 3.0.1 + dev: true + /arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true @@ -5708,6 +5982,19 @@ packages: - supports-color dev: true + /babel-loader@9.1.2(@babel/core@7.12.3)(webpack@5.75.0): + resolution: {integrity: sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + dependencies: + '@babel/core': 7.12.3 + find-cache-dir: 3.3.2 + schema-utils: 4.0.0 + webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + dev: true + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} @@ -5837,6 +6124,10 @@ packages: resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} dev: true + /bluebird@3.7.1: + resolution: {integrity: sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==} + dev: true + /bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} dev: true @@ -6035,6 +6326,16 @@ packages: engines: {node: '>=6'} dev: true + /caching-transform@4.0.0: + resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} + engines: {node: '>=8'} + dependencies: + hasha: 5.2.2 + make-dir: 3.1.0 + package-hash: 4.0.0 + write-file-atomic: 3.0.3 + dev: true + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -6292,6 +6593,14 @@ packages: string-width: 5.1.2 dev: true + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: @@ -6429,6 +6738,10 @@ packages: engines: {node: '>=4.0.0'} dev: true + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: true + /compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} dependencies: @@ -6607,7 +6920,7 @@ packages: layout-base: 2.0.1 dev: false - /cosmiconfig-typescript-loader@4.1.0(@types/node@18.16.0)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@5.0.4): + /cosmiconfig-typescript-loader@4.1.0(@types/node@18.16.0)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@5.1.3): resolution: {integrity: sha512-HbWIuR5O+XO5Oj9SZ5bzgrD4nN+rfhrm2PMb0FVx+t+XIvC45n8F0oTNnztXtspWGw0i2IzHaUWFD5LzV1JB4A==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -6618,8 +6931,8 @@ packages: dependencies: '@types/node': 18.16.0 cosmiconfig: 8.0.0 - ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) - typescript: 5.0.4 + ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.1.3) + typescript: 5.1.3 dev: true /cosmiconfig@8.0.0: @@ -7261,6 +7574,10 @@ packages: time-zone: 1.0.0 dev: true + /dayjs@1.10.7: + resolution: {integrity: sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==} + dev: true + /dayjs@1.11.7: resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} @@ -7372,6 +7689,13 @@ packages: execa: 5.1.1 dev: true + /default-require-extensions@3.0.1: + resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} + engines: {node: '>=8'} + dependencies: + strip-bom: 4.0.0 + dev: true + /defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} @@ -7714,6 +8038,10 @@ packages: is-symbol: 1.0.4 dev: true + /es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + dev: true + /esbuild@0.17.18: resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} engines: {node: '>=12'} @@ -7835,7 +8163,7 @@ packages: htmlparser2: 8.0.1 dev: true - /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.39.0)(jest@29.5.0)(typescript@5.0.4): + /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.39.0)(jest@29.5.0)(typescript@5.1.3): resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -7848,8 +8176,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.0.4) - '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/eslint-plugin': 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.1.3) + '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.1.3) eslint: 8.39.0 jest: 29.5.0(@types/node@18.16.0)(ts-node@10.9.1) transitivePeerDependencies: @@ -8434,6 +8762,15 @@ packages: - supports-color dev: true + /find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: true + /find-my-way@4.5.1: resolution: {integrity: sha512-kE0u7sGoUFbMXcOG/xpkmz4sRLCklERnBcg7Ftuu1iAxsfEt2S46RLJ3Sq7vshsEy2wJT2hZxE58XZK27qa8kg==} engines: {node: '>=10'} @@ -8588,6 +8925,10 @@ packages: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} dev: true + /fromentries@1.3.2: + resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} + dev: true + /fs-extra@11.1.1: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} @@ -8873,6 +9214,18 @@ packages: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} dev: true + /globby@11.0.4: + resolution: {integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -9032,6 +9385,14 @@ packages: dependencies: function-bind: 1.1.1 + /hasha@5.2.2: + resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} + engines: {node: '>=8'} + dependencies: + is-stream: 2.0.1 + type-fest: 0.8.1 + dev: true + /heap@0.2.7: resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} dev: false @@ -9652,6 +10013,11 @@ packages: call-bind: 1.0.2 dev: true + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -9680,11 +10046,35 @@ packages: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} dev: true + /istanbul-lib-coverage@3.0.0: + resolution: {integrity: sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==} + engines: {node: '>=8'} + dev: true + /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} dev: true + /istanbul-lib-hook@3.0.0: + resolution: {integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==} + engines: {node: '>=8'} + dependencies: + append-transform: 2.0.0 + dev: true + + /istanbul-lib-instrument@4.0.3: + resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.12.3 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + /istanbul-lib-instrument@5.2.0: resolution: {integrity: sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==} engines: {node: '>=8'} @@ -9698,6 +10088,18 @@ packages: - supports-color dev: true + /istanbul-lib-processinfo@2.0.3: + resolution: {integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==} + engines: {node: '>=8'} + dependencies: + archy: 1.0.0 + cross-spawn: 7.0.3 + istanbul-lib-coverage: 3.2.0 + p-map: 3.0.0 + rimraf: 3.0.2 + uuid: 8.3.2 + dev: true + /istanbul-lib-report@3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} @@ -9853,7 +10255,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.1.3) transitivePeerDependencies: - supports-color dev: true @@ -10019,7 +10421,7 @@ packages: jest-pnp-resolver: 1.2.2(jest-resolve@29.5.0) jest-util: 29.5.0 jest-validate: 29.5.0 - resolve: 1.22.1 + resolve: 1.22.2 resolve.exports: 2.0.2 slash: 3.0.0 dev: true @@ -10645,6 +11047,10 @@ packages: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: true + /lodash.flattendeep@4.4.0: + resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} + dev: true + /lodash.isfunction@3.0.9: resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} dev: true @@ -11508,6 +11914,13 @@ packages: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true + /node-preload@0.2.1: + resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} + engines: {node: '>=8'} + dependencies: + process-on-spawn: 1.0.0 + dev: true + /node-releases@2.0.10: resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} dev: true @@ -11532,7 +11945,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.1 + resolve: 1.22.2 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -11542,7 +11955,7 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.10.0 + is-core-module: 2.12.1 semver: 7.5.0 validate-npm-package-license: 3.0.4 dev: true @@ -11581,6 +11994,42 @@ packages: resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} dev: true + /nyc@15.1.0: + resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} + engines: {node: '>=8.9'} + hasBin: true + dependencies: + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + caching-transform: 4.0.0 + convert-source-map: 1.8.0 + decamelize: 1.2.0 + find-cache-dir: 3.3.2 + find-up: 4.1.0 + foreground-child: 2.0.0 + get-package-type: 0.1.0 + glob: 7.2.3 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-hook: 3.0.0 + istanbul-lib-instrument: 4.0.3 + istanbul-lib-processinfo: 2.0.3 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + make-dir: 3.1.0 + node-preload: 0.2.1 + p-map: 3.0.0 + process-on-spawn: 1.0.0 + resolve-from: 5.0.0 + rimraf: 3.0.2 + signal-exit: 3.0.7 + spawn-wrap: 2.0.0 + test-exclude: 6.0.0 + yargs: 15.4.1 + transitivePeerDependencies: + - supports-color + dev: true + /oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} dev: true @@ -11772,6 +12221,13 @@ packages: p-limit: 3.1.0 dev: true + /p-map@3.0.0: + resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} + engines: {node: '>=8'} + dependencies: + aggregate-error: 3.1.0 + dev: true + /p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} @@ -11832,6 +12288,16 @@ packages: netmask: 2.0.2 dev: true + /package-hash@4.0.0: + resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} + engines: {node: '>=8'} + dependencies: + graceful-fs: 4.2.10 + hasha: 5.2.2 + lodash.flattendeep: 4.4.0 + release-zalgo: 1.0.0 + dev: true + /pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} dev: true @@ -12066,11 +12532,6 @@ packages: pathe: 1.1.0 dev: true - /plausible-tracker@0.3.8: - resolution: {integrity: sha512-lmOWYQ7s9KOUJ1R+YTOR3HrjdbxIS2Z4de0P/Jx2dQPteznJl2eX3tXxKClpvbfyGP59B5bbhW8ftN59HbbFSg==} - engines: {node: '>=10'} - dev: false - /plist@3.0.6: resolution: {integrity: sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==} engines: {node: '>=6'} @@ -12140,7 +12601,7 @@ packages: dependencies: lilconfig: 2.1.0 postcss: 8.4.23 - ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.1.3) yaml: 2.2.2 dev: false @@ -12165,15 +12626,6 @@ packages: /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - /postcss@8.4.21: - resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - /postcss@8.4.23: resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} engines: {node: ^10 || ^12 || >=14} @@ -12248,6 +12700,13 @@ packages: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true + /process-on-spawn@1.0.0: + resolution: {integrity: sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==} + engines: {node: '>=8'} + dependencies: + fromentries: 1.3.2 + dev: true + /process-warning@1.0.0: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: true @@ -12503,7 +12962,7 @@ packages: resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==} engines: {node: '>= 0.10'} dependencies: - resolve: 1.22.1 + resolve: 1.22.2 dev: true /redent@3.0.0: @@ -12576,6 +13035,13 @@ packages: jsesc: 0.5.0 dev: true + /release-zalgo@1.0.0: + resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} + engines: {node: '>=4'} + dependencies: + es6-error: 4.1.1 + dev: true + /remark-frontmatter@4.0.1: resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==} dependencies: @@ -12673,6 +13139,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: true + /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true @@ -12713,7 +13183,7 @@ packages: /resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: - is-core-module: 2.10.0 + is-core-module: 2.12.1 path-parse: 1.0.7 dev: true @@ -12805,8 +13275,8 @@ packages: terser: 5.15.1 dev: true - /rollup-plugin-visualizer@5.9.0: - resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} + /rollup-plugin-visualizer@5.9.2: + resolution: {integrity: sha512-waHktD5mlWrYFrhOLbti4YgQCn1uR24nYsNuXxg7LkPH8KdTXVWR9DNY1WU0QqokyMixVXJS4J04HNrVTMP01A==} engines: {node: '>=14'} hasBin: true peerDependencies: @@ -12931,6 +13401,11 @@ packages: ajv-keywords: 5.1.0(ajv@8.11.0) dev: true + /search-insights@2.6.0: + resolution: {integrity: sha512-vU2/fJ+h/Mkm/DJOe+EaM5cafJv/1rRTZpGJTuFPf/Q5LjzgMDsqPdSaZsAe+GAWHHsfsu+rQSAn6c8IGtBEVw==} + engines: {node: '>=8.16.0'} + dev: true + /secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} dev: true @@ -13044,6 +13519,10 @@ packages: - supports-color dev: true + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: true + /set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: true @@ -13136,15 +13615,6 @@ packages: is-arrayish: 0.3.2 dev: false - /sirv@2.0.2: - resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} - engines: {node: '>= 10'} - dependencies: - '@polka/url': 1.0.0-next.21 - mrmime: 1.0.1 - totalist: 3.0.0 - dev: true - /sirv@2.0.3: resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} engines: {node: '>= 10'} @@ -13295,6 +13765,18 @@ packages: resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} dev: true + /spawn-wrap@2.0.0: + resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} + engines: {node: '>=8'} + dependencies: + foreground-child: 2.0.0 + is-windows: 1.0.2 + make-dir: 3.1.0 + rimraf: 3.0.2 + signal-exit: 3.0.7 + which: 2.0.2 + dev: true + /spdx-correct@3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: @@ -13962,7 +14444,7 @@ packages: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: false - /ts-node@10.9.1(@types/node@18.16.0)(typescript@5.0.4): + /ts-node@10.9.1(@types/node@18.16.0)(typescript@5.1.3): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -13988,7 +14470,7 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.0.4 + typescript: 5.1.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -14018,6 +14500,16 @@ packages: typescript: 5.0.4 dev: true + /tsutils@3.21.0(typescript@5.1.3): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.1.3 + dev: true + /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: @@ -14140,6 +14632,12 @@ packages: resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} engines: {node: '>=12.20'} hasBin: true + dev: true + + /typescript@5.1.3: + resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} + engines: {node: '>=14.17'} + hasBin: true /uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} @@ -14485,7 +14983,7 @@ packages: mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 - vite: 4.3.8(@types/node@18.16.0) + vite: 4.3.9(@types/node@18.16.0) transitivePeerDependencies: - '@types/node' - less @@ -14496,6 +14994,20 @@ packages: - terser dev: true + /vite-plugin-istanbul@4.1.0(vite@4.3.9): + resolution: {integrity: sha512-d8FRxaswOUYlGqCCNv2BTbt9pyqt7J4RPgab3WmMf+T2TflLlCmC7S26zDRfL9Ve4JSHrcf5bdzt+E0n9CrPvA==} + peerDependencies: + vite: '>=2.9.1 <= 5' + dependencies: + '@istanbuljs/load-nyc-config': 1.1.0 + istanbul-lib-instrument: 5.2.0 + picocolors: 1.0.0 + test-exclude: 6.0.0 + vite: 4.3.9(@types/node@18.16.0) + transitivePeerDependencies: + - supports-color + dev: true + /vite-plugin-pwa@0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4): resolution: {integrity: sha512-gpmx3BeubsRIXRBkjPToOTJbo8fknNmZFQs24i0TPZyaNVa0n27YHDo0Y72amnO70WvHKGE3e1fn8SYUP7e8SA==} peerDependencies: @@ -14513,39 +15025,6 @@ packages: - supports-color dev: true - /vite@4.3.1(@types/node@18.16.0): - resolution: {integrity: sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 18.16.0 - esbuild: 0.17.18 - postcss: 8.4.21 - rollup: 3.21.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - /vite@4.3.3(@types/node@18.16.0): resolution: {integrity: sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==} engines: {node: ^14.18.0 || >=16.0.0} @@ -14612,6 +15091,39 @@ packages: fsevents: 2.3.2 dev: true + /vite@4.3.9(@types/node@18.16.0): + resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.16.0 + esbuild: 0.17.18 + postcss: 8.4.23 + rollup: 3.21.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /vitepress-plugin-search@1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-alpha.72)(vue@3.3.4): resolution: {integrity: sha512-zG+ev9pw1Mg7htABlFCNXb8XwnKN+qfTKw+vU0Ers6RIrABx+45EAAFBoaL1mEpl1FRFn1o/dQ7F4b8GP6HdGQ==} engines: {node: ^14.13.1 || ^16.7.0 || >=18} @@ -14700,7 +15212,50 @@ packages: - universal-cookie dev: true - /vitest@0.31.0(@vitest/ui@0.31.0)(jsdom@21.1.1): + /vitepress@1.0.0-beta.2(@algolia/client-search@4.14.2)(@types/node@18.16.0)(search-insights@2.6.0): + resolution: {integrity: sha512-DBXYjtYbm3W1IPPJ2TiCaK/XK+o/2XmL2+jslOGKm+txcbmG0kbeB+vadC5tCUZA9NdA+9Ywj3M4548c7t/SDg==} + hasBin: true + dependencies: + '@docsearch/css': 3.5.0 + '@docsearch/js': 3.5.0(@algolia/client-search@4.14.2)(search-insights@2.6.0) + '@vitejs/plugin-vue': 4.2.3(vite@4.3.9)(vue@3.3.4) + '@vue/devtools-api': 6.5.0 + '@vueuse/core': 10.1.2(vue@3.3.4) + '@vueuse/integrations': 10.1.2(focus-trap@7.4.3)(vue@3.3.4) + body-scroll-lock: 4.0.0-beta.0 + focus-trap: 7.4.3 + mark.js: 8.11.1 + minisearch: 6.1.0 + shiki: 0.14.2 + vite: 4.3.9(@types/node@18.16.0) + vue: 3.3.4 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - less + - nprogress + - qrcode + - react + - react-dom + - sass + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - universal-cookie + dev: true + + /vitest@0.31.0(@vitest/ui@0.32.0)(jsdom@21.1.1): resolution: {integrity: sha512-JwWJS9p3GU9GxkG7eBSmr4Q4x4bvVBSswaCFf1PBNHiPx00obfhHRJfgHcnI0ffn+NMlIh9QGvG75FlaIBdKGA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -14738,7 +15293,7 @@ packages: '@vitest/runner': 0.31.0 '@vitest/snapshot': 0.31.0 '@vitest/spy': 0.31.0 - '@vitest/ui': 0.31.0(vitest@0.31.0) + '@vitest/ui': 0.32.0(vitest@0.31.0) '@vitest/utils': 0.31.0 acorn: 8.8.2 acorn-walk: 8.2.0 @@ -14755,7 +15310,7 @@ packages: strip-literal: 1.0.1 tinybench: 2.4.0 tinypool: 0.5.0 - vite: 4.3.8(@types/node@18.16.0) + vite: 4.3.9(@types/node@18.16.0) vite-node: 0.31.0(@types/node@18.16.0) why-is-node-running: 2.2.2 transitivePeerDependencies: @@ -14934,16 +15489,16 @@ packages: resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==} dev: false - /webdriver@7.30.0(typescript@5.0.4): + /webdriver@7.30.0(typescript@5.1.3): resolution: {integrity: sha512-bQE4oVgjjg5sb3VkCD+Eb8mscEvf3TioP0mnEZK0f5OJUNI045gMCJgpX8X4J8ScGyEhzlhn1KvlAn3yzxjxog==} engines: {node: '>=12.0.0'} dependencies: '@types/node': 18.16.0 - '@wdio/config': 7.30.0(typescript@5.0.4) + '@wdio/config': 7.30.0(typescript@5.1.3) '@wdio/logger': 7.26.0 '@wdio/protocols': 7.27.0 - '@wdio/types': 7.26.0(typescript@5.0.4) - '@wdio/utils': 7.26.0(typescript@5.0.4) + '@wdio/types': 7.26.0(typescript@5.1.3) + '@wdio/utils': 7.26.0(typescript@5.1.3) got: 11.8.5 ky: 0.30.0 lodash.merge: 4.6.2 @@ -15201,6 +15756,10 @@ packages: is-symbol: 1.0.4 dev: true + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + dev: true + /which-typed-array@1.1.9: resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} @@ -15516,6 +16075,10 @@ packages: resolution: {integrity: sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==} dev: true + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: true + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -15533,6 +16096,14 @@ packages: resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} engines: {node: '>= 14'} + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -15543,6 +16114,23 @@ packages: engines: {node: '>=12'} dev: true + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + dev: true + /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} From 69d9c09f33a5cd1f5978fd16c19a841b94a41f6f Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 16 Jun 2023 20:32:07 +0530 Subject: [PATCH 240/255] chore: update pnpm --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0bbe30187..643db1d3a 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "10.2.3", "description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "type": "module", - "packageManager": "pnpm@8.5.1", + "packageManager": "pnpm@8.6.2", "keywords": [ "diagram", "markdown", From 5c63c5ceaeaa34fb73793810d5e5557f33caa7ed Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 16 Jun 2023 23:12:03 +0530 Subject: [PATCH 241/255] Rebuild --- cypress/integration/rendering/flowchart-v2.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress/integration/rendering/flowchart-v2.spec.js b/cypress/integration/rendering/flowchart-v2.spec.js index eaa14ed50..305c55b21 100644 --- a/cypress/integration/rendering/flowchart-v2.spec.js +++ b/cypress/integration/rendering/flowchart-v2.spec.js @@ -172,7 +172,7 @@ describe('Flowchart v2', () => { ); }); - it('52: handle nested subgraphs in several levels', () => { + it('52: handle nested subgraphs in several levels.', () => { imgSnapshotTest( `flowchart TB b-->B From 7434031003468488a129d374ba1d4baef5c7b801 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 16 Jun 2023 23:54:02 +0530 Subject: [PATCH 242/255] Add coverage paths --- package.json | 3 +++ vite.config.ts | 1 + 2 files changed, 4 insertions(+) diff --git a/package.json b/package.json index 643db1d3a..ce2bd569d 100644 --- a/package.json +++ b/package.json @@ -119,5 +119,8 @@ }, "volta": { "node": "18.16.0" + }, + "nyc": { + "report-dir": "coverage/cypress" } } diff --git a/vite.config.ts b/vite.config.ts index dfd0431bb..582671f11 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -18,6 +18,7 @@ export default defineConfig({ setupFiles: ['packages/mermaid/src/tests/setup.ts'], coverage: { reporter: ['text', 'json', 'html', 'lcov'], + reportsDirectory: './coverage/vitest', }, }, build: { From 8a0a874d1c468f3a00a7edc6d935b6d0ae4c5ed4 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 17 Jun 2023 01:24:15 +0530 Subject: [PATCH 243/255] Merge coverages --- package.json | 12 +-- pnpm-lock.yaml | 193 ++++++++++++++++++-------------------------- scripts/coverage.ts | 19 +++++ vite.config.ts | 1 + 4 files changed, 106 insertions(+), 119 deletions(-) create mode 100644 scripts/coverage.ts diff --git a/package.json b/package.json index ce2bd569d..5447916f4 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,8 @@ "test:coverage": "vitest --coverage", "prepublishOnly": "pnpm build && pnpm test", "prepare": "husky install && pnpm build", - "pre-commit": "lint-staged" + "pre-commit": "lint-staged", + "merge": "ts-node-esm scripts/coverage.ts" }, "repository": { "type": "git", @@ -75,9 +76,9 @@ "@types/rollup-plugin-visualizer": "^4.2.1", "@typescript-eslint/eslint-plugin": "^5.59.0", "@typescript-eslint/parser": "^5.59.0", - "@vitest/coverage-c8": "^0.32.0", - "@vitest/spy": "^0.32.0", - "@vitest/ui": "^0.32.0", + "@vitest/coverage-istanbul": "^0.32.2", + "@vitest/spy": "^0.32.2", + "@vitest/ui": "^0.32.2", "concurrently": "^8.0.1", "cors": "^2.8.5", "coveralls": "^3.1.1", @@ -104,6 +105,7 @@ "js-yaml": "^4.1.0", "jsdom": "^21.1.1", "lint-staged": "^13.2.1", + "nyc": "^15.1.0", "path-browserify": "^1.0.1", "pnpm": "^8.3.1", "prettier": "^2.8.8", @@ -115,7 +117,7 @@ "typescript": "^5.1.3", "vite": "^4.3.9", "vite-plugin-istanbul": "^4.1.0", - "vitest": "^0.31.0" + "vitest": "^0.32.2" }, "volta": { "node": "18.16.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fac72d9f8..08f36596a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,15 +62,15 @@ importers: '@typescript-eslint/parser': specifier: ^5.59.0 version: 5.59.0(eslint@8.39.0)(typescript@5.1.3) - '@vitest/coverage-c8': - specifier: ^0.32.0 - version: 0.32.0(vitest@0.31.0) + '@vitest/coverage-istanbul': + specifier: ^0.32.2 + version: 0.32.2(vitest@0.32.2) '@vitest/spy': - specifier: ^0.32.0 - version: 0.32.0 + specifier: ^0.32.2 + version: 0.32.2 '@vitest/ui': - specifier: ^0.32.0 - version: 0.32.0(vitest@0.31.0) + specifier: ^0.32.2 + version: 0.32.2(vitest@0.32.2) concurrently: specifier: ^8.0.1 version: 8.0.1 @@ -149,6 +149,9 @@ importers: lint-staged: specifier: ^13.2.1 version: 13.2.1 + nyc: + specifier: ^15.1.0 + version: 15.1.0 path-browserify: specifier: ^1.0.1 version: 1.0.1 @@ -183,8 +186,8 @@ importers: specifier: ^4.1.0 version: 4.1.0(vite@4.3.9) vitest: - specifier: ^0.31.0 - version: 0.31.0(@vitest/ui@0.32.0)(jsdom@21.1.1) + specifier: ^0.32.2 + version: 0.32.2(@vitest/ui@0.32.2)(jsdom@21.1.1) packages/mermaid: dependencies: @@ -3549,7 +3552,7 @@ packages: glob: 7.2.3 graceful-fs: 4.2.10 istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.0 + istanbul-lib-instrument: 5.2.1 istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 @@ -3953,11 +3956,11 @@ packages: /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: - '@types/chai': 4.3.4 + '@types/chai': 4.3.5 dev: true - /@types/chai@4.3.4: - resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} + /@types/chai@4.3.5: + resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true /@types/connect-history-api-fallback@1.3.5: @@ -4662,7 +4665,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 + semver: 7.5.0 tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: @@ -4683,7 +4686,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 + semver: 7.5.0 tsutils: 3.21.0(typescript@5.1.3) typescript: 5.1.3 transitivePeerDependencies: @@ -4704,7 +4707,7 @@ packages: '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.0.4) eslint: 8.39.0 eslint-scope: 5.1.1 - semver: 7.3.8 + semver: 7.5.0 transitivePeerDependencies: - supports-color - typescript @@ -4724,7 +4727,7 @@ packages: '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.1.3) eslint: 8.39.0 eslint-scope: 5.1.1 - semver: 7.3.8 + semver: 7.5.0 transitivePeerDependencies: - supports-color - typescript @@ -4968,83 +4971,72 @@ packages: vue: 3.3.4 dev: true - /@vitest/coverage-c8@0.32.0(vitest@0.31.0): - resolution: {integrity: sha512-FeTzRN5VCL7B6YTRK5ZPQO2iwJzl2x7/mTQ/2uEeKZatAYBtvczeAYnzSUhCPev7p99+5skxMQZwqVcFTrVCdg==} + /@vitest/coverage-istanbul@0.32.2(vitest@0.32.2): + resolution: {integrity: sha512-B5VSvfzwTsDt9HjFmQ4sZ2tQHivmHJpAoG/BJwNNQeBtSCSdY1L6tfCjwZLo7ryOmZEDA3ck/DAmHCUZqa+MWA==} peerDependencies: - vitest: '>=0.30.0 <1' + vitest: '>=0.32.0 <1' dependencies: - '@ampproject/remapping': 2.2.1 - c8: 7.13.0 - magic-string: 0.30.0 - picocolors: 1.0.0 - std-env: 3.3.2 - vitest: 0.31.0(@vitest/ui@0.32.0)(jsdom@21.1.1) + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + test-exclude: 6.0.0 + vitest: 0.32.2(@vitest/ui@0.32.2)(jsdom@21.1.1) + transitivePeerDependencies: + - supports-color dev: true - /@vitest/expect@0.31.0: - resolution: {integrity: sha512-Jlm8ZTyp6vMY9iz9Ny9a0BHnCG4fqBa8neCF6Pk/c/6vkUk49Ls6UBlgGAU82QnzzoaUs9E/mUhq/eq9uMOv/g==} + /@vitest/expect@0.32.2: + resolution: {integrity: sha512-6q5yzweLnyEv5Zz1fqK5u5E83LU+gOMVBDuxBl2d2Jfx1BAp5M+rZgc5mlyqdnxquyoiOXpXmFNkcGcfFnFH3Q==} dependencies: - '@vitest/spy': 0.31.0 - '@vitest/utils': 0.31.0 + '@vitest/spy': 0.32.2 + '@vitest/utils': 0.32.2 chai: 4.3.7 dev: true - /@vitest/runner@0.31.0: - resolution: {integrity: sha512-H1OE+Ly7JFeBwnpHTrKyCNm/oZgr+16N4qIlzzqSG/YRQDATBYmJb/KUn3GrZaiQQyL7GwpNHVZxSQd6juLCgw==} + /@vitest/runner@0.32.2: + resolution: {integrity: sha512-06vEL0C1pomOEktGoLjzZw+1Fb+7RBRhmw/06WkDrd1akkT9i12su0ku+R/0QM69dfkIL/rAIDTG+CSuQVDcKw==} dependencies: - '@vitest/utils': 0.31.0 + '@vitest/utils': 0.32.2 concordance: 5.0.4 p-limit: 4.0.0 pathe: 1.1.0 dev: true - /@vitest/snapshot@0.31.0: - resolution: {integrity: sha512-5dTXhbHnyUMTMOujZPB0wjFjQ6q5x9c8TvAsSPUNKjp1tVU7i9pbqcKPqntyu2oXtmVxKbuHCqrOd+Ft60r4tg==} + /@vitest/snapshot@0.32.2: + resolution: {integrity: sha512-JwhpeH/PPc7GJX38vEfCy9LtRzf9F4er7i4OsAJyV7sjPwjj+AIR8cUgpMTWK4S3TiamzopcTyLsZDMuldoi5A==} dependencies: magic-string: 0.30.0 pathe: 1.1.0 pretty-format: 27.5.1 dev: true - /@vitest/spy@0.31.0: - resolution: {integrity: sha512-IzCEQ85RN26GqjQNkYahgVLLkULOxOm5H/t364LG0JYb3Apg0PsYCHLBYGA006+SVRMWhQvHlBBCyuByAMFmkg==} + /@vitest/spy@0.32.2: + resolution: {integrity: sha512-Q/ZNILJ4ca/VzQbRM8ur3Si5Sardsh1HofatG9wsJY1RfEaw0XKP8IVax2lI1qnrk9YPuG9LA2LkZ0EI/3d4ug==} dependencies: tinyspy: 2.1.0 dev: true - /@vitest/spy@0.32.0: - resolution: {integrity: sha512-MruAPlM0uyiq3d53BkwTeShXY0rYEfhNGQzVO5GHBmmX3clsxcWp79mMnkOVcV244sNTeDcHbcPFWIjOI4tZvw==} - dependencies: - tinyspy: 2.1.0 - dev: true - - /@vitest/ui@0.32.0(vitest@0.31.0): - resolution: {integrity: sha512-55gugh6+owrOqW83RCgLm9q+o3SlzvFVgl1lyfnr0WB8ABxLoM+3pgusEjosscgEYGzTjTXaZY6xLd4qlfH/RQ==} + /@vitest/ui@0.32.2(vitest@0.32.2): + resolution: {integrity: sha512-N5JKftnB8qzKFtpQC5OcUGxYTLo6wiB/95Lgyk6MF52t74Y7BJOWbf6EFYhXqt9J0MSbhOR2kapq+WKKUGDW0g==} peerDependencies: vitest: '>=0.30.1 <1' dependencies: - '@vitest/utils': 0.32.0 + '@vitest/utils': 0.32.2 fast-glob: 3.2.12 fflate: 0.7.4 flatted: 3.2.7 pathe: 1.1.0 picocolors: 1.0.0 sirv: 2.0.3 - vitest: 0.31.0(@vitest/ui@0.32.0)(jsdom@21.1.1) + vitest: 0.32.2(@vitest/ui@0.32.2)(jsdom@21.1.1) dev: true - /@vitest/utils@0.31.0: - resolution: {integrity: sha512-kahaRyLX7GS1urekRXN2752X4gIgOGVX4Wo8eDUGUkTWlGpXzf5ZS6N9RUUS+Re3XEE8nVGqNyxkSxF5HXlGhQ==} + /@vitest/utils@0.32.2: + resolution: {integrity: sha512-lnJ0T5i03j0IJaeW73hxe2AuVnZ/y1BhhCOuIcl9LIzXnbpXJT9Lrt6brwKHXLOiA7MZ6N5hSJjt0xE1dGNCzQ==} dependencies: - concordance: 5.0.4 - loupe: 2.3.6 - pretty-format: 27.5.1 - dev: true - - /@vitest/utils@0.32.0: - resolution: {integrity: sha512-53yXunzx47MmbuvcOPpLaVljHaeSu1G2dHdmy7+9ngMnQIkBQcvwOcoclWFnxDMxFbnq8exAfh3aKSZaK71J5A==} - dependencies: - concordance: 5.0.4 + diff-sequences: 29.4.3 loupe: 2.3.6 pretty-format: 27.5.1 dev: true @@ -6005,7 +5997,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.0 + istanbul-lib-instrument: 5.2.1 test-exclude: 6.0.0 transitivePeerDependencies: - supports-color @@ -6282,25 +6274,6 @@ packages: engines: {node: '>= 0.8'} dev: true - /c8@7.13.0: - resolution: {integrity: sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==} - engines: {node: '>=10.12.0'} - hasBin: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@istanbuljs/schema': 0.1.3 - find-up: 5.0.0 - foreground-child: 2.0.0 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-report: 3.0.0 - istanbul-reports: 3.1.5 - rimraf: 3.0.2 - test-exclude: 6.0.0 - v8-to-istanbul: 9.0.1 - yargs: 16.2.0 - yargs-parser: 20.2.9 - dev: true - /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -6604,14 +6577,6 @@ packages: wrap-ansi: 6.2.0 dev: true - /cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -10091,6 +10056,19 @@ packages: - supports-color dev: true + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.12.3 + '@babel/parser': 7.21.8 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + /istanbul-lib-processinfo@2.0.3: resolution: {integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==} engines: {node: '>=8'} @@ -14328,8 +14306,8 @@ packages: engines: {node: '>=6'} dev: true - /tinybench@2.4.0: - resolution: {integrity: sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==} + /tinybench@2.5.0: + resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} dev: true /tinypool@0.5.0: @@ -14976,8 +14954,8 @@ packages: vfile-message: 3.1.2 dev: true - /vite-node@0.31.0(@types/node@18.16.0): - resolution: {integrity: sha512-8x1x1LNuPvE2vIvkSB7c1mApX5oqlgsxzHQesYF7l5n1gKrEmrClIiZuOFbFDQcjLsmcWSwwmrWrcGWm9Fxc/g==} + /vite-node@0.32.2(@types/node@18.16.0): + resolution: {integrity: sha512-dTQ1DCLwl2aEseov7cfQ+kDMNJpM1ebpyMMMwWzBvLbis8Nla/6c9WQcqpPssTwS6Rp/+U6KwlIj8Eapw4bLdA==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: @@ -15258,8 +15236,8 @@ packages: - universal-cookie dev: true - /vitest@0.31.0(@vitest/ui@0.32.0)(jsdom@21.1.1): - resolution: {integrity: sha512-JwWJS9p3GU9GxkG7eBSmr4Q4x4bvVBSswaCFf1PBNHiPx00obfhHRJfgHcnI0ffn+NMlIh9QGvG75FlaIBdKGA==} + /vitest@0.32.2(@vitest/ui@0.32.2)(jsdom@21.1.1): + resolution: {integrity: sha512-hU8GNNuQfwuQmqTLfiKcqEhZY72Zxb7nnN07koCUNmntNxbKQnVbeIS6sqUgR3eXSlbOpit8+/gr1KpqoMgWCQ==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -15289,15 +15267,15 @@ packages: webdriverio: optional: true dependencies: - '@types/chai': 4.3.4 + '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 '@types/node': 18.16.0 - '@vitest/expect': 0.31.0 - '@vitest/runner': 0.31.0 - '@vitest/snapshot': 0.31.0 - '@vitest/spy': 0.31.0 - '@vitest/ui': 0.32.0(vitest@0.31.0) - '@vitest/utils': 0.31.0 + '@vitest/expect': 0.32.2 + '@vitest/runner': 0.32.2 + '@vitest/snapshot': 0.32.2 + '@vitest/spy': 0.32.2 + '@vitest/ui': 0.32.2(vitest@0.32.2) + '@vitest/utils': 0.32.2 acorn: 8.8.2 acorn-walk: 8.2.0 cac: 6.7.14 @@ -15311,10 +15289,10 @@ packages: picocolors: 1.0.0 std-env: 3.3.2 strip-literal: 1.0.1 - tinybench: 2.4.0 + tinybench: 2.5.0 tinypool: 0.5.0 vite: 4.3.9(@types/node@18.16.0) - vite-node: 0.31.0(@types/node@18.16.0) + vite-node: 0.32.2(@types/node@18.16.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -16134,19 +16112,6 @@ packages: yargs-parser: 18.1.3 dev: true - /yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - dev: true - /yargs@17.6.2: resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} engines: {node: '>=12'} diff --git a/scripts/coverage.ts b/scripts/coverage.ts new file mode 100644 index 000000000..8cc8961da --- /dev/null +++ b/scripts/coverage.ts @@ -0,0 +1,19 @@ +import { execSync } from 'child_process'; +import { cp } from 'fs/promises'; + +const main = async () => { + const coverageDir = 'coverage'; + const coverageFiles = ['vitest', 'cypress'].map( + (dir) => `${coverageDir}/${dir}/coverage-final.json` + ); + + //copy coverage files from vitest and cypress to coverage folder + await Promise.all( + coverageFiles.map((file) => cp(file, `${coverageDir}/combined/${file.split('/')[1]}.json`)) + ); + + execSync('npx nyc merge coverage/combined coverage/combined-final.json'); + execSync('npx nyc report -t coverage --report-dir coverage/html --reporter=html-spa'); +}; + +void main(); diff --git a/vite.config.ts b/vite.config.ts index 582671f11..5b658f4b8 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -17,6 +17,7 @@ export default defineConfig({ // TODO: should we move this to a mermaid-core package? setupFiles: ['packages/mermaid/src/tests/setup.ts'], coverage: { + provider: 'istanbul', reporter: ['text', 'json', 'html', 'lcov'], reportsDirectory: './coverage/vitest', }, From 6c96650043ccdc534a0d3f021f7ae566d99caf60 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 17 Jun 2023 16:51:30 +0530 Subject: [PATCH 244/255] chore: update deps --- package.json | 2 +- pnpm-lock.yaml | 693 +++++++++++-------------------------------------- 2 files changed, 149 insertions(+), 546 deletions(-) diff --git a/package.json b/package.json index 5447916f4..1570c2bd7 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ ] }, "devDependencies": { - "@applitools/eyes-cypress": "^3.32.0", + "@applitools/eyes-cypress": "^3.33.1", "@commitlint/cli": "^17.6.1", "@commitlint/config-conventional": "^17.6.1", "@cspell/eslint-plugin": "^6.31.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 08f36596a..b0c1596c6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: devDependencies: '@applitools/eyes-cypress': - specifier: ^3.32.0 - version: 3.32.0(typescript@5.1.3) + specifier: ^3.33.1 + version: 3.33.1(typescript@5.1.3) '@commitlint/cli': specifier: ^17.6.1 version: 17.6.1 @@ -719,88 +719,39 @@ packages: leven: 3.1.0 dev: true - /@applitools/core-base@1.1.39: - resolution: {integrity: sha512-dFAmK5AeUEfhc6uHyZJ1sZNR2RB92EXn4zj2Vq4CVl1msnfb/rTLJl2UTSZtmP7W7khss2+y/vRsnJpyKErDPg==} + /@applitools/core-base@1.1.56: + resolution: {integrity: sha512-eIHqaRUgXjle9n5V4mVIqhkINui7I9pQzaV2n8TV1vKPnTx7z53NzAW6Z9Gikoi4svG1In7pbg55kNtTtVmnPA==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/image': 1.0.26 - '@applitools/logger': 1.1.46 - '@applitools/req': 1.1.30 - '@applitools/utils': 1.3.30 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@applitools/core-base@1.1.49: - resolution: {integrity: sha512-6LqwN4jKA8aosmiTKXO9ZxCx9LMGhOWWW3o7qif1BPASx/z8ato8YkJetT6690Q71nkyUCsBt/5s/nJ1SCS9Nw==} - engines: {node: '>=12.13.0'} - dependencies: - '@applitools/image': 1.0.28 - '@applitools/logger': 1.1.48 - '@applitools/req': 1.1.35 - '@applitools/utils': 1.3.32 + '@applitools/image': 1.0.34 + '@applitools/logger': 2.0.2 + '@applitools/req': 1.3.0 + '@applitools/utils': 1.3.37 abort-controller: 3.0.0 throat: 6.0.2 transitivePeerDependencies: - - encoding - supports-color dev: true - /@applitools/core@2.3.14(typescript@5.1.3): - resolution: {integrity: sha512-ubCQTGcoKKmgrt7QmIsrniDH8MqWgF66T+bEDRurNjpnC0RzjiCmEipr1pkMJGeXiUbe4Kr4uWP1+rg3QA8FBA==} + /@applitools/core@3.2.1(typescript@5.1.3): + resolution: {integrity: sha512-3Sq4r5cWrp/0hLxgb/AR+XdPTN+8AClZQGhqw4gze38BXeJO10FtxYhakOQ8iVuhUESwIHo86OCmLEGREZAroA==} engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@applitools/core-base': 1.1.39 - '@applitools/dom-capture': 11.2.1 - '@applitools/dom-snapshot': 4.7.5 - '@applitools/driver': 1.11.35 - '@applitools/ec-client': 1.2.14 - '@applitools/logger': 1.1.46 - '@applitools/nml-client': 1.3.38 - '@applitools/req': 1.1.30 - '@applitools/screenshoter': 3.7.29 - '@applitools/snippets': 2.4.15 - '@applitools/socket': 1.0.8 - '@applitools/spec-driver-webdriver': 1.0.15(webdriver@7.30.0) - '@applitools/ufg-client': 1.2.1 - '@applitools/utils': 1.3.30 - '@types/ws': 8.5.4 - abort-controller: 3.0.0 - chalk: 4.1.2 - node-fetch: 2.6.7 - throat: 6.0.1 - webdriver: 7.30.0(typescript@5.1.3) - ws: 8.12.0 - yargs: 17.6.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - typescript - - utf-8-validate - dev: true - - /@applitools/core@2.5.3(typescript@5.1.3): - resolution: {integrity: sha512-hYSwpH+uvLcsVt97ZHYjiXclKOzxGRzoWmykWuigRFoJGoczEyf6UnCrIS5OtaWaUgpY2hL7Ltl2vvDsCwkzSQ==} - engines: {node: '>=12.13.0'} - hasBin: true - dependencies: - '@applitools/core-base': 1.1.49 - '@applitools/dom-capture': 11.2.1 + '@applitools/core-base': 1.1.56 + '@applitools/dom-capture': 11.2.2 '@applitools/dom-snapshot': 4.7.9 - '@applitools/driver': 1.11.43 - '@applitools/ec-client': 1.2.23(typescript@5.1.3) - '@applitools/logger': 1.1.48 - '@applitools/nml-client': 1.3.47 - '@applitools/req': 1.1.35 - '@applitools/screenshoter': 3.7.38 - '@applitools/snippets': 2.4.19 - '@applitools/socket': 1.0.10 - '@applitools/spec-driver-webdriver': 1.0.24(webdriver@7.30.0) - '@applitools/ufg-client': 1.2.10 - '@applitools/utils': 1.3.32 + '@applitools/driver': 1.12.1 + '@applitools/ec-client': 1.2.32(typescript@5.1.3) + '@applitools/logger': 2.0.2 + '@applitools/nml-client': 1.3.55 + '@applitools/req': 1.3.0 + '@applitools/screenshoter': 3.7.46 + '@applitools/snippets': 2.4.21 + '@applitools/socket': 1.1.1 + '@applitools/spec-driver-webdriver': 1.0.33(webdriver@7.30.0) + '@applitools/ufg-client': 1.2.18 + '@applitools/utils': 1.3.37 '@types/ws': 8.5.4 abort-controller: 3.0.0 chalk: 4.1.2 @@ -816,8 +767,8 @@ packages: - utf-8-validate dev: true - /@applitools/dom-capture@11.2.1: - resolution: {integrity: sha512-c3x87rgC+8wdyOHDd+jFkrJIfx1mWmSiN7pfOOZNVM1X69cF7qmLIlTrZ09ssU/eOXppRKqhAX6JiNmpD5uXKw==} + /@applitools/dom-capture@11.2.2: + resolution: {integrity: sha512-omSH+c8+ij/mUPKVwRp7ulCOz33EHMnG8Q3s7XuwaB9m04onEAg82/25otOrntqMKmO2doGWN3E97qUstZJiPQ==} engines: {node: '>=8.9.0'} dependencies: '@applitools/dom-shared': 1.0.5 @@ -834,21 +785,6 @@ packages: engines: {node: '>=8.9.0'} dev: true - /@applitools/dom-shared@1.0.9: - resolution: {integrity: sha512-u6nRHBklRAaODILm0HRluE0IAwrnjs8AMNRBFxHThKGt4qpbkhnwazGMr4zDu3WCBjr/sA31kekUqNl0Jx3YeQ==} - engines: {node: '>=8.9.0'} - dev: true - - /@applitools/dom-snapshot@4.7.5: - resolution: {integrity: sha512-qay8LQ7/qWIVzaaTCKgvNsmHhanppt58H9NsrpG7GXdCiQypa0zz6M9F9+XxEVSjcxMLtFal+O8OQQmCmLzEzQ==} - engines: {node: '>=8.9.0'} - dependencies: - '@applitools/dom-shared': 1.0.9 - '@applitools/functional-commons': 1.6.0 - css-tree: 2.3.1 - pako: 1.0.11 - dev: true - /@applitools/dom-snapshot@4.7.9: resolution: {integrity: sha512-lY1tkNwNQUBM7snYUwVZ80EisgIYdNZxIBtbsRU0R60wKTQc8ccBPGo9e3TBbS4Z9XqQYVAupKQjZMlcMVEiwQ==} engines: {node: '>=8.9.0'} @@ -859,74 +795,39 @@ packages: pako: 1.0.11 dev: true - /@applitools/driver@1.11.35: - resolution: {integrity: sha512-E2FqVtBR8OO9+5g0p0+rDWCBVnYA2o6WTgJp+2gcliTHnoRbFBuACIRrLikEfvEcIok/XQmo7g1GzBPFrDEy8Q==} + /@applitools/driver@1.12.1: + resolution: {integrity: sha512-/ku686w2BqCOVL1brBAgrGNGiFqPp+o9vUxmfNXTvsmrAYCsefyZ9R8APoRX0tQgNKr203F9UgaNDRRRmr+Uug==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/logger': 1.1.46 - '@applitools/snippets': 2.4.15 - '@applitools/utils': 1.3.30 + '@applitools/logger': 2.0.2 + '@applitools/snippets': 2.4.21 + '@applitools/utils': 1.3.37 semver: 7.3.7 transitivePeerDependencies: - supports-color dev: true - /@applitools/driver@1.11.43: - resolution: {integrity: sha512-a+tRvFog/uyJ8HXdH/eo3Ahfo1Zrw8i0FIL0l5Q/YgRH6l4xP3fV/a5/S2xFteiGshCoh5btEPhkBM+dEUSS/Q==} - engines: {node: '>=12.13.0'} - dependencies: - '@applitools/logger': 1.1.48 - '@applitools/snippets': 2.4.19 - '@applitools/utils': 1.3.32 - semver: 7.3.7 - transitivePeerDependencies: - - supports-color - dev: true - - /@applitools/ec-client@1.2.14: - resolution: {integrity: sha512-qnAS7k5Y6MXLzOOZQ5Shl6crHFJ6hYnujGKqt2tJrLnIL8xwXPPhJNscb6NtLP4BTNvTxatdK8Rz4XJ4Tz+iow==} + /@applitools/ec-client@1.2.32(typescript@5.1.3): + resolution: {integrity: sha512-03+qK41eza2808hXuc1D1UlJG+89oCF0EjJmP1Wkp2zq1nx6Za+R3NGVRTeUJhHhjOp6xdeqAHIyD8x1whCkmA==} engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@applitools/execution-grid-tunnel': 1.0.19 - '@applitools/logger': 1.1.46 - '@applitools/req': 1.1.30 - '@applitools/socket': 1.0.8 - '@applitools/utils': 1.3.30 - abort-controller: 3.0.0 - yargs: 17.6.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@applitools/ec-client@1.2.23(typescript@5.1.3): - resolution: {integrity: sha512-YYamRWlclnOitpzNrDtcwAat+AL59mTIOlmUaki+dtfEf482e+Kxytpq5AdiTbIPRBA143D+b2PLtai+WJr7yA==} - engines: {node: '>=12.13.0'} - hasBin: true - dependencies: - '@applitools/core-base': 1.1.49 - '@applitools/driver': 1.11.43 - '@applitools/execution-grid-tunnel': 1.0.24 - '@applitools/logger': 1.1.48 - '@applitools/req': 1.1.35 - '@applitools/socket': 1.0.10 - '@applitools/spec-driver-webdriver': 1.0.24(webdriver@7.30.0) - '@applitools/utils': 1.3.32 + '@applitools/core-base': 1.1.56 + '@applitools/driver': 1.12.1 + '@applitools/execution-grid-tunnel': 2.1.0 + '@applitools/logger': 2.0.2 + '@applitools/req': 1.3.0 + '@applitools/socket': 1.1.1 + '@applitools/spec-driver-webdriver': 1.0.33(webdriver@7.30.0) + '@applitools/utils': 1.3.37 abort-controller: 3.0.0 webdriver: 7.30.0(typescript@5.1.3) yargs: 17.6.2 transitivePeerDependencies: - - encoding - supports-color - typescript dev: true - /@applitools/eg-frpc@1.0.2: - resolution: {integrity: sha512-qNY+u1se+PCmiLTqGg7ed4tYf0ScjNOSIZmtqwi+cGeJFuny/oZ7ChctQLD6x8GL1YO3CDjZiJc9Zrcbnx7u0w==} - engines: {node: '>=12.13.0'} - dev: true - /@applitools/eg-frpc@1.0.3: resolution: {integrity: sha512-16CrVdq2onkN5j6wpHxd8dfapJehHJq7GnYEg86QGFZPhTgZI5WukKrp9ryM0EblUJUjdTwEPymc5B8cffuZZQ==} engines: {node: '>=12.13.0'} @@ -940,31 +841,8 @@ packages: is-localhost-ip: 2.0.0 dev: true - /@applitools/execution-grid-tunnel@1.0.19: - resolution: {integrity: sha512-kTRSNcld6fyW+vEXwsxkrgg7AfqXaA/upgUFdiIAEDoTUGqowoRfjAnkZcAgWPeEdtGEAu5KttlFp9z64EvRPQ==} - engines: {node: '>=12.13.0'} - hasBin: true - dependencies: - '@applitools/eg-frpc': 1.0.2 - '@applitools/eg-socks5-proxy-server': 0.5.4 - '@applitools/execution-grid-tunnel': 1.0.24 - '@applitools/logger': 1.1.48 - dotenv: 16.0.3 - encoding: 0.1.13 - fastify: 3.29.5 - fastify-plugin: 3.0.1 - find-process: 1.4.7 - ini: 3.0.1 - node-cleanup: 2.1.2 - node-fetch: 2.6.9(encoding@0.1.13) - p-retry: 4.6.2 - teen_process: 1.16.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@applitools/execution-grid-tunnel@1.0.24: - resolution: {integrity: sha512-PVOHhTSqC5JCZh76GJCuShLjApogl5IzE5xaDOF0ptX1gvlEqN1MuONw/TTcT4P9j4Xs/XLU+T4o265R4Z+dbA==} + /@applitools/execution-grid-tunnel@2.1.0: + resolution: {integrity: sha512-OooDCcS93+reh1hIpalDZVMhAsSaG/h+T5jGn7WzIYL4wVdi/GLyibvzxlY1hLFGi0EhUJGckpMoHiTZ6EuV2w==} engines: {node: '>=12.13.0'} hasBin: true dependencies: @@ -985,13 +863,21 @@ packages: - supports-color dev: true - /@applitools/eyes-api@1.13.12(typescript@5.1.3): - resolution: {integrity: sha512-83pr95/6brMHnYmqFuoDezMzB5h6HtBz3NXPwJ6GtPj+37ksDVO6jwJz9fh/wmBx9KELd8FUGvWpYEUlhkJzuA==} + /@applitools/eyes-cypress@3.33.1(typescript@5.1.3): + resolution: {integrity: sha512-hIvXiz/8xLarvnx78QuMm2NCkLYXgF/CC/X77dAAQO54tFgDmSsDaB9ak1cE5bDMCLxP84+roRghgJUQxpersQ==} engines: {node: '>=12.13.0'} + hasBin: true dependencies: - '@applitools/core': 2.3.14(typescript@5.1.3) - '@applitools/logger': 1.1.46 - '@applitools/utils': 1.3.30 + '@applitools/core': 3.2.1(typescript@5.1.3) + '@applitools/eyes': 1.2.14(typescript@5.1.3) + '@applitools/functional-commons': 1.6.0 + '@applitools/logger': 2.0.2 + '@applitools/utils': 1.3.37 + boxen: 5.1.2 + chalk: 3.0.0 + semver: 7.3.8 + uuid: 8.3.2 + ws: 8.5.0 transitivePeerDependencies: - bufferutil - encoding @@ -1000,22 +886,13 @@ packages: - utf-8-validate dev: true - /@applitools/eyes-cypress@3.32.0(typescript@5.1.3): - resolution: {integrity: sha512-PgDZi3zg7Auh2V6XmxTGn/ONZA5yY5VpW+fpV2rUx22ByM7BL9P7fHDJrx/iIdP/s5YUNDTIVJUuSvGSB+Arcg==} + /@applitools/eyes@1.2.14(typescript@5.1.3): + resolution: {integrity: sha512-pH9g3h2pQCGfrduT+gAZTyQ/iM+NxSmw3e8UjI+2/Zj0VnnlhprX18x5mT062tEZA6WExn59mLWsdZQcu1cDnA==} engines: {node: '>=12.13.0'} - hasBin: true dependencies: - '@applitools/core': 2.5.3(typescript@5.1.3) - '@applitools/eyes-api': 1.13.12(typescript@5.1.3) - '@applitools/functional-commons': 1.6.0 - '@applitools/logger': 1.1.48 - '@applitools/utils': 1.3.32 - boxen: 5.1.2 - chalk: 3.0.0 - semver: 7.3.8 - uuid: 8.3.2 - which: 2.0.2 - ws: 8.5.0 + '@applitools/core': 3.2.1(typescript@5.1.3) + '@applitools/logger': 2.0.2 + '@applitools/utils': 1.3.37 transitivePeerDependencies: - bufferutil - encoding @@ -1029,21 +906,11 @@ packages: engines: {node: '>=8.0.0'} dev: true - /@applitools/image@1.0.26: - resolution: {integrity: sha512-eJ05q44JhNaZHnaUKOvAFiY2tgtk8xTf0oZqSRq9kxrCPHjHpdWGJhJt4BwZ+TzGJdA85/cLWDj/ZEXPyDCv6w==} + /@applitools/image@1.0.34: + resolution: {integrity: sha512-PkgsC0bMrQl5XSsnWBz4rPxI1GeLr5OkV2X6Wr//HJPl/RpvKJYWVrgdwfA6Z+T10RETRqcxJAX5grvfytymog==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/utils': 1.3.30 - bmpimagejs: 1.0.4 - jpeg-js: 0.4.4 - png-async: 0.9.4 - dev: true - - /@applitools/image@1.0.28: - resolution: {integrity: sha512-Pm5ZRnbTijafkHYmOhwACRN79YtbtiE9nDHhJSFPiuY7qdiFQ7vhG3XJmX00fMZBjuZHiZ9jRuvgUzASQ09a+Q==} - engines: {node: '>=12.13.0'} - dependencies: - '@applitools/utils': 1.3.32 + '@applitools/utils': 1.3.37 bmpimagejs: 1.0.4 jpeg-js: 0.4.4 png-async: 0.9.4 @@ -1086,17 +953,6 @@ packages: - utf-8-validate dev: true - /@applitools/logger@1.1.46: - resolution: {integrity: sha512-TMKy8sZT8k99a7QGTPYN0Iwxvi0evIv0apAJe37hQ792xUHVKjpLJ1U9LtLQqXqVzz5QCRw0jSx+1ssYWvMEKg==} - engines: {node: '>=12.13.0'} - dependencies: - '@applitools/utils': 1.3.30 - chalk: 4.1.2 - debug: 4.3.3 - transitivePeerDependencies: - - supports-color - dev: true - /@applitools/logger@1.1.48: resolution: {integrity: sha512-A/8Q9p2INPDOMGE8Hqodpw5UxXLGdW4z2w8gOzEJ3zi0MyLOY3lBZiaPKEP0nmOs29q4r/yr0srYY5j9FVAmCg==} engines: {node: '>=12.13.0'} @@ -1108,187 +964,109 @@ packages: - supports-color dev: true - /@applitools/nml-client@1.3.38: - resolution: {integrity: sha512-okIo+R5wM+xDP0sNBPLOXbDsatnce40oiiK04UUb+8JlHQB+4MpeUweyjGrEtGRTkylBgA5o8xf5yAcSMAcD4g==} + /@applitools/logger@2.0.2: + resolution: {integrity: sha512-tprqwPbP0q4bQ1wPJaLCb2nmFywRPJlwEADWJJ5oKJBhbvpqEKo6542GNp4DIebugLy99HUvkCTQS8ngKG0jdg==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/logger': 1.1.46 - '@applitools/req': 1.1.30 - '@applitools/utils': 1.3.30 + '@applitools/utils': 1.3.37 + chalk: 4.1.2 + debug: 4.3.3 transitivePeerDependencies: - - encoding - supports-color dev: true - /@applitools/nml-client@1.3.47: - resolution: {integrity: sha512-PCKU0iwRbvwQCkUOTDwaYl/PCeed2QzEaHKRU1JcQtFzS/icIC1ECQu13OdmBJitZiWs9E1WtRhLM9DCQ2vLxQ==} + /@applitools/nml-client@1.3.55: + resolution: {integrity: sha512-r9C2fByQ0ce228LguFl/Q1RHjyhZZM+BOxOQosjt2NI5fW2NEByrjyfBrIU2JnZzArQjv8j6tX4ZgrpOXVpXxQ==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/logger': 1.1.48 - '@applitools/req': 1.1.35 - '@applitools/utils': 1.3.32 + '@applitools/logger': 2.0.2 + '@applitools/req': 1.3.0 + '@applitools/utils': 1.3.37 transitivePeerDependencies: - - encoding - supports-color dev: true - /@applitools/req@1.1.30: - resolution: {integrity: sha512-W5gOrtxQRXcBzEJxBj2pHuT6npaL5M83MS8hl4UwyNKWkoWinbMpSiHTtjo/R7M2M0Nirq4qhAv8Wu2yIv2gsw==} + /@applitools/req@1.3.0: + resolution: {integrity: sha512-DwoWjMuP9VKpdCMqg91ItrQNKsjpGuYGAqvFitOpu4bs1kP0lcZHOHBuiHyNj97oUccJ1TT3RRrzrkA+byWseg==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/utils': 1.3.30 - '@types/node-fetch': 2.6.2 + '@applitools/utils': 1.3.37 abort-controller: 3.0.0 - node-fetch: 2.6.7 - proxy-agent: 5.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + node-fetch: 3.3.1 transitivePeerDependencies: - - encoding - supports-color dev: true - /@applitools/req@1.1.35: - resolution: {integrity: sha512-JKDFy3Y+EAORLzQ6oUa4lnAOvCCUbVol7ouJhId3kyQMye0rlQYCUVkwsrhc14BpvJjKyxABcIcQG8vp7xnaHg==} + /@applitools/screenshoter@3.7.46: + resolution: {integrity: sha512-VOqzXm3BM4yKWIHxOZGFd+3NVyK9CgEYCxoywFqO+2G5dhYl2r51r60VKF3hS4A8ySXXqkJ878kaRceI3s8YNQ==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/utils': 1.3.32 - '@types/node-fetch': 2.6.2 - abort-controller: 3.0.0 - node-fetch: 2.6.7 - proxy-agent: 5.0.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@applitools/screenshoter@3.7.29: - resolution: {integrity: sha512-k+fMilqPCUj5VES6I3Nvbg9/tn1c7I4mTJC57SR/E3sFtVHl/oeGxAriiUpsgRwlsAbpJ09EJUJd+4Ikce290Q==} - engines: {node: '>=12.13.0'} - dependencies: - '@applitools/image': 1.0.26 - '@applitools/logger': 1.1.46 - '@applitools/snippets': 2.4.15 - '@applitools/utils': 1.3.30 + '@applitools/image': 1.0.34 + '@applitools/logger': 2.0.2 + '@applitools/snippets': 2.4.21 + '@applitools/utils': 1.3.37 jpeg-js: 0.4.4 png-async: 0.9.4 transitivePeerDependencies: - supports-color dev: true - /@applitools/screenshoter@3.7.38: - resolution: {integrity: sha512-QkgCTg8qEEyU0eif/Vspg6MeFLTnSos5BXMQpw0EfhuotPWtIpNT5Ky0bOwXfnU07bM/7WtzYVy44c109iV0/Q==} + /@applitools/snippets@2.4.21: + resolution: {integrity: sha512-3l+6pR0cJJjpG5subgqoI55vFFZ94//CS7jdhWuVwUtQJzeq6QSD6m/H+qfa8A7Sg9mzXnbyUenWQ7fpUk/5Fg==} + engines: {node: '>=12.13.0'} + dev: true + + /@applitools/socket@1.1.1: + resolution: {integrity: sha512-lQjglDC8r2QOVAQmZ+dqsTrtHMQ/9uAGsoMpFQo9amf+/DOipIwLKo0kGx+bMYmfDnAChlifukmMvrl9o1NcTQ==} engines: {node: '>=12.13.0'} dependencies: - '@applitools/image': 1.0.28 - '@applitools/logger': 1.1.48 - '@applitools/snippets': 2.4.19 - '@applitools/utils': 1.3.32 - jpeg-js: 0.4.4 - png-async: 0.9.4 + '@applitools/logger': 2.0.2 + '@applitools/utils': 1.3.37 transitivePeerDependencies: - supports-color dev: true - /@applitools/snippets@2.4.15: - resolution: {integrity: sha512-Yjta4HTmdcvK4w9u7uBQxKUDduRM1nwUb8Q/AHol/+dneJF+NVK2zBOw5c8fZn4+YEURsNx8sUTaqeN/5TZmzQ==} - engines: {node: '>=12.13.0'} - dev: true - - /@applitools/snippets@2.4.19: - resolution: {integrity: sha512-cXIB5fuVGYFQzZK3tylgIRLh5dTWoCS2v2ZDGpSgdWuz0NH5LArGQpqPr8svqv3nEHCKMBHCMbwEF/CoblIblA==} - engines: {node: '>=12.13.0'} - dev: true - - /@applitools/socket@1.0.10: - resolution: {integrity: sha512-uQLwoTJPpKwdKUN+kY9L7AtHxvwkxPzHOvzrD7Gf3TEWOIESXtvwbWiAH+se3lut0hejk/qxsRGB1p5ljkrawA==} - engines: {node: '>=12.13.0'} - dependencies: - '@applitools/logger': 1.1.48 - '@applitools/utils': 1.3.32 - transitivePeerDependencies: - - supports-color - dev: true - - /@applitools/socket@1.0.8: - resolution: {integrity: sha512-TsuPeIByNsP18wTqrSwbTya+A2n0zjOPvt82A3BQUid/37R5K3wQv3UnKFIvOsPwPTuKEjGlv0YS0xSj5j+foA==} - engines: {node: '>=12.13.0'} - dependencies: - '@applitools/logger': 1.1.46 - '@applitools/utils': 1.3.30 - transitivePeerDependencies: - - supports-color - dev: true - - /@applitools/spec-driver-webdriver@1.0.15(webdriver@7.30.0): - resolution: {integrity: sha512-L6Oph0KE7qDNFip4kLW+XnuimdezjCkVeNNEjxgnu5E7C85ZI5h4KvzSnPbCp69lIbTTi8f6Df6Nq6c+KbPrPg==} + /@applitools/spec-driver-webdriver@1.0.33(webdriver@7.30.0): + resolution: {integrity: sha512-5QbP945AyS5CjvqQ9N0d8UfnVKDjOsEhennm++W3xNBaBAGIQia2yP5xT3DFuEBH2fZCxJE+Cd/X1X4IbqGdfg==} engines: {node: '>=12.13.0'} peerDependencies: webdriver: '>=7.27.0' dependencies: - '@applitools/driver': 1.11.35 - '@applitools/utils': 1.3.30 - proxy-agent: 5.0.0 + '@applitools/driver': 1.12.1 + '@applitools/utils': 1.3.37 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 webdriver: 7.30.0(typescript@5.1.3) transitivePeerDependencies: - supports-color dev: true - /@applitools/spec-driver-webdriver@1.0.24(webdriver@7.30.0): - resolution: {integrity: sha512-Lta6H7BjyWyOLzvvmfW/fZ8stXxG2QUxmaNU3krU9xiKyx598Yhz1pn847xTiP5UaUb8bdF2q/cyb+n7gu4VVQ==} - engines: {node: '>=12.13.0'} - peerDependencies: - webdriver: '>=7.27.0' - dependencies: - '@applitools/driver': 1.11.43 - '@applitools/utils': 1.3.32 - proxy-agent: 5.0.0 - webdriver: 7.30.0(typescript@5.1.3) - transitivePeerDependencies: - - supports-color - dev: true - - /@applitools/ufg-client@1.2.1: - resolution: {integrity: sha512-LpfxjNqOeee/XgvKzzqVN+ytDe4MsQU4C7lwTv2GUMQXfEHIdqEAoeqzDkywTdn7o1tOeDGEXg1JFORrlMSosA==} + /@applitools/ufg-client@1.2.18: + resolution: {integrity: sha512-2JzvCfJVtzyI4++jE6QDwm3nwIpuhaXVP1+BuqRnWFrwVFdwDwg24MkrF/WMX2gq6+x8tad7KXZ0rkQFhrQw5Q==} engines: {node: '>=12.13.0'} dependencies: '@applitools/jsdom': 1.0.4 - '@applitools/logger': 1.1.46 - '@applitools/req': 1.1.30 - '@applitools/utils': 1.3.30 - abort-controller: 3.0.0 - postcss-value-parser: 4.2.0 - throat: 6.0.1 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: true - - /@applitools/ufg-client@1.2.10: - resolution: {integrity: sha512-AeHMhmIThcL6M3B+AFquTOlTT8UkPhf/5zQBQH6wuJmdYKzkvPHISPK8yM+JK9zg1nJtiC0HRPoNKoVkb++LfA==} - engines: {node: '>=12.13.0'} - dependencies: - '@applitools/jsdom': 1.0.4 - '@applitools/logger': 1.1.48 - '@applitools/req': 1.1.35 - '@applitools/utils': 1.3.32 + '@applitools/logger': 2.0.2 + '@applitools/req': 1.3.0 + '@applitools/utils': 1.3.37 abort-controller: 3.0.0 css-tree: 2.3.1 throat: 6.0.1 transitivePeerDependencies: - bufferutil - - encoding - supports-color - utf-8-validate dev: true - /@applitools/utils@1.3.30: - resolution: {integrity: sha512-plOtxdUYLqMAYwevUTUFNYqSJIH0BQXeqlBFtKwdTdFGn6pK3cGBg5aYp40BxPodBKrQ6Ze325WnwhIVAI3pYg==} + /@applitools/utils@1.3.32: + resolution: {integrity: sha512-GSMSf1NNW6fEm0u1ANGrQY+ESs8UgDYAZnaVrgjpFJ8ONL8eVDXn3tiIDdhmj/HKthAHqiYOYdRESmpuru/zrQ==} engines: {node: '>=12.13.0'} dev: true - /@applitools/utils@1.3.32: - resolution: {integrity: sha512-GSMSf1NNW6fEm0u1ANGrQY+ESs8UgDYAZnaVrgjpFJ8ONL8eVDXn3tiIDdhmj/HKthAHqiYOYdRESmpuru/zrQ==} + /@applitools/utils@1.3.37: + resolution: {integrity: sha512-w9RNmLoVg3BwOYCFOykqmM6pPgpgq3QuI3mUMSK3VLnOmkaz2bLqozTY7xOLnW4NACg/1hdpbVbrb8mygHYoEA==} engines: {node: '>=12.13.0'} dev: true @@ -3872,11 +3650,6 @@ packages: defer-to-connect: 2.0.1 dev: true - /@tootallnate/once@1.1.2: - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} - dev: true - /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} @@ -4351,13 +4124,6 @@ packages: /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - /@types/node-fetch@2.6.2: - resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} - dependencies: - '@types/node': 18.16.0 - form-data: 3.0.1 - dev: true - /@types/node@14.18.29: resolution: {integrity: sha512-LhF+9fbIX4iPzhsRLpK5H7iPdvW8L4IwGciXQIOEcuF62+9nw/VQVsOViAOOGxY3OlOKGLFv0sWwJXdwQeTn6A==} dev: true @@ -5897,13 +5663,6 @@ packages: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /ast-types@0.13.4: - resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} - engines: {node: '>=4'} - dependencies: - tslib: 2.5.0 - dev: true - /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} @@ -7507,9 +7266,9 @@ packages: assert-plus: 1.0.0 dev: true - /data-uri-to-buffer@3.0.1: - resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} - engines: {node: '>= 6'} + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} dev: true /data-urls@3.0.2: @@ -7686,16 +7445,6 @@ packages: resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} dev: true - /degenerator@3.0.2: - resolution: {integrity: sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==} - engines: {node: '>= 6'} - dependencies: - ast-types: 0.13.4 - escodegen: 1.14.3 - esprima: 4.0.1 - vm2: 3.9.11 - dev: true - /delaunator@5.0.0: resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==} dependencies: @@ -8069,19 +7818,6 @@ packages: engines: {node: '>=12'} dev: true - /escodegen@1.14.3: - resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} - engines: {node: '>=4.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 4.3.0 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.6.1 - dev: true - /escodegen@1.3.3: resolution: {integrity: sha512-z9FWgKc48wjMlpzF5ymKS1AF8OIgnKLp9VyN7KbdtyrP/9lndwUFqCtMm+TAJmJf7KJFFYc4cFJfVTTGkKEwsA==} engines: {node: '>=0.10.0'} @@ -8676,6 +8412,14 @@ packages: pend: 1.2.0 dev: true + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: true + /fflate@0.7.4: resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} dev: true @@ -8698,11 +8442,6 @@ packages: resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} dev: false - /file-uri-to-path@2.0.0: - resolution: {integrity: sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==} - engines: {node: '>= 6'} - dev: true - /filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: @@ -8856,15 +8595,6 @@ packages: mime-types: 2.1.35 dev: true - /form-data@3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -8879,6 +8609,13 @@ packages: engines: {node: '>=0.4.x'} dev: true + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: true + /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -8915,15 +8652,6 @@ packages: universalify: 0.1.2 dev: true - /fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.10 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - /fs-extra@9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} @@ -8948,14 +8676,6 @@ packages: requiresBuild: true optional: true - /ftp@0.3.10: - resolution: {integrity: sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==} - engines: {node: '>=0.8.0'} - dependencies: - readable-stream: 1.1.14 - xregexp: 2.0.0 - dev: true - /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} @@ -9046,20 +8766,6 @@ packages: get-intrinsic: 1.2.0 dev: true - /get-uri@3.0.2: - resolution: {integrity: sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 1.1.2 - data-uri-to-buffer: 3.0.1 - debug: 4.3.4(supports-color@8.1.1) - file-uri-to-path: 2.0.0 - fs-extra: 8.1.0 - ftp: 0.3.10 - transitivePeerDependencies: - - supports-color - dev: true - /getos@3.2.1: resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} dependencies: @@ -9450,17 +9156,6 @@ packages: resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} dev: true - /http-proxy-agent@4.0.1: - resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - dev: true - /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -9680,14 +9375,6 @@ packages: engines: {node: '>= 0.10'} dev: true - /ip@1.1.8: - resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} - dev: true - - /ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} - dev: true - /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -9993,10 +9680,6 @@ packages: is-docker: 2.2.1 dev: true - /isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - dev: true - /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true @@ -11844,11 +11527,6 @@ packages: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} dev: true - /netmask@2.0.2: - resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} - engines: {node: '>= 0.4.0'} - dev: true - /nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: true @@ -11857,6 +11535,11 @@ packages: resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} dev: true + /node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: true + /node-fetch-native@1.1.0: resolution: {integrity: sha512-nl5goFCig93JZ9FIV8GHT9xpNqXbxQUzkOmKIMKmncsBH9jhg7qKex8hirpymkBFmNQ114chEEG5lS4wgK2I+Q==} dev: true @@ -11886,6 +11569,15 @@ packages: whatwg-url: 5.0.0 dev: true + /node-fetch@3.3.1: + resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: true + /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} @@ -12243,32 +11935,6 @@ packages: engines: {node: '>=6'} dev: true - /pac-proxy-agent@5.0.0: - resolution: {integrity: sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==} - engines: {node: '>= 8'} - dependencies: - '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) - get-uri: 3.0.2 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 - pac-resolver: 5.0.1 - raw-body: 2.5.1 - socks-proxy-agent: 5.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /pac-resolver@5.0.1: - resolution: {integrity: sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==} - engines: {node: '>= 8'} - dependencies: - degenerator: 3.0.2 - ip: 1.1.8 - netmask: 2.0.2 - dev: true - /package-hash@4.0.0: resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} engines: {node: '>=8'} @@ -12606,6 +12272,7 @@ packages: /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: false /postcss@8.4.23: resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} @@ -12717,30 +12384,10 @@ packages: ipaddr.js: 1.9.1 dev: true - /proxy-agent@5.0.0: - resolution: {integrity: sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==} - engines: {node: '>= 8'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 - lru-cache: 5.1.1 - pac-proxy-agent: 5.0.0 - proxy-from-env: 1.1.0 - socks-proxy-agent: 5.0.1 - transitivePeerDependencies: - - supports-color - dev: true - /proxy-from-env@1.0.0: resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} dev: true - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: true - /ps-tree@1.2.0: resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} engines: {node: '>= 0.10'} @@ -12888,15 +12535,6 @@ packages: type-fest: 1.4.0 dev: true - /readable-stream@1.1.14: - resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - dev: true - /readable-stream@2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} dependencies: @@ -13645,11 +13283,6 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true - /smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - dev: true - /sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} dependencies: @@ -13658,25 +13291,6 @@ packages: websocket-driver: 0.7.4 dev: true - /socks-proxy-agent@5.0.1: - resolution: {integrity: sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) - socks: 2.7.0 - transitivePeerDependencies: - - supports-color - dev: true - - /socks@2.7.0: - resolution: {integrity: sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} - dependencies: - ip: 2.0.0 - smart-buffer: 4.2.0 - dev: true - /sonic-boom@1.4.1: resolution: {integrity: sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==} dependencies: @@ -13910,6 +13524,7 @@ packages: /string-similarity@4.0.4: resolution: {integrity: sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dev: true /string-width@4.2.3: @@ -13959,10 +13574,6 @@ packages: es-abstract: 1.21.1 dev: true - /string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - dev: true - /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: @@ -15303,15 +14914,6 @@ packages: - terser dev: true - /vm2@3.9.11: - resolution: {integrity: sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - acorn: 8.8.2 - acorn-walk: 8.2.0 - dev: true - /vscode-json-languageservice@4.2.1: resolution: {integrity: sha512-xGmv9QIWs2H8obGbWg+sIPI/3/pFgj/5OWBhNzs00BkYQ9UaB2F6JJaGB/2/YOZJ3BvLXQTC4Q7muqU25QgAhA==} dependencies: @@ -15466,6 +15068,11 @@ packages: minimalistic-assert: 1.0.1 dev: true + /web-streams-polyfill@3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: true + /web-worker@1.2.0: resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==} dev: false @@ -16052,10 +15659,6 @@ packages: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true - /xregexp@2.0.0: - resolution: {integrity: sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==} - dev: true - /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} dev: true From 299b423e6b94a12b1ebb54b0e66171547b83a005 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 17 Jun 2023 16:52:03 +0530 Subject: [PATCH 245/255] chore: add excludes --- .vite/build.ts | 2 +- vite.config.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.vite/build.ts b/.vite/build.ts index 01cbb7393..85c9b7fa0 100644 --- a/.vite/build.ts +++ b/.vite/build.ts @@ -124,7 +124,7 @@ export const getBuildConfig = ({ minify, core, watch, entryName }: BuildOptions) // @ts-expect-error According to the type definitions, rollup plugins are incompatible with vite typescript({ compilerOptions: { declaration: false } }), istanbul({ - exclude: ['node_modules', 'test/'], + exclude: ['node_modules', 'test/', '__mocks__'], extension: ['.js', '.ts'], requireEnv: true, forceBuildInstrument: coverage, diff --git a/vite.config.ts b/vite.config.ts index 5b658f4b8..bff9a30c4 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -20,6 +20,7 @@ export default defineConfig({ provider: 'istanbul', reporter: ['text', 'json', 'html', 'lcov'], reportsDirectory: './coverage/vitest', + exclude: ['**/node_modules/**', '**/tests/**', '**/__mocks__/**'], }, }, build: { From cc7f555160009898863e190d4c8cc109453a93b5 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 17 Jun 2023 17:11:05 +0530 Subject: [PATCH 246/255] chore: Add coverage scripts --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 1570c2bd7..4a050ce8f 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,6 @@ "build:watch": "pnpm build:vite --watch", "build": "pnpm run -r clean && pnpm build:types && pnpm build:vite", "dev": "concurrently \"pnpm build:vite --watch\" \"ts-node-esm .vite/server.ts\"", - "dev:coverage": "VITE_COVERAGE=true pnpm dev", "release": "pnpm build", "lint": "eslint --cache --cache-strategy content --ignore-path .gitignore . && pnpm lint:jison && prettier --cache --check .", "lint:fix": "eslint --cache --cache-strategy content --fix --ignore-path .gitignore . && prettier --write . && ts-node-esm scripts/fixCSpell.ts", @@ -32,14 +31,15 @@ "cypress:open": "cypress open", "e2e": "start-server-and-test dev http://localhost:9000/ cypress", "e2e:coverage": "VITE_COVERAGE=true pnpm e2e", + "coverage:merge": "ts-node-esm scripts/coverage.ts", + "coverage": "pnpm test:coverage && pnpm e2e:coverage && pnpm coverage:merge", "ci": "vitest run", "test": "pnpm lint && vitest run", "test:watch": "vitest --watch", "test:coverage": "vitest --coverage", "prepublishOnly": "pnpm build && pnpm test", "prepare": "husky install && pnpm build", - "pre-commit": "lint-staged", - "merge": "ts-node-esm scripts/coverage.ts" + "pre-commit": "lint-staged" }, "repository": { "type": "git", From 1e84668270384eb073c9d9b52393b7df72148749 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 17 Jun 2023 17:34:19 +0530 Subject: [PATCH 247/255] Add codecov to E2E --- .github/workflows/e2e.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index f877ca265..b3641eb63 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -41,7 +41,13 @@ jobs: parallel: ${{ secrets.CYPRESS_RECORD_KEY != '' }} env: CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} - + - uses: codecov/codecov-action@v3 + with: + files: ./coverage/cypress/coverage-final.json + flags: e2e + name: mermaid-codecov + fail_ci_if_error: true + verbose: true - name: Upload Artifacts uses: actions/upload-artifact@v3 if: ${{ failure() && steps.cypress.conclusion == 'failure' }} From 8d244062e2b2d3b9e5c04609db5d1f237e4759b2 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 17 Jun 2023 17:40:06 +0530 Subject: [PATCH 248/255] Add codecov to unit tests --- .github/workflows/test.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f09d047fc..60db549b8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,7 +31,7 @@ jobs: - name: Run Unit Tests run: | - pnpm run ci --coverage + pnpm test:coverage - name: Run ganttDb tests using California timezone env: @@ -39,8 +39,15 @@ jobs: # since some days have 25 hours instead of 24. TZ: America/Los_Angeles run: | - pnpm exec vitest run ./packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts + pnpm exec vitest run ./packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts --coverage + - uses: codecov/codecov-action@v3 + with: + files: ./coverage/vitest/lcov.info + flags: unit + name: mermaid-codecov + fail_ci_if_error: true + verbose: true # Coveralls is throwing 500. Disabled for now. # - name: Upload Coverage to Coveralls # uses: coverallsapp/github-action@v2 From 2ad32f92088ba905d5628a32cda7cb76c11405ea Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 17 Jun 2023 17:44:27 +0530 Subject: [PATCH 249/255] Fix path name --- .github/workflows/e2e.yml | 2 +- package.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index b3641eb63..0116d11bb 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -43,7 +43,7 @@ jobs: CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} - uses: codecov/codecov-action@v3 with: - files: ./coverage/cypress/coverage-final.json + files: coverage/cypress/lcov.info flags: e2e name: mermaid-codecov fail_ci_if_error: true diff --git a/package.json b/package.json index 4a050ce8f..962bd1e2d 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "build:watch": "pnpm build:vite --watch", "build": "pnpm run -r clean && pnpm build:types && pnpm build:vite", "dev": "concurrently \"pnpm build:vite --watch\" \"ts-node-esm .vite/server.ts\"", + "dev:coverage": "VITE_COVERAGE=true pnpm dev", "release": "pnpm build", "lint": "eslint --cache --cache-strategy content --ignore-path .gitignore . && pnpm lint:jison && prettier --cache --check .", "lint:fix": "eslint --cache --cache-strategy content --fix --ignore-path .gitignore . && prettier --write . && ts-node-esm scripts/fixCSpell.ts", From 0f45124f84d1a4b575a36ec90d4227fd8c14f09b Mon Sep 17 00:00:00 2001 From: Yokozuna59 Date: Sat, 17 Jun 2023 15:14:54 +0300 Subject: [PATCH 250/255] set normal mode for vitest coverage --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4a050ce8f..0644a60cc 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "e2e": "start-server-and-test dev http://localhost:9000/ cypress", "e2e:coverage": "VITE_COVERAGE=true pnpm e2e", "coverage:merge": "ts-node-esm scripts/coverage.ts", - "coverage": "pnpm test:coverage && pnpm e2e:coverage && pnpm coverage:merge", + "coverage": "pnpm test:coverage --run && pnpm e2e:coverage && pnpm coverage:merge", "ci": "vitest run", "test": "pnpm lint && vitest run", "test:watch": "vitest --watch", From f8540e94680ff556e81e5b3ee31fc88b33454efa Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 17 Jun 2023 17:54:13 +0530 Subject: [PATCH 251/255] Upload E2E --- .github/workflows/e2e.yml | 6 ++++-- .github/workflows/test.yml | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 0116d11bb..3cb56f194 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -33,7 +33,7 @@ jobs: # Otherwise (e.g. if running from fork), we run on a single container only if: ${{ ( env.CYPRESS_RECORD_KEY != '' ) || ( matrix.containers == 1 ) }} with: - start: pnpm run dev + start: pnpm run dev:coverage wait-on: 'http://localhost:9000' # Disable recording if we don't have an API key # e.g. if this action was run from a fork @@ -41,7 +41,9 @@ jobs: parallel: ${{ secrets.CYPRESS_RECORD_KEY != '' }} env: CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} - - uses: codecov/codecov-action@v3 + VITEST_COVERAGE: true + - name: Upload Coverage to Codecov + uses: codecov/codecov-action@v3 with: files: coverage/cypress/lcov.info flags: e2e diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 60db549b8..6bae6b71f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -41,7 +41,8 @@ jobs: run: | pnpm exec vitest run ./packages/mermaid/src/diagrams/gantt/ganttDb.spec.ts --coverage - - uses: codecov/codecov-action@v3 + - name: Upload Coverage to Codecov + uses: codecov/codecov-action@v3 with: files: ./coverage/vitest/lcov.info flags: unit From 152b2958371485bf4a143ee6a13dce1facab3913 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 17 Jun 2023 18:07:49 +0530 Subject: [PATCH 252/255] Add codecov.yaml --- codecov.yaml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 codecov.yaml diff --git a/codecov.yaml b/codecov.yaml new file mode 100644 index 000000000..b268d6680 --- /dev/null +++ b/codecov.yaml @@ -0,0 +1,6 @@ +comment: + layout: 'reach, diff, flags, files' + behavior: default + require_changes: false # if true: only post the comment if coverage changes + require_base: no # [yes :: must have a base report to post] + require_head: yes # [yes :: must have a head report to post] From 7ee971eb9e984423fbba6567b76f9fc28ada14bb Mon Sep 17 00:00:00 2001 From: Yokozuna59 Date: Sat, 17 Jun 2023 17:29:43 +0300 Subject: [PATCH 253/255] change REAMDME.md coverage from coveralls into codecov --- README.md | 4 ++-- README.zh-CN.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 941e1fd18..f1df0966b 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Generate diagrams from markdown-like text. [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![npm minified gzipped bundle size](https://img.shields.io/bundlephobia/minzip/mermaid)](https://bundlephobia.com/package/mermaid) -[![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) +[![Coverage Status](https://codecov.io/github/mermaid-js/mermaid/branch/develop/graph/badge.svg)](https://app.codecov.io/github/mermaid-js/mermaid/tree/develop) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM Downloads](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) @@ -410,7 +410,7 @@ _Unfortunately you can not have a cake and eat it at the same time which in this ## Reporting vulnerabilities -To report a vulnerability, please e-mail security@mermaid.live with a description of the issue, the steps you took to create the issue, affected versions, and if known, mitigations for the issue. +To report a vulnerability, please e-mail with a description of the issue, the steps you took to create the issue, affected versions, and if known, mitigations for the issue. ## Appreciation diff --git a/README.zh-CN.md b/README.zh-CN.md index 2653ac72b..9af34998d 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -27,7 +27,7 @@ Mermaid [![NPM](https://img.shields.io/npm/v/mermaid)](https://www.npmjs.com/package/mermaid) [![Build CI Status](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml/badge.svg)](https://github.com/mermaid-js/mermaid/actions/workflows/build.yml) [![npm minified gzipped bundle size](https://img.shields.io/bundlephobia/minzip/mermaid)](https://bundlephobia.com/package/mermaid) -[![Coverage Status](https://coveralls.io/repos/github/mermaid-js/mermaid/badge.svg?branch=master)](https://coveralls.io/github/mermaid-js/mermaid?branch=master) +[![Coverage Status](https://codecov.io/github/mermaid-js/mermaid/branch/develop/graph/badge.svg)](https://app.codecov.io/github/mermaid-js/mermaid/tree/develop) [![CDN Status](https://img.shields.io/jsdelivr/npm/hm/mermaid)](https://www.jsdelivr.com/package/npm/mermaid) [![NPM Downloads](https://img.shields.io/npm/dm/mermaid)](https://www.npmjs.com/package/mermaid) [![Join our Slack!](https://img.shields.io/static/v1?message=join%20chat&color=9cf&logo=slack&label=slack)](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) From 3340240b9f69e66f7ed61ee077ccbb2e394efed4 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 17 Jun 2023 23:23:00 +0530 Subject: [PATCH 254/255] chore: Run codecov based on E2E test status --- .github/workflows/e2e.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 3cb56f194..64637c5fb 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -44,6 +44,7 @@ jobs: VITEST_COVERAGE: true - name: Upload Coverage to Codecov uses: codecov/codecov-action@v3 + if: steps.cypress.conclusion == 'success' with: files: coverage/cypress/lcov.info flags: e2e From 2ee37752c82fd452176db532e937dd35daecceb2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 17 Jun 2023 21:30:41 +0000 Subject: [PATCH 255/255] chore(deps): update all minor dependencies --- package.json | 2 +- packages/mermaid/src/docs/package.json | 10 +- pnpm-lock.yaml | 899 +++++++++++++------------ 3 files changed, 478 insertions(+), 433 deletions(-) diff --git a/package.json b/package.json index e9cefa893..ac197712c 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "coveralls": "^3.1.1", "cypress": "^12.10.0", "cypress-image-snapshot": "^4.0.1", - "esbuild": "^0.17.18", + "esbuild": "^0.18.0", "eslint": "^8.39.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-cypress": "^2.13.2", diff --git a/packages/mermaid/src/docs/package.json b/packages/mermaid/src/docs/package.json index aeb3d24f3..820d3da4a 100644 --- a/packages/mermaid/src/docs/package.json +++ b/packages/mermaid/src/docs/package.json @@ -20,16 +20,16 @@ }, "devDependencies": { "@iconify-json/carbon": "^1.1.16", - "@unocss/reset": "^0.52.0", - "@vite-pwa/vitepress": "^0.0.5", + "@unocss/reset": "^0.53.0", + "@vite-pwa/vitepress": "^0.2.0", "@vitejs/plugin-vue": "^4.2.1", "fast-glob": "^3.2.12", "https-localhost": "^4.7.1", "pathe": "^1.1.0", - "unocss": "^0.52.0", - "unplugin-vue-components": "^0.24.1", + "unocss": "^0.53.0", + "unplugin-vue-components": "^0.25.0", "vite": "^4.3.3", - "vite-plugin-pwa": "^0.15.0", + "vite-plugin-pwa": "^0.16.0", "vitepress": "1.0.0-beta.1", "workbox-window": "^6.5.4" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b0c1596c6..da40c7d36 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,8 +87,8 @@ importers: specifier: ^4.0.1 version: 4.0.1(cypress@12.10.0)(jest@29.5.0) esbuild: - specifier: ^0.17.18 - version: 0.17.18 + specifier: ^0.18.0 + version: 0.18.0 eslint: specifier: ^8.39.0 version: 8.39.0 @@ -415,11 +415,11 @@ importers: specifier: ^1.1.16 version: 1.1.16 '@unocss/reset': - specifier: ^0.52.0 - version: 0.52.0 + specifier: ^0.53.0 + version: 0.53.0 '@vite-pwa/vitepress': - specifier: ^0.0.5 - version: 0.0.5(vite-plugin-pwa@0.15.0) + specifier: ^0.2.0 + version: 0.2.0(vite-plugin-pwa@0.16.0) '@vitejs/plugin-vue': specifier: ^4.2.1 version: 4.2.1(vite@4.3.3)(vue@3.2.47) @@ -433,17 +433,17 @@ importers: specifier: ^1.1.0 version: 1.1.0 unocss: - specifier: ^0.52.0 - version: 0.52.0(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3) + specifier: ^0.53.0 + version: 0.53.0(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3) unplugin-vue-components: - specifier: ^0.24.1 - version: 0.24.1(rollup@2.79.1)(vue@3.2.47) + specifier: ^0.25.0 + version: 0.25.0(rollup@2.79.1)(vue@3.2.47) vite: specifier: ^4.3.3 version: 4.3.3(@types/node@18.16.0) vite-plugin-pwa: - specifier: ^0.15.0 - version: 0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) + specifier: ^0.16.0 + version: 0.16.0(vite@4.3.3)(workbox-build@7.0.0)(workbox-window@6.5.4) vitepress: specifier: 1.0.0-beta.1 version: 1.0.0-beta.1(@algolia/client-search@4.14.2)(@types/node@18.16.0) @@ -451,58 +451,6 @@ importers: specifier: ^6.5.4 version: 6.5.4 - packages/mermaid/src/vitepress: - dependencies: - '@vueuse/core': - specifier: ^10.1.0 - version: 10.1.0(vue@3.2.47) - jiti: - specifier: ^1.18.2 - version: 1.18.2 - vue: - specifier: ^3.2.47 - version: 3.2.47 - devDependencies: - '@iconify-json/carbon': - specifier: ^1.1.16 - version: 1.1.16 - '@unocss/reset': - specifier: ^0.52.0 - version: 0.52.0 - '@vite-pwa/vitepress': - specifier: ^0.0.5 - version: 0.0.5(vite-plugin-pwa@0.15.0) - '@vitejs/plugin-vue': - specifier: ^4.2.1 - version: 4.2.1(vite@4.3.3)(vue@3.2.47) - fast-glob: - specifier: ^3.2.12 - version: 3.2.12 - https-localhost: - specifier: ^4.7.1 - version: 4.7.1 - pathe: - specifier: ^1.1.0 - version: 1.1.0 - unocss: - specifier: ^0.52.0 - version: 0.52.0(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3) - unplugin-vue-components: - specifier: ^0.24.1 - version: 0.24.1(rollup@2.79.1)(vue@3.2.47) - vite: - specifier: ^4.3.3 - version: 4.3.3(@types/node@18.16.0) - vite-plugin-pwa: - specifier: ^0.15.0 - version: 0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) - vitepress: - specifier: 1.0.0-beta.2 - version: 1.0.0-beta.2(@algolia/client-search@4.14.2)(@types/node@18.16.0)(search-insights@2.6.0) - workbox-window: - specifier: ^6.5.4 - version: 6.5.4 - tests/webpack: dependencies: '@mermaid-js/mermaid-example-diagram': @@ -514,7 +462,7 @@ importers: devDependencies: webpack: specifier: ^5.74.0 - version: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + version: 5.75.0(esbuild@0.18.0)(webpack-cli@4.10.0) webpack-cli: specifier: ^4.10.0 version: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) @@ -530,29 +478,6 @@ packages: '@algolia/autocomplete-shared': 1.8.2 dev: true - /@algolia/autocomplete-core@1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.6.0): - resolution: {integrity: sha512-hkG80c9kx9ClVAEcUJbTd2ziVC713x9Bji9Ty4XJfKXlxlsx3iXsoNhAwfeR4ulzIUg7OE5gez0UU1zVDdG7kg==} - dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.6.0) - '@algolia/autocomplete-shared': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - search-insights - dev: true - - /@algolia/autocomplete-plugin-algolia-insights@1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.6.0): - resolution: {integrity: sha512-2LVsf4W66hVHQ3Ua/8k15oPlxjELCztbAkQm/hP42Sw+GLkHAdY1vaVRYziaWq64+Oljfg6FKkZHCdgXH+CGIA==} - peerDependencies: - search-insights: '>= 1 < 3' - dependencies: - '@algolia/autocomplete-shared': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) - search-insights: 2.6.0 - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - dev: true - /@algolia/autocomplete-preset-algolia@1.8.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): resolution: {integrity: sha512-J0oTx4me6ZM9kIKPuL3lyU3aB8DEvpVvR6xWmHVROx5rOYJGQcZsdG4ozxwcOyiiu3qxMkIbzntnV1S1VWD8yA==} peerDependencies: @@ -564,31 +489,10 @@ packages: algoliasearch: 4.14.2 dev: true - /@algolia/autocomplete-preset-algolia@1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): - resolution: {integrity: sha512-pqgIm2GNqtCT59Y1ICctIPrYTi34+wNPiNWEclD/yDzp5uDUUsyGe5XrUjCNyQRTKonAlmYxoaEHOn8FWgmBHA==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - dependencies: - '@algolia/autocomplete-shared': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) - '@algolia/client-search': 4.14.2 - algoliasearch: 4.14.2 - dev: true - /@algolia/autocomplete-shared@1.8.2: resolution: {integrity: sha512-b6Z/X4MczChMcfhk6kfRmBzPgjoPzuS9KGR4AFsiLulLNRAAqhP+xZTKtMnZGhLuc61I20d5WqlId02AZvcO6g==} dev: true - /@algolia/autocomplete-shared@1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): - resolution: {integrity: sha512-XxX6YDn+7LG+SmdpXEOnj7fc3TjiVpQ0CbGhjLwrd2tYr6LVY2D4Iiu/iuYJ4shvVDWWnpwArSk0uIWC/8OPUA==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - dependencies: - '@algolia/client-search': 4.14.2 - algoliasearch: 4.14.2 - dev: true - /@algolia/cache-browser-local-storage@4.14.2: resolution: {integrity: sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA==} dependencies: @@ -699,12 +603,8 @@ packages: find-up: 5.0.0 dev: true - /@antfu/utils@0.5.2: - resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==} - dev: true - - /@antfu/utils@0.7.2: - resolution: {integrity: sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==} + /@antfu/utils@0.7.4: + resolution: {integrity: sha512-qe8Nmh9rYI/HIspLSTwtbMFPj6dISG6+dJnOguTlPNXtCvS2uezdxscVBb7/3DrmNbQK49TDqpkSQ1chbRGdpQ==} dev: true /@apideck/better-ajv-errors@0.3.6(ajv@8.11.0): @@ -2779,7 +2679,7 @@ packages: bluebird: 3.7.1 debug: 4.3.4(supports-color@8.1.1) lodash: 4.17.21 - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(esbuild@0.18.0)(webpack-cli@4.10.0) transitivePeerDependencies: - supports-color dev: true @@ -2806,10 +2706,6 @@ packages: resolution: {integrity: sha512-NaXVp3I8LdmJ54fn038KHgG7HmbIzZlKS2FkVf6mKcW5bYMJovkx4947joQyZk5yubxOZ+ddHSh79y39Aevufg==} dev: true - /@docsearch/css@3.5.0: - resolution: {integrity: sha512-Ob5FQLubplcBNihAVtriR59FRBeP8u69F6mu4L4yIr60KfsPc10bOV0DoPErJw0zF9IBN2cNLW9qdmt8zWPxyg==} - dev: true - /@docsearch/js@3.3.5(@algolia/client-search@4.14.2): resolution: {integrity: sha512-nZi074OCryZnzva2LNcbQkwBJIND6cvuFI4s1FIe6Ygf6n9g6B/IYUULXNx05rpoCZ+KEoEt3taROpsHBliuSw==} dependencies: @@ -2822,19 +2718,6 @@ packages: - react-dom dev: true - /@docsearch/js@3.5.0(@algolia/client-search@4.14.2)(search-insights@2.6.0): - resolution: {integrity: sha512-WqB+z+zVKSXDkGq028nClT9RvMzfFlemZuIulX5ZwWkdUtl4k7M9cmZA/c6kuZf7FG24XQsMHWuBjeUo9hLRyA==} - dependencies: - '@docsearch/react': 3.5.0(@algolia/client-search@4.14.2)(search-insights@2.6.0) - preact: 10.11.0 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/react' - - react - - react-dom - - search-insights - dev: true - /@docsearch/react@3.3.5(@algolia/client-search@4.14.2): resolution: {integrity: sha512-Zuxf4z5PZ9eIQkVCNu76v1H+KAztKItNn3rLzZa7kpBS+++TgNARITnZeUS7C1DKoAhJZFr6T/H+Lvc6h/iiYg==} peerDependencies: @@ -2857,29 +2740,6 @@ packages: - '@algolia/client-search' dev: true - /@docsearch/react@3.5.0(@algolia/client-search@4.14.2)(search-insights@2.6.0): - resolution: {integrity: sha512-3IG8mmSMzSHNGy2S1VuPyYU9tFCxFpj5Ov8SYwsSHM4yMvFsaO9oFxXocA5lSenliIELhuOuS5+BdxHa/Qlf2A==} - peerDependencies: - '@types/react': '>= 16.8.0 < 19.0.0' - react: '>= 16.8.0 < 19.0.0' - react-dom: '>= 16.8.0 < 19.0.0' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - react-dom: - optional: true - dependencies: - '@algolia/autocomplete-core': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.6.0) - '@algolia/autocomplete-preset-algolia': 1.9.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) - '@docsearch/css': 3.5.0 - algoliasearch: 4.14.2 - transitivePeerDependencies: - - '@algolia/client-search' - - search-insights - dev: true - /@es-joy/jsdoccomment@0.37.1: resolution: {integrity: sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==} engines: {node: ^14 || ^16 || ^17 || ^18 || ^19 || ^20} @@ -2898,6 +2758,15 @@ packages: dev: true optional: true + /@esbuild/android-arm64@0.18.0: + resolution: {integrity: sha512-nAwRCs5+jxi3gBMVkOqmRvsITB/UtfpvkbMwAwJUIbp66NnPbV2KGCFnjNn7IEqabJQXfBLe/QLdjCGpHU+yEw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.17.18: resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==} engines: {node: '>=12'} @@ -2907,6 +2776,15 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.18.0: + resolution: {integrity: sha512-+uLHSiWK3qOeyDYCf/nuvIgCnQsYjXWNa3TlGYLW1pPG7OYMawllU+VyBgHQPjF2aIUVFpfrvz5aAfxGk/0qNg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.17.18: resolution: {integrity: sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==} engines: {node: '>=12'} @@ -2916,6 +2794,15 @@ packages: dev: true optional: true + /@esbuild/android-x64@0.18.0: + resolution: {integrity: sha512-TiOJmHQ8bXCGlYLpBd3Qy7N8dxi4n6q+nOmTzPr5Hb/bUr+PKuP4e5lWaOlpkaKc1Q9wsFt+sHfQpFCrM7SMow==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.17.18: resolution: {integrity: sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==} engines: {node: '>=12'} @@ -2925,6 +2812,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64@0.18.0: + resolution: {integrity: sha512-5GsFovtGyjMIXJrcCzmI1hX3TneCrmFncFIlo0WrRvWcVU6H094P854ZaP8qoLgevXhggO2dhlEGYY0Zv6/S9Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.17.18: resolution: {integrity: sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==} engines: {node: '>=12'} @@ -2934,6 +2830,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64@0.18.0: + resolution: {integrity: sha512-4K/QCksQ8F58rvC1D62Xi4q4E7YWpiyc3zy2H/n1W7y0hjQpOBBxciLn0qycMskP/m/I5h9HNbRlu1aK821sHg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.17.18: resolution: {integrity: sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==} engines: {node: '>=12'} @@ -2943,6 +2848,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64@0.18.0: + resolution: {integrity: sha512-DMazN0UGzipD0Fi1O9pRX0xfp+JC3gSnFWxTWq88Dr/odWhZzm8Jqy44LN2veYeipb1fBMxhoEp7eCr902SWqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.17.18: resolution: {integrity: sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==} engines: {node: '>=12'} @@ -2952,6 +2866,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64@0.18.0: + resolution: {integrity: sha512-GdkJAB3ZBiYnie9iFO9v/CM4ko0dm5SYkUs97lBKNLHw9mo4H9IXwGNKtUztisEsmUP0IWfEi4YTWOJF3DIO4w==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.17.18: resolution: {integrity: sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==} engines: {node: '>=12'} @@ -2961,6 +2884,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64@0.18.0: + resolution: {integrity: sha512-Mb3yCN9PXA6G5qf84UF0IEuXP22eyNlquF17Zs2F1vVBM0CtyWLYosC5JaxBxfK6EzWwB2IkPBIjMeK3ek+ItA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.17.18: resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==} engines: {node: '>=12'} @@ -2970,6 +2902,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm@0.18.0: + resolution: {integrity: sha512-A3Ue/oZdb43znNpeY71FrAjZF20MtnBKCGb1vXLIVg5qg8rRM1gRgn6X2ixYwATiw5dE04JnP+aV4OBf8c5ZvQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.17.18: resolution: {integrity: sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==} engines: {node: '>=12'} @@ -2979,6 +2920,15 @@ packages: dev: true optional: true + /@esbuild/linux-ia32@0.18.0: + resolution: {integrity: sha512-WNDXgJdfDhN6ZxHU7HgR2BRDVx9iGN8SpmebUUGdENg4MZJndGcaQuf2kCJjMwoK0+es1g61TeJzAMxfgDcmcA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.17.18: resolution: {integrity: sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==} engines: {node: '>=12'} @@ -2988,6 +2938,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.18.0: + resolution: {integrity: sha512-PBr8Lf+L8amvheTGFVNK/0qionszkOKMq2WyfFlVz8D41v0+uSth6fYYHwtASkMk4xf+oh0vW8NYuav3/3RHuQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.17.18: resolution: {integrity: sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==} engines: {node: '>=12'} @@ -2997,6 +2956,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el@0.18.0: + resolution: {integrity: sha512-Lg4ygah5bwfDDCOMFsBJjSVbD1UzNwWt4f7DhpaSIFOrJqoECX1VTByKw3iSDAVRlwl1cljlfy7wlysrRZcdiQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.17.18: resolution: {integrity: sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==} engines: {node: '>=12'} @@ -3006,6 +2974,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64@0.18.0: + resolution: {integrity: sha512-obz/firdtou244DIjHzdKmJChwGseqA3tWGa6xPMfuq54Ca4Pp1a4ANMrqy2IZ67rfpRHcJTlb2h3rSfW6tvAA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.17.18: resolution: {integrity: sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==} engines: {node: '>=12'} @@ -3015,6 +2992,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64@0.18.0: + resolution: {integrity: sha512-UkuBdxQsxi39wWrRLMOkJl//82/hpQw79TD+OBLw3IBYyVQ4Wfvpe56RfEGK/j439sIm79ccnD5RUNQceHvZdQ==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.17.18: resolution: {integrity: sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==} engines: {node: '>=12'} @@ -3024,6 +3010,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x@0.18.0: + resolution: {integrity: sha512-MgyuC30oYB465hyAqsb3EH6Y4zTeqqgixRAOpsDNMCelyDiW9ZDPXvMPfBgCZGJlDZFGKDm2I9ou8E3VI+v7pg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.17.18: resolution: {integrity: sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==} engines: {node: '>=12'} @@ -3033,6 +3028,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64@0.18.0: + resolution: {integrity: sha512-oLLKU3F4pKWAsNmfi7Rd4qkj0qvg1S923ZjlcISA2IMgHsODA9xzwerqWayI5nOhLGgKXviDofn9exTeA4EUQQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.17.18: resolution: {integrity: sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==} engines: {node: '>=12'} @@ -3042,6 +3046,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64@0.18.0: + resolution: {integrity: sha512-BEfJrZsZ/gMtpS2vC+2YoFGxmfLKiYQvj8lZrBfjKzQrwyMpH53CzQJj9ypOx9ldjM/MVxf9i9wi/rS4BWV7WA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.17.18: resolution: {integrity: sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==} engines: {node: '>=12'} @@ -3051,6 +3064,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64@0.18.0: + resolution: {integrity: sha512-eDolHeG3REnEIgwl7Lw2S0znUMY4PFVtCAzLKqdRO0HD+iPKJR8n2MEJJyhPdUjcobo8SEQ2AG6gtYfft9VFHg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.17.18: resolution: {integrity: sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==} engines: {node: '>=12'} @@ -3060,6 +3082,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64@0.18.0: + resolution: {integrity: sha512-kl7vONem2wmRQke015rSrknmc6TYXKVNs2quiVTdvkSufscrjegpNqKyP7v6EHqXtvkzrB92ySjpfzazKG627g==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.17.18: resolution: {integrity: sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==} engines: {node: '>=12'} @@ -3069,6 +3100,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64@0.18.0: + resolution: {integrity: sha512-WohArFQ3HStBu9MAsx3JUk2wfC2v8QoadnMoNfx3Y26ac54tD/wQhPzw4QOzQbSqOFqzIMLKWbxindTsko+9OA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.17.18: resolution: {integrity: sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==} engines: {node: '>=12'} @@ -3078,6 +3118,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32@0.18.0: + resolution: {integrity: sha512-SdnpSOxpeoewYCurmfLVepLuhOAphWkGTxWHifFjp37DaUHwF1fpGzyxhZoXMt5MKGuAO5aE3c5668YYtno+9Q==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.17.18: resolution: {integrity: sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==} engines: {node: '>=12'} @@ -3087,6 +3136,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.18.0: + resolution: {integrity: sha512-WJxImv0Pehpbo+pgg7Xrn88/b6ZzSweNHTw/2LW95JjeQUIS6ToJeQmjAdud9H3yiHJmhLOmEAOvUdNLhptD0w==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.39.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3178,7 +3236,7 @@ packages: resolution: {integrity: sha512-6MvDI+I6QMvXn5rK9KQGdpEE4mmLTcuQdLZEiX5N+uZB+vc4Yw9K1OtnOgkl8mp4d9X0UrILREyZgF1NUwUt+Q==} dependencies: '@antfu/install-pkg': 0.1.1 - '@antfu/utils': 0.7.2 + '@antfu/utils': 0.7.4 '@iconify/types': 2.0.0 debug: 4.3.4(supports-color@8.1.1) kolorist: 1.7.0 @@ -4507,187 +4565,187 @@ packages: eslint-visitor-keys: 3.4.0 dev: true - /@unocss/astro@0.52.0(rollup@2.79.1)(vite@4.3.3): - resolution: {integrity: sha512-vgEOFj+q4DY1F0kwqydbaNQjZSSYBqCV8eiE5ZpRfhQ+k0S71e7yudgYW5Np2sYBbih7v57GKnuQDwno3M6yDQ==} + /@unocss/astro@0.53.0(rollup@2.79.1)(vite@4.3.3): + resolution: {integrity: sha512-8bR7ysIMZEOpcjd/cVmogcABSFDYPjUqMnbflv44p1A2/deemo9CIkpRARoq/96NQuzWJsKhKodcQodExZcqiA==} dependencies: - '@unocss/core': 0.52.0 - '@unocss/reset': 0.52.0 - '@unocss/vite': 0.52.0(rollup@2.79.1)(vite@4.3.3) + '@unocss/core': 0.53.0 + '@unocss/reset': 0.53.0 + '@unocss/vite': 0.53.0(rollup@2.79.1)(vite@4.3.3) transitivePeerDependencies: - rollup - vite dev: true - /@unocss/cli@0.52.0(rollup@2.79.1): - resolution: {integrity: sha512-IVj8IDT2M1w7mux2m7HY4/rwmfumYxaEIkpDkHGPgZcUVzXaOenNvbun1Q4oDZ2oFKytTJqGNSieavugfmlrjA==} + /@unocss/cli@0.53.0(rollup@2.79.1): + resolution: {integrity: sha512-9WNBHy8m8tMqwcp7mUhebRUBvHQfbx01CMe5cAFLmUYtJULM+8IjJxqERkaAZyyoOXf1TNO2v1dFAmCwhMRCLQ==} engines: {node: '>=14'} hasBin: true dependencies: '@ampproject/remapping': 2.2.1 '@rollup/pluginutils': 5.0.2(rollup@2.79.1) - '@unocss/config': 0.52.0 - '@unocss/core': 0.52.0 - '@unocss/preset-uno': 0.52.0 + '@unocss/config': 0.53.0 + '@unocss/core': 0.53.0 + '@unocss/preset-uno': 0.53.0 cac: 6.7.14 chokidar: 3.5.3 colorette: 2.0.20 consola: 3.1.0 fast-glob: 3.2.12 magic-string: 0.30.0 - pathe: 1.1.0 + pathe: 1.1.1 perfect-debounce: 1.0.0 transitivePeerDependencies: - rollup dev: true - /@unocss/config@0.52.0: - resolution: {integrity: sha512-RbkFTAoPXPa0oXB/MuS+d0FOF4jXQHA7lm9D4zmKyrlTyPGBlzO/o4aPF9Z9tJUVjG0SRaSU3ZBQ2ZqTZK9P3Q==} + /@unocss/config@0.53.0: + resolution: {integrity: sha512-D9A3uFT6jSj/EgMOCpQQ+dPadLQDiEIb0BHa7BYW7/3STijnPMcFjPVjzABj9Wn7RQjka/MZ2/AvfH9eYMTR8g==} engines: {node: '>=14'} dependencies: - '@unocss/core': 0.52.0 - unconfig: 0.3.7 + '@unocss/core': 0.53.0 + unconfig: 0.3.9 dev: true - /@unocss/core@0.52.0: - resolution: {integrity: sha512-MGyG1LpiVtyrHmWmXiDRnf7j+JaJua14K058FGBAhNSLaG37dG6xIfwPuVDBOqEI8EgICmNTJs1T/ImQJYWxtw==} + /@unocss/core@0.53.0: + resolution: {integrity: sha512-MB6hqSN2wjmm3NNYspNqzxvMv7LnyLqz0uCWr15elRqnjsuq01w7DZ1iPS9ckA2M3YjQIRTXR9YPtDbSqY0jcA==} dev: true - /@unocss/extractor-arbitrary-variants@0.52.0: - resolution: {integrity: sha512-wJ7a9NWVywHwjWMeB8wN9PHl0fhwOcvAgmhDkyY7A9wXSazaecSMLbKrcnQe7q5bOFGvn5jyxYkk78XZqLWgyg==} + /@unocss/extractor-arbitrary-variants@0.53.0: + resolution: {integrity: sha512-f1v2E5PherulTAdrsXXb5Knaz4Viu2dM71WalNYhb+j9QqwGngagLrMzRzeIRLOEI2c0D0l7HBQtew+QFWsXcg==} dependencies: - '@unocss/core': 0.52.0 + '@unocss/core': 0.53.0 dev: true - /@unocss/inspector@0.52.0: - resolution: {integrity: sha512-oGMLht4hEBypglrLeNQWy8JBTvRyX3fdrtYChZpwjYTVsVC1SdF1m0ZjaPt7YQybZ+D4DG7bVCHYqxLgAFq5jw==} + /@unocss/inspector@0.53.0: + resolution: {integrity: sha512-TX8O39tXuEStUs516YBiCr2BS68Z9oHXnMZspxBxMma1X47bW2Hz+x9kWkhFzqmHWBjFPJob1PjjkbfeE4TbOQ==} dependencies: gzip-size: 6.0.0 sirv: 2.0.3 dev: true - /@unocss/postcss@0.52.0(postcss@8.4.23): - resolution: {integrity: sha512-1KzpQlcMrLV0ZSbP+pNYuvXg/1+8c2HNKHBBEbzlsXI7G+f4IJPsxtYXE3N2HVIkEjxumcMrxV8dqXhcBLQShA==} + /@unocss/postcss@0.53.0(postcss@8.4.23): + resolution: {integrity: sha512-q+5aDvkwP1eEhDmdz32WrwsGEEcJdQLy3apiU/df+CaL71HATvUfMZJVZbXZlFqoed703c+cGLHOhRHMPDk/dw==} engines: {node: '>=14'} peerDependencies: postcss: ^8.4.21 dependencies: - '@unocss/config': 0.52.0 - '@unocss/core': 0.52.0 + '@unocss/config': 0.53.0 + '@unocss/core': 0.53.0 css-tree: 2.3.1 fast-glob: 3.2.12 magic-string: 0.30.0 postcss: 8.4.23 dev: true - /@unocss/preset-attributify@0.52.0: - resolution: {integrity: sha512-5szz/NpviigXGCW2a1TnOhac+3akdx+zAWgHWaLJRpDzq8WuJyaNfN1603sEAyseUoTRjxq+P5fzxCrcvhPEGg==} + /@unocss/preset-attributify@0.53.0: + resolution: {integrity: sha512-RqvSbuECeMBVVt2rmNIozznLBkfzkfe7vOIx3arytPBG/nggDnC1GB/xTxCGAiU7UcEXw03laWtjwXHmJHt8Gw==} dependencies: - '@unocss/core': 0.52.0 + '@unocss/core': 0.53.0 dev: true - /@unocss/preset-icons@0.52.0: - resolution: {integrity: sha512-GSDQIBXkK6rfJHT3SvbJExLoAddj93fC5DHS4eE3a6fne/NdQhFvbkhAZ5iPr4UZmMoJQOyAkkhuWD3PMSBjqw==} + /@unocss/preset-icons@0.53.0: + resolution: {integrity: sha512-0Et3dtrmBRVPZ5pGiITrwb9O01M88s0juOVSM7L4z0Uf0RNXuPCGwh2N5TRX2IIS7LAi4k0tAXFUORlkUiC2Lg==} dependencies: '@iconify/utils': 2.1.5 - '@unocss/core': 0.52.0 + '@unocss/core': 0.53.0 ofetch: 1.0.1 transitivePeerDependencies: - supports-color dev: true - /@unocss/preset-mini@0.52.0: - resolution: {integrity: sha512-P4mQimuZ+yLba2FN3+hKA7anBvjypmEgNof/LdPhTydv138zlhDVly7KlYADISt7QPNIVaGD3U34HLKtgyfBmQ==} + /@unocss/preset-mini@0.53.0: + resolution: {integrity: sha512-hGj9ltZUJIuPT+9bO+R0OlsQOSlV7rjQRkSSMnUaDsuKfzhahsyc7QglNHZI4wuTI/9iSJKGUD4nvTe559+8Hg==} dependencies: - '@unocss/core': 0.52.0 - '@unocss/extractor-arbitrary-variants': 0.52.0 + '@unocss/core': 0.53.0 + '@unocss/extractor-arbitrary-variants': 0.53.0 dev: true - /@unocss/preset-tagify@0.52.0: - resolution: {integrity: sha512-J4VOZG1ooBdMS2qGqqz9C7g49WpTrB3wnnq7Ph/td2/faQpRIZm1HYgXtWVsROlGvIaZWYOSOas9aX/WLZ6I2A==} + /@unocss/preset-tagify@0.53.0: + resolution: {integrity: sha512-S3e1d2jJvjEbGBE0jPEht/Hmp+245SxjWcrDdO7HmKVL2+0vwIQQg6P2P9aUWqt+/kZQ6iBStSzGm9RyKRKMhw==} dependencies: - '@unocss/core': 0.52.0 + '@unocss/core': 0.53.0 dev: true - /@unocss/preset-typography@0.52.0: - resolution: {integrity: sha512-lyMDe/vz9C18V//sieKVjIrkaiJwrY3PMPQtA8Nh233Ki+jnD6ymrEmDXKEHQeNorA2HsEqpmhS+B+g0waLjwA==} + /@unocss/preset-typography@0.53.0: + resolution: {integrity: sha512-VFTNV8O9KIH/JX9Pn43Vv6JrCTljG9NYnuvZpKpEp95uYDcZQAISao04RWEzbAzqB31x8N9Aga1Bq2TSOg3uTA==} dependencies: - '@unocss/core': 0.52.0 - '@unocss/preset-mini': 0.52.0 + '@unocss/core': 0.53.0 + '@unocss/preset-mini': 0.53.0 dev: true - /@unocss/preset-uno@0.52.0: - resolution: {integrity: sha512-0pZH0gUJ4hug6B0xV03VNi74GjW49UlnSjwK3xBL6la7WzrgQ+E/mD6CVKxB9Qa0Sfc9qZg8IvVuI97/msdkOA==} + /@unocss/preset-uno@0.53.0: + resolution: {integrity: sha512-f50D2nFnX7nXvxtueUfCRbSCrWNJTFm4qKg0J9gzqyOJGWJoNcN2Ig9aL0P47W1TmIjYA5SpGlvg6U5qIfkNtQ==} dependencies: - '@unocss/core': 0.52.0 - '@unocss/preset-mini': 0.52.0 - '@unocss/preset-wind': 0.52.0 + '@unocss/core': 0.53.0 + '@unocss/preset-mini': 0.53.0 + '@unocss/preset-wind': 0.53.0 dev: true - /@unocss/preset-web-fonts@0.52.0: - resolution: {integrity: sha512-JbHCKwt5KHpntE7CJMYcOaZ5c/KWIIU+96pTTRTOVM9c9ssozwS575BzWH+pD43fJ864W566gtu5R9mR03j2mg==} + /@unocss/preset-web-fonts@0.53.0: + resolution: {integrity: sha512-CAZW/PSp9+VBvzE/T56v2Yb8Nk3xF9XJaQrDydF9cAPyz/gVOZBbKQSDS8OqyAqKiXbnn+NYCwEqTG8v/YOMyw==} dependencies: - '@unocss/core': 0.52.0 + '@unocss/core': 0.53.0 ofetch: 1.0.1 dev: true - /@unocss/preset-wind@0.52.0: - resolution: {integrity: sha512-y+x+MnXYwcKvPepjK9rbCwp3yiOiXv9XOO5T9YAHdzwrpfAOTjXOAhmW3XAFz2sODoy2xliLYQXsxthyzpf/7w==} + /@unocss/preset-wind@0.53.0: + resolution: {integrity: sha512-vb9tV3Cze+w8OZyOd/Xi6Zn8F8+EV53AZIqCrQvMD/6ZeqQJ9gjFx/Q69H/bu009wnPleQpce6RKJcNqMzif8g==} dependencies: - '@unocss/core': 0.52.0 - '@unocss/preset-mini': 0.52.0 + '@unocss/core': 0.53.0 + '@unocss/preset-mini': 0.53.0 dev: true - /@unocss/reset@0.52.0: - resolution: {integrity: sha512-hRdgzpxWkDriRneLCv8cRNWBVNJ9FQVLY6jLk7C3MMaab0FH9JufdNwRw/yiqtEEhnnT2GF8IfN3HY69T01tNw==} + /@unocss/reset@0.53.0: + resolution: {integrity: sha512-4XJkEtVxUGYp+WX2aRTrZLNp6MEwulBvhhpkAjwfkS+wVdo9lMma0O93TCqJaFeYx7lU8W92APB4n918rz9scA==} dev: true - /@unocss/scope@0.52.0: - resolution: {integrity: sha512-pGTBHdSWGzrcz/QnK4Dd8GUo0a1W3QbRNrIy8L0dgsI9QEBxSiAppiMMnnJZrQwUGDGy5DjkaCksOEArA28fCg==} + /@unocss/scope@0.53.0: + resolution: {integrity: sha512-JAk3jJeFTmmafVI8Oy/TkAs1/NXpR9Vy5IEIMO6gyAmYw0VjiL9dkYDNZAD9hwdj/oRIUgJMcX96Huhy+YDl/w==} dev: true - /@unocss/transformer-attributify-jsx-babel@0.52.0: - resolution: {integrity: sha512-DWhIFMGpyr/H9A3nmwj0kvilx9FYtNmEnSh5k5hPnOvfgp5TDjgt5LDy63ee3JaOsSsAhiDWKwQxkrF60wcspQ==} + /@unocss/transformer-attributify-jsx-babel@0.53.0: + resolution: {integrity: sha512-++DTBEkFS2/1VE+TBPEmK0NAaCa/KP7dkJ7uldrQ+c5MpDp/IcCkOt8vPEL/6qKhUbTYXb/hruqq6wv27ZDrSg==} dependencies: - '@unocss/core': 0.52.0 + '@unocss/core': 0.53.0 dev: true - /@unocss/transformer-attributify-jsx@0.52.0: - resolution: {integrity: sha512-cPGIsp1GsSBBm/3ST1TM1VlWhcUf1vX9EgROpzSopRNHDp3zWFIM8OtcAuywzGpgm3wdKi0412WrNdf0ncDVtQ==} + /@unocss/transformer-attributify-jsx@0.53.0: + resolution: {integrity: sha512-4QJEmoj2of7nZM8afNsMk+NWX3K89j1sHx+EKw5+s1r/Pg4/PxeDgF4PnRWvPnjvRpDaRRTZGRxTrBEimup8vg==} dependencies: - '@unocss/core': 0.52.0 + '@unocss/core': 0.53.0 dev: true - /@unocss/transformer-compile-class@0.52.0: - resolution: {integrity: sha512-dk4Ory57Pj7QvrvPdtUsPln5RX8qgFp8ZtFDQvjHNpARz7cr5RBL7Fw3yKrcne6HQi+Bee/i715yrFHut3OXgg==} + /@unocss/transformer-compile-class@0.53.0: + resolution: {integrity: sha512-PTPysxBAimEWspMU3gMo+053M5RURnLT88Wp0y8f4F8oEMg7fV9Tn5f/bftvG+iI7dPyl4m/OsislxfucoESYw==} dependencies: - '@unocss/core': 0.52.0 + '@unocss/core': 0.53.0 dev: true - /@unocss/transformer-directives@0.52.0: - resolution: {integrity: sha512-Epi5Lt1rMl8RgR2InlRw7ddNcUXekiZl+qEEmb2rAHPnROWMNbJB5gCxk9YzczD+8vIgmFUqacMEqEzOUZdpSQ==} + /@unocss/transformer-directives@0.53.0: + resolution: {integrity: sha512-EIrrVphm0Bv+Ng2w1Qj5f0JFkfbN0b1/1fJ9hwgb5S2ewE3Xvwk59/h321D/GGDraQCUqqyZGgcG368xVh3pQA==} dependencies: - '@unocss/core': 0.52.0 + '@unocss/core': 0.53.0 css-tree: 2.3.1 dev: true - /@unocss/transformer-variant-group@0.52.0: - resolution: {integrity: sha512-r+StO8aU+O22mIa1ALuGUxiFvGZf9MLIqriOG7qbjiUOgq6shzHKUsHyxRyTG7c597eTxcs6lwr9XKkLxuEVBw==} + /@unocss/transformer-variant-group@0.53.0: + resolution: {integrity: sha512-dwfjifgoa2VuO3LCl2ayRw3M5T6EfDKt16s9KbIRUcHqMJFnoHACAk8e4YsHGBvly0utbQHxFuBygOar3IfxEg==} dependencies: - '@unocss/core': 0.52.0 + '@unocss/core': 0.53.0 dev: true - /@unocss/vite@0.52.0(rollup@2.79.1)(vite@4.3.3): - resolution: {integrity: sha512-Ip2Jyu7dywqEsy3EacnItE+VXB77R72mQ9oA6TyrZpov5ZKoS327kqQSzHS/lYXzZ2yomFq9EsqbKQWIEInH9Q==} + /@unocss/vite@0.53.0(rollup@2.79.1)(vite@4.3.3): + resolution: {integrity: sha512-JoZhKVNruRjfySMVg/zNJbLEn/NTXj29Wf0SN4++xnGKrSapkPzYC46psL5bm5N5v4SHdpepTCoonC3FWCY6Fw==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 dependencies: '@ampproject/remapping': 2.2.1 '@rollup/pluginutils': 5.0.2(rollup@2.79.1) - '@unocss/config': 0.52.0 - '@unocss/core': 0.52.0 - '@unocss/inspector': 0.52.0 - '@unocss/scope': 0.52.0 - '@unocss/transformer-directives': 0.52.0 + '@unocss/config': 0.53.0 + '@unocss/core': 0.53.0 + '@unocss/inspector': 0.53.0 + '@unocss/scope': 0.53.0 + '@unocss/transformer-directives': 0.53.0 chokidar: 3.5.3 fast-glob: 3.2.12 magic-string: 0.30.0 @@ -4696,12 +4754,12 @@ packages: - rollup dev: true - /@vite-pwa/vitepress@0.0.5(vite-plugin-pwa@0.15.0): - resolution: {integrity: sha512-B6xy9wxi9fen+/AnRkY2+XCrbhqh2b/TsVTka6qFQ3zJ8zHSoEUHUucYT3KHMcY5I124G0ZmPKNW+UF9Jx1k4w==} + /@vite-pwa/vitepress@0.2.0(vite-plugin-pwa@0.16.0): + resolution: {integrity: sha512-dVQVaP6NB9woCFe4UASUqRp7uwBQJOVXlJlqK4krqXcbb3NuXIXIWOnU7HLpJnHqZj5U/81gKtLN6gs5gJBwiQ==} peerDependencies: - vite-plugin-pwa: ^0.14.0 + vite-plugin-pwa: '>=0.16.3 <1' dependencies: - vite-plugin-pwa: 0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4) + vite-plugin-pwa: 0.16.0(vite@4.3.3)(workbox-build@7.0.0)(workbox-window@6.5.4) dev: true /@vitejs/plugin-vue@4.2.1(vite@4.3.3)(vue@3.2.47): @@ -4726,17 +4784,6 @@ packages: vue: 3.3.4 dev: true - /@vitejs/plugin-vue@4.2.3(vite@4.3.9)(vue@3.3.4): - resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.0.0 - vue: ^3.2.25 - dependencies: - vite: 4.3.9(@types/node@18.16.0) - vue: 3.3.4 - dev: true - /@vitest/coverage-istanbul@0.32.2(vitest@0.32.2): resolution: {integrity: sha512-B5VSvfzwTsDt9HjFmQ4sZ2tQHivmHJpAoG/BJwNNQeBtSCSdY1L6tfCjwZLo7ryOmZEDA3ck/DAmHCUZqa+MWA==} peerDependencies: @@ -4767,14 +4814,14 @@ packages: '@vitest/utils': 0.32.2 concordance: 5.0.4 p-limit: 4.0.0 - pathe: 1.1.0 + pathe: 1.1.1 dev: true /@vitest/snapshot@0.32.2: resolution: {integrity: sha512-JwhpeH/PPc7GJX38vEfCy9LtRzf9F4er7i4OsAJyV7sjPwjj+AIR8cUgpMTWK4S3TiamzopcTyLsZDMuldoi5A==} dependencies: magic-string: 0.30.0 - pathe: 1.1.0 + pathe: 1.1.1 pretty-format: 27.5.1 dev: true @@ -5232,7 +5279,7 @@ packages: webpack: 4.x.x || 5.x.x webpack-cli: 4.x.x dependencies: - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(esbuild@0.18.0)(webpack-cli@4.10.0) webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) dev: true @@ -5746,7 +5793,7 @@ packages: '@babel/core': 7.12.3 find-cache-dir: 3.3.2 schema-utils: 4.0.0 - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(esbuild@0.18.0)(webpack-cli@4.10.0) dev: true /babel-plugin-istanbul@6.1.1: @@ -7789,6 +7836,36 @@ packages: '@esbuild/win32-x64': 0.17.18 dev: true + /esbuild@0.18.0: + resolution: {integrity: sha512-/2sQaWHNX2jkglLu85EjmEAR2ANpKOa1kp2rAE3wjKcuYjEHFlB+D60tn6W9BRgHiAQEKYtl4hEygKWothfDEA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.0 + '@esbuild/android-arm64': 0.18.0 + '@esbuild/android-x64': 0.18.0 + '@esbuild/darwin-arm64': 0.18.0 + '@esbuild/darwin-x64': 0.18.0 + '@esbuild/freebsd-arm64': 0.18.0 + '@esbuild/freebsd-x64': 0.18.0 + '@esbuild/linux-arm': 0.18.0 + '@esbuild/linux-arm64': 0.18.0 + '@esbuild/linux-ia32': 0.18.0 + '@esbuild/linux-loong64': 0.18.0 + '@esbuild/linux-mips64el': 0.18.0 + '@esbuild/linux-ppc64': 0.18.0 + '@esbuild/linux-riscv64': 0.18.0 + '@esbuild/linux-s390x': 0.18.0 + '@esbuild/linux-x64': 0.18.0 + '@esbuild/netbsd-x64': 0.18.0 + '@esbuild/openbsd-x64': 0.18.0 + '@esbuild/sunos-x64': 0.18.0 + '@esbuild/win32-arm64': 0.18.0 + '@esbuild/win32-ia32': 0.18.0 + '@esbuild/win32-x64': 0.18.0 + dev: true + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -10658,7 +10735,7 @@ packages: optional: true dependencies: cli-truncate: 2.1.0 - colorette: 2.0.19 + colorette: 2.0.20 log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.3.0 @@ -11405,15 +11482,15 @@ packages: brace-expansion: 2.0.1 dev: true - /minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} + /minimatch@9.0.0: + resolution: {integrity: sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 dev: true - /minimatch@9.0.0: - resolution: {integrity: sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==} + /minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 @@ -11460,7 +11537,7 @@ packages: resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==} dependencies: acorn: 8.8.2 - pathe: 1.1.0 + pathe: 1.1.1 pkg-types: 1.0.2 ufo: 1.1.1 dev: true @@ -12062,6 +12139,10 @@ packages: resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} dev: true + /pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + dev: true + /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true @@ -12176,7 +12257,7 @@ packages: dependencies: jsonc-parser: 3.2.0 mlly: 1.2.0 - pathe: 1.1.0 + pathe: 1.1.1 dev: true /plist@3.0.6: @@ -13020,11 +13101,6 @@ packages: ajv-keywords: 5.1.0(ajv@8.11.0) dev: true - /search-insights@2.6.0: - resolution: {integrity: sha512-vU2/fJ+h/Mkm/DJOe+EaM5cafJv/1rRTZpGJTuFPf/Q5LjzgMDsqPdSaZsAe+GAWHHsfsu+rQSAn6c8IGtBEVw==} - engines: {node: '>=8.16.0'} - dev: true - /secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} dev: true @@ -13801,7 +13877,7 @@ packages: iterm2-version: 4.2.0 dev: true - /terser-webpack-plugin@5.3.6(esbuild@0.17.18)(webpack@5.75.0): + /terser-webpack-plugin@5.3.6(esbuild@0.18.0)(webpack@5.75.0): resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -13818,12 +13894,12 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.17 - esbuild: 0.17.18 + esbuild: 0.18.0 jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.0 terser: 5.15.1 - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(esbuild@0.18.0)(webpack-cli@4.10.0) dev: true /terser@5.15.1: @@ -14255,10 +14331,10 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /unconfig@0.3.7: - resolution: {integrity: sha512-1589b7oGa8ILBYpta7TndM5mLHLzHUqBfhszeZxuUBrjO/RoQ52VGVWsS3w0C0GLNxO9RPmqkf6BmIvBApaRdA==} + /unconfig@0.3.9: + resolution: {integrity: sha512-8yhetFd48M641mxrkWA+C/lZU4N0rCOdlo3dFsyFPnBHBjMJfjT/3eAZBRT2RxCRqeBMAKBVgikejdS6yeBjMw==} dependencies: - '@antfu/utils': 0.5.2 + '@antfu/utils': 0.7.4 defu: 6.1.2 jiti: 1.18.2 dev: true @@ -14358,35 +14434,35 @@ packages: engines: {node: '>= 10.0.0'} dev: true - /unocss@0.52.0(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3): - resolution: {integrity: sha512-MholrJpVLH95SwCiQzXJiimkpUXqI1HWZCZBh4jklpfSGo3eZeo62f1BpXZThmLDPLZoBsf0qqItcvB803X37A==} + /unocss@0.53.0(postcss@8.4.23)(rollup@2.79.1)(vite@4.3.3): + resolution: {integrity: sha512-kY4h5ERiDYlSnL2X+hbDfh+uaF7QNouy7j51GOTUr3Q0aaWehaNd05b15SjHrab559dEC0mYfrSEdh/DnCK1cw==} engines: {node: '>=14'} peerDependencies: - '@unocss/webpack': 0.52.0 + '@unocss/webpack': 0.53.0 peerDependenciesMeta: '@unocss/webpack': optional: true dependencies: - '@unocss/astro': 0.52.0(rollup@2.79.1)(vite@4.3.3) - '@unocss/cli': 0.52.0(rollup@2.79.1) - '@unocss/core': 0.52.0 - '@unocss/extractor-arbitrary-variants': 0.52.0 - '@unocss/postcss': 0.52.0(postcss@8.4.23) - '@unocss/preset-attributify': 0.52.0 - '@unocss/preset-icons': 0.52.0 - '@unocss/preset-mini': 0.52.0 - '@unocss/preset-tagify': 0.52.0 - '@unocss/preset-typography': 0.52.0 - '@unocss/preset-uno': 0.52.0 - '@unocss/preset-web-fonts': 0.52.0 - '@unocss/preset-wind': 0.52.0 - '@unocss/reset': 0.52.0 - '@unocss/transformer-attributify-jsx': 0.52.0 - '@unocss/transformer-attributify-jsx-babel': 0.52.0 - '@unocss/transformer-compile-class': 0.52.0 - '@unocss/transformer-directives': 0.52.0 - '@unocss/transformer-variant-group': 0.52.0 - '@unocss/vite': 0.52.0(rollup@2.79.1)(vite@4.3.3) + '@unocss/astro': 0.53.0(rollup@2.79.1)(vite@4.3.3) + '@unocss/cli': 0.53.0(rollup@2.79.1) + '@unocss/core': 0.53.0 + '@unocss/extractor-arbitrary-variants': 0.53.0 + '@unocss/postcss': 0.53.0(postcss@8.4.23) + '@unocss/preset-attributify': 0.53.0 + '@unocss/preset-icons': 0.53.0 + '@unocss/preset-mini': 0.53.0 + '@unocss/preset-tagify': 0.53.0 + '@unocss/preset-typography': 0.53.0 + '@unocss/preset-uno': 0.53.0 + '@unocss/preset-web-fonts': 0.53.0 + '@unocss/preset-wind': 0.53.0 + '@unocss/reset': 0.53.0 + '@unocss/transformer-attributify-jsx': 0.53.0 + '@unocss/transformer-attributify-jsx-babel': 0.53.0 + '@unocss/transformer-compile-class': 0.53.0 + '@unocss/transformer-directives': 0.53.0 + '@unocss/transformer-variant-group': 0.53.0 + '@unocss/vite': 0.53.0(rollup@2.79.1)(vite@4.3.3) transitivePeerDependencies: - postcss - rollup @@ -14399,8 +14475,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /unplugin-vue-components@0.24.1(rollup@2.79.1)(vue@3.2.47): - resolution: {integrity: sha512-T3A8HkZoIE1Cja95xNqolwza0yD5IVlgZZ1PVAGvVCx8xthmjsv38xWRCtHtwl+rvZyL9uif42SRkDGw9aCfMA==} + /unplugin-vue-components@0.25.0(rollup@2.79.1)(vue@3.2.47): + resolution: {integrity: sha512-HxrQ4GMSS1RwVww2av3a42cABo/v5AmTRN9iARv6e/xwkrfTyHhLh84kFwXxKkXK61vxDHxaryn694mQmkiVBg==} engines: {node: '>=14'} peerDependencies: '@babel/parser': ^7.15.8 @@ -14412,24 +14488,24 @@ packages: '@nuxt/kit': optional: true dependencies: - '@antfu/utils': 0.7.2 + '@antfu/utils': 0.7.4 '@rollup/pluginutils': 5.0.2(rollup@2.79.1) chokidar: 3.5.3 debug: 4.3.4(supports-color@8.1.1) fast-glob: 3.2.12 local-pkg: 0.4.3 magic-string: 0.30.0 - minimatch: 7.4.6 + minimatch: 9.0.1 resolve: 1.22.2 - unplugin: 1.1.0 + unplugin: 1.3.1 vue: 3.2.47 transitivePeerDependencies: - rollup - supports-color dev: true - /unplugin@1.1.0: - resolution: {integrity: sha512-I8obQ8Rs/hnkxokRV6g8JKOQFgYNnTd9DL58vcSt5IJ9AkK8wbrtsnzD5hi4BJlvcY536JzfEXj9L6h7j559/A==} + /unplugin@1.3.1: + resolution: {integrity: sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==} dependencies: acorn: 8.8.2 chokidar: 3.5.3 @@ -14573,7 +14649,7 @@ packages: cac: 6.7.14 debug: 4.3.4(supports-color@8.1.1) mlly: 1.2.0 - pathe: 1.1.0 + pathe: 1.1.1 picocolors: 1.0.0 vite: 4.3.9(@types/node@18.16.0) transitivePeerDependencies: @@ -14600,18 +14676,19 @@ packages: - supports-color dev: true - /vite-plugin-pwa@0.15.0(vite@4.3.3)(workbox-build@6.5.4)(workbox-window@6.5.4): - resolution: {integrity: sha512-gpmx3BeubsRIXRBkjPToOTJbo8fknNmZFQs24i0TPZyaNVa0n27YHDo0Y72amnO70WvHKGE3e1fn8SYUP7e8SA==} + /vite-plugin-pwa@0.16.0(vite@4.3.3)(workbox-build@7.0.0)(workbox-window@6.5.4): + resolution: {integrity: sha512-E+AQRzHxqNU4ZhEeR8X37/foZB+ezJEhXauE/mcf1UITY6k2Pa1dtlFl+BQu57fTdiVlWim5S0Qy44Yap93Dkg==} + engines: {node: '>=16.0.0'} peerDependencies: vite: ^3.1.0 || ^4.0.0 - workbox-build: ^6.5.4 - workbox-window: ^6.5.4 + workbox-build: ^7.0.0 + workbox-window: ^7.0.0 dependencies: debug: 4.3.4(supports-color@8.1.1) fast-glob: 3.2.12 pretty-bytes: 6.1.0 vite: 4.3.3(@types/node@18.16.0) - workbox-build: 6.5.4 + workbox-build: 7.0.0 workbox-window: 6.5.4 transitivePeerDependencies: - supports-color @@ -14804,49 +14881,6 @@ packages: - universal-cookie dev: true - /vitepress@1.0.0-beta.2(@algolia/client-search@4.14.2)(@types/node@18.16.0)(search-insights@2.6.0): - resolution: {integrity: sha512-DBXYjtYbm3W1IPPJ2TiCaK/XK+o/2XmL2+jslOGKm+txcbmG0kbeB+vadC5tCUZA9NdA+9Ywj3M4548c7t/SDg==} - hasBin: true - dependencies: - '@docsearch/css': 3.5.0 - '@docsearch/js': 3.5.0(@algolia/client-search@4.14.2)(search-insights@2.6.0) - '@vitejs/plugin-vue': 4.2.3(vite@4.3.9)(vue@3.3.4) - '@vue/devtools-api': 6.5.0 - '@vueuse/core': 10.1.2(vue@3.3.4) - '@vueuse/integrations': 10.1.2(focus-trap@7.4.3)(vue@3.3.4) - body-scroll-lock: 4.0.0-beta.0 - focus-trap: 7.4.3 - mark.js: 8.11.1 - minisearch: 6.1.0 - shiki: 0.14.2 - vite: 4.3.9(@types/node@18.16.0) - vue: 3.3.4 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/node' - - '@types/react' - - '@vue/composition-api' - - async-validator - - axios - - change-case - - drauu - - fuse.js - - idb-keyval - - jwt-decode - - less - - nprogress - - qrcode - - react - - react-dom - - sass - - search-insights - - sortablejs - - stylus - - sugarss - - terser - - universal-cookie - dev: true - /vitest@0.32.2(@vitest/ui@0.32.2)(jsdom@21.1.1): resolution: {integrity: sha512-hU8GNNuQfwuQmqTLfiKcqEhZY72Zxb7nnN07koCUNmntNxbKQnVbeIS6sqUgR3eXSlbOpit8+/gr1KpqoMgWCQ==} engines: {node: '>=v14.18.0'} @@ -15138,7 +15172,7 @@ packages: import-local: 3.1.0 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(esbuild@0.18.0)(webpack-cli@4.10.0) webpack-dev-server: 4.11.1(webpack-cli@4.10.0)(webpack@5.75.0) webpack-merge: 5.8.0 dev: true @@ -15154,7 +15188,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.0.0 - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(esbuild@0.18.0)(webpack-cli@4.10.0) dev: true /webpack-dev-server@4.11.1(webpack-cli@4.10.0)(webpack@5.75.0): @@ -15195,7 +15229,7 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(esbuild@0.18.0)(webpack-cli@4.10.0) webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) webpack-dev-middleware: 5.3.3(webpack@5.75.0) ws: 8.9.0 @@ -15223,7 +15257,7 @@ packages: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} dev: true - /webpack@5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0): + /webpack@5.75.0(esbuild@0.18.0)(webpack-cli@4.10.0): resolution: {integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==} engines: {node: '>=10.13.0'} hasBin: true @@ -15254,7 +15288,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.1.1 tapable: 2.2.1 - terser-webpack-plugin: 5.3.6(esbuild@0.17.18)(webpack@5.75.0) + terser-webpack-plugin: 5.3.6(esbuild@0.18.0)(webpack@5.75.0) watchpack: 2.4.0 webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) webpack-sources: 3.2.3 @@ -15404,22 +15438,22 @@ packages: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true - /workbox-background-sync@6.5.4: - resolution: {integrity: sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==} + /workbox-background-sync@7.0.0: + resolution: {integrity: sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA==} dependencies: idb: 7.1.1 - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true - /workbox-broadcast-update@6.5.4: - resolution: {integrity: sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==} + /workbox-broadcast-update@7.0.0: + resolution: {integrity: sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==} dependencies: - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true - /workbox-build@6.5.4: - resolution: {integrity: sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==} - engines: {node: '>=10.0.0'} + /workbox-build@7.0.0: + resolution: {integrity: sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==} + engines: {node: '>=16.0.0'} dependencies: '@apideck/better-ajv-errors': 0.3.6(ajv@8.11.0) '@babel/core': 7.12.3 @@ -15443,104 +15477,108 @@ packages: strip-comments: 2.0.1 tempy: 0.6.0 upath: 1.2.0 - workbox-background-sync: 6.5.4 - workbox-broadcast-update: 6.5.4 - workbox-cacheable-response: 6.5.4 - workbox-core: 6.5.4 - workbox-expiration: 6.5.4 - workbox-google-analytics: 6.5.4 - workbox-navigation-preload: 6.5.4 - workbox-precaching: 6.5.4 - workbox-range-requests: 6.5.4 - workbox-recipes: 6.5.4 - workbox-routing: 6.5.4 - workbox-strategies: 6.5.4 - workbox-streams: 6.5.4 - workbox-sw: 6.5.4 - workbox-window: 6.5.4 + workbox-background-sync: 7.0.0 + workbox-broadcast-update: 7.0.0 + workbox-cacheable-response: 7.0.0 + workbox-core: 7.0.0 + workbox-expiration: 7.0.0 + workbox-google-analytics: 7.0.0 + workbox-navigation-preload: 7.0.0 + workbox-precaching: 7.0.0 + workbox-range-requests: 7.0.0 + workbox-recipes: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 + workbox-streams: 7.0.0 + workbox-sw: 7.0.0 + workbox-window: 7.0.0 transitivePeerDependencies: - '@types/babel__core' - supports-color dev: true - /workbox-cacheable-response@6.5.4: - resolution: {integrity: sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==} + /workbox-cacheable-response@7.0.0: + resolution: {integrity: sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==} dependencies: - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true /workbox-core@6.5.4: resolution: {integrity: sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==} dev: true - /workbox-expiration@6.5.4: - resolution: {integrity: sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==} + /workbox-core@7.0.0: + resolution: {integrity: sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==} + dev: true + + /workbox-expiration@7.0.0: + resolution: {integrity: sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==} dependencies: idb: 7.1.1 - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true - /workbox-google-analytics@6.5.4: - resolution: {integrity: sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==} + /workbox-google-analytics@7.0.0: + resolution: {integrity: sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==} dependencies: - workbox-background-sync: 6.5.4 - workbox-core: 6.5.4 - workbox-routing: 6.5.4 - workbox-strategies: 6.5.4 + workbox-background-sync: 7.0.0 + workbox-core: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 dev: true - /workbox-navigation-preload@6.5.4: - resolution: {integrity: sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==} + /workbox-navigation-preload@7.0.0: + resolution: {integrity: sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==} dependencies: - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true - /workbox-precaching@6.5.4: - resolution: {integrity: sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==} + /workbox-precaching@7.0.0: + resolution: {integrity: sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==} dependencies: - workbox-core: 6.5.4 - workbox-routing: 6.5.4 - workbox-strategies: 6.5.4 + workbox-core: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 dev: true - /workbox-range-requests@6.5.4: - resolution: {integrity: sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==} + /workbox-range-requests@7.0.0: + resolution: {integrity: sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==} dependencies: - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true - /workbox-recipes@6.5.4: - resolution: {integrity: sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==} + /workbox-recipes@7.0.0: + resolution: {integrity: sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==} dependencies: - workbox-cacheable-response: 6.5.4 - workbox-core: 6.5.4 - workbox-expiration: 6.5.4 - workbox-precaching: 6.5.4 - workbox-routing: 6.5.4 - workbox-strategies: 6.5.4 + workbox-cacheable-response: 7.0.0 + workbox-core: 7.0.0 + workbox-expiration: 7.0.0 + workbox-precaching: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 dev: true - /workbox-routing@6.5.4: - resolution: {integrity: sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==} + /workbox-routing@7.0.0: + resolution: {integrity: sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==} dependencies: - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true - /workbox-strategies@6.5.4: - resolution: {integrity: sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==} + /workbox-strategies@7.0.0: + resolution: {integrity: sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==} dependencies: - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true - /workbox-streams@6.5.4: - resolution: {integrity: sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==} + /workbox-streams@7.0.0: + resolution: {integrity: sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==} dependencies: - workbox-core: 6.5.4 - workbox-routing: 6.5.4 + workbox-core: 7.0.0 + workbox-routing: 7.0.0 dev: true - /workbox-sw@6.5.4: - resolution: {integrity: sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==} + /workbox-sw@7.0.0: + resolution: {integrity: sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==} dev: true /workbox-window@6.5.4: @@ -15550,6 +15588,13 @@ packages: workbox-core: 6.5.4 dev: true + /workbox-window@7.0.0: + resolution: {integrity: sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==} + dependencies: + '@types/trusted-types': 2.0.2 + workbox-core: 7.0.0 + dev: true + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'}