diff --git a/docusaurus/.gitignore b/docusaurus/.gitignore new file mode 100644 index 0000000000..b2d6de3062 --- /dev/null +++ b/docusaurus/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/docusaurus/README.md b/docusaurus/README.md new file mode 100644 index 0000000000..b28211a9bb --- /dev/null +++ b/docusaurus/README.md @@ -0,0 +1,41 @@ +# Website + +This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator. + +## Installation + +```bash +yarn +``` + +## Local Development + +```bash +yarn start +``` + +This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. + +## Build + +```bash +yarn build +``` + +This command generates static content into the `build` directory and can be served using any static contents hosting service. + +## Deployment + +Using SSH: + +```bash +USE_SSH=true yarn deploy +``` + +Not using SSH: + +```bash +GIT_USER= yarn deploy +``` + +If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/docusaurus/TODO b/docusaurus/TODO new file mode 100644 index 0000000000..5f629f0ff1 --- /dev/null +++ b/docusaurus/TODO @@ -0,0 +1,100 @@ +MkDocs ➜ Docusaurus migration checklist + +Goal: ship `docusaurus/` as the new production site for https://docs.codacy.com/ + +--- +MVP + +## 0) Make it beautiful +- [x] Colors, fonts and sizes +- [x] Better footer +- [x] Beautiful navigation +- [x] Nav links + +## 0) Apply new theme! +- [ ] Homepage +- [ ] Sidebar +- [ ] Navbar +- [ ] Search +- [ ] Footer +- [ ] Nav buttons +- [ ] Reading time? + +## 1) Content parity (docs rendering) +- [ ] Confirm all pages exist in `docusaurus/docs` (count + spot-check key sections) +- [x] Confirm MkDocs-only templating is fully removed from Docusaurus content: + - [x] No Jinja tags (`{% ... %}` / `{{ ... }}`) remain in `docusaurus/docs` + - [x] Replace MkDocs `extra.*` variables with Docusaurus equivalents (MDX constants / front matter / config) +- [x] Confirm MkDocs `include-markdown` usage is fully replaced with `_includes/*.mdx` imports/usages +- [x] Confirm admonitions render as expected (MkDocs `!!! note|tip|warning` ➜ Docusaurus admonitions / MDX syntax) +- [ ] Confirm heading IDs/anchors are stable (MkDocs `toc` permalink + custom `{:#id}` usage) + +## 2) Navigation & information architecture +- [ ] Review `docusaurus/sidebars.ts` vs MkDocs `nav:` in `mkdocs.yml` for: + - [ ] Missing/extra categories + - [ ] Ordering (including release notes yearly grouping) + - [ ] Any pages that should be hidden from sidebar but still routable +- [x] Replace placeholder site metadata in `docusaurus/docusaurus.config.ts` (title/tagline/footer links/GitHub links) +- [x] Decide canonical doc routes (Docusaurus uses `/` as `routeBasePath`): ensure this matches production expectations +--- + +Releseable + +## 3) Redirects (must-have before cutover) +- [ ] Port MkDocs `redirect_maps` from `mkdocs.yml` to Docusaurus redirects + - Recommended: add `@docusaurus/plugin-client-redirects` and generate redirects from `mkdocs.yml` + - Include legacy Zendesk (`hc/...`) redirects and internal moved-page redirects +- [ ] Validate redirects with a link/redirect checker against the built site + +## 5) Release notes specifics +- [ ] RSS feed parity (MkDocs uses `mkdocs-rss-plugin` for `release-notes/*`) + - [ ] Decide feed generation approach (Docusaurus plugin/custom script during build) + - [ ] Ensure `/feed_rss_created.xml` exists (many pages link to it) +- [ ] Confirm release notes sidebar + navigation matches expectations (tabs already added) + +## 8) SEO & meta descriptions (replaces `mkdocs-meta-descriptions`) +- [ ] Decide how to generate meta descriptions (front matter `description` / plugin / build-time extraction) +- [ ] Preserve sitemap + robots behavior (MkDocs workflow wrote `robots.txt` with sitemap link) +- [ ] Validate canonical URLs and avoid indexing preview builds (MkDocs used preview banner + env toggles) + +## 9) CI/CD parity (replaces `.github/workflows/mkdocs.yml`) +- [ ] Add a Docusaurus workflow that covers: + - [ ] Build + - [ ] HTML/link validation equivalent to `htmltest` + `lychee` expectations + - [ ] Branch previews (Netlify or equivalent) + - [ ] Deploy latest to `gh-pages` with `CNAME=docs.codacy.com` + - [ ] Deploy versioned Self-hosted docs from `release/v*` + +--- + +NEXT + +## 4) Versioning strategy (replaces `mike` + `MKDOCS_SELF_HOSTED`) +MkDocs currently publishes: +- Latest docs on `master` to `gh-pages/` +- Self-hosted versions from `release/v*` using `mike deploy ...` (and `MKDOCS_SELF_HOSTED=true`) + +- [ ] Decide Docusaurus versioning model: + - [ ] Use Docusaurus docs versions for Self-hosted (`release/v*` ➜ versioned docs) + - [ ] Decide URL shape for versions (must preserve/redirect existing production URLs) +- [ ] Implement the model in CI (build + deploy) and document how to cut a new Self-hosted version +- [ ] Re-implement any “version selector” behavior (MkDocs `assets/javascripts/version-select.js` + CSS) + +## 6) “Last updated” (replaces `git-revision-date-localized`) +- [ ] Enable/verify “Last updated” on doc pages (date + author if desired) +- [ ] Ensure CI checkout uses full git history (`fetch-depth: 0`) so last update data is correct + +## 7) Tracking, scripts, and UX widgets +MkDocs uses `extra.segment_key`, `extra.user_feedback`, and custom JS/CSS. +- [ ] Add tracking (Segment or chosen tool) to Docusaurus +- [ ] Add Zendesk +- [ ] Re-implement “user feedback” if it was a widget on MkDocs + +## 10) Cleanup & documentation for contributors +- [ ] Update root `README.md` and `CONTRIBUTING.md` for Docusaurus (build/preview instructions) +- [ ] Decide what to do with MkDocs artifacts once cutover is complete: + - [ ] `mkdocs.yml`, `requirements.txt`, MkDocs workflows + - [ ] MkDocs theme submodule `submodules/codacy-mkdocs-material` + +## 11) Update release script +- [ ] Update release script diff --git a/docusaurus/docs/_includes/AdminAccessControlInfo.mdx b/docusaurus/docs/_includes/AdminAccessControlInfo.mdx new file mode 100644 index 0000000000..7d9034565c --- /dev/null +++ b/docusaurus/docs/_includes/AdminAccessControlInfo.mdx @@ -0,0 +1,3 @@ +:::note +Organization admins can [manage access to this feature](/organizations/roles-and-permissions-for-organizations#change-analysis-configuration) +::: \ No newline at end of file diff --git a/docusaurus/docs/_includes/AdminAccessInfo.mdx b/docusaurus/docs/_includes/AdminAccessInfo.mdx new file mode 100644 index 0000000000..779b848428 --- /dev/null +++ b/docusaurus/docs/_includes/AdminAccessInfo.mdx @@ -0,0 +1,3 @@ +:::note +Only organization admins can update this setting. +::: \ No newline at end of file diff --git a/docusaurus/docs/_includes/AiInfo.mdx b/docusaurus/docs/_includes/AiInfo.mdx new file mode 100644 index 0000000000..37a228c48e --- /dev/null +++ b/docusaurus/docs/_includes/AiInfo.mdx @@ -0,0 +1,5 @@ +:::note +- This feature is compatible with most programming languages and requires no additional setup. +- Comments are generated using the description of the static analysis issue, information about the tool that detected the issue, and a few lines of surrounding code to provide the AI with extra context and improve its accuracy. +- This feature leverages the OpenAI API. No information is shared with other third parties or used to train AI models. Refer to the [OpenAI API data usage policies](https://openai.com/policies/api-data-usage-policies) for more information. +::: diff --git a/docusaurus/docs/_includes/ApiExamplePaginationImportant.mdx b/docusaurus/docs/_includes/ApiExamplePaginationImportant.mdx new file mode 100644 index 0000000000..71abd02404 --- /dev/null +++ b/docusaurus/docs/_includes/ApiExamplePaginationImportant.mdx @@ -0,0 +1,3 @@ +:::caution +[Learn how to use pagination](/codacy-api/using-the-codacy-api#using-pagination) to ensure that you process all results returned by the API. +::: \ No newline at end of file diff --git a/docusaurus/docs/_includes/ApiTokenWarning.mdx b/docusaurus/docs/_includes/ApiTokenWarning.mdx new file mode 100644 index 0000000000..fe7052deb8 --- /dev/null +++ b/docusaurus/docs/_includes/ApiTokenWarning.mdx @@ -0,0 +1,5 @@ +:::caution +**Never write API tokens to your configuration files** and keep your API tokens well protected, as they grant owner permissions to your projects on Codacy. + +It's a best practice to store API tokens as environment variables. Check the documentation of your CI/CD platform on how to do this. +::: \ No newline at end of file diff --git a/docusaurus/docs/_includes/ClientSideToolAdvanced.mdx b/docusaurus/docs/_includes/ClientSideToolAdvanced.mdx new file mode 100644 index 0000000000..e6d823eb72 --- /dev/null +++ b/docusaurus/docs/_includes/ClientSideToolAdvanced.mdx @@ -0,0 +1,14 @@ +export default function ClientSideToolAdvanced({ toolName }) { + return ( + <> +

Advanced configuration

+

+ See the available{' '} + + Codacy Analysis CLI configuration flags + {' '} + to configure running {toolName} in more advanced scenarios. +

+ + ); +} diff --git a/docusaurus/docs/_includes/ClientSideToolInstructionsItems.mdx b/docusaurus/docs/_includes/ClientSideToolInstructionsItems.mdx new file mode 100644 index 0000000000..c46f688ff9 --- /dev/null +++ b/docusaurus/docs/_includes/ClientSideToolInstructionsItems.mdx @@ -0,0 +1,74 @@ +import ApiTokenWarning from './ApiTokenWarning.mdx'; + +export default function ClientSideToolInstructionsItems({ toolName }) { + return ( + <> +
  • + + Enable {toolName} + {' '} + and configure the corresponding code patterns on your repository{' '} + Code patterns page. +
  • + +
  • + Enable Run analysis on your build server on your + repository Settings, tab General,{' '} + Repository analysis on your server. +

    + This setting enables Codacy to wait for the results of the local + analysis before resuming the analysis of your commits. +

    +

    + Run analysis on your build server +

    +
  • + +
  • + Set up an API token to authenticate on Codacy: + + +
  • + +
  • + If you're using Codacy Self-hosted set the following + environment variable to specify your Codacy instance URL: +
    +          
    +            export CODACY_API_BASE_URL=<your Codacy instance URL>
    +          
    +        
    +
  • + + ); +} diff --git a/docusaurus/docs/_includes/CoverageGithubAcceptPermissions.mdx b/docusaurus/docs/_includes/CoverageGithubAcceptPermissions.mdx new file mode 100644 index 0000000000..7ffa399dfe --- /dev/null +++ b/docusaurus/docs/_includes/CoverageGithubAcceptPermissions.mdx @@ -0,0 +1,3 @@ +:::note +GitHub only: this feature requires updated app permissions. If you haven't done so yet, please [review and accept the updated Codacy app permissions](https://docs.github.com/en/enterprise-cloud@latest/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#reviewing-permissions) on GitHub. +::: \ No newline at end of file diff --git a/docusaurus/docs/_includes/CoverageIgnore.mdx b/docusaurus/docs/_includes/CoverageIgnore.mdx new file mode 100644 index 0000000000..32be83e64b --- /dev/null +++ b/docusaurus/docs/_includes/CoverageIgnore.mdx @@ -0,0 +1 @@ +To exclude files from coverage analysis only, you must ignore them directly in the tool you're using to generate coverage reports and ensure that the reports you upload to Codacy don't include coverage information for those files. \ No newline at end of file diff --git a/docusaurus/docs/_includes/DashboardApiReportNote.mdx b/docusaurus/docs/_includes/DashboardApiReportNote.mdx new file mode 100644 index 0000000000..001f402fb9 --- /dev/null +++ b/docusaurus/docs/_includes/DashboardApiReportNote.mdx @@ -0,0 +1,11 @@ +:::note +You can use the Codacy API to generate reports or obtain information +about the code quality of your repositories in a more flexible way. + +For more information see the list of +[available API endpoints](https://api.codacy.com/api/api-docs#codacy-api-analysis) +and the following examples: + +- [Obtaining current issues in repositories](/codacy-api/examples/obtaining-current-issues-in-repositories) +- [Obtaining code quality metrics for files](/codacy-api/examples/obtaining-code-quality-metrics-for-files) +::: diff --git a/docusaurus/docs/_includes/DefaultGitProviderSettingsTip.mdx b/docusaurus/docs/_includes/DefaultGitProviderSettingsTip.mdx new file mode 100644 index 0000000000..9bdb67d292 --- /dev/null +++ b/docusaurus/docs/_includes/DefaultGitProviderSettingsTip.mdx @@ -0,0 +1,33 @@ +import Admonition from '@theme/Admonition'; + +export default function DefaultGitProviderSettingsTip({ + variant = 'default-settings', +}) { + if (variant === 'apply-all') { + return ( + +

    + You can{' '} + + apply the default Git provider integration settings to all + repositories + {' '} + to ensure that your repositories all share the same settings. +

    +
    + ); + } + + return ( + +

    + Configure the{' '} + + default Git provider integration settings + {' '} + that Codacy applies to new repositories to help ensure that all new + repositories have the same settings. +

    +
    + ); +} diff --git a/docusaurus/docs/_includes/IssueDetails.mdx b/docusaurus/docs/_includes/IssueDetails.mdx new file mode 100644 index 0000000000..3f9a8ea030 --- /dev/null +++ b/docusaurus/docs/_includes/IssueDetails.mdx @@ -0,0 +1,8 @@ +Click the title of an issue card to expand it and see the following information: + +- The committer and date of the commit that introduced the issue, if available +- The estimated time to fix the issue +- What the issue is and how to solve it +- The [tool that reported the issue](/getting-started/supported-languages-and-tools/) and the related code pattern +- Where this pattern is enabled: coding standard, repository rules, or configuration file + diff --git a/docusaurus/docs/_includes/NavMultistep.mdx b/docusaurus/docs/_includes/NavMultistep.mdx new file mode 100644 index 0000000000..aadd567190 --- /dev/null +++ b/docusaurus/docs/_includes/NavMultistep.mdx @@ -0,0 +1,47 @@ +import Link from '@docusaurus/Link'; + +export default function NavMultistep({ step }) { + const activeStep = typeof step === 'number' ? step : Number(step); + const steps = [ + { + label: 'Adding your first repository', + href: '/getting-started/codacy-quickstart#adding-your-first-repository', + }, + { + label: 'Configuring your repository', + href: '/getting-started/configuring-your-repository#configuring-your-repository', + }, + { + label: 'Integrating Codacy with your Git workflow', + href: '/getting-started/integrating-codacy-with-your-git-workflow#integrating-codacy-with-your-git-workflow', + }, + ]; + + return ( + + ); +} diff --git a/docusaurus/docs/_includes/Paid.mdx b/docusaurus/docs/_includes/Paid.mdx new file mode 100644 index 0000000000..01c2e8af82 --- /dev/null +++ b/docusaurus/docs/_includes/Paid.mdx @@ -0,0 +1,28 @@ +import Admonition from '@theme/Admonition'; + +export default function Paid({ + variant = 'paid', + pricingUrl = 'https://www.codacy.com/pricing', +}) { + let prefix = 'This feature is '; + let linkText = 'only available on paid plans'; + + switch (variant) { + case 'private-repositories': + prefix = 'Analyzing private repositories is '; + break; + case 'business': + linkText = 'only available on Business plan'; + break; + case 'paid': + default: + break; + } + + return ( + + {prefix} + {linkText}. + + ); +} diff --git a/docusaurus/docs/_includes/ServiceAccountIntegration.mdx b/docusaurus/docs/_includes/ServiceAccountIntegration.mdx new file mode 100644 index 0000000000..3d2a99ac5c --- /dev/null +++ b/docusaurus/docs/_includes/ServiceAccountIntegration.mdx @@ -0,0 +1,10 @@ +:::tip +Use a dedicated service account to integrate Codacy with your +repositories. This prevents disruption of service if the user who +originally enabled the integration loses access to the repositories, +which may happen when a user leaves the team or the organization. + +For more information and instructions on how to set up a dedicated +service account see +[Why did Codacy stop commenting on pull requests?](/faq/troubleshooting/why-did-codacy-stop-commenting-on-pull-requests#outdated-permissions) +::: diff --git a/docusaurus/docs/_includes/StatusChecksImportant.mdx b/docusaurus/docs/_includes/StatusChecksImportant.mdx new file mode 100644 index 0000000000..89052a3813 --- /dev/null +++ b/docusaurus/docs/_includes/StatusChecksImportant.mdx @@ -0,0 +1,7 @@ +:::caution +**To get a status for coverage** you must also: + +- [Add coverage to your repository](/coverage-reporter/) +- Enable the rule **Diff coverage is under** or **Coverage variation is under** on the + [pull request quality gate](/repositories-configure/adjusting-quality-gates). +::: diff --git a/docusaurus/docs/_includes/UpdateFileExtensionsReanalyze.mdx b/docusaurus/docs/_includes/UpdateFileExtensionsReanalyze.mdx new file mode 100644 index 0000000000..e7215dea8f --- /dev/null +++ b/docusaurus/docs/_includes/UpdateFileExtensionsReanalyze.mdx @@ -0,0 +1,7 @@ +The updated settings will be used on the next analysis, but you can click +**reanalyze the latest commit of your branches now** on the notification that +appears at the bottom of the page to trigger an analysis immediately. + +import AnalyzeNow from '@site/docs/repositories-configure/images/file-extensions.png'; + +Analyze now diff --git a/docusaurus/docs/account/_order.ts b/docusaurus/docs/account/_order.ts new file mode 100644 index 0000000000..f3e110529f --- /dev/null +++ b/docusaurus/docs/account/_order.ts @@ -0,0 +1,6 @@ +export const accountOrder = [ + 'account/managing-your-profile', + 'account/emails', + 'account/user-session-management', +]; + diff --git a/docusaurus/docs/account/emails.mdx b/docusaurus/docs/account/emails.mdx new file mode 100644 index 0000000000..fb0cd84e65 --- /dev/null +++ b/docusaurus/docs/account/emails.mdx @@ -0,0 +1,69 @@ +--- +title: Emails +--- + +To manage the email addresses associated with your account and your email notifications, click on your avatar on the top right-hand corner and open **Your account**, page **Emails**. + +![Email settings](images/emails-notifications.png) + +## Updating your email addresses ||updating|| + +Codacy automatically links to your Codacy account the email addresses from the Git provider associated with your current session. On the **Emails** page, you can verify which email addresses are linked to your Codacy account. + +:::note +- For **GitHub**, if you have [email privacy enabled](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address?platform=mac#about-commit-email-addresses) on the provider, Codacy doesn't show your private emails and uses another available email address when displaying your personal details on lists, search filters, or activity. +- Codacy doesn't allow you to have one email associated with more than one GitHub account. You can manage your [associated emails in the provider GitHub](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account). +::: + + +To update the email addresses associated with your Codacy account, do the following: + +1. [Configure your Git email address](#git-config). This ensures that commits are attributed to you. + +1. Update your email addresses on your Git provider ([GitHub](https://docs.github.com/en/enterprise-cloud@latest/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account), [Bitbucket](https://support.atlassian.com/bitbucket-cloud/docs/set-email-aliases/), or [GitLab](https://docs.gitlab.com/ee/user/profile/#add-emails-to-your-user-profile)). + +1. Log out and log back in to Codacy. + + :::tip + If the updates are still not reflected on Codacy, navigate to the [access management](https://app.codacy.com/account/access-management) page, revoke the relevant Git provider integration, then log out and back in to Codacy using the same provider. + ::: + +:::note + When developers commit **from GitHub or Bitbucket**, Codacy automatically associates all the commit email addresses from the same Git provider user with a single Codacy committer. For developers that never logged in to the Codacy app, this mechanism requires that they [set their Git email address](#git-config) and add all their email addresses to their [GitHub account](https://github.com/settings/emails) or [Bitbucket account](https://bitbucket.org/account/settings/email/). +::: + +### Setting your Git email address ||git-config|| + +Unless you explicitly [configure your email address](https://git-scm.com/docs/git-config#Documentation/git-config.txt-useremail), Git automatically uses an email address based on the username and hostname of your workstation, and associates this email address with your commits. + +To check which email address your local Git installation is using, run the following command on your workstation: + +```bash +git config user.email +``` + +If the returned email address isn't one of the email addresses associated with your Git provider account, configure Git to use one of those email addresses instead: + +```bash +git config --global user.email you@example.com +``` + +:::caution +Make sure that your email address doesn't include any extra characters such as quotes (`""` or `''`). +::: + +## Managing your email notifications + +Codacy can send you an email whenever there are new analysis results on your repositories with the list of found issues and the changes that created them. Codacy sends all email notifications to your default email address, and you can change your default email address by clicking **make default** next to another email address. + +Configure the notifications that you wish to receive under **Repository notifications**: + +- **Per commit:** Codacy will send you an email for each analyzed commit. + +- **Per pull request:** Codacy will send you an email for each analyzed pull request. + +- **Only my activity:** By default, Codacy will only send you emails about your own commits and pull requests. Turn off this setting to receive emails for commits and pull requests made by other people as well. + +:::tip +To turn off all email notifications, disable the settings **Per commit** and **Per pull request**. +::: \ No newline at end of file diff --git a/docusaurus/docs/account/images/emails-notifications.png b/docusaurus/docs/account/images/emails-notifications.png new file mode 100644 index 0000000000..aa2b38f528 Binary files /dev/null and b/docusaurus/docs/account/images/emails-notifications.png differ diff --git a/docusaurus/docs/account/images/profile.png b/docusaurus/docs/account/images/profile.png new file mode 100644 index 0000000000..a4c05cb45e Binary files /dev/null and b/docusaurus/docs/account/images/profile.png differ diff --git a/docusaurus/docs/account/managing-your-profile.mdx b/docusaurus/docs/account/managing-your-profile.mdx new file mode 100644 index 0000000000..b8c74fca34 --- /dev/null +++ b/docusaurus/docs/account/managing-your-profile.mdx @@ -0,0 +1,30 @@ +--- +title: Managing your profile +--- + +To manage your profile information such as your name and avatar, click on your avatar on the top right-hand corner and select **Your account**. + +![Managing your profile](images/profile.png) + +## Changing your name or avatar + +- To change your avatar, sign up or log in at [Gravatar](https://en.gravatar.com/) using the same email address that you used to log into Codacy. The avatar that you define there will be automatically used as your avatar on Codacy. + + :::note + Organization avatars aren't editable at the moment. + +- To change your name, update the field **Name** and click the button **Update profile**. + +## Deleting your account + +When you delete your account on Codacy: + +- Your profile information and all data related to your personal repositories are completely removed from Codacy +- Codacy will [stop analyzing any repositories added to Codacy using your account](../faq/troubleshooting/why-did-codacy-stop-commenting-on-pull-requests.md) {/*!--NOTE See https://github.com/codacy/docs/pull/1354#discussion_r950190842 for more context -->*/} + +This operation doesn't make any changes on your Git provider. + +To delete your account, click the button **Delete account** and confirm that you really want to proceed. + +:::note +If you're the last organization admin of any of your organizations, you must either add someone else as an owner or [delete those organizations](../organizations/what-are-organizations.md#deleting-an-organization) before you can delete your account. diff --git a/docusaurus/docs/account/user-session-management.mdx b/docusaurus/docs/account/user-session-management.mdx new file mode 100644 index 0000000000..5bb62bd807 --- /dev/null +++ b/docusaurus/docs/account/user-session-management.mdx @@ -0,0 +1,14 @@ +--- +title: User session management +--- + +To reduce the risk of unauthorized access to your account, Codacy sets automatic expiration timeouts for every session. When a session expires, Codacy invalidates the session both on the client and server side, and creates a new session. + + +## Idle session timeout + +The **idle session timeout** on the Codacy app is **30 minutes**. In the absence of user activity during this period, such as typing or using the mouse, Codacy logs out the user and invalidates the session. + +## Absolute session timeout + +The **absolute session timeout** on the Codacy app is **8 hours**. When an active session reaches this maximum period, Codacy logs out the user and invalidates the session. diff --git a/docusaurus/docs/codacy-ai/codacy-ai.mdx b/docusaurus/docs/codacy-ai/codacy-ai.mdx new file mode 100644 index 0000000000..b5937e9ce2 --- /dev/null +++ b/docusaurus/docs/codacy-ai/codacy-ai.mdx @@ -0,0 +1,88 @@ +--- +title: Codacy AI +--- +import Paid from "../_includes/Paid.mdx" + + +## What is Codacy AI? + +Codacy AI is a set of optional features integrated into the Software designed to optimise development workflows and elevate code quality standards through automated issue descriptions, actionable recommendations and false-positive detection, is available for the Customer. + +Codacy AI utilizes only enterprise-grade instances of OpenAI and Google Gemini services with enhanced security, privacy, and data protection features. Customer Code processed through Codacy AI will not be used by Codacy, OpenAI, or any third-party AI provider for training, improving, or developing artificial intelligence models, machine learning algorithms, or any other automated systems. + +## AI Features + +### AI-enhanced comments + +_This feature leverages OpenAI models, and is strictly opt-in: it will only run on repositories or projects where a repository admin has enabled it._ + +AI-enhanced comments are optional, machine-generated suggestions that appear directly in pull requests and review threads. They use Codacy's AI to provide concise issue summaries, remediation suggestions, and links to relevant documentation — helping reviewers and authors quickly understand and fix problems. + +More details about [AI-enhanced comments here →](../repositories-configure/integrations/github-integration.md#ai-enhanced-comments). + +**How to turn it on** + +1. Go to your organization or repository settings in Codacy. +2. Navigate to the "Integrations" or "AI features" section (depending on your Codacy plan and UI version). +3. Find "AI-enhanced comments" and toggle the feature to "On" for the repository or organization scope you want to enable. +4. Optionally configure which repositories, branches, or severity levels should receive AI comments to reduce noise. +5. Save your changes. Once enabled, Codacy will start adding AI-enhanced comments to new pull requests and code reviews according to the configured scope. + +**Notes** + +- Administrators can enable or disable the feature at organization or repository level. +- Enabling the feature may be subject to plan limitations and governance controls; check your Codacy subscription and admin permissions. +- Users can still ignore or dismiss individual AI comments during code review. + +**Data usage and privacy** + +- To generate an AI-enhanced comment, Codacy only processes the specific issue context: the issue line plus up to ten lines before and ten lines after that line. No additional repository data is sent or used. +- Codacy does not use your code, repository contents, or comments to train external AI models. No customer code or review text is incorporated into model training. + +### Smart False Positive Triage + + + +_This feature leverages OpenAI models, and is strictly opt-in: you need to get in touch with us in order to enable it._ + +Codacy False Positive triage analyzes results on a commit basis to give you visibility into issues that may be false positives (based on their context). During triage, each issue is given a confidence score along with an explanation. When the confidence level falls below a defined threshold, the issue is then flagged as an AI false positive and surfaced for manual review. You can evaluate potential false positives during a pull request in app or on any Codacy page where issues appear. These issues can be ignored or marked as Not a false positive. + +More details about [False Positives here →](../repositories/commits.mdx#false-positive-issues). + +**How to turn it on** + +1. Get in touch with your Customer Success Manager or with [support@codacy.com](mailto:support@codacy.com) + +**Notes** + +- Codacy does not use your code, repository contents, or comments to train external AI models. No customer code or review text is incorporated into model training. +- To detect a Possible False Positive, Codacy only processes the specific issue context: one request per file with issues. No additional repository data is sent or used. +- Prompts are neither stored nor visible by anyone + +
    + +### AI Reviewer + +:::note +AI Reviewer is currently only available on GitHub, for all Team and Business plans. +::: + +_This feature leverages Google Gemini models, and is strictly opt-in: it will only run on repositories or projects where a repository admin has enabled it._ + +The AI Reviewer combines the reliability of deterministic, rule-based static code analysis with the power of AI. It draws in the necessary context from source code and PR metadata to ensure the business intent matches the technical outcome, and can catch logic gaps that conventional scanners (and human reviewers) often miss. + +More details about [AI Reviewer here →](../repositories-configure/integrations/github-integration.md#ai-reviewer). + +**How to turn it on** + +1. Go to your organization or repository settings in Codacy. +2. Navigate to the "Integrations" or "AI features" section (depending on your Codacy plan and UI version). +3. Find "AI Reviewer", under "Status checks", and toggle the feature to "On" for the repository or organization scope you want to enable. +4. Save your changes. Once enabled, Codacy will start adding a Summary to your pull requests based on the AI-enriched reviews. +5. To request a PR Review from codacy, add a **`codacy-review`** label to your Pull Request. Codacy listens to the event and will publish the review as soon as it's ready. + +**Notes** + +- Codacy does not use your code, repository contents, or comments to train external AI models. No customer code or review text is incorporated into model training. +- To enrich the review, the git diff of the Pull Request as well as some related files' contents can be sent as context. No data is stored on our side, or used to train any models. +- Prompts are neither stored nor visible by anyone diff --git a/docusaurus/docs/codacy-api/_order.ts b/docusaurus/docs/codacy-api/_order.ts new file mode 100644 index 0000000000..b20df6b175 --- /dev/null +++ b/docusaurus/docs/codacy-api/_order.ts @@ -0,0 +1,19 @@ +export const codacyApiOrder = [ + 'codacy-api/using-the-codacy-api', + 'codacy-api/api-tokens', + { + type: 'category' as const, + label: 'Examples', + items: [ + 'codacy-api/examples/creating-repository-api-tokens-programmatically', + 'codacy-api/examples/adding-people-to-codacy-programmatically', + 'codacy-api/examples/adding-repositories-to-codacy-programmatically', + 'codacy-api/examples/obtaining-current-issues-in-repositories', + 'codacy-api/examples/obtaining-code-quality-metrics-for-files', + 'codacy-api/examples/identifying-commits-without-coverage-data', + 'codacy-api/examples/triggering-dast-scans', + 'codacy-api/examples/uploading-dast-results', + ], + }, +]; + diff --git a/docusaurus/docs/codacy-api/api-tokens.mdx b/docusaurus/docs/codacy-api/api-tokens.mdx new file mode 100644 index 0000000000..9de9395a7d --- /dev/null +++ b/docusaurus/docs/codacy-api/api-tokens.mdx @@ -0,0 +1,71 @@ +--- +title: API tokens +description: Create an account API token to authorize access to all the repositories that you have access to, or a repository API token to authorize access only to a specific repository. +--- +import ApiTokenWarning from './../_includes/ApiTokenWarning.mdx' + + +Codacy provides **account** and **repository**-level API tokens that allow you to: + +- [Upload coverage data](../coverage-reporter/index.md) to Codacy +- Upload to Codacy the results of [running client-side analysis tools](../repositories-configure/local-analysis/client-side-tools.md) +- [Authenticate when using the Codacy API](using-the-codacy-api.md#authenticating-requests) + +The sections below provide details about the two types of API tokens and instructions on how to generate and revoke them. + + + +## Generating and revoking account API tokens ||account-api-tokens|| + +Account API tokens are defined at the **Codacy user account level**. Each account API token authorizes access to the same organizations, repositories, and operations as the [roles and permissions of the owner of the account](../organizations/roles-and-permissions-for-organizations.md). + +:::caution +**If you're using an account API token to upload coverage** be sure to [check the roles](../organizations/roles-and-permissions-for-organizations.md) that your Git provider account must have to authorize uploading coverage to Codacy. + +Use a dedicated service account to integrate Codacy with your repositories. This prevents disruption of service if the user who created an account API token loses access to the repositories, which may happen when a user leaves the team or the organization. +::: + +You can create new account API tokens programmatically [using the Codacy API](examples/creating-repository-api-tokens-programmatically.md) or using the Codacy UI: + +1. Open your account, tab **Access management**. + +2. Click the button **Create API token** under **Account API tokens**. + +3. Select an expiration date from the modal options. You can select between a range of 7 days to 90 days, create a custom expiration date, or create a token with no expiration. + +![Creating an account API token](images/codacy-api-tokens-account.png) + +![Creating an account API token modal](images/codacy-api-tokens-account-modal.png) + +:::tip +You can create multiple account API tokens. This can be useful to have a more flexible control by revoking only a specific token. +::: + +When you have tokens created, you can view them inside the tokens table. By hovering a token, you are able to copy its value. + +![Creating an account API token modal](images/codacy-api-tokens-account-table.png) + +To delete an account API token, click the trash icon in the Actions column of the table. After this, all applications or services using that token to access the Codacy API will fail to authenticate and will receive the reply `{"error":"not found"}`. + +## Generating and revoking repository API tokens ||repository-api-tokens"|| + +Repository API tokens are defined on **individual repositories**. Each repository API token only authorizes access to the corresponding repository. + +You can create new repository API tokens programmatically [using the Codacy API](examples/creating-repository-api-tokens-programmatically.md) or using the Codacy UI: + +1. Open your repository **Settings**, tab **Integrations**. + +2. Click the button **Create API token** under **Repository API tokens**. + + :::tip + You can create multiple (up to 100) API tokens per repository. This can be useful to have a more flexible control by revoking only a specific token. + + ![Creating a repository API token](images/codacy-api-tokens-repository.png) + +To revoke a repository API token, click the **X** next to the token. After this, all applications or services using that token to access the Codacy API will fail to authenticate and will receive the reply `{"error":"not found"}`. + +## See also + +- [Adding coverage to your repository](../coverage-reporter/index.md) +- [Client-side tools](../repositories-configure/local-analysis/client-side-tools.md) +- [Creating repository API tokens programmatically](examples/creating-repository-api-tokens-programmatically.md) diff --git a/docusaurus/docs/codacy-api/examples/adding-people-to-codacy-programmatically.mdx b/docusaurus/docs/codacy-api/examples/adding-people-to-codacy-programmatically.mdx new file mode 100644 index 0000000000..30bef7b578 --- /dev/null +++ b/docusaurus/docs/codacy-api/examples/adding-people-to-codacy-programmatically.mdx @@ -0,0 +1,73 @@ +--- +title: Adding people to Codacy programmatically +description: Example of how to add people programmatically using Codacy's API v3 endpoint addPeopleToOrganization. +--- + +There are scenarios where manually adding people on the Codacy UI is inconvenient or time-consuming. For example, you're adding many people to Codacy, such as when initially onboarding all developers within a team. + +To add people programmatically, use the Codacy API endpoint [addPeopleToOrganization](https://app.codacy.com/api/api-docs#addpeopletoorganization) by performing an HTTP POST request to `/people`, specifying a list of email addresses in the body of the request: + +```bash +curl -X POST https://app.codacy.com/api/v3/organizations///people \ + -H 'Content-Type: application/json' \ + -H 'api-token: ' \ + -d '["", ""]' +``` + +Substitute the placeholders with your own values: + +- **API_KEY:** [Account API token](../api-tokens.md#account-api-tokens) used to authenticate on the Codacy API. +- **GIT_PROVIDER:** Git provider hosting of the organization, using one of the values in the table below. For example, `gh` for GitHub Cloud. + + | Value | Git provider | + | ----- | ----------------- | + | `gh` | GitHub Cloud | + | `ghe` | GitHub Enterprise | + | `gl` | GitLab Cloud | + | `gle` | GitLab Enterprise | + | `bb` | Bitbucket Cloud | + | `bbe` | Bitbucket Server | + +- **ORGANIZATION:** Name of the organization on the Git provider. For example, `codacy`. You must have admin permissions over the organization on the Git provider. + +- **EMAIL#1...N:** Email addresses of the people to be added. For example, `no-reply@codacy.com`. + + +## Example: Adding people from a file containing emails + +We provide an example Bash script that adds all emails in a text file to Codacy. We suggest that you adapt the script to your specific scenario. + +The example script: + +1. Defines the [account API token](../api-tokens.md#account-api-tokens) used to authenticate on the Codacy API. +1. Defines the path and filename of the file containing the email addresses list. +1. Uses `awk` and `sed` to read the email addresses list from a file. +1. Calls the endpoint [addPeopleToOrganization](https://app.codacy.com/api/api-docs#addpeopletoorganization) to add a list of email addresses to Codacy. + +```bash +CODACY_API_TOKEN="" +GIT_PROVIDER="" # gh, ghe, gl, gle, bb, or bbe +ORGANIZATION="" +FILENAME="emails.txt" + +EMAILS=`awk -vORS=, '{if(length($1)>0) printf("\"%s\",", $1)}' $FILENAME | sed 's/,$//'` + +curl -X POST "https://app.codacy.com/api/v3/organizations/$GIT_PROVIDER/$ORGANIZATION/people" \ + -H 'Content-Type: application/json' \ + -H "api-token: $CODACY_API_TOKEN" \ + -d "[$EMAILS]" +``` + +Expected format of the file containing the email addresses list: + +```bash +$ cat emails.txt +email1@codacy.com +email2@codacy.com +email3@codacy.com +email4@codacy.com +``` + +## See also + +- [Adding people to your organization](/organizations/managing-people/#adding-people) diff --git a/docusaurus/docs/codacy-api/examples/adding-repositories-to-codacy-programmatically.mdx b/docusaurus/docs/codacy-api/examples/adding-repositories-to-codacy-programmatically.mdx new file mode 100644 index 0000000000..322119c31f --- /dev/null +++ b/docusaurus/docs/codacy-api/examples/adding-repositories-to-codacy-programmatically.mdx @@ -0,0 +1,102 @@ +--- +title: Adding repositories to Codacy programmatically +description: Example of how to add multiple repositories programmatically using Codacy's API v3 endpoint addRepository. +--- + +import ApiExamplePaginationImportant from '../../_includes/ApiExamplePaginationImportant.mdx'; + +There are scenarios where manually adding Git repositories on the Codacy UI is inconvenient or time-consuming. For example: + +- You want to add all new repositories to Codacy when they're created on the Git provider +- You're adding many repositories to Codacy, such as when initially adding all repositories in your Git provider organization + +To add repositories programmatically, use the Codacy API v3 endpoint [addRepository](https://app.codacy.com/api/api-docs#addrepository) by performing an HTTP POST request to `/repositories`, specifying the Git provider and the full path of the repository in the body of the request: + +```bash +curl -X POST https://app.codacy.com/api/v3/repositories \ + -H 'Content-Type: application/json' \ + -H 'api-token: ' \ + -d '{"provider":"", "repositoryFullPath":""}' +``` + +Substitute the placeholders with your own values: + +- **API_KEY:** [Account API token](../api-tokens.md#account-api-tokens) used to authenticate on the Codacy API. +- **GIT_PROVIDER:** Git provider hosting of the repository, using one of the values in the table below. For example, `gh` for GitHub Cloud. + + | Value | Git provider | + | ----- | ----------------- | + | `gh` | GitHub Cloud | + | `ghe` | GitHub Enterprise | + | `gl` | GitLab Cloud | + | `gle` | GitLab Enterprise | + | `bb` | Bitbucket Cloud | + | `bbe` | Bitbucket Server | + +- **REPOSITORY_FULL_PATH:** Name of the organization and repository on the Git provider, using the format `/`. For example, `codacy/docs`. You must have admin permissions over the repository on the Git provider. + +:::note +**If you're using GitLab** you must specify the full group path and the repository using the format `//...//`. +::: + +## Example: Adding all repositories in a GitHub organization + +We provide an example Bash script that adds all repositories in a GitHub Cloud organization to Codacy. We suggest that you adapt the script to your specific scenario. + +:::caution + Since Codacy automatically analyzes new repositories, adding many repositories in a short time can cause delays in the analysis of other repositories depending on the size of the repositories, the sizing of the infrastructure, and the concurrent analysis configuration. For example: + + | Repositories added | Expected delay | + | ------------------ | -------------- | + | 1 to 10 | Small | + | 11 to 100 | Considerable | + | More than 100 | Extreme | + + To avoid these delays, add repositories in small batches or space out adding new repositories over time. +::: + +The example script: + +1. Defines a GitHub [personal access token](https://github.com/settings/tokens), the GitHub organization name, and the [account API token](../api-tokens.md#account-api-tokens) used to authenticate on the Codacy API. +1. Calls the GitHub API to [obtain the list of all repositories](https://docs.github.com/en/rest/repos/repos#list-organization-repositories) in the defined organization. +1. Uses [jq](https://github.com/stedolan/jq) to return the value of `full_name` for each repository obtained in the JSON response. The `full_name` already includes the organization and repository names using the format `/`. +1. For each repository, calls the endpoint [addRepository](https://app.codacy.com/api/api-docs#addrepository) to add a new repository specifying `gh` as the Git provider and the value of `full_name` as the full path of the repository. +1. Checks the HTTP status code obtained in the response and performs basic error handling. +1. Pauses a few seconds between requests to the Codacy API to avoid rate limiting. + +```bash +#!/bin/bash + +GITHUB_AUTH_TOKEN="" +GITHUB_ORG_NAME="" +CODACY_API_TOKEN="" + +printf "Obtaining all repositories in the $GITHUB_ORG_NAME organization\n" +for repo in $(curl -s https://api.github.com/orgs/$GITHUB_ORG_NAME/repos -H "Authorization: Bearer $GITHUB_AUTH_TOKEN" | jq -r '.[] | .full_name'); do + printf "Adding $repo to Codacy\n" + http_status=$(curl -X POST https://app.codacy.com/api/v3/repositories \ + -H "Content-Type: application/json" \ + -H "api-token: $CODACY_API_TOKEN" \ + -d '{"provider":"gh", "repositoryFullPath":"'$repo'"}' \ + -sSo /dev/null -w "%{http_code}") + case "$http_status" in + 200) printf "$repo added successfully\n" + ;; + 401) printf "Error: 401 Unauthorized, check the Codacy API token\n" + break + ;; + 409) printf "Error: 409 Conflict, $repo is already added to Codacy\n" + ;; + *) printf "Error: $http_status HTTP status code\n" + break + ;; + esac + sleep 60 # Pause between repositories +done +``` + + + +:::caution +Besides this, the script doesn't consider paginated results obtained from the GitHub API. [Learn how to use pagination on the GitHub API](https://docs.github.com/en/rest/using-the-rest-api/using-pagination-in-the-rest-api) to ensure that you obtain all the repositories in your organization. +::: diff --git a/docusaurus/docs/codacy-api/examples/creating-repository-api-tokens-programmatically.mdx b/docusaurus/docs/codacy-api/examples/creating-repository-api-tokens-programmatically.mdx new file mode 100644 index 0000000000..bbcaf599a3 --- /dev/null +++ b/docusaurus/docs/codacy-api/examples/creating-repository-api-tokens-programmatically.mdx @@ -0,0 +1,122 @@ +--- +title: Creating repository API tokens programmatically +description: Example of how to create new repository API tokens for all repositories in an organization using the Codacy API endpoint createRepositoryApiToken. +--- +import ApiExamplePaginationImportant from '../../_includes/ApiExamplePaginationImportant.mdx' + + +To create new [repository API tokens](../api-tokens.md) for your Codacy repositories programmatically, use the Codacy API endpoint [createRepositoryApiToken](https://app.codacy.com/api/api-docs#createrepositoryapitoken). You can also list all repository API tokens for a repository using the endpoint [listRepositoryApiTokens](https://api.codacy.com/api/api-docs#listrepositoryapitokens). + +For example, if you're [setting up coverage](../../coverage-reporter/index.md) for all your repositories and prefer not to use a single account API token that grants the same permissions as an administrator, you need to create an individual repository API token for each repository. + +## Example: Creating a repository API token for a single repository + +This example creates a new repository API token for a repository and outputs the new token string. + +The example script: + +1. Defines the [account API token](../api-tokens.md#account-api-tokens) used to authenticate on the Codacy API, the Git provider, the organization name, and the repository name passed as an argument to the script. +1. Calls the endpoint [createRepositoryApiToken](https://app.codacy.com/api/api-docs#createrepositoryapitoken) to create a new repository API token and uses [jq](https://github.com/stedolan/jq) to obtain only the created token string. + +```bash +#!/bin/bash + +CODACY_API_TOKEN="" +GIT_PROVIDER="" # gh, ghe, gl, gle, bb, or bbe +ORGANIZATION="" +REPOSITORY=$1 + +curl -sX POST "https://app.codacy.com/api/v3/organizations/$GIT_PROVIDER/$ORGANIZATION/repositories/$REPOSITORY/tokens" \ + -H "api-token: $CODACY_API_TOKEN" \ +| jq -r ".data | .token" +``` + +Example usage and output + +```bash +$ ./create-token.sh website + +``` + +## Example: Creating repository API tokens for all repositories in an organization + +This example creates new repository API tokens for all the repositories in an organization and outputs a comma-separated list of repository names and corresponding token strings. + +The example script: + +1. Defines the [account API token](../api-tokens.md#account-api-tokens) used to authenticate on the Codacy API, the Git provider, and the organization name. +1. Calls the endpoint [listOrganizationRepositories](https://api.codacy.com/api/api-docs#listorganizationrepositories) to retrieve the list of repositories in the organization. +1. Uses [jq](https://github.com/stedolan/jq) to select only the name of the repositories. +1. Asks for confirmation from the user before making any changes. +1. For each repository, calls the endpoint [createRepositoryApiToken](https://app.codacy.com/api/api-docs#createrepositoryapitoken) to create a new repository API token and uses jq to obtain only the created token string. +1. Outputs a comma-separated list of the repository names and the corresponding new token strings. +1. Pauses a few seconds between requests to the Codacy API to avoid rate limiting. + +```bash +#!/bin/bash + +CODACY_API_TOKEN="" +GIT_PROVIDER="" # gh, ghe, gl, gle, bb, or bbe +ORGANIZATION="" + +repositories=$(curl -sX GET "https://app.codacy.com/api/v3/organizations/$GIT_PROVIDER/$ORGANIZATION/repositories" \ + -H "api-token: $CODACY_API_TOKEN" \ + | jq -r ".data[] | .name") + +count=$(echo "$repositories" | wc -l) +read -p "Create repository tokens for $count repositories? (y/n) " choice +if [ "$choice" = "y" ]; then + echo "$repositories" | while read repository; do + echo -n "$repository," + curl -sX POST "https://app.codacy.com/api/v3/organizations/$GIT_PROVIDER/$ORGANIZATION/repositories/$repository/tokens" \ + -H "api-token: $CODACY_API_TOKEN" \ + | jq -r ".data | .token" + sleep 2 # Wait 2 seconds + done +else + echo "No changes made."; +fi +``` + +Example output: + +```text +chart, +docs, +website, +[...] +``` + + + +## Example: Listing the repository API tokens for a repository + +This example lists all repository API tokens created for a repository. + +The example script: + +1. Defines the [account API token](../api-tokens.md#account-api-tokens) used to authenticate on the Codacy API, the Git provider, the organization name, and the repository name passed as an argument to the script. +1. Calls the endpoint [listRepositoryApiTokens](https://api.codacy.com/api/api-docs#listrepositoryapitokens) to list the repository API tokens available on the repository and uses [jq](https://github.com/stedolan/jq) to obtain only the token strings, or exit with a non-zero status if the repository doesn't have any repository API tokens created yet. + +```bash +#!/bin/bash +CODACY_API_TOKEN="" +GIT_PROVIDER="" # gh, ghe, gl, gle, bb, or bbe +ORGANIZATION="" +REPOSITORY=$1 + +curl -sX GET "https://app.codacy.com/api/v3/organizations/$GIT_PROVIDER/$ORGANIZATION/repositories/$REPOSITORY/tokens" \ + -H "api-token: $CODACY_API_TOKEN" \ +| jq -er ".data[] | .token" +``` + +Example usage to obtain only the repository API token created most recently for the repository: + +```bash +$ ./list-tokens.sh website | head -n 1 + +``` + +## See also + +- [API tokens](/codacy-api/api-tokens) diff --git a/docusaurus/docs/codacy-api/examples/identifying-commits-without-coverage-data.mdx b/docusaurus/docs/codacy-api/examples/identifying-commits-without-coverage-data.mdx new file mode 100644 index 0000000000..069f41483a --- /dev/null +++ b/docusaurus/docs/codacy-api/examples/identifying-commits-without-coverage-data.mdx @@ -0,0 +1,81 @@ +--- +title: Identifying commits without coverage data +description: Example of how to identify commits missing the coverage data required for calculating the coverage metrics of pull requests. +--- + +import ApiExamplePaginationImportant from '../../_includes/ApiExamplePaginationImportant.mdx' + +To calculate the supported coverage metrics for pull requests, Codacy requires that at least the following commits provide coverage data: + +- The common ancestor commit of the pull request branch and the target branch +- The head commit of the pull request branch + +The following diagram highlights the commits that must have received coverage data for Codacy to display the coverage variation metric on a pull request: + +![Commits that must have received coverage data](../../coverage-reporter/images/coverage-pr-commits.png) + +However, different factors may prevent your setup from correctly reporting coverage data for the required commits. + +To check if Codacy has received the required coverage data to calculate the coverage metrics for a pull request, use the Codacy API endpoint [getPullRequestCoverageReports](https://api.codacy.com/api/api-docs#getpullrequestcoveragereports). + +## Example: Identifying which pull request commits are missing coverage data + +This example checks whether the open pull requests in a repository have received coverage data for their head and common ancestor commits. + +The example script: + +1. Defines the [account API token](../api-tokens.md#account-api-tokens) used to authenticate on the Codacy API, the Git provider, the organization name, and the repository name passed as an argument to the script. +1. Calls the Codacy API endpoint [listRepositoryPullRequests](https://api.codacy.com/api/api-docs#listrepositorypullrequests) to retrieve the list of open pull requests on the repository. +1. Uses [jq](https://github.com/stedolan/jq) to select only the numbers that identify the pull requests on the Git provider. +1. For each pull request, outputs the pull request number and calls the Codacy API endpoint [getPullRequestCoverageReports](https://api.codacy.com/api/api-docs#getpullrequestcoveragereports) to obtain the information about the coverage data received for the head and common ancestor commits of the pull request. +1. Uses [jq](https://github.com/stedolan/jq) to select and output the commit SHA-1 and coverage status for the commits. + +```bash +#!/bin/bash + +CODACY_API_TOKEN="" +GIT_PROVIDER="" # gh, ghe, gl, gle, bb, or bbe +ORGANIZATION="" +REPOSITORY=$1 + +curl -sX GET "https://app.codacy.com/api/v3/analysis/organizations/$GIT_PROVIDER/$ORGANIZATION/repositories/$REPOSITORY/pull-requests" \ + -H "api-token: $CODACY_API_TOKEN" \ + -H "Content-Type: application/json" \ +| jq -r ".data[] | .pullRequest.number" | \ + +while read pull_request_number; do + echo "Checking #$pull_request_number" + curl -sX GET "https://app.codacy.com/api/v3/analysis/organizations/$GIT_PROVIDER/$ORGANIZATION/repositories/$REPOSITORY/pull-requests/$pull_request_number/coverage/status" \ + -H "api-token: $CODACY_API_TOKEN" \ + -H "Content-Type: application/json" \ + | jq -r '.data[] | "Coverage for \(.commitSha) is \(.reports[0].status)"' +done +``` + +Example usage and output, where: + +- The first commit listed for each pull request is the **head commit** of the pull request branch +- The second commit listed for each pull request is the **common ancestor commit** of the pull request branch + +:::note +If you find commits where the coverage status is different from `Processed`, [follow these troubleshooting instructions](../../coverage-reporter/index.md#validating-coverage) to validate that your coverage setup is working correctly. +::: + +```bash +$ ./check-coverage.sh pulse +Checking #1563 +Coverage for 4faccc86676f7dba3af2b71400605b0be4a686e3 is Processed +Coverage for 51e57784468459b9b2839aa63c3e7e807a39c4ab is null +Checking #1481 +Coverage for 6d6a3ec0c773fb016a7302f8111c185a34e1a9b2 is null +Coverage for 4015f987fab77d41dc27ec3100b57fa58bef4559 is Processed +Checking #1434 +Coverage for 74efe5d7542846f36cb8c030bd6b73fa9060dca2 is null +Coverage for 1a64ea8885717e7b9874c9f3702806ec96b00276 is null +``` + + + +## See also + +- [Adding coverage to your repository](../../coverage-reporter/index.md) diff --git a/docusaurus/docs/codacy-api/examples/obtaining-code-quality-metrics-for-files.mdx b/docusaurus/docs/codacy-api/examples/obtaining-code-quality-metrics-for-files.mdx new file mode 100644 index 0000000000..67909e8e85 --- /dev/null +++ b/docusaurus/docs/codacy-api/examples/obtaining-code-quality-metrics-for-files.mdx @@ -0,0 +1,49 @@ +--- +title: Obtaining code quality metrics for files +description: Example of how to obtain code quality metrics for files in a repository programmatically using the Codacy API endpoint listFiles. +--- + +import ApiExamplePaginationImportant from '../../_includes/ApiExamplePaginationImportant.mdx' + + +To obtain the code quality information for your files in a flexible way, use the Codacy API endpoint [listFiles](https://app.codacy.com/api/api-docs#listfiles). + +For example, if you're managing your source code using a monorepo strategy you may want to generate separate code quality reports for the subset of files that belong to each component or project in your repository. + +## Example: Obtaining code quality metrics for a subdirectory of your repository + +This example exports the grade, total issues, complexity, coverage, and duplication in CSV format for all files in the directory `src/router` of the GitHub repository `codacy/website`. + +The example script: + +1. Defines the [account API token](../api-tokens.md#account-api-tokens) used to authenticate on the Codacy API. +1. Calls the endpoint [listFiles](https://app.codacy.com/api/api-docs#listfiles) to retrieve the code quality metrics, filtering the results by files that include `src/router/` in the path. +1. Uses [jq](https://github.com/stedolan/jq) to select only the necessary data fields and convert the results to the CSV format. + +```bash +CODACY_API_TOKEN="" +GIT_PROVIDER="" # gh, ghe, gl, gle, bb, or bbe +ORGANIZATION="" +REPOSITORY="" + +curl -X GET "https://app.codacy.com/api/v3/organizations/$GIT_PROVIDER/$ORGANIZATION/repositories/$REPOSITORY/files?search=src/router/" \ + -H "api-token: $CODACY_API_TOKEN" \ +| jq -r ".data[] | [.path, .gradeLetter, .totalIssues, .complexity, .coverage, .duplication] | @csv" +``` + +Example output: + +```text +"src/components/router/index.ts","A",0,8,70,0 +"src/components/router/Link.tsx","A",0,5,100,0 +"src/components/router/Redirect.tsx","B",0,2,14,0 +"src/components/router/routes/account.ts","A",0,0,100,0 +[...] +``` + + + +## See also + +- [Which metrics does Codacy calculate?](../../faq/code-analysis/which-metrics-does-codacy-calculate.md) +- [Files page](../../repositories/files.md) diff --git a/docusaurus/docs/codacy-api/examples/obtaining-current-issues-in-repositories.mdx b/docusaurus/docs/codacy-api/examples/obtaining-current-issues-in-repositories.mdx new file mode 100644 index 0000000000..a77ccf6fd5 --- /dev/null +++ b/docusaurus/docs/codacy-api/examples/obtaining-current-issues-in-repositories.mdx @@ -0,0 +1,49 @@ +--- +title: Obtaining current issues in repositories +description: Example of how to obtain information about issues in a repository programmatically using the Codacy API endpoint searchRepositoryIssues. +--- + +import ApiExamplePaginationImportant from '../../_includes/ApiExamplePaginationImportant.mdx' + +To obtain information about the current issues in your repositories in a flexible way, use the Codacy API endpoint [searchRepositoryIssues](https://app.codacy.com/api/api-docs#searchrepositoryissues). + +For example, you may want to generate a report that includes only issues that belong to specific categories (such as security issues), or that have a minimum severity level. + +## Example: Obtaining security issues with level Error and Warning + +This example exports the pattern ID, issue level, file path, and timestamp for all security issues that have the severity level `Warning` or `Error` in the GitHub repository `codacy/website`. + +The example script: + +1. Defines the [account API token](../api-tokens.md#account-api-tokens) used to authenticate on the Codacy API. +1. Calls the endpoint [searchRepositoryIssues](https://app.codacy.com/api/api-docs#searchrepositoryissues) to retrieve information about the issues, filtering the results by security issues with the relevant severity levels. +1. Uses [jq](https://github.com/stedolan/jq) to select only the necessary data fields and convert the results to the CSV format. + +```bash +CODACY_API_TOKEN="" +GIT_PROVIDER="" # gh, ghe, gl, gle, bb, or bbe +ORGANIZATION="" +REPOSITORY="" + +curl -X POST "https://app.codacy.com/api/v3/analysis/organizations/$GIT_PROVIDER/$ORGANIZATION/repositories/$REPOSITORY/issues/search" \ + -H "api-token: $CODACY_API_TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ "levels": ["Error", "Warning"], "categories": ["Security"] }' \ +| jq -r ".data[] | [.patternInfo.id, .patternInfo.level, .filePath, .commitInfo.timestamp] | @csv" +``` + +Example output: + +```text +"BundlerAudit_Insecure Dependency","Error","Gemfile.lock","2021-06-16T11:46:24Z" +"Custom_Scala_PredictableRandom","Warning","src/test/database/SpecsHelper.scala","2021-05-21T16:20:15Z" +"Custom_Scala_PlayUntrustedHttpRequestParameter","Warning","app/RedirectController.scala","2021-04-26T15:06:33Z" +[...] +``` + + + +## See also + +- [Which metrics does Codacy calculate?](../../faq/code-analysis/which-metrics-does-codacy-calculate.md) +- [Issues page](../../repositories/issues.md) diff --git a/docusaurus/docs/codacy-api/examples/triggering-dast-scans.mdx b/docusaurus/docs/codacy-api/examples/triggering-dast-scans.mdx new file mode 100644 index 0000000000..87903992e0 --- /dev/null +++ b/docusaurus/docs/codacy-api/examples/triggering-dast-scans.mdx @@ -0,0 +1,94 @@ +--- +title: Trigger Dynamic Application Security Testing (DAST) scans +description: Instructions on how to trigger DAST/App using the API. +--- + +Thanks to the new app scanning capabilities available on the Security and risk management dashboard, it's now possible to automate application scanning via Codacy's API. This means that, with little effort, you'll be able to trigger app scanning on demand every time you deploy a new version of your app. + +:::caution +**App scanning is a business feature.** If you are a Codacy Pro customer, contact our customer success team to access a short trial. + +**Check your [permissions](../../organizations/roles-and-permissions-for-organizations.md).** Only git provider admins and organization managers will be able to create new targets and trigger scans (in app and via the API). +::: + + +## Creating targets + +Before the automation process itself, you need to create a target. Targets are individual configurations that define what Codacy will scan, including the target URL, its type (API or web application), and other type-dependent fields like OpenAPI specification and optional authentication details for API targets. + +Targets only need to be created once. Note that **targets are immutable** — if you need to change the URL, definition, or authentication, you'll need to delete the target and create a new one. + +:::caution + **Do not run API scans on production enviroments as our API scanners may cause potential downtime.** + Our DAST API scanner performs active security testing by sending a large number of requests to your application. When using authenticated API scanning, this activity can be even more intensive, as ZAP explores and probes more of your API surface. + + Depending on how your target environment is configured, this may: + + - Trigger rate limiting or throttling + - Appear as a high volume of traffic, similar to a load test + - Lead to incomplete scan results if key endpoints are blocked or limited + + We recommend running scans in a **test or staging environment**, or coordinating with your infrastructure team to ensure that your environment can safely handle the load. +::: + +To create a target, use the following API request: + +```bash +curl -X POST https://app.codacy.com/api/v3/organizations/{GIT_PROVIDER}/{ORGANIZATION}/dast/targets \ + -H "Content-Type: application/json" \ + -H "Accept: application/json" \ + -H "api-token: {API_KEY}" \ + -d '{ + "url": {TARGET_URL}, + "targetType": {TARGET_TYPE}, + "apiDefinitionUrl": {API_DEFINITION_URL}, + "apiAuthHeaders": { + "{HEADER_NAME}": "{HEADER_VALUE}" + } + }' +``` + +Replace the placeholders with your own values: + +| Field | Required | Description | +|-------|----------|-------------| +| **API_KEY** | true | [Account API token](../api-tokens.md#account-api-tokens) used to authenticate on the Codacy API | +| **GIT_PROVIDER** | true | Git provider hosting of the organization, using one of the values in the table below.
    **Options:** `gh` (GitHub Cloud), `ghe`(GitHub Enterprise), `gl` (Gitlab Cloud), `gle` (Gitlab Enterprise), `bb` (Bitbucket Cloud), `bbe` (Bitbucket Server) | +| **ORGANIZATION** | true | Name of the organization on the Git provider. You must have admin permissions over the organization on the Git provider.
    For example, `codacy` | +| **TARGET_URL** | true | URL of the Web app or API that will be scanned.
    Must start with `http://` or `https://`
    For example, `https://api.codacy.com/v1`| +| **TARGET_TYPE** | false | Type of target to be scanned
    **Options:** `webapp` (default), `openapi` or `graphql`| +| **API_DEFINITION_URL** | false * | The URL to a publicly accessible OpenAPI specification.
    *** Required for OpenAPI targets**| +| **HEADER_NAME** | false | Name of the authentication header.
    For example, `Authentication`| +| **HEADER_VALUE** | false | Value of the authentication header.
    For example, a token or API key| + +Once you create the target you'll get the target `id` as a response. You will use it to trigger DAST scans in the next section. + +:::note +Currently we only support one authentication header. If you need more, please let us know via support or your account representative. +::: + +## Trigger DAST analysis scans + +Once your targets are created you can trigger an analysis by calling the '[Analyze DAST target](https://api.codacy.com/api/api-docs#analyzedasttarget)' endpoint. + +```bash +curl -X POST https://app.codacy.com/api/v3/organizations/{GIT_PROVIDER}/{ORGANIZATION}/dast/targets/{DAST_TARGET_ID}/analyze \ + -H "Accept: application/json" \ + -H "api-token: {API_KEY}" +``` + +Replace the placeholders with your own values: + +- **API_KEY:** [Account API token](../api-tokens.md#account-api-tokens) used to authenticate on the Codacy API. +- **GIT_PROVIDER:** Git provider hosting of the organization (check the table on the example above). For example, `gh` for GitHub Cloud. +- **ORGANIZATION:** Name of the organization on the Git provider. For example, `codacy`. You must have admin permissions over the organization on the Git provider. +- **DAST_TARGET_ID:** Identifier of a DAST target to analyze (obtained in the [previous section](./triggering-dast-scans.md#creating-targets). For example, `457`. You must have admin permissions over the organization on the Git provider. + +Scans occur asynchronously. To monitor an ongoing scan you can use the [target management page in Codacy](../../organizations/managing-security-and-risk.md#app-scanning). Once completed, you can access all scan results by navigating to the **Security dashboard**, selecting the **Findings tab** and filtering by **Scan types > DAST/App scanning**, or by clicking on a configured target to expand all of that target's results. +Additionaly, you can use the `SearchSRMItems` endpoint to filter findings by their DAST target URL with the following request: +```bash +curl -X POST https://app.codacy.com/api/v3/organizations/gh/codacy/security/items/search \ + -H "Accept: application/json" \ + -H "api-token: {API_KEY}" \ + -d '{"statuses":["OnTrack","Overdue","DueSoon"],"dastTargetUrls":["example.com]}' +``` diff --git a/docusaurus/docs/codacy-api/examples/uploading-dast-results.mdx b/docusaurus/docs/codacy-api/examples/uploading-dast-results.mdx new file mode 100644 index 0000000000..2a9d02f983 --- /dev/null +++ b/docusaurus/docs/codacy-api/examples/uploading-dast-results.mdx @@ -0,0 +1,104 @@ +--- +title: Uploading DAST results to Codacy +description: Instructions on how to upload DAST results to Codacy using the API. +--- + +To ensure the security of your web applications, Codacy allows you to upload DAST (dynamic application security testing) results from [Zed Attack Proxy (ZAP)](https://www.zaproxy.org/) directly to Codacy and monitor them as findings under [Security and risk management](../../organizations/managing-security-and-risk.md). + +## Uploading results to Codacy + +1. Use [ZAP](https://www.zaproxy.org/) to perform DAST on your application and generate a report in the [Traditional JSON format](https://www.zaproxy.org/docs/desktop/addons/report-generation/report-traditional-json/). + + For details on generating reports in ZAP, refer to the [ZAP documentation](https://www.zaproxy.org/docs/). + +1. Upload the report to Codacy using the API endpoint [uploadDASTReport](https://app.codacy.com/api/api-docs#uploaddastreport): + + :::caution + The DAST report must be under 20MB in size. Please also guarantee that @generated timestamps are in an English locale, and use the default ZAP format (EEE, d MMM yyyy HH:mm:ss), as otherwise the report won't be processed. + ::: + + ```bash + curl -X POST https://app.codacy.com/api/v3/organizations///security/tools/dast//reports \ + -H 'api-token: ' \ + -H 'Content-Type: multipart/form-data' \ + -H 'Accept: application/json' \ + -F 'file=@' \ + -F 'reportFormat=json' + ``` + +Replace the placeholders with your own values: + +- **API_KEY:** [Account API token](../api-tokens.md#account-api-tokens) used to authenticate on the Codacy API. +- **GIT_PROVIDER:** Git provider hosting of the organization, using one of the values in the table below. For example, `gh` for GitHub Cloud. + + | Value | Git provider | + |-------|-------------------| + | `gh` | GitHub Cloud | + | `ghe` | GitHub Enterprise | + | `gl` | GitLab Cloud | + | `gle` | GitLab Enterprise | + | `bb` | Bitbucket Cloud | + | `bbe` | Bitbucket Server | + +- **ORGANIZATION:** Name of the organization on the Git provider. For example, `codacy`. You must have admin permissions over the organization on the Git provider. + +- **TOOL_NAME:** Name of the tool used to generate the report. Currently, only ZAP is supported. + +- **REPORT_PATH:** Path to the file containing the DAST report. + +Replace placeholders with your specific details to complete the upload. + +This process seamlessly integrates the security insights of third-party DAST tools with Codacy for a comprehensive security overview. + +## Retrieving uploaded results on Codacy + +To retrieve a list of uploaded DAST reports, access the Codacy API endpoint [listDASTReports](https://api.codacy.com/api/api-docs#listdastreports): + +```bash +curl -X GET https://api.codacy.com/api/v3/organizations///security/dast/reports \ + -H 'api-token: ' \ + -H 'Accept: application/json' +``` + +Replace the placeholders with your own values: + +- **API_KEY:** [Account API token](../api-tokens.md#account-api-tokens) used to authenticate on the Codacy API. +- **GIT_PROVIDER:** Git provider hosting of the organization, using one of the values in the table below. For example, `gh` for GitHub Cloud. + + | Value | Git provider | + |-------|-------------------| + | `gh` | GitHub Cloud | + | `ghe` | GitHub Enterprise | + | `gl` | GitLab Cloud | + | `gle` | GitLab Enterprise | + | `bb` | Bitbucket Cloud | + | `bbe` | Bitbucket Server | + +- **TOOL_NAME:** Name of the tool used to generate the report. Currently, only ZAP is supported. + +This endpoint provides a list of all DAST reports uploaded to Codacy, allowing you to check the status and details of each report. + +## Example: Uploading ZAP DAST results + +Use this example Bash script to upload the ZAP DAST report to Codacy. This example can be adapted to fit your specific needs. + +The example script: + +1. Defines the [API token](../api-tokens.md#account-api-tokens) used to authenticate on the Codacy API. +1. Defines the path and filename of the file containing the DAST report. +1. Calls the endpoint [uploadDASTReport](https://app.codacy.com/api/api-docs#uploaddastreport) to upload the report to Codacy. + +```bash +CODACY_API_TOKEN="" +GIT_PROVIDER="" # e.g., gh for GitHub +ORGANIZATION_NAME="" +TOOL_NAME="" # e.g., ZAP +REPORT_FILE_PATH="zap-report.json" + +curl -X POST https://app.codacy.com/api/v3/organizations/$GIT_PROVIDER/$ORGANIZATION_NAME/security/tools/dast/$TOOL_NAME/reports \ + -H "api-token: $CODACY_API_TOKEN" \ + -H "Content-Type: multipart/form-data" \ + -H "Accept: application/json" \ + -F "file=@$REPORT_FILE_PATH" \ + -F "reportFormat=json" +``` diff --git a/docusaurus/docs/codacy-api/images/codacy-api-tokens-account-modal.png b/docusaurus/docs/codacy-api/images/codacy-api-tokens-account-modal.png new file mode 100644 index 0000000000..0e3cee4888 Binary files /dev/null and b/docusaurus/docs/codacy-api/images/codacy-api-tokens-account-modal.png differ diff --git a/docusaurus/docs/codacy-api/images/codacy-api-tokens-account-table.png b/docusaurus/docs/codacy-api/images/codacy-api-tokens-account-table.png new file mode 100644 index 0000000000..e1208976d7 Binary files /dev/null and b/docusaurus/docs/codacy-api/images/codacy-api-tokens-account-table.png differ diff --git a/docusaurus/docs/codacy-api/images/codacy-api-tokens-account.png b/docusaurus/docs/codacy-api/images/codacy-api-tokens-account.png new file mode 100644 index 0000000000..1ae2573022 Binary files /dev/null and b/docusaurus/docs/codacy-api/images/codacy-api-tokens-account.png differ diff --git a/docusaurus/docs/codacy-api/images/codacy-api-tokens-repository.png b/docusaurus/docs/codacy-api/images/codacy-api-tokens-repository.png new file mode 100644 index 0000000000..a26662079a Binary files /dev/null and b/docusaurus/docs/codacy-api/images/codacy-api-tokens-repository.png differ diff --git a/docusaurus/docs/codacy-api/using-the-codacy-api.mdx b/docusaurus/docs/codacy-api/using-the-codacy-api.mdx new file mode 100644 index 0000000000..1fe932983c --- /dev/null +++ b/docusaurus/docs/codacy-api/using-the-codacy-api.mdx @@ -0,0 +1,194 @@ +--- +title: Using the Codacy API +--- + +The Codacy API allows you to programmatically retrieve and analyze data from Codacy and perform a few configuration changes. + +Codacy supports two API versions but we strongly recommend using the new API v3 when possible since it's the version being actively developed. Import the OpenAPI 2.0 definition provided below into your development tools to help bootstrap your integration with Codacy. + + + + + + + + + + + + + + + + + + + + {/**/} + + + + + + + + + + + + + +
    API v3 (recommended)API v2
    Endpoint documentationhttps://api.codacy.com/api/api-docshttps://api.codacy.com/api-docs
    OpenAPI 2.0 definitionhttps://api.codacy.com/api/api-docs/swagger.yaml-
    Base URLhttps://api.codacy.com/api/v3https://api.codacy.com/
    Overview +

    Use the new endpoints to access and manipulate the following resources, among others:

    +
      +
    • Analysis details, issue and ignored issue details, repository quality settings
    • +
    • Account details and API token management
    • +
    • Organization details and join request management
    • +
    • People management
    • +
    • Repository management and file details
    • +
    • Tool and code pattern details
    • +
    +
    +

    Use the legacy endpoints to access and manipulate the following resources:

    +
      +
    • Commit code quality details and deltas
    • +
    • Project details and configurations, file code quality and issue details
    • +
    +
    + +:::important +**If you're using Codacy Self-hosted** you must use your own Codacy instance domain name in the API URLs to access the endpoint documentation matching your Codacy Self-hosted version and to call the endpoints on your Codacy instance. + +For example, use the following URLs for the API v3 endpoint documentation and endpoints: + +``` +https:///api/api-docs +https:///api/v3 +``` +::: + +## Authenticating requests + +Most API endpoints require that you authenticate using an API token. After [obtaining the necessary tokens](api-tokens.md), include them in your request headers using the format `api-token: ` or `project-token: `. + +:::note +Currently, all API v3 endpoints that require authentication must use **account API tokens**, while the API v2 endpoints require either **account or repository API tokens**. + +Performing `GET` requests for public repositories doesn't require authentication. +::: + +For example, to make a request to an API v3 endpoint that requires an account API token: + +```bash +curl -X GET 'https://api.codacy.com/api/v3/user/organizations/gh' \ + -H 'api-token: ' +``` + +Or to make a request to an API v2 endpoint that requires a repository API token: + +```bash +curl -X GET 'https://api.codacy.com/2.0/commit/da275c14ffab6e402dcc6009828067ffa44b7ee0' \ + -H 'project-token: ' +``` + +## Using parameters in requests + +Most API endpoints require that you specify parameters. + +**For `GET` requests**, specify parameters directly as path segments of the endpoint URLs. Some endpoints also accept optional query string parameters. + +For example, to call the endpoint [getRepositoryWithAnalysis](https://api.codacy.com/api/api-docs#getrepositorywithanalysis) with the parameters: + +- provider: `gh` +- remoteOrganizationName: `codacy` +- repositoryName: `docs` +- branch (query string): `api-overview` + +```bash +curl -X GET 'https://app.codacy.com/api/v3/analysis/organizations/gh/codacy/repositories/docs?branch=api-overview' \ + -H 'api-token: ' +``` + +**For `POST`, `PATCH`, and `DELETE` requests**, besides the parameters included in the URL you may also need to include a JSON body. + +For example, to call the endpoint [searchRepositoryIssues](https://api.codacy.com/api/api-docs#searchrepositoryissues) specifying the issue levels `Error` and `Warning` in the body: + +```bash +curl -X POST 'https://app.codacy.com/api/v3/analysis/organizations/gh/codacy/repositories/docs/issues/search' \ + -H 'api-token: ' \ + -H 'Content-Type: application/json' \ + -d '{"levels": ["Error", "Warning"]}' +``` + +## Using pagination + +Endpoints that return lists containing a potential large number of results use cursor-based pagination to return the results in small batches. + +These endpoints return the results together with a `pagination` object: + +- If the `pagination` object **includes** a `cursor`, obtain the next page of results by calling the endpoint again using the `cursor` from the previous response as a query string parameter + + If the `pagination` object **doesn't include** a `cursor`, the endpoint returned the last page of results + +- Use the query string parameter `limit` to configure the number of results that the endpoint returns in each page. The maximum `limit` is 1000 and the default is 100 +- The `total` is the total number of results that the endpoint can return + +:::note +To make sure that you receive all results when calling an endpoint with pagination, repeat the process above until the response doesn't include the cursor to obtain another page of results. +::: + +For example, the following command requests the first 10 repositories in the Codacy GitHub organization: + +```bash +curl -X GET 'https://app.codacy.com/api/v3/organizations/gh/codacy/repositories?limit=10' + -H 'api-token: ' +``` + +The response includes the first 10 results, as well as the cursor to obtain the next page of results: + +```json +{ + "data": [ + ... + ], + "pagination": { + "cursor": "codacy_2", + "limit": 10, + "total": 156 + } +} +``` + +To obtain the next page of results, it's necessary to include the `cursor` from the previous page as a parameter: + +```bash +curl -X GET 'https://app.codacy.com/api/v3/organizations/gh/codacy/repositories?limit=10&cursor=codacy_2' + -H 'api-token: ' +``` + +If you continue requesting more pages the endpoint will eventually return a `pagination` object that doesn't include a `cursor`. This means that you've reached the last page of results: + +```json +{ + "data": [ + ... + ], + "pagination": { + "limit": 10, + "total": 156 + } +} +``` + +## Request rate limit + +**On Codacy Cloud** the number of requests that you can perform to the Codacy API is rate limited to help us provide a reliable service: + +- The limit is **2500 requests per 5 minutes and per source IP address** +- When a request is rate limited, Codacy responds with an HTTP 503 or 504 error code and you should wait before attempting the request again + +Although it's possible for you to perform short bursts of requests to the Codacy API, you should always use a delay between requests to ensure that your API client doesn't hit the rate limits. + +The request rate limit doesn't apply to Codacy Self-hosted. diff --git a/docusaurus/docs/codacy-guardrails/_order.ts b/docusaurus/docs/codacy-guardrails/_order.ts new file mode 100644 index 0000000000..04a5c529d6 --- /dev/null +++ b/docusaurus/docs/codacy-guardrails/_order.ts @@ -0,0 +1,9 @@ +export const codacyGuardrailsOrder = [ + 'codacy-guardrails/codacy-guardrails-getting-started', + 'codacy-guardrails/codacy-guardrails-how-to-use', + 'codacy-guardrails/codacy-guardrails-how-to-configure-rules', + 'codacy-guardrails/codacy-guardrails-limitations', + 'codacy-guardrails/codacy-guardrails-troubleshooting', + 'codacy-guardrails/codacy-guardrails-faq', +]; + diff --git a/docusaurus/docs/codacy-guardrails/codacy-guardrails-faq.md b/docusaurus/docs/codacy-guardrails/codacy-guardrails-faq.md new file mode 100644 index 0000000000..9e04179404 --- /dev/null +++ b/docusaurus/docs/codacy-guardrails/codacy-guardrails-faq.md @@ -0,0 +1,91 @@ +--- +title: FAQs +--- + +## How do I install Codacy Guardrails? +Please have a look at our [documentation](codacy-guardrails-getting-started.md). + +## Does Guardrails only work with AI-generated code? +No. While Guardrails does scan and autofix AI code as part of the agent flow, it scans any code shown in your IDE in real-time, regardless of how it was written. + +## How's Guardrails different from Codacy’s traditional analysis? +Guardrails is IDE-first and real-time. It complements Codacy’s platform analysis by catching issues earlier in the development cycle. + +## Does Guardrails work offline? +Yes, local scanning via Codacy CLI works offline. API-based features (like querying metrics) require connectivity. + +## Which AI security and quality standards can I enforce with Guardrails? +Codacy Guardrails detects and autoremediate security risks and quality issues in JavaScript, TypeScript, Python, and Java, including: + +- SAST vulnerabilities +- Hardcoded secrets +- Insecure dependencies +- Error prone code +- Performance issues +- Best practices +- Complex code +- Code duplications +- Styling violations + +Configuring and enforcing coding standards at scale across all IDEs in your organization requires a Codacy Team or Business subscription. + +## Is my data secure? +Codacy Guardrails isn't a large language model, but an IDE extension that uses an MCP Server to communicate with existing AI coding agents owned by the user. + +## When I change some analysis configuration in the UI, is it automatically applied to Guardrails? +We're still working on this feature but in order to update the new tool configuration. you should run the command in your repository: + +``` bash +codacy-cli init +``` + +This way Codacy will run the latest configuration. + +## Does guardrails generate code for me? +Guardrails itself doesn’t generate anything but we inform the AI agent where issues are located and scan generated code using the Codacy CLI. + +## How much does Guardrails cost? +Codacy Guardrails is a free IDE Extension for local scanning of AI-generated and human-written code, **available free of charge to all developers.** + +Check our [Team and Organization plans](https://www.codacy.com/pricing) to unlock: + +- Central configuration and enforcement of AI coding standards across teams and projects +- Query and autofix existing problems across your codebase from the AI chat panel +- Generate custom security and code quality reports using AI prompts +- Full access to the Codacy Cloud platform including: + +- Pipeline-less AppSec and code quality scans +- PR merge gates +- Team dashboards +- Security reports +- DAST pipelines +- Jira integration + +## Does Guardrails work with all OS? +Guardrails is supported on MacOS, Linux, and Windows (via [WSL](https://learn.microsoft.com/en-us/windows/wsl/install)) + +## Can I use Guardrails without an AI copilot? +Codacy Guardrails is designed to be installed from our IDE extension for VS Code, Cursor and Windsurf, but as long as you have an AI code generator that's compatible with the MCP protocol you can also add Guardrails into your MCP configuration manually. + +Without an AI coding agent, you can still use the IDE extension for local analysis and PR check information. + +## How can I install a specific version of the IDE extension? + +If you wish to continue using a previous version a little longer, you can do so by: + +1. Open the Extensions tab + +2. Select `Codacy` + +3. Click on the down arrow on the right of the Uninstall button + +4. Select `Install specific version...` + + ![install specific version](images/install-specific-version.png) + +5. Select the version you want on the top search bar + +6. Click on `Restart Extensions` when that button appears + +Keep in mind that the IDE extension is under active development, so be sure to check for updates regularly. +To revert to the latest version, click on `Update`. diff --git a/docusaurus/docs/codacy-guardrails/codacy-guardrails-getting-started.md b/docusaurus/docs/codacy-guardrails/codacy-guardrails-getting-started.md new file mode 100644 index 0000000000..f7a31365ad --- /dev/null +++ b/docusaurus/docs/codacy-guardrails/codacy-guardrails-getting-started.md @@ -0,0 +1,350 @@ +--- +title: Getting Started +--- + +Codacy Guardrails is a brand new way of enforcing code security and quality standards for AI-generated code, built into the free Codacy IDE Extension for VSCode, Copilot, Cursor, and Windsurf. Guardrails help developers ship safer, cleaner AI code by applying best practices and blocking insecure patterns while the code is being generated. + +Besides real-time AI code scanning, Guardrails users can now prompt all their Codacy findings, without ever leaving the AI chat panel inside their IDE. + +**New to Codacy Guardrails?** [Check our blog post](https://blog.codacy.com/codacy-guardrails-free-real-time-enforcement-of-security-and-quality-standards) + + + + +# VSCode-based IDEs + +## Prerequisites + +- git +- node.js - ensure the `npx` command runs without issues +- curl + +### Supported Operating Systems + +- macOS +- Linux +- Windows (via WSL) + +:::caution +**For Windows users: Windows WSL** (a feature that allows you to run a Linux environment directly on Windows, without the need for a virtual machine or dual-boot setup) is the only way you can use this feature for now, but we're still working to fully support Windows. +We currently only support VSCode, Cursor, and Windsurf on Windows. +::: + + +### Supported IDEs + +- Visual Studio Code +- Cursor +- Windsurf + +:::note +For Visual Studio Code, the Insiders version is recommended for its faster performance and compatibility with Codacy Guardrails. However, since it's a beta version, you may encounter occasional issues. +::: + +### Built-in Scanners + +- Trivy +- Semgrep +- ESLint +- Pylint +- PMD +- dartanalyzer +- [Lizard](https://docs.codacy.com/release-notes/cloud/cloud-2025-02-adding-ruff-lizard/#lizard) +- Revive + +## How to install - Quick Guide {#how-to-install-quick-guide} + +#### Note for Windows users: +To take advantage of Codacy Guardrails on Windows, you might need to setup WSL first, [check the steps here.](#how-to-install-wsl) + +### 1. Download the extension + +- [Visual Studio Code](https://tinyurl.com/codacy-vscode-extension) +- [Cursor](http://tinyurl.com/codacy-cursor) +- [Windsurf](http://tinyurl.com/codacy-windsurf) +- [IntelliJ IDEA](https://tinyurl.com/codacy-jetbrains-extension) + +This will open the Codacy Extension in your IDE Marketplace. Click **Install** + +![Install Extension](images/install-codacy-extension.png) + + +### 2. Install and activate the Codacy CLI for local analysis + +Click on the button **Install Codacy CLI** + +![Install CLI](images/codacy-extension-activate-cli.png) + +It will create a folder in your local repository called **.codacy** with all needed configuration: + +- The configuration from all built-in scanners +- Codacy CLI script to run analysis locally + +:::note +If you don't want this folder to be part of your repository in future commits but continue working with it locally, please add **.codacy** to your .gitignore file +::: + +:::note +The IDE extension will ignore any CLI version already installed (e.g. through brew or other package manager) on the machine. +::: + + +### 3. Check if the Codacy MCP Server is properly setup + +Codacy MCP Server will be installed automatically when starting the extension, and an instructions file will be created in your workspace. + +If you don't want Guardrails to automatically generate the instructions file, go to the extension's settings and set the instructions generation setting to manual. + +![Guardrails instructions setting](images/guardrails-instructions-setting.png) + +:::caution +The absence of the instructions file will impact the Guardrails experience. +::: + +You can later generate the instructions manually from the Guardrails section of the extension. + +![Generate instructions file](images/guardrails-generate-instructions-file.png) + +### 4. After everything is set up, you should now be able to interact with Codacy via AI chat. +* Remember that for you to be able to interact with Codacy MCP server, you must be on the `Agent` mode of the chat, not the default `Ask` mode. +* If you're still having issues with the MCP server, try to run the command `Preferences: Open User Settings (JSON)`, look for the Codacy MCP server settings and right on top of it you'll should see a `Start` option. Click on it and, if unsuccessful, go to `View > Debug Console` and check for errors. Don't forget to ensure you have `node.js` and `npx` installed and set up. + +## How to install - WSL {#how-to-install-wsl} + +### 1. Install or update [WSL.](https://learn.microsoft.com/en-us/windows/wsl/install) + +### 2. Install `curl` on your WSL instance if it's not installed already. +* This will depend on the Linux distribution you are using, but for example in Debian and Ubuntu the command will be something like `sudo apt update && sudo apt install curl`. Execute the command on a WSL terminal. + +### 3. Now you should be able to install the Codacy extension without issues. Go through the steps [here](#how-to-install-quick-guide). + +## How to install - Manually + +### 1. Install and activate the Codacy CLI for local analysis {#install-cli} + +#### Download + +##### MacOS (brew) + +To install `codacy-cli` using Homebrew: + +```bash +brew install codacy/codacy-cli-v2/codacy-cli-v2 +``` + +##### Linux + +For Linux, we rely on the **codacy-cli.sh** script in the root. To download the CLI, run: + +```bash +bash <(curl -Ls https://raw.githubusercontent.com/codacy/codacy-cli-v2/main/codacy-cli.sh) +``` +You can either put the downloaded script in a specific file or create an alias that will download the script and look for changes: + +```bash +alias codacy-cli="bash <(curl -Ls https://raw.githubusercontent.com/codacy/codacy-cli-v2/main/codacy-cli.sh)" +``` + +#### Installation + +Before running the analysis, install the specified tools: + +```bash +codacy-cli install +``` + +### 2. Install MCP Server {#install-mcp-server} + +If you want to use MCP Server with a NPM package you should download it from [here](https://www.npmjs.com/package/@codacy/codacy-mcp) + +:::caution +You can find some limitations using this approach because the AI doesn't automatically analyse the code generated unless there's a rule set for it to do so. When using the IDE extension (VS Code, Cursor, or Windsurf), we create those AI rules for the workspace, but if you are installing the MCP manually, you will need to create those rules by yourself. Let us know if you you plan to use this approach, so we can provide more information +::: + +#### Setup + +##### Cursor, Windsurf and Claude Desktop + +Depending on what IDE you are connecting the MCP Server to, you can use the following methods: + +- Cursor: edit the `.cursor/mcp.json` file to add the following +- Windsurf: edit the `.codeium/windsurf/mcp_config.json` file to add the following +- Claude Desktop: edit the `claude_desktop_config.json` file to add the following + +```json +{ + "mcpServers": { + "codacy": { + "command": "npx", + "args": ["-y", "@codacy/codacy-mcp"], + "env": { + "CODACY_ACCOUNT_TOKEN": "", + "CODACY_CLI_VERSION": "" + } + } + } +} +``` + +##### VS Code with Copilot + +For connecting the MCP Server to Copilot in VS Code, add the following to the global config of the IDE: + +```json +{ + "mcp": { + "inputs": [], + "servers": { + "codacy": { + "command": "npx", + "args": ["-y", "@codacy/codacy-mcp"], + "env": { + "CODACY_ACCOUNT_TOKEN": "", + "CODACY_CLI_VERSION": "" + } + } + } + } +} +``` + +You can open the user settings.json file in: + +`View > Command Palette > Preferences: Open User Settings (JSON)` + +Or open the general settings.json file directly, which according to your OS should be located in: + +- for macOS: `~/Library/Application Support/Code/User/settings.json` +- for Windows: `%APPDATA%\Code\User\settings.json` +- for Linux: `~/.config/Code/User/settings.json` + +![Settings.json in VSCode](images/settings-json-vscode.png) + +Make sure you update the value of `CODACY_ACCOUNT_TOKEN` with your [API token](../codacy-api/api-tokens.md). + +a. Above the MCP Server configuration in **Settings.json** file, you can Click in the command **Start** + +![Start MCP Server in VSCode](images/start-mcp-server-vscode.png) + +b. Make sure you have Agent mode enabled: [vscode://settings/chat.agent.enabled](vscode://settings/chat.agent.enabled) + +c. Open the Copilot chat and switch the mode to `Agent`. You can check that the MCP server was enabled correctly by clicking on the `Select tools` icon, which should list all the available Codacy tools. + +![Copilot Agent with Codacy tools](images/copilot_agent.png) + + +# JetBrains IDEs + + +### Supported Operating Systems + +- macOS +- Linux +- Windows (via WSL) + +:::caution +**For Windows users: Windows WSL** (a feature that allows you to run a Linux environment directly on Windows, without the need for a virtual machine or dual-boot setup) is the only way you can use this feature for now, but we're still working to fully support Windows. **Only local analysis** are supported for Windows, as MCP support for JetBrains IDEs is still not completely done. +::: + + +### Supported IDEs + +- IntelliJ IDEA +- PyCharm +- PhpStorm +- Others in the suite + +:::note +For JetBrains IDEs, IntelliJ isn't the only supported editor, but is our primary focus. If you use other editors such as PyCharm and run into any issues, feel free to open an issue in our extension's [repository](https://github.com/codacy/codacy-intellij-extension). Check the [extension page](https://tinyurl.com/codacy-jetbrains-extension) on the marketplace to see the full list of supported IDEs. +::: + +### Built-in Scanners + +- Trivy +- Semgrep +- ESLint +- Pylint +- PMD +- dartanalyzer +- [Lizard](https://docs.codacy.com/release-notes/cloud/cloud-2025-02-adding-ruff-lizard/#lizard) +- Revive + +## How to install - JetBrains Quick Guide {#how-to-install-quick-guide-jetbrains} + +#### Note for Windows users: +To take advantage of Codacy Guardrails on Windows, you need to set up WSL first; [check the steps here](#how-to-install-wsl). **Only local analysis** are supported for Windows, as MCP support for JetBrains IDEs is still not completely done. + +### 1. Install the extension + +You can either install the dependency from the [JetBrains marketplace](https://tinyurl.com/codacy-jetbrains-extension) or search for it directly in your Codacy plugin's settings. + +:::note +If you don’t see the Codacy plugin icon on the left taskbar after installing it, go to View > Tool Windows > Codacy +::: + +![Install Extension](images/install-codacy-extension-jetbrains.png) + + +### 2. Install and activate the Codacy CLI for local analysis + +Click on the Codacy button on the lower right part of your IDE, and click **Install CLI** + +![Install CLI](images/codacy-extension-activate-cli-jetbrains.png) + +It will create a folder in your local repository called **.codacy** with all needed configuration: + +- The configuration from all built-in scanners +- Codacy CLI script to run analysis locally + +:::note +If you don't want this folder to be part of your repository in future commits but continue working with it locally, please add **.codacy** to your .gitignore file +::: + +:::note +The IDE extension will ignore any CLI version already installed (for example, through brew or other package manager) on the machine. +::: + + +### 3. Install MCP Server + +#### a. Add the Codacy MCP Server + +After clicking on the Codacy icon on the lower right of the editor, click on **Install AiAgent MCP** + +![Add Codacy MCP Server](images/codacy-extension-activate-cli-jetbrains.png) + +#### b. Check if the Codacy MCP Server is enabled + +In your IntelliJ settings, search the settings for the agent of your choice (Junie or Copilot) and confirm that Codacy is listed on the MCP settings tab. + +![Codacy MCP Server is enabled](images/mcp-settings-extension-jetbrains.png) + +:::note +You need to install the plugin for your desired agent. Make sure to install JetBrains Junie or GitHub Copilot if you want to integrate the Codacy MCP. +::: + +#### c. Confirm the settings of your Codacy extension + +In your IntelliJ settings, search the settings for the Codacy extension and confirm that you're using the correct version of the CLI, as well as your preferred AI agent. + +If you want Codacy to generate the AI agent guidelines (which will instruct the agent to run the Codacy local analysis on changes, for example) for you, you should also enable this option in the editor settings. + +![Codacy MCP Server is enabled](images/extension-settings-jetbrains.png) + +#### d. Generate AI guidelines +Install the guidelines by clicking on **Install AiAgent Guidelines** on the Codacy icon on the lower right part of your IDE. + +![Install Agent Guidelines](images/codacy-extension-activate-cli-jetbrains.png) + +:::note +You need to install the plugin for your desired agent. Make sure to install JetBrains Junie or GitHub Copilot if you want to integrate the Codacy MCP. +::: + +### 4. Restart your IDE to apply changes + +### 5. After everything is set up, you should now be able to interact with Codacy via AI chat. +* Remember that for you to be able to interact with the Codacy MCP server, you must be on the `Agent` mode of the chat (`Code` on Junie), not `Ask` nor `Edit` mode. + +### 6. Start using your Agent and Codacy will be there with you! + +![Codacy Guardrails running in JetBrains](images/codacy-guardrails-junie.png) diff --git a/docusaurus/docs/codacy-guardrails/codacy-guardrails-how-to-configure-rules.md b/docusaurus/docs/codacy-guardrails/codacy-guardrails-how-to-configure-rules.md new file mode 100644 index 0000000000..0221d96124 --- /dev/null +++ b/docusaurus/docs/codacy-guardrails/codacy-guardrails-how-to-configure-rules.md @@ -0,0 +1,136 @@ +--- +title: How to customize the analysis rules for Codacy Guardrails +--- + +By default, if no API token is provided in the [MCP Server setup](codacy-guardrails-getting-started.md/#3-install-mcp-server), Codacy uses a predefined configuration that includes all recommended rules (or [code patterns](../repositories-configure/configuring-code-patterns.md) that you can find on many parts of our product) from the supported built-in scanners. + +However, when an API token is used, Codacy automatically retrieves the current rule configuration directly from your repository. + +You can configure your rules in one of two ways: + + +- Using [built-in scanner configuration files](#using-configuration-files)–for version-controlled setups. + +- Using the [Codacy UI](#using-the-codacy-ui)–for quick, manual adjustments. + +:::note +If you're already using a configuration file, please we recommend you can follow the first way. Otherwise, the second way is the best for you, so you can configure directly in the Codacy platform. +::: + +## Using configuration files + +The table below lists the configuration file names that Codacy detects and supports for each built-in scanner: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Scanner nameLanguagesFiles detectedOther info
    dartanalyzerDartanalysis_options.yamlCustomizing static analysis
    ESLint v8JavaScript, TypeScript.eslintrc.js, .eslintrc.cjs, .eslintrc.yaml, .eslintrc.yml, .eslintrc.json
    PMDApex, Java, JavaScript, JSP, PL/SQL, XML, Velocity and Visualforceruleset.xml, apex-ruleset.xmlSupports configuration file in directories other than root and can search up to 5 directories into the repository.
    PylintPythonpylintrc, .pylintrcPlugins
    SemgrepApex, C++, C#, Dockerfile, Elixir, GitHub Actions, Go, Java, JavaScript, Kotlin, PHP, Python, Ruby, Rust, Scala, Shell, Swift, Terraform, TypeScript.semgrep.yaml
    + + +To use a configuration file for a static analysis tool: + +1. Make sure the configuration file is located in the root of the [default Codacy branch](../repositories-configure/managing-branches.mdx). + +2. Open the repository **Code patterns** page, select the tool of interest, and activate the toggle to use a configuration file. + +:::note +- After activating a configuration file for a tool, Codacy uses that configuration file even if you [exclude it from Codacy analysis](../repositories-configure/ignoring-files.md). +- When [using a tool configuration file alongside a coding standard](../organizations/using-coding-standards.md#using-with-tool-configuration), the configuration file controls the code patterns, while the coding standard controls whether the tool is enabled or disabled. +- Codacy uses the version of the configuration file **in the branch being analyzed**. For example, if you open a pull request that includes changes to the configuration file, the analysis results take those changes into account. +- If Codacy analyzes a branch that doesn't include the configuration file, Codacy reverts to using the code patterns configured for the tool before you selected the option **Configuration file** on the Code patterns page. +- For performance reasons, when you update pattern settings using a configuration file, Codacy may display outdated messages for issues identified previously by those patterns. +::: + + +![Using a configuration file](images/code-patterns-config-file.png) + + + +## Using the Codacy UI + +If you want to use Codacy UI, there are two ways you can follow to configure the built-in scanner rules: + +- Using the [Code Patterns](../repositories-configure/configuring-code-patterns.md) configuration, if you want to configure the rules per repository or +- Using [Coding Standards](../organizations/using-coding-standards.md), if you want to configure the rules for multiple repositories + +### Code Patterns + +By default, Codacy analyzes your repositories using a subset of the supported analysis scanners and rules. These defaults are based on current best practices and community feedback, and you can adapt them to your needs. This feature is available in every repository you have on Codacy. + +In order to set up your rules, please follow the next steps: + + +1. Open your repository **Code patterns** page. + + ![Code patterns page](images/code-patterns.png) + +2. Enable or disable the tools that Codacy will use to analyze the repository. + + ![Toggling tools](images/code-patterns-toggle-tools.png) + +3. Select a tool to enable or disable its code patterns. To make it easier to find relevant patterns, use the filters above the pattern list. You can filter by [issue category](../faq/code-analysis/which-metrics-does-codacy-calculate.md#issues), status, severity level, or display only recommended code patterns. + + To see an explanation of the issues that a pattern detects and how to fix them, click the respective dropdown arrow. + + :::tip + - To enable a group of code patterns, use the filter to select the relevant group of patterns and click the checkbox in the header of the patterns list. + + - Codacy displays the tag **New** for one month next to the name of newly added code patterns. + ::: + + ![Configuring code patterns](images/code-patterns-configure.png) + +### Coding Standards + +Coding standards enable the analysis of multiple repositories with the same scanner and rules configurations, ensuring consistent code quality across your organization. Multiple coding standards can be applied to the same repository. For example, you can use coding standards to ensure that a group of repositories follow the same security rules or coding conventions. + +To apply or edit a repository's [coding standards](../organizations/using-coding-standards.md), click **Customize** in the **Following ...** section at the top of the **Code patterns** page. + +![Customize applied coding standards](images/code-patterns-cs-customize.png) + +Select the coding standards that you want to follow or stop following and click **Apply**. + +![Customize applied coding standards](images/code-patterns-cs-customize-modal.png) + +:::note +- Scanners and rules enabled by a coding standard are enforced and can't be disabled. +- You can add extra scanners and rules, if these aren't enabled by any applied coding standard. +::: diff --git a/docusaurus/docs/codacy-guardrails/codacy-guardrails-how-to-use.md b/docusaurus/docs/codacy-guardrails/codacy-guardrails-how-to-use.md new file mode 100644 index 0000000000..ae021a8c22 --- /dev/null +++ b/docusaurus/docs/codacy-guardrails/codacy-guardrails-how-to-use.md @@ -0,0 +1,80 @@ +--- +title: Using Codacy Guardrails +--- + +## Recommended configurations + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IDERecommended LLM
    Visual Studio CodeClaude 3.x Sonnet
    Visual Studio Code InsidersClaude 4.x Sonnet
    CursorClaude 4.x Sonnet
    WindsurfClaude 3.x Sonnet
    + +## Write secure, compliant AI code + +a. Let's run an prompt to create a webserver in Java + +```text +Create a lightweight webserver in Java. +``` + +![Prompt create a webserver in java](images/create-webserver-java.png) + +In response, it generated a compact, readable Java class using ServerSocket and raw streams to handle HTTP requests. Here’s what I got: + +![response to the webserver creation using AI](images/response-webserver.png) + +b. There's a call from MCP tool to analyse the code that was generated. Click in **Run tool** + +Codacy Guardrails starts analyzing it automatically using the Codacy CLI embedded in the agent’s flow. No configurations, no extra steps–it just works. + +It found an issue with PMD - the package name isn't correctly declared - and it will try to fix that with the right declaration. + +![analysis to the webserver implementation](images/analysis-webserver-implementation.png) + +c. After a new analysis, It shows us that it has 0 issues in the code + +![zero issues in the webserver implementation](images/no-issues-webserver.png) + +## Prompt Codacy from your IDE chat panel + +Once your repository is connected to Codacy, you can go beyond traditional static analysis and start interacting with your codebase using natural language prompts. + +a. Let's run a quick example with the prompt: + +```text +Can you list all security issues in my repository? +``` + +![Prompt list the security issues in my repository](images/prompt-list-security-issues-repository.png) + +b. Right after running this prompt, there is a MCP tool call to search all security issues in my repository. Click in **Run tool** + +![List the security issues in my repository](images/run-mcp-tool-list-security-issues.png) + +It will search for all open security issues in my repository. And it will list all them, showing the **title**, **priority**, **status** and the **link to the issue**, + +![List the security issues in my repository](images/list-security-issues.png) + +It turned security from a checklist into a dialogue—and that changes everything. diff --git a/docusaurus/docs/codacy-guardrails/codacy-guardrails-limitations.md b/docusaurus/docs/codacy-guardrails/codacy-guardrails-limitations.md new file mode 100644 index 0000000000..ccd02ca0e2 --- /dev/null +++ b/docusaurus/docs/codacy-guardrails/codacy-guardrails-limitations.md @@ -0,0 +1,7 @@ +--- +title: Limitations +--- + +## Limitations with Windows + +Windows WSL (a feature that allows you to run a Linux environment directly on Windows, without the need for a virtual machine or dual-boot setup) is the only way you can use this feature for now, but we're still working to fully support Windows. Additionally, at this point we're only supporting VSCode and VSCode-based IDEs on Windows. \ No newline at end of file diff --git a/docusaurus/docs/codacy-guardrails/codacy-guardrails-troubleshooting.md b/docusaurus/docs/codacy-guardrails/codacy-guardrails-troubleshooting.md new file mode 100644 index 0000000000..92e183bc90 --- /dev/null +++ b/docusaurus/docs/codacy-guardrails/codacy-guardrails-troubleshooting.md @@ -0,0 +1,36 @@ +--- +title: Troubleshooting +--- + +## Node + +### Claude Desktop + +When using NVM with Claude Desktop, NPX may not work. You should first install the MCP Server globally, and then use Node directly: + +```bash +npm install -g @codacy/codacy-mcp +``` + +```json +{ + "mcpServers": { + "codacy": { + "command": "/Users/yourusername/.nvm/versions/node/vXX.X.X/bin/node", + "args": ["/path-to/codacy-mcp/dist/index.js"], + "env": { + "CODACY_ACCOUNT_TOKEN": "", + "CODACY_CLI_VERSION": "" + } + } + } +} +``` + +## GitHub Copilot + +### MCP Policy Requirement + +If Copilot doesn't find any MCP servers or tools, you might be missing the required policy setting. If you are a member of an organization or enterprise with a Copilot Business or Copilot Enterprise plan, the "MCP servers in Copilot" policy must be enabled in order to use MCP with Copilot. This policy can be configured by organization owners in the Copilot settings. + +For more information about enabling this policy, see the [GitHub documentation on MCP prerequisites](https://docs.github.com/en/copilot/how-tos/provide-context/use-mcp/extend-copilot-chat-with-mcp#prerequisites). diff --git a/docusaurus/docs/codacy-guardrails/images/add-codacy-mcp-server.png b/docusaurus/docs/codacy-guardrails/images/add-codacy-mcp-server.png new file mode 100644 index 0000000000..e098df7b1d Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/add-codacy-mcp-server.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/analysis-webserver-implementation.png b/docusaurus/docs/codacy-guardrails/images/analysis-webserver-implementation.png new file mode 100644 index 0000000000..9e3e065256 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/analysis-webserver-implementation.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/codacy-extension-activate-cli-jetbrains.png b/docusaurus/docs/codacy-guardrails/images/codacy-extension-activate-cli-jetbrains.png new file mode 100644 index 0000000000..4061573fb1 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/codacy-extension-activate-cli-jetbrains.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/codacy-extension-activate-cli.png b/docusaurus/docs/codacy-guardrails/images/codacy-extension-activate-cli.png new file mode 100644 index 0000000000..25958fe7be Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/codacy-extension-activate-cli.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/codacy-extension-add-api-token-workspace.png b/docusaurus/docs/codacy-guardrails/images/codacy-extension-add-api-token-workspace.png new file mode 100644 index 0000000000..610503fb87 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/codacy-extension-add-api-token-workspace.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/codacy-extension-settings.png b/docusaurus/docs/codacy-guardrails/images/codacy-extension-settings.png new file mode 100644 index 0000000000..598430a411 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/codacy-extension-settings.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/codacy-guardrails-junie.png b/docusaurus/docs/codacy-guardrails/images/codacy-guardrails-junie.png new file mode 100644 index 0000000000..69e2d797cc Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/codacy-guardrails-junie.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/code-patterns-config-file.png b/docusaurus/docs/codacy-guardrails/images/code-patterns-config-file.png new file mode 100644 index 0000000000..7eeafbde72 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/code-patterns-config-file.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/code-patterns-configure.png b/docusaurus/docs/codacy-guardrails/images/code-patterns-configure.png new file mode 100644 index 0000000000..d48de41253 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/code-patterns-configure.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/code-patterns-cs-customize-modal.png b/docusaurus/docs/codacy-guardrails/images/code-patterns-cs-customize-modal.png new file mode 100644 index 0000000000..cde8b55352 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/code-patterns-cs-customize-modal.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/code-patterns-cs-customize.png b/docusaurus/docs/codacy-guardrails/images/code-patterns-cs-customize.png new file mode 100644 index 0000000000..b0906d0abf Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/code-patterns-cs-customize.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/code-patterns-toggle-tools.png b/docusaurus/docs/codacy-guardrails/images/code-patterns-toggle-tools.png new file mode 100644 index 0000000000..4f80db4d8d Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/code-patterns-toggle-tools.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/code-patterns.png b/docusaurus/docs/codacy-guardrails/images/code-patterns.png new file mode 100644 index 0000000000..881c82d3ea Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/code-patterns.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/copilot_agent.png b/docusaurus/docs/codacy-guardrails/images/copilot_agent.png new file mode 100644 index 0000000000..394e6a1698 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/copilot_agent.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/create-webserver-java.png b/docusaurus/docs/codacy-guardrails/images/create-webserver-java.png new file mode 100644 index 0000000000..9cb639a64f Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/create-webserver-java.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/extension-settings-jetbrains.png b/docusaurus/docs/codacy-guardrails/images/extension-settings-jetbrains.png new file mode 100644 index 0000000000..d8db415939 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/extension-settings-jetbrains.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/guardrails-generate-instructions-file.png b/docusaurus/docs/codacy-guardrails/images/guardrails-generate-instructions-file.png new file mode 100644 index 0000000000..da8c96143f Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/guardrails-generate-instructions-file.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/guardrails-instructions-setting.png b/docusaurus/docs/codacy-guardrails/images/guardrails-instructions-setting.png new file mode 100644 index 0000000000..5d8424b2ae Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/guardrails-instructions-setting.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/install-codacy-extension-jetbrains.png b/docusaurus/docs/codacy-guardrails/images/install-codacy-extension-jetbrains.png new file mode 100644 index 0000000000..8ac088b097 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/install-codacy-extension-jetbrains.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/install-codacy-extension.png b/docusaurus/docs/codacy-guardrails/images/install-codacy-extension.png new file mode 100644 index 0000000000..290e22736f Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/install-codacy-extension.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/install-specific-version.png b/docusaurus/docs/codacy-guardrails/images/install-specific-version.png new file mode 100644 index 0000000000..5777cf3690 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/install-specific-version.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/list-security-issues.png b/docusaurus/docs/codacy-guardrails/images/list-security-issues.png new file mode 100644 index 0000000000..ad78d156b3 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/list-security-issues.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/mcp-server-enabled.png b/docusaurus/docs/codacy-guardrails/images/mcp-server-enabled.png new file mode 100644 index 0000000000..8971a16271 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/mcp-server-enabled.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/mcp-settings-extension-jetbrains.png b/docusaurus/docs/codacy-guardrails/images/mcp-settings-extension-jetbrains.png new file mode 100644 index 0000000000..61bec02b0e Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/mcp-settings-extension-jetbrains.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/no-issues-webserver.png b/docusaurus/docs/codacy-guardrails/images/no-issues-webserver.png new file mode 100644 index 0000000000..29af6301b7 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/no-issues-webserver.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/prompt-list-security-issues-repository.png b/docusaurus/docs/codacy-guardrails/images/prompt-list-security-issues-repository.png new file mode 100644 index 0000000000..813b2db696 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/prompt-list-security-issues-repository.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/response-webserver.png b/docusaurus/docs/codacy-guardrails/images/response-webserver.png new file mode 100644 index 0000000000..8502a2c181 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/response-webserver.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/run-mcp-tool-list-security-issues.png b/docusaurus/docs/codacy-guardrails/images/run-mcp-tool-list-security-issues.png new file mode 100644 index 0000000000..583c00b625 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/run-mcp-tool-list-security-issues.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/settings-json-vscode.png b/docusaurus/docs/codacy-guardrails/images/settings-json-vscode.png new file mode 100644 index 0000000000..5bd89fe5dc Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/settings-json-vscode.png differ diff --git a/docusaurus/docs/codacy-guardrails/images/start-mcp-server-vscode.png b/docusaurus/docs/codacy-guardrails/images/start-mcp-server-vscode.png new file mode 100644 index 0000000000..290d7a91a9 Binary files /dev/null and b/docusaurus/docs/codacy-guardrails/images/start-mcp-server-vscode.png differ diff --git a/docusaurus/docs/coverage-reporter/_order.ts b/docusaurus/docs/coverage-reporter/_order.ts new file mode 100644 index 0000000000..bff9e03ea5 --- /dev/null +++ b/docusaurus/docs/coverage-reporter/_order.ts @@ -0,0 +1,7 @@ +export const coverageReporterOrder = [ + 'coverage-reporter/index', + 'coverage-reporter/alternative-ways-of-running-coverage-reporter', + 'coverage-reporter/uploading-coverage-in-advanced-scenarios', + 'coverage-reporter/troubleshooting-coverage-cli-issues', +]; + diff --git a/docusaurus/docs/coverage-reporter/alternative-ways-of-running-coverage-reporter.md b/docusaurus/docs/coverage-reporter/alternative-ways-of-running-coverage-reporter.md new file mode 100644 index 0000000000..71f5bdb5f9 --- /dev/null +++ b/docusaurus/docs/coverage-reporter/alternative-ways-of-running-coverage-reporter.md @@ -0,0 +1,176 @@ +--- +title: Alternative ways of running Coverage Reporter +description: There are alternative ways of running or installing Codacy Coverage Reporter, such as running a Docker image, using a GitHub Action or CircleCI orb, downloading a binary for your operating system, or building the binary from source. +--- + + +The following sections list the alternative ways of running or installing Codacy Coverage Reporter. + +:::caution +**If you're using Codacy Self-hosted** make sure that you use a Codacy Coverage Reporter version compatible with your Codacy instance. +::: + +## Bash script (recommended) {#bash-script} +The recommended way to run the Codacy Coverage Reporter is by using the [self-contained bash script `get.sh`](https://github.com/codacy/codacy-coverage-reporter/blob/master/get.sh) that automatically downloads and runs the most recent version of the Codacy Coverage Reporter: + +- On Ubuntu, run: + + ```bash + bash <(curl -Ls https://coverage.codacy.com/get.sh) report -r + ``` + +- On Alpine Linux, run: + + ```sh + wget -qO - https://coverage.codacy.com/get.sh | sh -s -- report -r + ``` + +:::note +Starting on version `13.0.0` the script automatically validates the checksum of the downloaded binary. To skip the checksum validation, define the following environment variable: + +```bash +export CODACY_REPORTER_SKIP_CHECKSUM=true +``` +::: + +The self-contained script can cache the binary. To avoid downloading the binary every time that the script runs, add one of the following directories to your CI cached folders: + +- `$HOME/.cache/codacy` on Linux +- `$HOME/Library/Caches/Codacy` on Mac OS X + +To use a specific version of the Codacy Coverage Reporter, set the following environment variable to one of the [released versions](https://github.com/codacy/codacy-coverage-reporter/releases): + +```bash +export CODACY_REPORTER_VERSION= +``` + +## Docker + +You can use Docker to run Codacy Coverage Reporter. + +Use the following command where `` is either one of the [released versions](https://github.com/codacy/codacy-coverage-reporter/releases), or `latest` to use the most recent version: + +```bash +docker run -v $PWD:/code codacy/codacy-coverage-reporter: report +``` + +## GitHub Action + +If you're using GitHub Actions to report coverage, you can use our GitHub Action [codacy/codacy-coverage-reporter-action](https://github.com/codacy/codacy-coverage-reporter-action). + +## CircleCI orb + +If you're using CircleCI to report coverage, you can use our orb [codacy/coverage-reporter](https://circleci.com/orbs/registry/orb/codacy/coverage-reporter). + +## Manually downloading the binary + +### Linux amd64 + +If you prefer, you can manually download and run the native `codacy-coverage-reporter` binary, either for the latest version or a specific one. + +You can use the scripts below to automatically check for the latest version of the binaries, download the binaries from either Codacy's public store or GitHub, and run them. + +- Using Codacy's public S3: + + ```bash + LATEST_VERSION="$(curl -Ls https://artifacts.codacy.com/bin/codacy-coverage-reporter/latest)" + curl -Ls -o codacy-coverage-reporter "https://artifacts.codacy.com/bin/codacy-coverage-reporter/${LATEST_VERSION}/codacy-coverage-reporter-linux" + chmod +x codacy-coverage-reporter + ./codacy-coverage-reporter report + ``` + +- Using GitHub: + + ```bash + curl -Ls -o codacy-coverage-reporter "$(curl -Ls https://api.github.com/repos/codacy/codacy-coverage-reporter/releases/latest | jq -r '.assets | map({name, browser_download_url} | select(.name | contains("codacy-coverage-reporter-linux"))) | .[0].browser_download_url')" + chmod +x codacy-coverage-reporter + ./codacy-coverage-reporter report + ``` + +### Java + +Use the Java binary to run Codacy Coverage reporter on other platforms, such as Linux x86, macOS, Windows, etc. + +You can use the scripts below to automatically check for the latest version of the Java binaries, download the binaries from either Codacy's public store or GitHub, and run them. + +- Using Codacy's public store: + + ```bash + LATEST_VERSION="$(curl -Ls https://artifacts.codacy.com/bin/codacy-coverage-reporter/latest)" + curl -Ls -o codacy-coverage-reporter-assembly.jar "https://artifacts.codacy.com/bin/codacy-coverage-reporter/${LATEST_VERSION}/codacy-coverage-reporter-assembly.jar" + java -jar codacy-coverage-reporter-assembly.jar report + ``` + +- Using GitHub: + + ```bash + curl -LS -o codacy-coverage-reporter-assembly.jar "$(curl -LSs https://api.github.com/repos/codacy/codacy-coverage-reporter/releases/latest | jq -r '.assets | map({name, browser_download_url} | select(.name | endswith(".jar"))) | .[0].browser_download_url')" + java -jar codacy-coverage-reporter-assembly.jar report + ``` + +### Validating the checksum of the binaries + +You can use the checksums [available for each release](https://github.com/codacy/codacy-coverage-reporter/releases) to validate the binaries that you download manually. You can use any tool of your choice to validate the checksum, as long as it uses the `SHA512` algorithm. + +For example, run the commands below to download and validate the checksum for the 13.0.0 Linux binary. Note that the command `sha512sum` expects to find the binary on the same directory and with the original name `codacy-coverage-reporter-linux`. + +```bash +curl -Ls -O https://github.com/codacy/codacy-coverage-reporter/releases/download/13.0.0/codacy-coverage-reporter-linux.SHA512SUM +sha512sum -c codacy-coverage-reporter-linux.SHA512SUM +``` + +## Building from source + +If you are having any issues with your installation, you can also build the coverage reporter from source. + +1. Clone the Codacy Coverage Reporter repository: + + ```bash + git clone https://github.com/codacy/codacy-coverage-reporter.git + ``` + +1. Run the command `sbt assembly` inside the local repository folder: + + ```bash + cd codacy-coverage-reporter + sbt assembly + ``` + + This will produce a file `target/codacy-coverage-reporter-assembly-.jar` that you can run. + +1. Execute this `.jar` in the repository where you want to upload the coverage. For example: + + ```bash + /java-project$ java -jar ../codacy-coverage-reporter/target/codacy-coverage-reporter-assembly-.jar report + ``` + +## Community supported alternatives + +### Maven plugin + +Thanks to the amazing job of [Gavin Mogan](https://github.com/halkeye) you can now send your coverage to Codacy using his Maven plugin [halkeye/codacy-maven-plugin](https://github.com/halkeye/codacy-maven-plugin)! Be sure to follow the instructions on his repository. + +### Travis CI + +If you are using Travis CI to report coverage, update your file `.travis.yml` to include the following blocks: + +```yaml +before_script: + - bash <(curl -Ls https://coverage.codacy.com/get.sh) download + +after_success: + - bash <(curl -Ls https://coverage.codacy.com/get.sh) +``` + +Make sure that you also [set your project or account API Token](index.md#authenticate) as an environment variable in your Travis CI job. + +### Gradle task + +If you're using Gradle to automate your CI/CD you can add use the following example task, where `` is the name of the task that generates your coverage report: + +```groovy +task uploadCoverage(type:Exec, dependsOn: ) { + description 'Uploads coverage data to Codacy.' + commandLine 'bash', '-c', 'bash <(curl -Ls https://coverage.codacy.com/get.sh) report' +} +``` diff --git a/docusaurus/docs/coverage-reporter/images/coverage-codacy-ui-logs.png b/docusaurus/docs/coverage-reporter/images/coverage-codacy-ui-logs.png new file mode 100644 index 0000000000..b8738de420 Binary files /dev/null and b/docusaurus/docs/coverage-reporter/images/coverage-codacy-ui-logs.png differ diff --git a/docusaurus/docs/coverage-reporter/images/coverage-codacy-ui.png b/docusaurus/docs/coverage-reporter/images/coverage-codacy-ui.png new file mode 100644 index 0000000000..5fa049b366 Binary files /dev/null and b/docusaurus/docs/coverage-reporter/images/coverage-codacy-ui.png differ diff --git a/docusaurus/docs/coverage-reporter/images/coverage-pr-commits.png b/docusaurus/docs/coverage-reporter/images/coverage-pr-commits.png new file mode 100644 index 0000000000..24233bc0d7 Binary files /dev/null and b/docusaurus/docs/coverage-reporter/images/coverage-pr-commits.png differ diff --git a/docusaurus/docs/coverage-reporter/images/coverage-pr-commits.svg b/docusaurus/docs/coverage-reporter/images/coverage-pr-commits.svg new file mode 100644 index 0000000000..304c2d4a19 --- /dev/null +++ b/docusaurus/docs/coverage-reporter/images/coverage-pr-commits.svg @@ -0,0 +1,4 @@ + + + +
    target branch
    target br...
    pull request
    branch
    pull request...
    Common ancestor
    commit
    Common ancestor...
    Head commit
    Head commit
    Text is not SVG - cannot display
    \ No newline at end of file diff --git a/docusaurus/docs/coverage-reporter/images/coverage-test-integration.png b/docusaurus/docs/coverage-reporter/images/coverage-test-integration.png new file mode 100644 index 0000000000..2c86b686bc Binary files /dev/null and b/docusaurus/docs/coverage-reporter/images/coverage-test-integration.png differ diff --git a/docusaurus/docs/coverage-reporter/images/coverage-validate.png b/docusaurus/docs/coverage-reporter/images/coverage-validate.png new file mode 100644 index 0000000000..c41bca9333 Binary files /dev/null and b/docusaurus/docs/coverage-reporter/images/coverage-validate.png differ diff --git a/docusaurus/docs/coverage-reporter/images/coverage-validate.svg b/docusaurus/docs/coverage-reporter/images/coverage-validate.svg new file mode 100644 index 0000000000..82709b44ec --- /dev/null +++ b/docusaurus/docs/coverage-reporter/images/coverage-validate.svg @@ -0,0 +1,4 @@ + + + +
    Commit that
    sets up coverage
    Commit thatsets up co...
    default branch
    default branch
    older feature branch
    older feature branch
    newer feature branch
    newer feature branch
    Text is not SVG - cannot display
    \ No newline at end of file diff --git a/docusaurus/docs/coverage-reporter/index.md b/docusaurus/docs/coverage-reporter/index.md new file mode 100644 index 0000000000..21c9116b5e --- /dev/null +++ b/docusaurus/docs/coverage-reporter/index.md @@ -0,0 +1,470 @@ +--- +title: Adding coverage to your repository +description: Generate coverage reports in a supported format and upload them to Codacy to monitor the code coverage of your repositories on Codacy. +--- + + +Code coverage is a metric used to describe the degree to which the source code of a program is tested. A program with high code coverage has been more thoroughly tested and has a lower chance of containing software bugs than a program with low code coverage. You can read more about the [basics of code coverage](https://blog.codacy.com/a-guide-to-code-coverage-part-1-code-coverage-explained/) on Codacy's blog. + +To monitor the code coverage of your repository on Codacy you must generate coverage reports for each commit on your CI/CD workflow, and then upload the coverage data to Codacy. + +Complete these main steps to set up coverage for your repository: + +1. **Generating coverage reports** + + Ensure that you're generating one of the code coverage report formats supported by Codacy on each push to your repository. + +1. **Uploading coverage data to Codacy** + + After each push to your repository, run the Codacy Coverage Reporter to parse your report file and upload the coverage data to Codacy. + +1. **Validating that the coverage setup is complete** + + Check if Codacy displays the coverage metrics for new commits and pull requests and troubleshoot the coverage setup if necessary. + +The next sections include detailed instructions on how to complete each step of the setup process. + +## 1. Generating coverage reports +Before setting up Codacy to display code coverage metrics for your repository you must have tests and use tools to generate coverage reports for the source code files in your repository. + +Consider the following when generating coverage reports for your repository: + +- There are many tools that you can use to generate coverage reports, but you must ensure that the coverage reports are in one of the formats that Codacy supports +- If your repository includes multiple programming languages, you may need to generate a separate coverage report for each language depending on the specific languages and tools that you use +- Make sure that you generate coverage reports that include coverage data for all tested source code files in your repository and not just the files that were changed in each commit + +The following table contains example coverage tools that generate reports in formats that Codacy supports: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    LanguageExample coverage toolsReport files
    C#OpenCoveropencover.xml (OpenCover)
    dotCover CLIdotcover.xml (dotCover detailedXML)
    CoverletMake sure that you output the report files in a supported format using one of the following file names:
    opencover.xml (OpenCover)
    cobertura.xml (Cobertura)
    lcov.info, lcov.dat, *.lcov (LCOV)
    GoGolang Code CoverageGolang report files don't have a specific name. Because of this, later in the setup process you must follow specific instructions while submitting coverage to Codacy.
    JavaJaCoCojacoco*.xml (JaCoCo)
    Coberturacobertura.xml (Cobertura)
    JavaScriptIstanbul
    + Mocha + Blanket.js
    lcov.info, lcov.dat, *.lcov (LCOV)
    PHPPHPUnitcoverage-xml/index.xml (PHPUnit XML version <= 4)
    + clover.xml (Clover)
    PythonCoverage.pycobertura.xml (Cobertura)
    RubySimpleCovcobertura.xml (Cobertura)
    + lcov.info, lcov.dat, *.lcov (LCOV)
    Scalasbt-jacocojacoco*.xml (JaCoCo)
    scoveragecobertura.xml (Cobertura)
    Swift/Objective-CXcode Code CoverageSee below how to generate coverage reports with Xcode
    + +### Handling unsupported languages + +If you're generating a report format that Codacy doesn't support yet, [contribute with a parser implementation](https://github.com/codacy/codacy-coverage-reporter/tree/master/coverage-parser/src/main/scala/com/codacy/parsers/implementation) yourself or use one of the community projects below to generate coverage reports in a supported format: + +- [SlatherOrg/slather](https://github.com/SlatherOrg/slather): generate Cobertura reports from Xcode coverage reports: + + ```bash + gem install slather + slather coverage -x --output-directory --scheme .xcodeproj + ``` + + This will generate a file `cobertura.xml` inside the folder ``. + +- [dariodf/lcov_ex](https://github.com/dariodf/lcov_ex): generate LCOV reports for Elixir projects +- [chrisgit/sfdx-plugins_apex_coverage_report](https://github.com/chrisgit/sfdx-plugins_apex_coverage_report): generate LCOV or Cobertura reports from [Apex](https://help.salesforce.com/articleView?id=sf.code_apex_dev_guide_tools.htm&type=5) code coverage data +- [danielpalme/ReportGenerator](https://github.com/danielpalme/ReportGenerator): convert between different report formats + +:::caution +Make sure that you [specify the language](uploading-coverage-in-advanced-scenarios.md#unsupported-languages) when uploading coverage for an unsupported language. +::: + +As a last resort, you can also send the coverage data directly by calling one of the following Codacy API endpoints: + +- [saveCoverage](https://api.codacy.com/swagger#savecoverage) +- [saveCoverageWithAccountToken](https://api.codacy.com/swagger#savecoveragewithaccounttoken) + +## 2. Uploading coverage data to Codacy +After having coverage reports set up for your repository, you must use the Codacy Coverage Reporter to upload them to Codacy. The recommended way to do this is by using a CI/CD platform that automatically runs tests, generates coverage, and then uses the Codacy Coverage Reporter to upload the coverage report information to Codacy. + +:::caution +Please note that Codacy needs to receive coverage data for: + +- **Every push to your repository** including merge commits or any commits created automatically by tools such as Dependabot +- **All tested files in your repository** including the files that weren't changed in the commit, or files from unchanged modules in a monorepo setup + +::: + +:::note[Alternative ways of running the Codacy Coverage Reporter] +Codacy makes available [alternative ways to run the Codacy Coverage Reporter](alternative-ways-of-running-coverage-reporter.md), such as by installing the binary manually or by using Docker, a GitHub Action, or a CircleCI Orb. + +However, the instructions on this page assume that you'll run the recommended [self-contained bash script `get.sh`](alternative-ways-of-running-coverage-reporter.md#bash-script) to automatically download and run the most recent version of the Codacy Coverage Reporter. + +::: + +1. Set up an API token to allow Codacy Coverage Reporter to authenticate on Codacy: + - **If you're setting up coverage for one repository**, [obtain a repository API token](../codacy-api/api-tokens.md#repository-api-tokens) and set the following environment variable to specify your repository API token: + + ```bash + export CODACY_PROJECT_TOKEN= + ``` + + - **If you're setting up and automating coverage for multiple repositories**, [obtain an account API Token](../codacy-api/api-tokens.md#account-api-tokens) and set the following environment variables: + + - **CODACY_API_TOKEN:** Your account API token. + + - **CODACY_ORGANIZATION_PROVIDER:** Git provider hosting the repository. + + Must be one of `gh`, `ghe`, `gl`, `gle`, `bb`, or `bbe` to specify GitHub, GitHub Enterprise, GitLab, GitLab Enterprise, Bitbucket, or Bitbucket Enterprise, respectively. + + - **CODACY_USERNAME:** Name of your organization on the Git provider, or your username on the Git provider if you're using a personal organization. + + - **CODACY_PROJECT_NAME:** Name of the repository for which you're uploading the coverage data. + + ```bash + export CODACY_API_TOKEN= + export CODACY_ORGANIZATION_PROVIDER= + export CODACY_USERNAME= + export CODACY_PROJECT_NAME= + ``` + + :::caution + **Never write API tokens to your configuration files** and keep your API tokens well protected, as they grant owner permissions to your projects on Codacy + + It's a best practice to store API tokens as environment variables. Check the documentation of your CI/CD platform on how to do this. + ::: + +1. **If you're using Codacy Self-hosted** set the following environment variables to specify your Codacy instance URL and the Codacy Coverage Reporter version that's compatible with your Codacy instance: + + ```bash + export CODACY_API_BASE_URL= + export CODACY_REPORTER_VERSION= + ``` + +1. Run Codacy Coverage Reporter **on the root of the locally checked out branch of your Git repository**, specifying the relative path to the coverage report to upload: + + ```bash + bash <(curl -Ls https://coverage.codacy.com/get.sh) report -r + ``` + + Check the console output to validate that the Codacy Coverage Reporter **detected the correct commit SHA-1 hash** and **successfully uploaded** the coverage data to Codacy. If you need help, [check the troubleshooting page](troubleshooting-coverage-cli-issues.md) for solutions to the most common issues while running the CLI. + + :::note + Be sure to also check the [instructions for more advanced scenarios](uploading-coverage-in-advanced-scenarios.md) while uploading the coverage data to Codacy, such as when running parallel tests, using monorepos, or testing source code in multiple or unsupported languages. + ::: + +## 3. Validating that the coverage setup is complete +Codacy displays the code coverage in each branch, as well as the evolution of code coverage between commits and the code coverage variation introduced by pull requests. + +Because of this, to ensure that all code coverage metrics are available on Codacy, you must have successfully uploaded coverage data and analyzed: + +- The last two commits in each branch +- The common ancestor commit of each pull request branch and its target branch + +:::note[Example] +The example below shows that after pushing a commit that correctly sets up coverage on the default branch: + +- Codacy will report coverage metrics for all subsequent commits and pull requests relative to the default branch. + +- Codacy won't report coverage metrics for commits and pull requests that are relative to older branches where the coverage setup wasn't performed yet. + + To solve this issue, you can rebase the old feature branch to update the common ancestor commit to one that already has coverage data. + +![Setting up coverage on the default branch](images/coverage-validate.png) + +::: + +Follow these instructions to validate that your coverage setup is working correctly: + +1. On Codacy, open your **Repository Settings**, tab **Coverage**, and observe the list of the most recent 50 coverage reports in the section **Test your integration**. + + Make sure that Codacy receives and processes the coverage data successfully for **at least two commits**. + + ![Testing the coverage integration](images/coverage-test-integration.png) + + If there are commits with a status different from **Processed**, please follow the troubleshooting instructions for the corresponding error status and click the button **Test integration** to display any new coverage reports uploaded to Codacy. + + ### Commit not found + Codacy doesn't have information about the commit associated with the coverage data. + + + + + + + + + + + + + + + + + + + + + + +
    What causes the error?How to fix the error?
    + Codacy didn't receive the webhook for that commit from the Git provider. + +

    Wait a few more minutes until Codacy detects the commit and the status will update automatically.

    +

    If it takes more than 5 to 10 minutes for Codacy to detect the commit, the webhook call from the Git provider may have been lost. You can wait until you push a new commit or contact support@codacy.com asking us to sync the commits on Codacy with your Git provider.

    +
    + The commit SHA-1 hash sent while uploading coverage is wrong. + + Make sure that the Codacy Coverage Reporter detects the correct commit SHA-1 hash for the uploaded coverage data. +
    + + ### Branch not enabled + The commit associated with the coverage data doesn't belong to any branch that Codacy is analyzing. + + + + + + + + + + + + + + + + + + + + + + +
    What causes the error?How to fix the error?
    + Coverage was uploaded for a commit that belongs to a branch that isn't analyzed by Codacy. + +

    Make sure that the branch is enabled on Codacy. Alternatively, ensure that the target branch is enabled and open a pull request for Codacy to start analyzing the branch automatically.

    +

    If Codacy is already analyzing the branch, make sure that the Codacy Coverage Reporter detects the correct commit SHA-1 hash for the uploaded coverage data.

    +
    + Coverage was uploaded for a commit that no longer belongs to any branch on the Git repository, for example after a rebase or squash merge. + + The error status is expected in this scenario and you can ignore it. +
    + + ### Commit not analyzed + Due to technical limitations, Codacy only reports coverage for a commit after successfully completing the static code analysis of that commit. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    What causes the error?How to fix the error?
    + Codacy hasn't finished analyzing the commit yet. + + Wait a few more minutes until Codacy completes the static code analysis for the commit and the status will update automatically. +
    + Codacy didn't analyze the commit on a private repository because the committer doesn't belong to the Codacy organization. + + Make sure that you add all committers to your Codacy organization. +
    + Codacy skipped analyzing the commit because there are more recent commits in the branch. + + Upload coverage data for the most recent commit in the branch. +
    + The setting Run analysis on your build server is on, but your client-side tools didn't upload results to Codacy. + + Make sure that your client-side tools run successfully and upload the results to Codacy to complete the analysis. +
    + Codacy ran into an error while analyzing the commit. + + Solve the issue that caused the analysis to fail (such as Codacy losing access to the repository), or contact us at support@codacy.com asking for help. +
    + + ### Final report not sent + Codacy is waiting to receive more coverage data before reporting the coverage for a commit. + + + + + + + + + + + + + + + + + + +
    What causes the error?How to fix the error?
    + Coverage was uploaded with the --partial flag but Codacy didn't receive the final notification. + + Make sure that after uploading all partial reports you send the final notification. +
    + + ### Pending + Codacy is waiting to receive valid coverage data for the files in your repository. + + + + + + + + + + + + + + + + + + + + + + + + + + +
    What causes the error?How to fix the error?
    + The file paths in the coverage report don't match the ones on the repository Files page on Codacy. + + Make sure that the file paths included in your coverage report are relative to the root directory of your repository. For example, src/index.js. +
    + The uploaded coverage data only includes information for files that are ignored on Codacy. + + Check which files are ignored on Codacy and make sure that you're generating coverage reports for the correct files in your repository. +
    + The uploaded coverage data is incorrectly associated, using the `-l` option, to a language that's not present in your repository. + + Verify that you are associating the correct language, or don't specify a language to let Codacy detect the contents of the coverage reports automatically. See how to upload coverage in advanced scenarios for more information. +
    + +1. Check that Codacy displays the coverage metrics for the latest commits and pull requests. + + ![Coverage metrics displayed on Codacy](images/coverage-codacy-ui.png) + + If Codacy can't calculate the coverage metrics for pull requests, make sure that you're uploading coverage data for the following commits of the pull request: + + | Commit | Required to calculate the coverage metrics | + |--------|-----------------------------| + |**Head commit**
    of the pull request branch | Coverage variation
    Diff coverage | + |**Common ancestor commit**
    of the pull request and target branches | Coverage variation | + + The following diagram highlights the commits that must receive coverage data for Codacy to calculate the coverage metrics for pull requests: + + ![Commits that must have received coverage data](images/coverage-pr-commits.png) + + Click **View logs** on a pull request detail page to see the SHA-1 hashes of the commits that are missing coverage data. If you have many open pull requests, you can also use a script to [identify if any pull requests are missing coverage data](../codacy-api/examples/identifying-commits-without-coverage-data.md). + + ![Logs showing the pull request commits that are missing coverage data](images/coverage-codacy-ui-logs.png) + +:::note[Need help?] +If you need help setting up coverage on your repository please contact us at [support@codacy.com](mailto:support@codacy.com) including the following information: + +- URL of your repository on Codacy +- Your CI/CD configuration files and the name of your CI/CD platform +- Full console output of your CI/CD when running the Codacy Coverage Reporter +- Branch name and commit SHA-1 hash corresponding to the CI/CD output +- Test coverage report that you're uploading to Codacy +- Any other relevant information or screenshots of your setup + +::: + +## See also + +- [Identifying commits without coverage data](../codacy-api/examples/identifying-commits-without-coverage-data.md) +- [Why does Codacy show unexpected coverage changes?](../faq/code-analysis/why-does-codacy-show-unexpected-coverage-changes.md) diff --git a/docusaurus/docs/coverage-reporter/troubleshooting-coverage-cli-issues.md b/docusaurus/docs/coverage-reporter/troubleshooting-coverage-cli-issues.md new file mode 100644 index 0000000000..0e962f5ba7 --- /dev/null +++ b/docusaurus/docs/coverage-reporter/troubleshooting-coverage-cli-issues.md @@ -0,0 +1,152 @@ +--- +title: Troubleshooting coverage CLI issues +description: Instructions or workarounds to overcome common issues while using Codacy Coverage Reporter CLI. +--- + + +The sections below provide instructions or workarounds to overcome common issues while using Codacy Coverage Reporter CLI: + +- [Can't guess any report due to no matching](#cant-guess-any-report-due-to-no-matching) +- [Can't validate checksum](#checksum) +- [Commit SHA-1 hash detection](#commit-detection) +- [Connect timed out while uploading coverage data](#connect-timed-out-while-uploading-coverage-data) +- [coverage-xml/index.xml generated an empty result](#coverage-xmlindexxml-generated-an-empty-result) +- [JsonParseException while uploading coverage data](#jsonparseexception-while-uploading-coverage-data) +- [MalformedInputException while parsing report](#malformedinputexception-while-parsing-report) +- [No coverage data was sent](#no-coverage-data-was-sent) +- [Report generated an empty result while uploading C# coverage data](#detailedxml) +- [SubstrateSegfaultHandler caught signal 11](#substratesegfaulthandler-caught-signal-11) + +## Can't guess any report due to no matching + +Codacy Coverage Reporter automatically searches for coverage reports matching the [file name conventions for supported formats](index.md#generating-coverage). + +However, if Codacy Coverage Reporter doesn't find your coverage report, you can explicitly define the report file name with the flag `-r`. For example: + +```bash +bash <(curl -Ls https://coverage.codacy.com/get.sh) report -r +``` + +## Can't validate checksum {#checksum} +Starting on version [13.0.0](https://github.com/codacy/codacy-coverage-reporter/releases/tag/13.0.0) the `get.sh` script automatically validates the checksum of the downloaded Codacy Coverage Reporter binary. This requires having either the `sha512sum` or `shasum` command on the operating system where you're running the script. + +If you're getting this error while uploading your coverage data to Codacy, install the correct version of `sha512sum` or `shasum` for the operating system that you're using. + +You can also skip validating the checksum of the binary by defining the following environment variable, however, Codacy doesn't recommend this: + +```bash +export CODACY_REPORTER_SKIP_CHECKSUM=true +``` + +## Commit SHA-1 hash detection {#commit-detection} +The Codacy Coverage Reporter automatically detects the SHA-1 hash of the current commit to associate with the coverage data when you're using one of the following CI/CD platforms: + +- Appveyor +- Argo CD +- AWS CodeBuild +- Azure Pipelines +- Bitrise +- Buildkite +- Circle CI +- Codefresh +- Codeship +- Docker +- GitLab +- Greenhouse CI +- Heroku CI +- Jenkins +- Magnum CI +- Semaphore CI +- Shippable CI +- Solano CI +- TeamCity CI +- Travis CI +- Wercker CI + +If the Codacy Coverage Reporter fails to detect the current commit from the CI workflow context, it will use the current commit from the local Git repository instead. + +However, you can also force using a specific commit SHA-1 hash with the flag `--commit-uuid`. For example: + +```bash +bash <(curl -Ls https://coverage.codacy.com/get.sh) report \ + -r report.xml \ + --commit-uuid cd4d000083a744cf1617d46af4ec108b79e06bed +``` + +## Connect timed out while uploading coverage data + +If you get a `Error doing a post to <...> connect timed out` error while uploading your coverage data to Codacy it means that the Codacy Coverage Reporter is timing out while connecting to the Codacy API. This typically happens if you're uploading coverage data for larger repositories. + +To increase the default timeout while connecting to the Codacy API, use the flag `--http-timeout` to set a value larger than 10000 milliseconds. For example, to set the timeout to 30 seconds: + +```bash +bash <(curl -Ls https://coverage.codacy.com/get.sh) report \ + -r report.xml \ + --http-timeout 30000 +``` + +## coverage-xml/index.xml generated an empty result + +If you're using PHPUnit version 5 or above to generate your coverage report, you must output the report using the Clover format. Codacy Coverage Reporter supports the PHPUnit XML format only for versions 4 and older. + +To change the output format replace the flag `--coverage-xml ` with `--coverage-clover ` when executing `phpunit`. + +See [PHPUnit command-line documentation](https://phpunit.readthedocs.io/en/11.0/textui.html) for more information. + +## JsonParseException while uploading coverage data + +If you get a `com.fasterxml.jackson.core.JsonParseException` error while uploading your coverage data to Codacy it means that your coverage report is too big and that Codacy Coverage Reporter hit a limit of 10 MB when uploading the coverage data to Codacy. + +There are some ways you can solve this: + +- Split your coverage reports into smaller files and [upload them to Codacy one at a time](../uploading-coverage-in-advanced-scenarios/#multiple-reports). + +- **If you're using dotCover to generate coverage reports for your C# projects**, you should [exclude xUnit files](https://www.jetbrains.com/help/dotcover/Running_Coverage_Analysis_from_the_Command_LIne.html#filters_cmd) from the coverage analysis as follows: + + ```bash + dotCover.exe cover <...> /Filters=-:xunit* + ``` + + By default, dotCover includes xUnit files in the coverage analysis and this results in larger coverage reports. This filter helps ensure that the resulting coverage data doesn't exceed the size limit accepted by the Codacy API when uploading the results. + +## MalformedInputException while parsing report + +If you get a `java.nio.charset.MalformedInputException` when running the Codacy Coverage Reporter it means that the coverage report includes a character that's not encoded in UTF-8. The invalid character can belong to the file name of one of your source code files, or even a class or method name. + +For maximum compatibility of your coverage reports with the Codacy Coverage Reporter, make sure that your coverage reports use UTF-8 encoding and that they only include UTF-8 characters. + +## No coverage data was sent + +You can get the `No coverage data was sent` error when running the Codacy Coverage Reporter for the following reasons: + +- The coverage report doesn't include any coverage data. +- The coverage report only includes data for files that don't exist in the associated Git repository. In this case, you also get one or more warnings `File: [filename] will be discarded and will not be considered for coverage calculation`. + +Make sure that your coverage report isn't empty and that it includes coverage data for files in the associated Git repository. + +:::note +If you upload multiple coverage reports and at least one contains valid data, the Codacy Coverage Reporter uploads the valid reports and ignores the invalid ones. +::: + +## Report generated an empty result while uploading C# coverage data {#detailedxml} +If you're using dotCover to generate coverage reports for your C# projects, you must use the dotCover detailedXML report format as follows: + +```bash +dotCover.exe cover <...> --reportType=DetailedXml +``` + +## SubstrateSegfaultHandler caught signal 11 + +If you're experiencing segmentation faults when uploading the coverage results due to [oracle/graal#624](https://github.com/oracle/graal/issues/624), execute the following command before running the reporter, as a workaround: + +```sh +echo "$(dig +short api.codacy.com | tail -n1) api.codacy.com" >> /etc/hosts +``` + +## I received the message: "Invalid configuration: Either a project or account API token must be provided or available in an environment variable" in a build from a commit created by Dependabot (Github) + +When builds are triggered by Dependabot, they run with a read-only GITHUB_TOKEN and don’t have access to any secrets stored in GitHub Actions. This can break workflows — for example, the token may be missing and coverage reports can’t be uploaded to Codacy. + +[See GitHub’s documentation for details.](https://docs.github.com/en/code-security/dependabot/troubleshooting-dependabot/troubleshooting-dependabot-on-github-actions#troubleshooting-failures-when-dependabot-triggers-existing-workflows) + +If you still need to upload coverage from Dependabot’s pull requests, a workaround is to add an empty commit to those PRs. Because the commit comes from a regular user account, the workflow will then have access to the repository’s secrets, allowing the upload to succeed. \ No newline at end of file diff --git a/docusaurus/docs/coverage-reporter/uploading-coverage-in-advanced-scenarios.md b/docusaurus/docs/coverage-reporter/uploading-coverage-in-advanced-scenarios.md new file mode 100644 index 0000000000..0e09d9e8d4 --- /dev/null +++ b/docusaurus/docs/coverage-reporter/uploading-coverage-in-advanced-scenarios.md @@ -0,0 +1,86 @@ +--- +title: Uploading coverage in advanced scenarios +description: Instructions on how to use the Codacy Coverage Reporter to upload coverage data in advanced scenarios such as when running parallel tests, using monorepos, or testing source code in multiple or unsupported languages. +--- + + +The following sections include instructions on how to use the Codacy Coverage Reporter to upload coverage data in more advanced scenarios. + +## Uploading multiple coverage reports for the same language {#multiple-reports} +If your test suite is split into different modules or runs in parallel, you must upload multiple coverage reports for the same language either at once or in sequence. + +Alternatively, consider merging multiple coverage reports before uploading them to Codacy. Most coverage tools support merging or aggregating coverage data. For example, use the [merge mojo for JaCoCo](http://www.eclemma.org/jacoco/trunk/doc/merge-mojo.html). + +:::note +If one or more coverage reports mark a line as covered multiple times, Codacy counts it as a single covered line when calculating coverage. +::: + +### Uploading all reports at once {#multiple-reports-once} +Upload multiple partial coverage reports with a single command by specifying each report with the flag `-r`. For example: + +```bash +bash <(curl -Ls https://coverage.codacy.com/get.sh) report \ + -l Java -r report1.xml -r report2.xml -r report3.xml +``` + +You can also upload all your reports dynamically using the command `find`. For example: + +```bash +bash <(curl -Ls https://coverage.codacy.com/get.sh) report \ + -l Java $(find . -name 'jacoco*.xml' | sed 's,^, -r ,' | xargs echo) +``` + +### Uploading reports in sequence {#multiple-reports-sequence} +Upload multiple partial coverage reports in sequence: + +1. Upload each report separately with the flag `--partial`. + + If you're sending reports for a language with the flag `--partial`, you must use the flag in all reports for that language to ensure the correct calculation of the coverage. + +1. Notify Codacy with the `final` command after uploading all reports. + +For example: + +```bash +bash <(curl -Ls https://coverage.codacy.com/get.sh) report \ + --partial -l Java -r report1.xml +bash <(curl -Ls https://coverage.codacy.com/get.sh) report \ + --partial -l Java -r report2.xml +bash <(curl -Ls https://coverage.codacy.com/get.sh) final +``` + +## Uploading the same coverage report for multiple languages {#multiple-languages} +If your test suite generates a single coverage report for more than one language, you must upload the same coverage report for each language. + +To do this, upload the same report multiple times, specifying each different language with the flag `-l`. For example: + +```bash +bash <(curl -Ls https://coverage.codacy.com/get.sh) report \ + --partial -l Javascript -r report.xml +bash <(curl -Ls https://coverage.codacy.com/get.sh) report \ + --partial -l TypeScript -r report.xml +bash <(curl -Ls https://coverage.codacy.com/get.sh) final +``` + +## Uploading coverage for Golang {#golang} +Codacy can't automatically detect Golang coverage report files because they don't have specific file names. + +If you're uploading a Golang coverage report, you must also specify the report type: + +```bash +go test -coverprofile=unit.coverage.out ./... +bash <(curl -Ls https://coverage.codacy.com/get.sh) report \ + --force-coverage-parser go -r unit.coverage.out +``` + +## Uploading coverage for unsupported languages {#unsupported-languages} +If your language isn't in the [list of supported languages](index.md#generating-coverage), you can still send coverage to Codacy. + +To do this, provide the correct language with the flag `-l`, together with `--force-language`. For example: + +```bash +bash <(curl -Ls https://coverage.codacy.com/get.sh) report \ + -l Kotlin --force-language -r +``` + +See the [list of languages](https://github.com/codacy/codacy-plugins-api/blob/master/codacy-plugins-api/src/main/scala/com/codacy/plugins/api/languages/Language.scala#L41) that you can specify using the flag `-l`. diff --git a/docusaurus/docs/enterprise-cloud/github-enterprise-cloud.md b/docusaurus/docs/enterprise-cloud/github-enterprise-cloud.md new file mode 100644 index 0000000000..ae2e4f1e01 --- /dev/null +++ b/docusaurus/docs/enterprise-cloud/github-enterprise-cloud.md @@ -0,0 +1,71 @@ +--- +title: GitHub Enterprise Cloud +--- + + +Use your GitHub Enterprise credentials when signup or login to Codacy and all your GitHub Enterprise organizations that you belong to, will be available to be added as Organizations on Codacy. + +Codacy also has a dedicated Enterprise area where GitHub Enterprise admins and owners of the enterprise will be able to manage them. + +### GitHub Enterprise types +Codacy supports both [GitHub Enterprises types](https://docs.github.com/en/enterprise-cloud@latest/admin/managing-iam/understanding-iam-for-enterprises/choosing-an-enterprise-type-for-github-enterprise-cloud), Managed Users and Personal Accounts. + +## Access cloud Enterprises +Access you enterprises in Codacy by setting up its integration: + +1. In codacy app, click on your avatar image, in the top right corner +1. then navigate throught "My account" and "Access management" +1. There, you'll be able to add a **GitHub Enterprise Cloud** access token. + +Once generated and added in Codacy you will start seeing all infomration you have access to regarding your cloud enterprises. +You can revoke the cloud enterpises access at any time in the same place. +![Enterprise cloud manage enterprises access](images/Codacy-Access-Management.png) + + +## Manage Enterprises +- [Enterprise organizations list](#enterprise-organizations-list) +- [Seats management](#seats) +- [Enterprise Limitations](#limitations) + +Once signup or login with your GitHub Enterprise credentials and, [setup access to could enterprises](#access-cloud-enterprises), navigate to your Enterprises area to manage your enterprises in Codacy, as well its organizations and seats management. + +:::note +If you only have one Enterprise, Codacy will skip this screen and directs you to the [enterprise organizations list](#enterprise-organizations-list). +::: + +![Enterprise cloud manage enterprises](images/Codacy-Enterprises.png) + +### Enterprise organizations list +Choose to view a enterprise and access its list of existing organizations, that you have access to. +![Enterprise cloud manage organizations](images/Codacy-Enterprise-Organizations.png) + +### Seats +View and export your enterprise seats and its activity by: + +1. Choose and view an enterprise organization +1. Navigate to **People** on the left-handside navigation +1. View, search and export the list of author seats + +:::note +- Codacy members won't be part of this list, only authors, users that have done commits. +- In some Enterprise plans, **Members** are people that signup and joined an Organization in Codacy, and **Authors** are people that contribute to code changes. It can happen that Authors aren't Codacy Members. +- Only Enterprise **Owners** or **Admins** will be able to view and export the list of authors. +::: + +### Limitations +Currently, the integration between Codacy and GitHub Enterprise has the following limitations: + +- **Repositories with visibility Internal** will, in Codacy, have the same behavior as Private visibility. Although you see the repository in the provider, if you aren't part of the repository in the provider, you won't be able to see it in Codacy. +- **Same email connected to multiple GitHub accounts.** Codacy won't allow you to connect your enterprise account if that email is already associated with a different GitHub account. You can manage your [associated emails in the provider GitHub](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account). +- **GitHub Cloud data residency is not supported.** Codacy is incompatible with GitHub Enterprise Cloud's data residency features. If your GitHub Enterprise Cloud has data residency enabled, Codacy won't be able to access or process your repositories. + + + +## See also + +- [How does Codacy support GitLab Cloud?](../faq/general/how-does-codacy-support-gitlab-cloud.md) +- [How does Codacy support GitLab Enterprise?](../faq/general/how-does-codacy-support-gitlab-enterprise.md) +- [How does Codacy support Bitbucket Cloud?](../faq/general/how-does-codacy-support-bitbucket-cloud.md) +- [How does Codacy support Bitbucket Server?](../faq/general/how-does-codacy-support-bitbucket-server.md) + +

    diff --git a/docusaurus/docs/enterprise-cloud/images/Access enterprises.png b/docusaurus/docs/enterprise-cloud/images/Access enterprises.png new file mode 100644 index 0000000000..6489ff3a65 Binary files /dev/null and b/docusaurus/docs/enterprise-cloud/images/Access enterprises.png differ diff --git a/docusaurus/docs/enterprise-cloud/images/Access managmeent access.png b/docusaurus/docs/enterprise-cloud/images/Access managmeent access.png new file mode 100644 index 0000000000..3e0a11cce5 Binary files /dev/null and b/docusaurus/docs/enterprise-cloud/images/Access managmeent access.png differ diff --git a/docusaurus/docs/enterprise-cloud/images/Codacy-Access-Management-revoke-approval.png b/docusaurus/docs/enterprise-cloud/images/Codacy-Access-Management-revoke-approval.png new file mode 100644 index 0000000000..23ca740507 Binary files /dev/null and b/docusaurus/docs/enterprise-cloud/images/Codacy-Access-Management-revoke-approval.png differ diff --git a/docusaurus/docs/enterprise-cloud/images/Codacy-Access-Management-revoke.png b/docusaurus/docs/enterprise-cloud/images/Codacy-Access-Management-revoke.png new file mode 100644 index 0000000000..0d9dd30372 Binary files /dev/null and b/docusaurus/docs/enterprise-cloud/images/Codacy-Access-Management-revoke.png differ diff --git a/docusaurus/docs/enterprise-cloud/images/Codacy-Access-Management.png b/docusaurus/docs/enterprise-cloud/images/Codacy-Access-Management.png new file mode 100644 index 0000000000..59145af63e Binary files /dev/null and b/docusaurus/docs/enterprise-cloud/images/Codacy-Access-Management.png differ diff --git a/docusaurus/docs/enterprise-cloud/images/Codacy-Enterprise-Organizations.png b/docusaurus/docs/enterprise-cloud/images/Codacy-Enterprise-Organizations.png new file mode 100644 index 0000000000..36e196060c Binary files /dev/null and b/docusaurus/docs/enterprise-cloud/images/Codacy-Enterprise-Organizations.png differ diff --git a/docusaurus/docs/enterprise-cloud/images/Codacy-Enterprise-Seats.png b/docusaurus/docs/enterprise-cloud/images/Codacy-Enterprise-Seats.png new file mode 100644 index 0000000000..a8bacbf555 Binary files /dev/null and b/docusaurus/docs/enterprise-cloud/images/Codacy-Enterprise-Seats.png differ diff --git a/docusaurus/docs/enterprise-cloud/images/Codacy-Enterprises.png b/docusaurus/docs/enterprise-cloud/images/Codacy-Enterprises.png new file mode 100644 index 0000000000..6c80c38975 Binary files /dev/null and b/docusaurus/docs/enterprise-cloud/images/Codacy-Enterprises.png differ diff --git a/docusaurus/docs/faq/_order.ts b/docusaurus/docs/faq/_order.ts new file mode 100644 index 0000000000..cb8c2abfa5 --- /dev/null +++ b/docusaurus/docs/faq/_order.ts @@ -0,0 +1,57 @@ +export const faqOrder = [ + { + type: 'category' as const, + label: 'General', + items: [ + 'faq/general/which-platforms-and-technologies-does-codacy-support', + 'faq/general/how-does-codacy-support-github-enterprise', + 'faq/general/how-does-codacy-support-gitlab-cloud', + 'faq/general/how-does-codacy-support-gitlab-enterprise', + 'faq/general/how-does-codacy-support-bitbucket-cloud', + 'faq/general/how-does-codacy-support-bitbucket-server', + 'faq/general/how-does-codacy-keep-my-data-secure', + 'faq/general/how-does-codacy-protect-my-privacy', + 'faq/general/does-codacy-keep-audit-logs', + 'faq/general/how-do-i-allowlist-codacy-cloud-on-my-git-provider', + 'faq/general/how-can-i-change-or-cancel-my-plan', + ], + }, + { + type: 'category' as const, + label: 'Repositories', + items: [ + 'faq/repositories/how-do-i-reanalyze-my-repository', + 'faq/repositories/i-renamed-my-repository-on-the-git-provider', + 'faq/repositories/i-moved-my-repository-on-the-git-provider', + ], + }, + { + type: 'category' as const, + label: 'Code analysis', + items: [ + 'faq/code-analysis/which-metrics-does-codacy-calculate', + 'faq/code-analysis/why-does-codacy-show-unexpected-coverage-changes', + 'faq/code-analysis/does-codacy-place-limits-on-the-code-analysis', + 'faq/code-analysis/does-codacy-check-for-dependencies', + 'faq/code-analysis/how-long-does-it-take-for-my-repository-to-be-analyzed', + 'faq/code-analysis/how-to-skip-an-analysis', + 'faq/code-analysis/can-i-bypass-codacy-status-check', + 'faq/code-analysis/how-to-configure-php-codesniffer-coding-standards', + ], + }, + { + type: 'category' as const, + label: 'Troubleshooting', + items: [ + 'faq/troubleshooting/why-cant-i-see-my-organization', + 'faq/troubleshooting/why-did-codacy-stop-commenting-on-pull-requests', + 'faq/troubleshooting/why-arent-duplication-metrics-being-calculated', + 'faq/troubleshooting/why-isnt-my-public-repository-being-analyzed', + 'faq/troubleshooting/not-a-member-of-the-organization', + 'faq/troubleshooting/we-no-longer-have-access-to-this-repository', + 'faq/troubleshooting/why-is-my-file-over-150-kb-missing', + 'faq/troubleshooting/error-line-endings', + ], + }, +]; + diff --git a/docusaurus/docs/faq/code-analysis/can-i-bypass-codacy-status-check.md b/docusaurus/docs/faq/code-analysis/can-i-bypass-codacy-status-check.md new file mode 100644 index 0000000000..2d8efdd524 --- /dev/null +++ b/docusaurus/docs/faq/code-analysis/can-i-bypass-codacy-status-check.md @@ -0,0 +1,16 @@ +--- +title: Can I bypass Codacy status check? +--- + + +:::note +**This will only apply to gates enforcing quality checks.** If coverage is blocking a pull request analysis, we recommend contacting your git provider admin or temporarily disabling the coverage gate on the repo and reanalyzing the pull request before enabling them again. +::: + +To protect your code from unwelcome changes, you can [configure your Git workflow to block merging pull requests](../../getting-started/integrating-codacy-with-your-git-workflow.md#blocking-pull-requests) if they don't pass the Codacy status check. + +However, on **very specific and exceptional situations** where your pull request merging is blocked due to an unexpected issue not related to the quality of your code, Codacy allows **repository admins** to bypass the Codacy status check for that pull request. + +To bypass Codacy status check for a pull request, a repository admin must click **Bypass status checks** on the [pull request status area](../../repositories/pull-requests.mdx#status) of the pull request detail screen. + +![Bypass status check for pull request](images/bypass-status-check.png) diff --git a/docusaurus/docs/faq/code-analysis/does-codacy-check-for-dependencies.md b/docusaurus/docs/faq/code-analysis/does-codacy-check-for-dependencies.md new file mode 100644 index 0000000000..beaab3b9d3 --- /dev/null +++ b/docusaurus/docs/faq/code-analysis/does-codacy-check-for-dependencies.md @@ -0,0 +1,8 @@ +--- +title: Does Codacy check for dependencies? +--- + + +Yes, Codacy scans the manifest files of your repositories and displays any vulnerable dependencies as Codacy issues. + +For a list of supported languages and manifest files scanned by the Codacy dependency vulnerability scanning tools, see [Supported languages and tools](../../getting-started/supported-languages-and-tools.md). diff --git a/docusaurus/docs/faq/code-analysis/does-codacy-place-limits-on-the-code-analysis.md b/docusaurus/docs/faq/code-analysis/does-codacy-place-limits-on-the-code-analysis.md new file mode 100644 index 0000000000..d76a2b2dfe --- /dev/null +++ b/docusaurus/docs/faq/code-analysis/does-codacy-place-limits-on-the-code-analysis.md @@ -0,0 +1,82 @@ +--- +title: Does Codacy place limits on the code analysis? +--- + + +Codacy uses limits when performing the analysis of your repositories to ensure good performance levels and avoid degradation of service during peak load. + +The following table describes these limits and includes links to more information and workarounds, if available: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    LimitValueRationale
    File size150 KB +Large source code files are typically generated by or dependent on a third-party, and could significantly delay the analysis.

    +See Why is my file over 150 KB missing? +
    File size for coverage reports10 MB +Codacy doesn't parse code coverage reports that are over the file size limit.

    +See JsonParseException while uploading coverage data +
    Number of files for duplication5000 +Some tools fail to calculate duplication or time out when analyzing a number of files above this number.

    +See Why aren't duplication metrics being calculated? +
    Number of issues per file and per tool50 +Codacy limits the number of issues returned on each file by individual tools as a safeguard against degradation of performance on large or unexpected use cases. This means that in some situations Codacy could report more issues after a push that includes fixes for the currently reported issues. +
    Number of comments on the Git provider25 +Codacy limits the number of comments for reporting found issues on pull requests to avoid triggering too many notification emails and to guard against hitting API rate limits. +
    Showing issues on duplicated lines- +For now, Codacy only reports the first code issue when there are issues on duplicated lines on the same file. +
    + +If you believe that you may have hit any of these limits and need help to overcome them, please contact us at [support@codacy.com](mailto:support@codacy.com). + +## See also + +- [Which metrics does Codacy calculate?](which-metrics-does-codacy-calculate.md) diff --git a/docusaurus/docs/faq/code-analysis/how-long-does-it-take-for-my-repository-to-be-analyzed.md b/docusaurus/docs/faq/code-analysis/how-long-does-it-take-for-my-repository-to-be-analyzed.md new file mode 100644 index 0000000000..5ccf91b3f8 --- /dev/null +++ b/docusaurus/docs/faq/code-analysis/how-long-does-it-take-for-my-repository-to-be-analyzed.md @@ -0,0 +1,30 @@ +--- +title: How long does it take for my repository to be analyzed? +--- + + +Codacy usually takes under 5 minutes to analyze your repository. It may however take longer, depending on a number of factors: + +- **Whether it's the initial analysis of your repository** + + The initial analysis examines all files in the repository, while each subsequent commit triggers an analysis only on files changed in that commit. + +- **Whether tool configurations have been updated** + + Updates to tool configurations trigger a reanalysis of all files in the repository on the next commit and may impact analysis duration. + +- **The size of your repository** + + To speed up the analysis, [ignore any files and directories](../../repositories-configure/ignoring-files.md) that aren't relevant to your project, such as generated code or any third-party libraries included in your repositories. + +- **The time it takes your Git provider to trigger the analysis** + + Codacy relies on post-commit hooks sent by your Git provider to trigger the analysis after each push to the repository, so if your analysis is taking a lot of time to start [check that the Post-Commit Hook integration for your repository is enabled](../../repositories-configure/integrations/post-commit-hooks.md). + +- **The priority of your analysis request and the current load on Codacy's servers** + + Open-source projects have lower priority in the Codacy analysis queues. + +- **Whether Codacy or your Git provider is currently experiencing issues or outages** + + Check the [Codacy status page](https://status.codacy.com/) and the status page of your Git provider ([GitHub](https://www.githubstatus.com/), [GitLab](https://status.gitlab.com/), [Bitbucket](https://bitbucket.status.atlassian.com/)) to see if there is any ongoing incident that could delay the analysis. diff --git a/docusaurus/docs/faq/code-analysis/how-to-configure-php-codesniffer-coding-standards.md b/docusaurus/docs/faq/code-analysis/how-to-configure-php-codesniffer-coding-standards.md new file mode 100644 index 0000000000..e6174f1e48 --- /dev/null +++ b/docusaurus/docs/faq/code-analysis/how-to-configure-php-codesniffer-coding-standards.md @@ -0,0 +1,37 @@ +--- +title: How to configure PHP_CodeSniffer coding standards? +description: To enforce a specific PHP_CodeSniffer coding standard on Codacy you must create a configuration file on the root of your repository that references one or more coding standards. +--- + + +By default, Codacy uses the PHP_CodeSniffer configuration on the [Code patterns](../../repositories-configure/configuring-code-patterns.md) page when analyzing your repositories. + +To enforce a specific PHP_CodeSniffer coding standard you must [create a configuration file](https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#using-a-default-configuration-file) on the root of your repository that references one or more of the following coding standards: + +- Default coding standards packaged together with PHP_CodeSniffer: + + [PHP_CodeSniffer coding standards](https://github.com/squizlabs/PHP_CodeSniffer/tree/master/src/Standards) + +- Additional coding standards that Codacy packages on the PHP_CodeSniffer tool plugin. Check the repository the additional coding standards to learn how you can reference them in your configuration files: + + [codacy-codesniffer composer.json](https://github.com/codacy/codacy-codesniffer/blob/master/composer.json) + +For example, create a text file with the name `phpcs.xml` to use the PSR12 coding standard but excluding the sniffs `Generic.WhiteSpace.DisallowTabIndent` and `PSR12.Operators.OperatorSpacing`: + +```xml + + + PHP_CodeSniffer configuration + + + + + +``` + +## See also + +Check these external resources for more help on customizing your PHP_CodeSniffer configuration: + +- [PHP_CodeSniffer configuration file syntax](https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-Ruleset) +- [PHP Coding Standard Generator](https://edorian.github.io/php-coding-standard-generator/#phpcs) diff --git a/docusaurus/docs/faq/code-analysis/how-to-skip-an-analysis.md b/docusaurus/docs/faq/code-analysis/how-to-skip-an-analysis.md new file mode 100644 index 0000000000..9f848866eb --- /dev/null +++ b/docusaurus/docs/faq/code-analysis/how-to-skip-an-analysis.md @@ -0,0 +1,16 @@ +--- +title: How to skip an analysis? +--- + + +By default, Codacy automatically analyzes a repository whenever you push changes. However, you can override this behavior by adding one of the "skip" tags - `[ci skip]`, `[skip ci]`, `[codacy skip]` or `[skip codacy]` - anywhere in the subject or body of the commit message. For example: + +```bash +git commit -a -m "Add eslint-plugin-chai-expect version 1.1.1 [ci skip]" +``` + +If you later decide to analyze a skipped commit, you can override any skip tags by [reanalyzing the commit](../repositories/how-do-i-reanalyze-my-repository.md). + +:::note +This feature isn't supported for pull requests. +::: diff --git a/docusaurus/docs/faq/code-analysis/images/bypass-status-check.png b/docusaurus/docs/faq/code-analysis/images/bypass-status-check.png new file mode 100644 index 0000000000..f5d70932cf Binary files /dev/null and b/docusaurus/docs/faq/code-analysis/images/bypass-status-check.png differ diff --git a/docusaurus/docs/faq/code-analysis/images/coverage-example-1.png b/docusaurus/docs/faq/code-analysis/images/coverage-example-1.png new file mode 100644 index 0000000000..6b5983d6bd Binary files /dev/null and b/docusaurus/docs/faq/code-analysis/images/coverage-example-1.png differ diff --git a/docusaurus/docs/faq/code-analysis/images/coverage-example-2.png b/docusaurus/docs/faq/code-analysis/images/coverage-example-2.png new file mode 100644 index 0000000000..d9dfb51142 Binary files /dev/null and b/docusaurus/docs/faq/code-analysis/images/coverage-example-2.png differ diff --git a/docusaurus/docs/faq/code-analysis/images/grade_a.png b/docusaurus/docs/faq/code-analysis/images/grade_a.png new file mode 100644 index 0000000000..3aff1ba0f0 Binary files /dev/null and b/docusaurus/docs/faq/code-analysis/images/grade_a.png differ diff --git a/docusaurus/docs/faq/code-analysis/images/grade_b.png b/docusaurus/docs/faq/code-analysis/images/grade_b.png new file mode 100644 index 0000000000..7a4b30c65d Binary files /dev/null and b/docusaurus/docs/faq/code-analysis/images/grade_b.png differ diff --git a/docusaurus/docs/faq/code-analysis/images/grade_c.png b/docusaurus/docs/faq/code-analysis/images/grade_c.png new file mode 100644 index 0000000000..48876b0ece Binary files /dev/null and b/docusaurus/docs/faq/code-analysis/images/grade_c.png differ diff --git a/docusaurus/docs/faq/code-analysis/images/grade_d.png b/docusaurus/docs/faq/code-analysis/images/grade_d.png new file mode 100644 index 0000000000..a68b2413b8 Binary files /dev/null and b/docusaurus/docs/faq/code-analysis/images/grade_d.png differ diff --git a/docusaurus/docs/faq/code-analysis/images/grade_e.png b/docusaurus/docs/faq/code-analysis/images/grade_e.png new file mode 100644 index 0000000000..2dadfb036c Binary files /dev/null and b/docusaurus/docs/faq/code-analysis/images/grade_e.png differ diff --git a/docusaurus/docs/faq/code-analysis/images/grade_f.png b/docusaurus/docs/faq/code-analysis/images/grade_f.png new file mode 100644 index 0000000000..665d6455f1 Binary files /dev/null and b/docusaurus/docs/faq/code-analysis/images/grade_f.png differ diff --git a/docusaurus/docs/faq/code-analysis/which-metrics-does-codacy-calculate.md b/docusaurus/docs/faq/code-analysis/which-metrics-does-codacy-calculate.md new file mode 100644 index 0000000000..c676c0d327 --- /dev/null +++ b/docusaurus/docs/faq/code-analysis/which-metrics-does-codacy-calculate.md @@ -0,0 +1,164 @@ +--- +title: Which metrics does Codacy calculate? +description: Codacy scans your code for issues and calculates code complexity, duplication, and coverage metrics. Besides this, Codacy also calculates a grade for your repository and files based on all calculated code quality metrics. +--- + + +Codacy performs static code analysis and calculates code duplication, code complexity, and code coverage metrics for [most supported programming languages](../../getting-started/supported-languages-and-tools.md). + +The following sections describe how Codacy calculates each supported metric and where you can see each metric on the Codacy UI: + +- [Which metrics does Codacy calculate?](#which-metrics-does-codacy-calculate) + - [Grade](#grade) + - [Issues](#issues) + - [Complexity](#complexity) + - [Duplication](#duplication) + - [Code coverage](#code-coverage) + - [See also](#see-also) + +:::note +Depending on certain characteristics of your repository, such as the number of source code files and their size, Codacy may [apply limits to the code analysis](does-codacy-place-limits-on-the-code-analysis.md) that impact the calculation of the supported metrics. +::: + +## Grade + +Codacy assigns an overall grade to your repository branches and to individual files to help you assess the code quality of your repository. Grades represent a weighted average of the available code quality metrics (issues, complexity, duplication, and coverage), and range from **A** to **F**: + + + + + + + + + + + + +
    Highest gradeGrade AGrade BGrade CGrade DGrade EGrade FLowest grade
    + +Codacy displays grades on the following places: + +|Place|Metric| +|-----|------| +|[Files page](../../repositories/files.md)|Grade for each file in your repository| +|[Repository Dashboard](../../repositories/repository-dashboard.md)
    [Codacy badge](../../getting-started/adding-a-codacy-badge.md)|Grade of each analyzed branch in your repository| +|[Email notifications](../../account/emails.md#managing-your-email-notifications)|Grade of your repository| +|[Organization overview](../../organizations/organization-overview.md)|Average grade of the repositories in your organization and grade of each repository| +|[Repositories list](../../organizations/managing-repositories.md)|Grade of each repository in your organization| + +## Issues + +Codacy calculates the number of issues in the following static code analysis categories: + + +- **Code style:** Code formatting and syntax problems, such as variable names style and enforcing the use of brackets and quotation marks +- **Error prone:** Code that may hide bugs and language keywords that should be used with caution, such as the operator `==` in JavaScript or `Option.get` in Scala +- **Code complexity:** High complexity files that should be refactored +- **Performance:** Code that can have performance problems +- **Compatibility:** Mainly for frontend code, compatibility problems across different browser versions +- **Unused code:** Unused variables and methods, code that can't be reached +- **Security:** Potential security vulnerabilities, including hard-coded passwords and keys (secret scanning), vulnerable dependencies (software composition analysis or SCA), and insecure code patterns (static application security testing or SAST). For more information, see the complete [list of security issue categories](../../organizations/managing-security-and-risk.md#supported-security-categories) +- **Documentation:** Methods and classes that don't have the correct comment annotations +- **Best practice:** Code that doesn't follow the recommended coding standards and best practices +- **Comprehensibility:** Code that can be difficult to understand and modify + + +Besides this, Codacy also allows you to compare issues across repositories with different sizes by showing **issues per thousand lines of code (kLoC)**. + +Codacy displays issues on the following places: + +|Place|Metric| +|-----|------| +|[Commit detail page](../../repositories/commits.mdx)
    [Pull request detail page](../../repositories/pull-requests.mdx)
    [Email notifications](../../account/emails.md#managing-your-email-notifications)|Number of new and fixed issues introduced by the commit or pull request| +|[Files page](../../repositories/files.md)|Number of issues in each file| +|[Issues page](../../repositories/issues.md)|List of all issues detected in each branch| +|[Repository Dashboard](../../repositories/repository-dashboard.md)|Issues per 1000 lines of code| +|[Organization overview](../../organizations/organization-overview.md)|Average issues / kLoC of the repositories in your organization and issue / kLoC of each repository| +|[Repositories list page](../../organizations/managing-repositories.md)|Issues / kLoC in each repository in your organization| + +## Complexity + +Codacy uses [cyclomatic complexity](https://en.wikipedia.org/wiki/Cyclomatic_complexity) to identify files with complex methods in your repository. Cyclomatic complexity is the number of linearly independent paths through the source code of a method: the more control flow statements used in a method, the higher the value. Methods with a high cyclomatic complexity are more difficult to test and more likely to have defects. [Learn more about code complexity](https://blog.codacy.com/code-complexity/) on Codacy's blog. + +Codacy calculates complexity as follows: + +- The complexity value of a file is the total sum of the cyclomatic complexities of all methods within it. +- A file is considered complex if its cyclomatic complexity value is higher than the threshold [**File is complex when over**](../../repositories-configure/adjusting-quality-goals.md). +- The complexity value of a commit or pull request is calculated by summing the complexity differences of all changed files where the difference is 4 or more. + +Codacy displays complexity on the following places: + +|Place|Metric| +|-----|------| +|[Commit detail page](../../repositories/commits.mdx)
    [Pull request detail page](../../repositories/pull-requests.mdx)
    [Email notifications](../../account/emails.md#managing-your-email-notifications)|The complexity variation introduced by a commit or pull request is calculated by summing the complexity differences of all changed files where the difference is 4 or more. +|[Files page](../../repositories/files.md)|The file complexity value is the sum of the complexity values of all methods defined within the file| +|[Repository Dashboard](../../repositories/repository-dashboard.md)|Percentage of complex files in your repository and how the metric is evolving over time| +|[Organization overview](../../organizations/organization-overview.md)|Average percentage of complex files in the repositories in your organization and percentage of complex files in each repository| +|[Repositories list page](../../organizations/managing-repositories.md)|Percentage of complex files in each repository in your organization| + +## Duplication + +Codacy identifies clones or [sequences of duplicate code](https://en.wikipedia.org/wiki/Duplicate_code) that exist in at least two different places of the source code of your repository. Clones typically indicate deeper code quality issues and should be eliminated through abstraction when possible. + +Codacy calculates duplication as follows: + +- The duplication value for each file is the number of clones in the file. +- A file is considered duplicated if the number of clones in the file is higher than the threshold [**File is duplicated when over**](../../repositories-configure/adjusting-quality-goals.md). +- The duplication value of a commit or pull request is the number of clones introduced by the commit or pull request. + +:::note +You can [customize the rules for identifying duplicated blocks of code](../../repositories-configure/codacy-configuration-file.md#pmd-cpd-duplication) when using PMD CPD to analyze the source code of your repository. +::: + +Codacy displays duplication on the following places: + +|Place|Metric| +|-----|------| +|[Commit detail page](../../repositories/commits.mdx)
    [Pull request detail page](../../repositories/pull-requests.mdx)
    [Email notifications](../../account/emails.md#managing-your-email-notifications)|Number of clones added or fixed by a commit or pull request| +|[Files page](../../repositories/files.md)|Duplication value of each file| +|[Repository Dashboard](../../repositories/repository-dashboard.md)|Percentage of duplicated files in your repository and how the metric is evolving over time| +|[Organization overview](../../organizations/organization-overview.md)|Average percentage of duplicated files in the repositories in your organization and percentage of complex files in each repository| +|[Repositories list page](../../organizations/managing-repositories.md)|Percentage of duplicated files in each repository in your organization| + +## Code coverage + +Code coverage describes the degree to which the source code of a program is tested. There are several types of coverage, but Codacy uses line coverage, which measures the percentage of coverable lines of code that are covered by automated tests. [Learn more about code coverage](https://blog.codacy.com/a-guide-to-code-coverage-part-1-code-coverage-explained/) on Codacy's blog. + +You must set up your CI/CD pipeline to [upload code coverage data to Codacy](../../coverage-reporter/index.md). Because of this, the tool that you use to generate the coverage reports is responsible for creating the data that Codacy then uses to calculate code coverage. + +Codacy calculates code coverage as follows: + +- The coverage value for each file is the percentage of coverable lines that are covered by tests in the file. If a line is covered multiple times, Codacy counts it as a single covered line when calculating coverage. +- A repository is considered to have acceptable coverage if the percentage of coverable lines that are covered by tests in the repository is higher than the threshold [**Coverage is under**](../../repositories-configure/adjusting-quality-goals.md). + +- The **coverage variation** of a commit or pull request is the increase or drop in the percentage of coverable lines that are covered by tests in the repository because of the changes of the commit or pull request. +- The **diff coverage** of a pull request is the percentage of **coverable lines** that the pull request **added or modified** that are covered by tests. + + If a pull request doesn't add or modify any coverable lines, the diff coverage is `∅` (not applicable). This scenario happens when the only changes in a pull request are: + + - Deleted lines + - Added or modified lines that aren't coverable + + +:::note +If you encounter a situation where Codacy shows an unexpected drop in coverage, learn about [the most common reasons causing those scenarios](why-does-codacy-show-unexpected-coverage-changes.md). +::: + +Once the coverage setup is complete, Codacy displays coverage data on the following places: + +|Place|Metric| +|-----|------| +|[Commit detail page](../../repositories/commits.mdx)
    [Pull request detail page](../../repositories/pull-requests.mdx)
    [Email notifications](../../account/emails.md#managing-your-email-notifications)|Variation in percentage points of the coverage value for all files in the commit or pull request| +|[Pull request detail page](../../repositories/pull-requests.mdx)|Diff coverage for the changes included in the pull request| +|[Files page](../../repositories/files.md)|Coverage percentage of each file| +|[Repository Dashboard](../../repositories/repository-dashboard.md)|Coverage of the most recent commit of the selected branch and its evolution over time| +|[Codacy badge](../../getting-started/adding-a-codacy-badge.md)|Coverage of the most recent commit of the configured branch| +|[Organization overview](../../organizations/organization-overview.md)|Average coverage of the repositories in your organization and coverage of each repository| +|[Repositories list page](../../organizations/managing-repositories.md)|Coverage of each repository in your organization| + +## See also + +- [Diff coverage: we have a new metric and quality gate rule for PRs](https://blog.codacy.com/diff-coverage/) +- [Why does Codacy show unexpected coverage changes?](why-does-codacy-show-unexpected-coverage-changes.md) +- [Does Codacy place limits on the code analysis?](does-codacy-place-limits-on-the-code-analysis.md) diff --git a/docusaurus/docs/faq/code-analysis/why-does-codacy-show-unexpected-coverage-changes.md b/docusaurus/docs/faq/code-analysis/why-does-codacy-show-unexpected-coverage-changes.md new file mode 100644 index 0000000000..79ecf79170 --- /dev/null +++ b/docusaurus/docs/faq/code-analysis/why-does-codacy-show-unexpected-coverage-changes.md @@ -0,0 +1,377 @@ +--- +title: Why does Codacy show unexpected coverage changes? +--- + + +You may encounter some situations where Codacy shows unexpected drops in coverage, potentially causing your quality gates to fail. Usually, these drops in coverage happen in files that the commit or pull request didn't change. + +There are multiple reasons for this, but it's important to understand that each coverage report that you upload to Codacy contains information about which lines of code in your repository are tested or not in a specific commit. In particular, each coverage report provides the following information about the lines of your source code files: + +- **Coverable lines** (lines that can be tested), by listing those lines +- **Covered lines** (lines that were tested at least once), by marking those lines as tested or having a number of test hits +- **Not coverable lines** (lines that can't be tested), by not listing those lines + +For example, the coverage report represented below includes coverage information for two source code files: + +- File `ClassA.java` has two coverable lines and all are covered by tests +- File `ClassB.java` has three coverable lines but only line 1 is covered by tests + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FileLine numberCovered by tests?
    ClassA.java2Yes
    4Yes
    ClassB.java1Yes
    3No
    11No
    + +Based on the information obtained from the coverage reports, Codacy calculates code coverage as follows: + +- The **coverage** for a file, commit, or pull request is the percentage of covered lines in the universe of coverable lines for that file, commit, or pull request. For example, a commit with 85 covered lines out of a total of 100 coverable lines has 85% coverage. + +- The **coverage variation** of a commit or pull request is the increase or drop in the percentage of coverable lines that are covered by tests in the repository because of the changes of the commit or pull request. +- The **diff coverage** of a pull request is the percentage of **coverable lines** that the pull request **added or modified** that are covered by tests. + + If a pull request doesn't add or modify any coverable lines, the diff coverage is `∅` (not applicable). This scenario happens when the only changes in a pull request are: + + - Deleted lines + - Added or modified lines that aren't coverable + +:::caution +Note that changes external to a source code file can affect the lines that are or aren't covered in that file. +::: + +## Common reasons for unexpected coverage changes + +There are several reasons that could cause Codacy to report unexpected coverage results, from changes to your source code to external factors. The following is a non-exhaustive list of the most common reasons: + +- Adding new tests or removing existing tests from your project. + + Even small and localized changes to your tests can have an impact on the amount of covered lines across your repository. + +- Changing the logic of your application or tests. + + Changing the control flow of your application or tests can mean that different areas of your code start or stop being covered by tests. For example, inverting the result of the Boolean expression of an if statement means that a different branch of your code could now be tested. + +- Failing to upload coverage reports, or uploading a different number of reports between commits. + + This can be caused by a failed step in your CI/CD pipeline, for example. In the case of pull requests, you should make sure that you upload all relevant coverage reports for both the **common ancestor commit** and the **head commit** of the pull request branch. + +- Ignoring files on Codacy vs ignoring files on the coverage report. + + [Updating the list of ignored files](../../repositories-configure/ignoring-files.md) won't have an impact on the amount of coverable and covered lines of the commits that Codacy compares to calculate the coverage variation metric. Codacy calculates Coverage based solely on what is included in the coverage report. Therefore, if there are files you wish to keep from being included in the calculation, you should ensure they are not included in the coverage report. + +- External factors affecting the execution of tests. + + A variety of factors that are external to your code can affect the execution of tests and, consequently, the results contained in the coverage reports. A few examples of these external factors are: + + - Updates to dependencies of your project that could result in different test execution paths + - Misconfiguration of repository secrets that could prevent some test execution paths + - Tests that are dependent on time, such as running test cases only on specific dates or times of the day + - "Flaky" tests caused by any inconsistent or unreliable behavior of your code, infrastructure, or third-party services + +The examples below describe in more detail how specific changes in your code impact the coverage metrics that Codacy calculates. + +## Example: Diff coverage is 100% but pull request coverage variation is negative + +Consider an example pull request where Codacy shows the following metrics: + +- 100% diff coverage +- A negative coverage variation + +![Diff coverage is 100% but pull request coverage variation is negative](images/coverage-example-1.png) + +There are two possible scenarios that could cause this result: + +- **Removing covered lines or tests** + + Since diff coverage only applies to covered lines that the pull request added or modified, removed lines don't affect the diff coverage metric. However, removing covered lines or tests means that there are now less covered lines in the repository, causing a drop in coverage. + +- **Application logic changes** + + A change in the flow of execution of your application or tests can mean that a different number of coverable lines in your repository are now covered by tests, causing a drop in coverage. However, if all lines modified in the pull request continue to be covered, the diff coverage metric is 100%. + +The table below represents two example coverage reports reflecting a pull request that causes line 1 of the file `ClassB.java` to stop being covered: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Common ancestor commitHead commit
    FileLine numberCovered by tests?Line numberCovered by tests?
    ClassA.java2Yes2Yes
    4Yes4Yes
    ClassB.java1Yes1No
    3No3No
    11No11No
    + +The table below displays the code coverage metrics as calculated by Codacy: + +- Initially, `ClassB.java` was 33.33% covered but after the changes from the pull request the file is now 0% covered, causing the repository coverage to drop 20% +- As long as the pull request also modified any covered line that continues to be covered, the diff coverage is 100% + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Common ancestor commitHead commitPull request results
    FileCoverable
    lines
    Covered
    lines
    CoverageCoverable
    lines
    Covered
    lines
    CoverageCoverage variationDiff coverage
    ClassA.java22100%22100%0%
    ClassB.java3133.33%300%-33.33%
    Total5360%5240%-20%100%
    + +## Example: Pull request coverage variation is negative but no files have coverage variation + +Consider an example pull request where Codacy shows the following metrics: + +- Negative coverage variation +- There aren't any files with coverage variation + +![Pull request coverage variation is negative but no files have coverage variation](images/coverage-example-2.png) + +**Removing covered lines** from a file that had 100% coverage means that the file will continue to have 100% coverage. All lines in the file continue to be covered, even though there are now less covered lines. As such, there is no coverage variation for the file. + +However, since the proportion between the total number of covered and coverable lines across all files in the repository is now different, there can be a drop in the coverage variation for the pull request. + +:::caution +If you're using the [gate **Coverage variation is under**](../../repositories-configure/adjusting-quality-gates.md), configure at least a **-0.10% coverage variation margin** to ensure that developers aren't blocked while performing code refactors such as the one from this example. +::: + +The table below represents two example coverage reports reflecting a pull request that removes lines 5 and 6 of the file `ClassA.java`: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Common ancestor commitHead commit
    FileLine numberCovered by tests?Line numberCovered by tests?
    ClassA.java2Yes2Yes
    4Yes4Yes
    5Yes
    6Yes
    ClassB.java1Yes1Yes
    3No3No
    11No11No
    + +The table below displays the code coverage metrics as calculated by Codacy: + +- Initially, `ClassA.java` was 100% covered and continues to be 100% covered after the pull request, causing the coverage variation for the file to be 0% +- However, there were 62.5% lines covered across all files in the repository but after the pull request only 60% of the lines are now covered, causing the pull request coverage variation to drop 2.5% + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Common ancestor commitHead commitPull request results
    FileCoverable
    lines
    Covered
    lines
    CoverageCoverable
    lines
    Covered
    lines
    CoverageCoverage variation
    ClassA.java44100%22100%0%
    ClassB.java3133.33%3133.33%0%
    Total7562.5%5360%-2.5%
    + +## See also + +- [Which metrics does Codacy calculate?](which-metrics-does-codacy-calculate.md#code-coverage) +- [Adding coverage to your repository](../../coverage-reporter/index.md) diff --git a/docusaurus/docs/faq/general/does-codacy-keep-audit-logs.md b/docusaurus/docs/faq/general/does-codacy-keep-audit-logs.md new file mode 100644 index 0000000000..4db5da8ffb --- /dev/null +++ b/docusaurus/docs/faq/general/does-codacy-keep-audit-logs.md @@ -0,0 +1,8 @@ +--- +title: Does Codacy keep audit logs for my organization? +--- + + +On [Business plan](https://www.codacy.com/pricing), Codacy logs significant organization events that can be retrieved for audit reporting. + +See [Audit logs for organizations](../../organizations/audit-logs-for-organizations.md) for the complete list of events that Codacy logs, and how to obtain audit log data. diff --git a/docusaurus/docs/faq/general/how-can-i-change-or-cancel-my-plan.md b/docusaurus/docs/faq/general/how-can-i-change-or-cancel-my-plan.md new file mode 100644 index 0000000000..33cfd02202 --- /dev/null +++ b/docusaurus/docs/faq/general/how-can-i-change-or-cancel-my-plan.md @@ -0,0 +1,24 @@ +--- +title: How can I change or cancel my plan? +--- + + +You can change or cancel [your Codacy plan](https://www.codacy.com/pricing) at any time. If you choose to cancel your annual subscription before the conclusion of the 12 months, your account will continue to work for the remainder of the annual billing period. + +Codacy values feedback and we thank you in advance for letting us know the primary reason behind your decision to leave, whether budgetary constraints or missing deal-breaker functionality. + +## If you're using Codacy Cloud + +If you're using Codacy Cloud see [how to change the plan and billing of your Codacy organization](../../organizations/changing-your-plan-and-billing.md). + +Alternatively, [delete your organization](../../organizations/what-are-organizations.md#deleting-an-organization) to remove all its repositories from Codacy and cancel your existing plan. + +## If you're using Codacy Self-hosted + +To help you understand how you're consuming your licensed Codacy seats, use [codacy-usage-report](https://github.com/codacy/codacy-usage-report) to obtain details about the activity of the users in your Codacy Self-hosted instance. + +If you decide to cancel your plan, please contact [support@codacy.com](mailto:support@codacy.com) and we'll swiftly process the cancellation. + +## See also + +- [Changing your plan and billing](../../organizations/changing-your-plan-and-billing.md) diff --git a/docusaurus/docs/faq/general/how-do-i-allowlist-codacy-cloud-on-my-git-provider.mdx b/docusaurus/docs/faq/general/how-do-i-allowlist-codacy-cloud-on-my-git-provider.mdx new file mode 100644 index 0000000000..84be20ab4c --- /dev/null +++ b/docusaurus/docs/faq/general/how-do-i-allowlist-codacy-cloud-on-my-git-provider.mdx @@ -0,0 +1,29 @@ +--- +title: How do I allowlist Codacy Cloud on my Git provider? +description: Enable static IP addresses for your Codacy organization so that you can allowlist Codacy Cloud on your Git provider. +--- + +import Paid from '../../_includes/Paid.mdx'; + + + +If you require an additional layer of security and control on your Git provider, you can configure an allowlist containing the specific IP addresses that are able to access your Git repositories and resources. + +To allowlist Codacy Cloud on your Git provider: + +1. Send an email to [success@codacy.com](mailto:success@codacy.com?subject=Enabling static IP addresses) or directly to your CSM asking us to enable static IP addresses for your organization. + + :::note + Enabling static IPs for an organization is a [paid feature](https://www.codacy.com/pricing#qa-full-comparison). + ::: + +1. After receiving a confirmation that static IP addresses are active for your Codacy Cloud organization, add the following IP addresses to the allowlist on your Git provider: + + - 34.254.123.99 + - 18.203.76.9 + + The following are the instructions on how to allow IP addresses to access resources on each Git provider: + + - **GitHub Cloud:** [Managing allowed IP addresses for your organization](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization) + - **GitLab Cloud:** [Restrict group access by IP address](https://docs.gitlab.com/ee/user/group/#restrict-group-access-by-ip-address) + - **Bitbucket Cloud:** [Allowlisting IP addresses](https://support.atlassian.com/bitbucket-cloud/docs/control-access-to-your-private-content/#Allowlisting-IP-addresses) diff --git a/docusaurus/docs/faq/general/how-does-codacy-keep-my-data-secure.md b/docusaurus/docs/faq/general/how-does-codacy-keep-my-data-secure.md new file mode 100644 index 0000000000..36ff79a028 --- /dev/null +++ b/docusaurus/docs/faq/general/how-does-codacy-keep-my-data-secure.md @@ -0,0 +1,8 @@ +--- +title: How does Codacy keep my data secure? +--- + + +Keeping our customers' data protected at all times is our highest priority. This [security overview](https://security.codacy.com/) provides a high-level overview of the security practices put in place to achieve that objective. + +Have questions or feedback? Feel free to reach out to us at [security@codacy.com](mailto:security@codacy.com). diff --git a/docusaurus/docs/faq/general/how-does-codacy-protect-my-privacy.md b/docusaurus/docs/faq/general/how-does-codacy-protect-my-privacy.md new file mode 100644 index 0000000000..6d86e4fcc6 --- /dev/null +++ b/docusaurus/docs/faq/general/how-does-codacy-protect-my-privacy.md @@ -0,0 +1,17 @@ +--- +title: How does Codacy protect my privacy? +description: At Codacy, keeping your personal data safe has always been a top priority and we look at GDPR as another opportunity for us to strengthen this commitment to you. +--- + + +In May 2018 the new "General Data Protection Regulation" ([GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation)) came into effect. This regulation contains the most significant changes to European data privacy legislation in the last 20 years and gives you more control over your personal data and greater transparency on how it's used. + +At Codacy, keeping your personal data safe has always been a top priority and we took GDPR as another opportunity for us to strengthen this commitment to you. We've changed our data processing policies, operations, activities, and documentation as a response to GDPR and have updated our [Privacy Policy](https://www.codacy.com/privacy) to incorporate said changes and specifically reflect the new regulation. + +Below are some highlights of the updated policy: + +- Transparency: We've reworded our privacy policy for better navigation and to make it easier to read. Our policy outlines the type of personal data we collect, how we collect and process the data, and for what purposes. It also explains how we store, transfer, and share personal data, and our data retention practices +- Control: Our policy now further explains the control you have over information about you and your online activities. At any time, you can request information, correction, deletion, or changes to your personal data or/and make changes yourself +- GDPR: We've included additional language to discuss rights for users located in the European Union (EU) + +If you have any questions on this, please email us at [privacy@codacy.com](mailto:privacy@codacy.com) or reach out through our live chat option. diff --git a/docusaurus/docs/faq/general/how-does-codacy-support-bitbucket-cloud.md b/docusaurus/docs/faq/general/how-does-codacy-support-bitbucket-cloud.md new file mode 100644 index 0000000000..98a1dc83e2 --- /dev/null +++ b/docusaurus/docs/faq/general/how-does-codacy-support-bitbucket-cloud.md @@ -0,0 +1,28 @@ +--- +title: How does Codacy support Bitbucket Cloud? +--- + + +When you use Bitbucket Cloud to sign up or log into Codacy, the Bitbucket teams that you belong to will be available to be added as Organizations on Codacy. + +After adding a team: + +- Codacy displays the list of all repositories in that team so that you can add them to Codacy as repositories to be analyzed +- The members of the team will be able to [join or request to join Codacy](../../organizations/managing-people.md#joining) + +If you have repositories that don't belong to any team, you can still add those on Codacy directly under **My Repositories**. + +## Limitations + +Currently, the integration between Codacy and Bitbucket Cloud has the following limitations: + +- **Users that are deleted from Bitbucket Cloud are not automatically removed from Codacy.** These users must be manually removed from Codacy, namely to ensure that Codacy only bills seats corresponding to active users. +- **Deleted teams and repositories are not automatically deleted from Codacy.** However, you can manually delete the corresponding Organizations or repositories from Codacy. +- **Renamed Team [workspace IDs](https://support.atlassian.com/bitbucket-cloud/docs/what-is-a-workspace/#How-to-change-a-workspace-ID) aren't automatically renamed on Codacy, causing Codacy to stop analyzing the repositories in those teams.** You must click the button **Synchronize** in the settings of the corresponding Organization on Codacy to synchronize the workspace ID and resume the analysis of the repositories. +- **Repositories that are moved between teams are not automatically transferred between Organizations on Codacy.** You must manually delete these repositories from their source Organization and add them to their new Organization. +- **Codacy only sends commit and pull request notification emails to the authors of the commits and pull requests.** +- **Codacy doesn't analyze pull requests submitted from forked repositories.** + +## See also + +- [What are organizations](../../organizations/what-are-organizations.md) diff --git a/docusaurus/docs/faq/general/how-does-codacy-support-bitbucket-server.md b/docusaurus/docs/faq/general/how-does-codacy-support-bitbucket-server.md new file mode 100644 index 0000000000..58b92c6ff2 --- /dev/null +++ b/docusaurus/docs/faq/general/how-does-codacy-support-bitbucket-server.md @@ -0,0 +1,29 @@ +--- +title: How does Codacy support Bitbucket Server? +--- + + +When you use Bitbucket Server to sign up or log into Codacy, the Bitbucket projects that you belong to will be available to be added as Organizations on Codacy. + +After adding a project: + +- Codacy displays the list of all repositories that you own in that project so that you can add them to Codacy as repositories to be analyzed +- The members of the project will be able to [join or request to join Codacy](../../organizations/managing-people.md#joining) + +## Limitations + +Currently, the integration between Codacy and Bitbucket Server has the following limitations: + +- **Users that are deleted from Bitbucket Server are not automatically removed from Codacy.** These users must be manually removed from Codacy, namely to ensure that Codacy only bills seats corresponding to active users. +- **Renamed [project keys](https://confluence.atlassian.com/bitbucketserver/creating-projects-776639848.html) aren't automatically renamed on Codacy, causing Codacy to stop analyzing the repositories in those projects.** You must click the button **Synchronize** in the settings of the corresponding Organization on Codacy to synchronize the project key and resume the analysis of the repositories. +- **Deleted projects and repositories are not automatically deleted from Codacy.** However, you can manually delete the corresponding Organizations or repositories from Codacy. +- **Repositories that are moved between teams are not automatically transferred between Organizations on Codacy.** You must manually delete these repositories from their source Organization and add them to their new Organization. +- **Personal repositories are not supported.** You can only add repositories to Codacy if they belong to a project. +- **Codacy only sends commit and pull request notification emails to the authors of the commits and pull requests.** +- **[Pull request summaries](../../repositories-configure/integrations/bitbucket-integration.md#pull-request-summary) aren't available** +- **The Repositories screen doesn't include the "Last updated" date for each repository.** As such, the repositories are sorted alphabetically. +- **Codacy doesn't analyze pull requests submitted from forked repositories.** + +## See also + +- [What are organizations](../../organizations/what-are-organizations.md) diff --git a/docusaurus/docs/faq/general/how-does-codacy-support-github-enterprise.md b/docusaurus/docs/faq/general/how-does-codacy-support-github-enterprise.md new file mode 100644 index 0000000000..9516112544 --- /dev/null +++ b/docusaurus/docs/faq/general/how-does-codacy-support-github-enterprise.md @@ -0,0 +1,21 @@ +--- +title: How does Codacy support GitHub Enterprise Cloud? +--- + + +When you use GitHub Enterprise to sign up or log into Codacy, the GitHub Enterprise organizations, that you belong to, will be available to be added as Organizations on Codacy. + +After connecting with your Enterprise account Codacy displays the list of all organizations that you have access to in that Enterprise, and you can add to start analysing its repositories or join it. + + +## Limitations + +Currently, the integration between Codacy and GitHub Enterprise has the following limitations: + +- **Repositories with visibility Internal** will, in Codacy, have the same behavior as Private visibility. Although you see the repository in the provider, if you are not part of the repository in the provider, you will not be able to see it in Codacy. +- **Same email connected to multiple GitHub accounts.** Codacy will not allow you to connect your enterprise account if that email is already associated with a different GitHub account. You can manage your [associated emails in the provider GitHub](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account). + + +## See also + +- [How to manage your GitHub Enterprise organization](../../enterprise-cloud/github-enterprise-cloud.md) \ No newline at end of file diff --git a/docusaurus/docs/faq/general/how-does-codacy-support-gitlab-cloud.md b/docusaurus/docs/faq/general/how-does-codacy-support-gitlab-cloud.md new file mode 100644 index 0000000000..21257e3d53 --- /dev/null +++ b/docusaurus/docs/faq/general/how-does-codacy-support-gitlab-cloud.md @@ -0,0 +1,29 @@ +--- +title: How does Codacy support GitLab Cloud? +--- + + +When you use GitLab Cloud to sign up or log into Codacy, the GitLab Groups that you belong to will be available to be added as Organizations on Codacy. + +After adding a Group: + +- Codacy displays the list of all repositories that you own in that Group and Subgroups so that you can add them to Codacy as repositories to be analyzed +- The members of the Group will be able to [join or request to join Codacy](../../organizations/managing-people.md#joining) + +If you have repositories that don't belong to any Group, you can still [add those on Codacy by choosing your "personal" organization](../../getting-started/codacy-quickstart.md#choosing-organization). + +## Limitations + +Currently, the integration between Codacy and GitLab Cloud has the following limitations: + +- **Users that are deleted from GitLab are not automatically removed from Codacy.** These users must be manually removed from Codacy, namely to ensure that Codacy only bills seats corresponding to active users. +- **Renamed [Group paths](https://docs.gitlab.com/ee/user/group/index.html#change-a-groups-path) aren't automatically renamed on Codacy, causing Codacy to stop analyzing the repositories in those groups.** You must click the button **Synchronize** in the settings of the corresponding Organization on Codacy to synchronize the Group path and resume the analysis of the repositories. +- **Deleted Groups are not automatically deleted from Codacy.** However, you can manually delete the corresponding Organizations from Codacy. +- **Repositories that are moved between Groups are not automatically transferred between Organizations on Codacy.** You must manually delete these repositories from their source Organization and add them to their new Organization. +- **It is not possible to add repositories with the same name to the Codacy organization.** Repositories having the same name but belonging to different GitLab Subgroups would collide if they were added to the same Codacy organization. +- **Codacy doesn't analyze pull requests submitted from forked repositories.** +- **[Share projects with other groups](https://docs.gitlab.com/ee/user/project/members/share_project_with_groups.html) isn't fully supported on Codacy.** Users from the "other groups" can join the Organization that owns the project on the Codacy side, and Codacy will analyze the commits from those users. However, those users **won't** be able to access the project on the Codacy UI. + +## See also + +- [What are organizations](../../organizations/what-are-organizations.md) diff --git a/docusaurus/docs/faq/general/how-does-codacy-support-gitlab-enterprise.md b/docusaurus/docs/faq/general/how-does-codacy-support-gitlab-enterprise.md new file mode 100644 index 0000000000..41284a80d1 --- /dev/null +++ b/docusaurus/docs/faq/general/how-does-codacy-support-gitlab-enterprise.md @@ -0,0 +1,26 @@ +--- +title: How does Codacy support GitLab Enterprise? +--- + + +When you use GitLab Enterprise to sign up or log into Codacy, the GitLab Groups that you belong to will be available to be added as Organizations on Codacy. + +After adding a Group: + +- Codacy displays the list of all repositories that you own in that Group and Subgroups so that you can add them to Codacy as repositories to be analyzed +- The members of the Group will be able to [join or request to join Codacy](../../organizations/managing-people.md#joining) + +If you have repositories that don't belong to any Group, you can still [add those on Codacy by choosing your "personal" organization](../../getting-started/codacy-quickstart.md#choosing-organization). + +## Limitations + +Currently, the integration between Codacy and GitLab Enterprise has the following limitations: + +- **Repositories that are moved between Groups are not automatically transferred between Organizations on Codacy.** You must manually delete these repositories from their source Organization and add them to their new Organization. +- **It is not possible to add repositories with the same name to the Codacy organization.** Repositories having the same name but belonging to different GitLab Subgroups would collide if they were added to the same Codacy organization. +- **Codacy doesn't analyze pull requests submitted from forked repositories.** +- **[Share projects with other groups](https://docs.gitlab.com/ee/user/project/members/share_project_with_groups.html) isn't fully supported on Codacy.** Users from the "other groups" can join the Organization that owns the project on the Codacy side, and Codacy will analyze the commits from those users. However, those users **won't** be able to access the project on the Codacy UI. + +## See also + +- [What are organizations](../../organizations/what-are-organizations.md) diff --git a/docusaurus/docs/faq/general/which-platforms-and-technologies-does-codacy-support.md b/docusaurus/docs/faq/general/which-platforms-and-technologies-does-codacy-support.md new file mode 100644 index 0000000000..7f9e4f3651 --- /dev/null +++ b/docusaurus/docs/faq/general/which-platforms-and-technologies-does-codacy-support.md @@ -0,0 +1,85 @@ +--- +title: Which platforms and technologies does Codacy support? +--- + + +This page includes information about software platforms and technologies compatible with Codacy. + +## Supported version control systems and Git providers + +Codacy supports repositories from the following Git providers: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Hosting modelName used on CodacyRequired Codacy version
    + GitHub +

    GitHub.com

    GitHub Cloud

    Codacy Cloud or
    Codacy Self-hosted

    GitHub Enterprise Server
    version 3.6.2 or later

    GitHub Enterprise

    Codacy Self-hosted

    + GitLab +

    GitLab SaaS

    GitLab Cloud

    Codacy Cloud or
    Codacy Self-hosted

    GitLab Self-managed
    version 14.8 or later

    GitLab Enterprise

    Codacy Self-hosted

    + Bitbucket +

    Bitbucket Cloud

    Bitbucket Cloud

    Codacy Cloud or
    Codacy Self-hosted

    Bitbucket Data Center
    + Bitbucket Server
    version 6.6.0 or later

    Bitbucket Server

    Codacy Self-hosted

    + +:::note +Although older versions of the self-hosted Git providers may work with Codacy without loss of functionality, Codacy will only fix issues and ensure compatibility with the versions listed above. +::: + +## Supported browsers + +Codacy runs on every modern browser supporting HTML5 and CSS3: + +- Chrome 67+ +- Firefox 45+ +- Internet Explorer 11+ +- Microsoft Edge 13+ + +## Supported character encodings + +Codacy supports the UTF-8 character encoding standard. diff --git a/docusaurus/docs/faq/repositories/how-do-i-reanalyze-my-repository.mdx b/docusaurus/docs/faq/repositories/how-do-i-reanalyze-my-repository.mdx new file mode 100644 index 0000000000..9a7d07edee --- /dev/null +++ b/docusaurus/docs/faq/repositories/how-do-i-reanalyze-my-repository.mdx @@ -0,0 +1,54 @@ +--- +title: How do I reanalyze my repository? +--- +import AdminAccessControlInfo from '../../_includes/AdminAccessControlInfo.mdx' + + + + +Reanalyze the last commit in your branch or pull request: + +- To update the Codacy analysis results taking into account the most recent configurations for your repository without waiting for a new commit to trigger the analysis +- If the grade or [Codacy badge](../../getting-started/adding-a-codacy-badge.md) for your branch is greyed out and displays an exclamation mark, which means that the analysis information isn't available for the last commit of the branch: + + ![Greyed-out Codacy badge and repository grade](images/codacy-badge-grade-gray.png) + +:::caution +- If you have the setting **Run analysis on your build server** enabled in your repository **Settings** page so that you can [run client-side tools](../../repositories-configure/local-analysis/client-side-tools.md), you can't trigger a new analysis from the Codacy UI. + + Instead, you must manually run the client-side tools or wait for them to report the results for a new commit. + +- You can only reanalyze commits to branches or pull requests in your repository if the committer [is part of your organization](../../organizations/managing-people.md). + +::: + +## Reanalyzing a branch + +To reanalyze a branch in your repository: + +1. Open the **Commits** page for your repository and select the correct branch at the top of the page if you configured Codacy to [analyze multiple branches](../../repositories-configure/managing-branches.mdx). + + Then, select the most recent commit for that branch at the top of the list: + + ![Selecting the last commit on a branch](images/reanalyze-repository-commits-list.png) + +1. Click the **Reanalyze** link to trigger a reanalysis. Codacy will display the status of the reanalysis request. + + ![Reanalyzing a commit](images/reanalyze-repository-commit.png) + +## Reanalyzing a pull request + +To reanalyze a pull request in your repository: + +1. Open the **Pull Requests** page for your repository and select the pull request that you want to reanalyze. + + ![Selecting a pull request](images/reanalyze-repository-prs-list.png) + +1. Click the **Reanalyze** button to trigger a reanalysis. Codacy will display the status of the reanalysis request. + + ![Reanalyzing a pull request](images/reanalyze-repository-pr.png) + +## See also + +- [Commit status](../../repositories/commits.mdx#status) +- [Pull request status](../../repositories/pull-requests.mdx#status) diff --git a/docusaurus/docs/faq/repositories/i-moved-my-repository-on-the-git-provider.md b/docusaurus/docs/faq/repositories/i-moved-my-repository-on-the-git-provider.md new file mode 100644 index 0000000000..938c435667 --- /dev/null +++ b/docusaurus/docs/faq/repositories/i-moved-my-repository-on-the-git-provider.md @@ -0,0 +1,13 @@ +--- +title: I moved my repository on the Git provider +--- + + +Currently, Codacy doesn't automatically detect moves of repositories between two organizations. + +To ensure that Codacy continues to analyze a repository that was moved to another organization on your Git provider: + +1. Delete the repository from the original organization on Codacy, taking note of the settings for this repository +1. Add the repository to the new organization on Codacy and reconfigure the repository with the same settings as the original one + +If you can't find your repository in the original Codacy organization or if you need more help with this process, please contact us at [support@codacy.com](mailto:support@codacy.com). diff --git a/docusaurus/docs/faq/repositories/i-renamed-my-repository-on-the-git-provider.md b/docusaurus/docs/faq/repositories/i-renamed-my-repository-on-the-git-provider.md new file mode 100644 index 0000000000..0de27e7f23 --- /dev/null +++ b/docusaurus/docs/faq/repositories/i-renamed-my-repository-on-the-git-provider.md @@ -0,0 +1,10 @@ +--- +title: I renamed my repository on the Git provider +--- + + +If you changed the name or URL of your repository on your Git provider, you can update the name and URL of the repository on Codacy to point to the new location. This ensures that you won't lose historical data about your repository on Codacy. + +To rename your repository on Codacy, open the page **Settings** and click the button **Update repository**. + +![Renaming your repository](images/repository-rename.png) diff --git a/docusaurus/docs/faq/repositories/images/codacy-badge-grade-gray.png b/docusaurus/docs/faq/repositories/images/codacy-badge-grade-gray.png new file mode 100644 index 0000000000..aa367f0297 Binary files /dev/null and b/docusaurus/docs/faq/repositories/images/codacy-badge-grade-gray.png differ diff --git a/docusaurus/docs/faq/repositories/images/reanalyze-repository-commit.png b/docusaurus/docs/faq/repositories/images/reanalyze-repository-commit.png new file mode 100644 index 0000000000..de175451f2 Binary files /dev/null and b/docusaurus/docs/faq/repositories/images/reanalyze-repository-commit.png differ diff --git a/docusaurus/docs/faq/repositories/images/reanalyze-repository-commits-list.png b/docusaurus/docs/faq/repositories/images/reanalyze-repository-commits-list.png new file mode 100644 index 0000000000..3d8dd11317 Binary files /dev/null and b/docusaurus/docs/faq/repositories/images/reanalyze-repository-commits-list.png differ diff --git a/docusaurus/docs/faq/repositories/images/reanalyze-repository-pr.png b/docusaurus/docs/faq/repositories/images/reanalyze-repository-pr.png new file mode 100644 index 0000000000..1f0840352e Binary files /dev/null and b/docusaurus/docs/faq/repositories/images/reanalyze-repository-pr.png differ diff --git a/docusaurus/docs/faq/repositories/images/reanalyze-repository-prs-list.png b/docusaurus/docs/faq/repositories/images/reanalyze-repository-prs-list.png new file mode 100644 index 0000000000..e71636608d Binary files /dev/null and b/docusaurus/docs/faq/repositories/images/reanalyze-repository-prs-list.png differ diff --git a/docusaurus/docs/faq/repositories/images/repository-rename.png b/docusaurus/docs/faq/repositories/images/repository-rename.png new file mode 100644 index 0000000000..b247b1f5f9 Binary files /dev/null and b/docusaurus/docs/faq/repositories/images/repository-rename.png differ diff --git a/docusaurus/docs/faq/troubleshooting/error-line-endings.md b/docusaurus/docs/faq/troubleshooting/error-line-endings.md new file mode 100644 index 0000000000..26a2853b1e --- /dev/null +++ b/docusaurus/docs/faq/troubleshooting/error-line-endings.md @@ -0,0 +1,38 @@ +--- +title: Error caused by incompatible line endings +--- + + +Codacy executes the `git diff` command when analyzing new commits and pull requests to identify the lines of code that were changed. Codacy then uses this information to display the issues that were caused by the changes introduced by the commits or pull requests. + +If you have files in your repository that use the carriage return (CR) as the line end control character, the command `git diff` doesn't correctly identify line endings in the changed files. Because of this, Codacy is unable to use the output of the command and the **Diff** step of your commit or pull request analysis logs will display the message `An error occurred during this step. Please, retry your analysis or contact support`. + +![Viewing the analysis logs](images/error-line-endings.png) + +The CR line end control character was used by older Classic Mac OS systems, and for the sake of interoperability it's recommended that you: + +1. Find the files in your repository that include CR line endings. + + :::tip + On *nix operating systems including macOS, you can use the command `file` to detect files in your repository that use CR line endings. For example, run the following command on the root of your repository: + + ```bash + find . -type f -exec file {} \; | grep "CR line" + ``` + ::: + +1. Update the line endings in your source code files to use either the control characters: + + - LF, if primarily using Unix-like systems such as Linux or the newer macOS operating system + - CRLF, if primarily using the Microsoft Windows operating system + + :::tip + [This article on Wikipedia](https://en.wikipedia.org/wiki/Newline#Conversion_between_newline_formats) includes examples on how to convert the line endings in your files. + ::: + +1. After converting the line endings in your source code files, you may also want to check the following resources for help on standardizing the line endings on your repositories and how to configure Git to correctly handle line endings: + + - [What's the recommended way to store files in Git?](https://git-scm.com/docs/gitfaq#Documentation/gitfaq.txt-What8217stherecommendedwaytostorefilesinGit) + - [Customizing Git - Formatting and Whitespace](https://git-scm.com/book/en/Customizing-Git-Git-Configuration#_formatting_and_whitespace) + - [Configuring Git to handle line endings](https://docs.github.com/en/get-started/getting-started-with-git/configuring-git-to-handle-line-endings) + - [Mind the End of Your Line](https://adaptivepatchwork.com/2012/03/01/mind-the-end-of-your-line/) diff --git a/docusaurus/docs/faq/troubleshooting/images/duplication-commits.png b/docusaurus/docs/faq/troubleshooting/images/duplication-commits.png new file mode 100644 index 0000000000..8359ea3615 Binary files /dev/null and b/docusaurus/docs/faq/troubleshooting/images/duplication-commits.png differ diff --git a/docusaurus/docs/faq/troubleshooting/images/duplication-files.png b/docusaurus/docs/faq/troubleshooting/images/duplication-files.png new file mode 100644 index 0000000000..f9e034b6cf Binary files /dev/null and b/docusaurus/docs/faq/troubleshooting/images/duplication-files.png differ diff --git a/docusaurus/docs/faq/troubleshooting/images/duplication-metrics-reset.png b/docusaurus/docs/faq/troubleshooting/images/duplication-metrics-reset.png new file mode 100644 index 0000000000..278edad02e Binary files /dev/null and b/docusaurus/docs/faq/troubleshooting/images/duplication-metrics-reset.png differ diff --git a/docusaurus/docs/faq/troubleshooting/images/error-line-endings.png b/docusaurus/docs/faq/troubleshooting/images/error-line-endings.png new file mode 100644 index 0000000000..0bccf3f942 Binary files /dev/null and b/docusaurus/docs/faq/troubleshooting/images/error-line-endings.png differ diff --git a/docusaurus/docs/faq/troubleshooting/images/git-provider-integration-remove.png b/docusaurus/docs/faq/troubleshooting/images/git-provider-integration-remove.png new file mode 100644 index 0000000000..9f2e8fa309 Binary files /dev/null and b/docusaurus/docs/faq/troubleshooting/images/git-provider-integration-remove.png differ diff --git a/docusaurus/docs/faq/troubleshooting/images/not-a-member-of-the-organization-account.png b/docusaurus/docs/faq/troubleshooting/images/not-a-member-of-the-organization-account.png new file mode 100644 index 0000000000..9e809c35af Binary files /dev/null and b/docusaurus/docs/faq/troubleshooting/images/not-a-member-of-the-organization-account.png differ diff --git a/docusaurus/docs/faq/troubleshooting/images/not-a-member-of-the-organization-commit.png b/docusaurus/docs/faq/troubleshooting/images/not-a-member-of-the-organization-commit.png new file mode 100644 index 0000000000..fb567a05da Binary files /dev/null and b/docusaurus/docs/faq/troubleshooting/images/not-a-member-of-the-organization-commit.png differ diff --git a/docusaurus/docs/faq/troubleshooting/images/organization-refresh-list.png b/docusaurus/docs/faq/troubleshooting/images/organization-refresh-list.png new file mode 100644 index 0000000000..75eda44a47 Binary files /dev/null and b/docusaurus/docs/faq/troubleshooting/images/organization-refresh-list.png differ diff --git a/docusaurus/docs/faq/troubleshooting/images/we-no-longer-have-access-to-this-repository-new-key.png b/docusaurus/docs/faq/troubleshooting/images/we-no-longer-have-access-to-this-repository-new-key.png new file mode 100644 index 0000000000..516eec0497 Binary files /dev/null and b/docusaurus/docs/faq/troubleshooting/images/we-no-longer-have-access-to-this-repository-new-key.png differ diff --git a/docusaurus/docs/faq/troubleshooting/not-a-member-of-the-organization.md b/docusaurus/docs/faq/troubleshooting/not-a-member-of-the-organization.md new file mode 100644 index 0000000000..73f283c63a --- /dev/null +++ b/docusaurus/docs/faq/troubleshooting/not-a-member-of-the-organization.md @@ -0,0 +1,28 @@ +--- +title: Not a member of the organization +--- + + +When you see the message **Not a member of the organization** it means that Codacy Cloud can't analyze a commit because the associated email address doesn't belong to any [member or committer of your Codacy organization](../../organizations/managing-people.md). + +You can check which email address is associated with a commit by hovering the cursor on the name of the committer on the page for the commit: + +![Checking the email address for a commit](images/not-a-member-of-the-organization-commit.png) + +To verify which email addresses are associated with the Codacy Cloud account, the user must click on their avatar on the top right-hand corner, select **Your account**, and open the page **Emails**: + +![Email addresses associated with a user account](images/not-a-member-of-the-organization-account.png) + +There may be different reasons for this issue to happen: + +- **The user making the commit hasn't signed in to Codacy Cloud and joined the organization yet** + + The user must [join the organization](../../organizations/managing-people.md#joining) or, if you're the organization admin, you can [add the user](../../organizations/managing-people.md#adding-people) instead. + +- **The commit email address isn't associated with the account of a Codacy Cloud user** + + Make sure the user [updates the email addresses associated with their Codacy account](../../account/emails.md#updating) to include the missing commit email address. + +- **Git isn't configured with the correct email address** + + Make sure the user [sets the Git email address](../../account/emails.md#git-config) correctly. diff --git a/docusaurus/docs/faq/troubleshooting/we-no-longer-have-access-to-this-repository.md b/docusaurus/docs/faq/troubleshooting/we-no-longer-have-access-to-this-repository.md new file mode 100644 index 0000000000..f90e4f3bce --- /dev/null +++ b/docusaurus/docs/faq/troubleshooting/we-no-longer-have-access-to-this-repository.md @@ -0,0 +1,39 @@ +--- +title: We no longer have access to this repository, check your SSH keys +description: Troubleshoot and fix issues that prevent Codacy from cloning your private repository, such as moving the repository or changing the permissions of the user that added the repository to Codacy. +--- + + +Some changes on your Git provider can prevent Codacy from cloning your private repository. When this happens, Codacy displays the error message "We no longer have access to this repository" on the Repository Dashboard page. + +## The repository was renamed or moved + +If you renamed the repository or moved it to a different account on the Git provider: + +1. On Codacy, open your **Repository Settings**, tab **General**. +1. Click the button **Update repository** in the **Synchronize with provider** area. + +## The user that configured the repository no longer has access + +:::note[This section applies only to GitLab and Bitbucket] +::: + +On GitLab and Bitbucket organizations, Codacy uses SSH keys to clone your private repositories. Depending on the level of access that the user configuring the repository on Codacy has on the remote Git provider, an SSH key can be added either: + +- Directly to the repository itself, if the user has permissions to add SSH keys to the repository +- To the user account, if the user only has read or commit permissions on the repository + +If the user that initially configured the repository on Codacy was using a user account SSH key but no longer has access to the repository on GitLab or Bitbucket: + +1. On Codacy, open your **Repository Settings**, tab **General**. +1. Click the button **Generate New Repository Key** to add a new SSH key to your repository deployment keys. + + This is only possible if the user configuring the integration with the remote Git provider has administrator access to the repository. Otherwise, this operation will fail. Alternatively, you can do this process manually by copying the SSH key. + + :::note + If [your repository is using submodules on Codacy](../../repositories-configure/using-submodules.md), add a new SSH user key to your Git provider account instead. + ::: + + ![Generate new key](images/we-no-longer-have-access-to-this-repository-new-key.png) + +1. Open the tab **Integrations**, and refresh your [GitLab](../../repositories-configure/integrations/gitlab-integration.md#refreshing) or [Bitbucket](../../repositories-configure/integrations/bitbucket-integration.md#refreshing) integration. diff --git a/docusaurus/docs/faq/troubleshooting/why-arent-duplication-metrics-being-calculated.md b/docusaurus/docs/faq/troubleshooting/why-arent-duplication-metrics-being-calculated.md new file mode 100644 index 0000000000..6b39fa5837 --- /dev/null +++ b/docusaurus/docs/faq/troubleshooting/why-arent-duplication-metrics-being-calculated.md @@ -0,0 +1,38 @@ +--- +title: Why aren't duplication metrics being calculated? +--- + + +For performance reasons, Codacy skips the calculation of code duplication for programming languages that have more than 5000 source code files in a repository. + +Besides this, if Codacy fails to calculate code duplication for a specific programming language in a repository three times in a row (for example, because the tool calculating the analysis runs out of memory or times out), Codacy stops trying to analyze the metric for that language and repository. + +When this happens, Codacy doesn't display code duplication metrics for the affected language: + +- The **Files** page on your repository displays a blank duplication value for files of the affected language. + + ![Duplication in the Files page](images/duplication-files.png) + +- The **Commits** and **Pull Request** pages display an empty **Duplication** tab. + + ![New duplication for a commit](images/duplication-commits.png) + +- The analysis logs for commits won't display a duplication analysis task for the tool corresponding to the affected language. + +As a workaround, if you're exceeding the maximum number of source code files: + +1. Use a [Codacy configuration file](../../repositories-configure/codacy-configuration-file.md) to exclude source code files of the affected language from your project to decrease the number of files to be analyzed. + + For example, you may be able to exclude files that are automatically generated from your test suite or files belonging to dependencies that aren't maintained by your team, such as the `node_modules` folder for JavaScript projects. + +1. Reanalyze the last commit in the repository so that Codacy runs the code duplication analysis. + +If the analysis finishes but the code duplication metric wasn't calculated, follow the next steps: + +- **If you're using Codacy Self-hosted**, open the **Admin panel**, **Repositories**, select the repository, tab **Settings**, and reset the code duplication analysis in **Duplication settings**. Then, reanalyze the last commit in the repository so that Codacy runs the code duplication analysis. + + ![Resetting the failed duplication analysis](images/duplication-metrics-reset.png) + +- **If you're [analyzing your repository locally](../../repositories-configure/local-analysis/client-side-tools.md)** with the Codacy Analysis CLI, consider using the flag `--tool-timeout` to specify a larger timeout for the execution of the tool. + +- **If you're using Codacy Cloud** or if the steps above didn't solve the issue, please contact us at [support@codacy.com](mailto:support@codacy.com). diff --git a/docusaurus/docs/faq/troubleshooting/why-cant-i-see-my-organization.md b/docusaurus/docs/faq/troubleshooting/why-cant-i-see-my-organization.md new file mode 100644 index 0000000000..cfa13e22b1 --- /dev/null +++ b/docusaurus/docs/faq/troubleshooting/why-cant-i-see-my-organization.md @@ -0,0 +1,23 @@ +--- +title: Why can't I see my organization? +description: Try these steps if you don't see your organization when adding your organization on Codacy. +--- + + +If you can't [add your organization to Codacy](../../organizations/what-are-organizations.md#adding-an-organization) because it doesn't appear on the Organizations page, please try re-adding your Git provider by clicking **Add provider** on the Organizations page: + +![Refreshing the list of organizations](images/organization-refresh-list.png) + +If you still can't see your organization on Codacy, follow the steps below to check if the issue is solved: + +1. Re-add your Git provider by clicking **Add provider** on the Organizations page. + +1. Make sure that you have access to the organization on the Git provider using the account that you used to log in on Codacy. + +1. **If you're using GitHub** [install and authorize Codacy on your organization](https://github.com/apps/codacy-production/installations/new). + +1. [Revoke Codacy's OAuth integration](../../getting-started/which-permissions-does-codacy-need-from-my-account.md#revoking-access-to-integrations) with your Git provider and log in again to Codacy. + + ![Revoking Codacy's OAuth integration](../../getting-started/images/revoke-integration.png) + +If these steps don't solve the issue, please contact us at [support@codacy.com](mailto:support@codacy.com). diff --git a/docusaurus/docs/faq/troubleshooting/why-did-codacy-stop-commenting-on-pull-requests.md b/docusaurus/docs/faq/troubleshooting/why-did-codacy-stop-commenting-on-pull-requests.md new file mode 100644 index 0000000000..e99dc4119e --- /dev/null +++ b/docusaurus/docs/faq/troubleshooting/why-did-codacy-stop-commenting-on-pull-requests.md @@ -0,0 +1,53 @@ +--- +title: Why did Codacy stop commenting on pull requests? +--- + + +## Outdated app permissions + +:::note[This section applies to Codacy Coverage on GitHub] +::: + +Coverage information is currently sent to GitHub by a new version of the Codacy Coverage engine, which depends on updated app permissions. + +If you stopped receiving coverage summaries on your pull requests, please [review and accept the updated Codacy app permissions on GitHub](https://docs.github.com/en/enterprise-cloud@latest/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#reviewing-permissions). For more information on the rollout of the new Coverage engine, [see the relevant release note](../../release-notes/cloud/cloud-2023-11-23-new-coverage-engine-status-checks.md). + +## Outdated permissions or invalid SSH key {#outdated-permissions} +:::note[This section applies to GitLab and Bitbucket] +::: + +Different reasons can cause Codacy to stop analyzing and commenting on pull requests, but the most common is that the user who initially enabled the GitLab or Bitbucket integration no longer has permissions on the repository or that the SSH key is no longer valid. + +To fix this issue and avoid future disruptions, refresh the GitLab or Bitbucket integration on Codacy using a dedicated service account on your Git provider: + +1. Create a service account on your Git provider exclusively dedicated to integrating Codacy with your repositories. + + :::note + The service account must: + - [Have administrator permissions](../../organizations/roles-and-permissions-for-organizations.md) on the repositories to integrate with Codacy + - Not be shared by other systems to ensure that Codacy doesn't hit the API rate limits of the Git provider when using this account + ::: + + :::tip + Using a dedicated service account also has the advantage of any pull request comments made by Codacy appearing as authored by the service account instead of by a regular organization member. You can name this account "Codacy" and use [this Codacy logo](https://avatars.githubusercontent.com/u/1834093) as the account picture so that your pull request comments look like the following example: + + ![Codacy comment on a GitLab merge request](../../repositories-configure/integrations/images/gitlab-integration-pr-comment.png) + ::: + +1. Log out of both your Git provider and of Codacy. + +1. Log in to Codacy using the new service account. + +1. Open your repository **Settings**, tab **Integrations**, and click the link **Refresh connection** to refresh the existing Git provider integration: + + ![Refresh Git provider integration](../../repositories-configure/integrations/images/gitlab-integration-refresh.png) + +1. Make sure the Git provider integration is configured as needed: + + - [Configuring the GitLab integration](../../repositories-configure/integrations/gitlab-integration.md#configuring) + + - [Configuring the Bitbucket integration](../../repositories-configure/integrations/bitbucket-integration.md#configuring) + +## See also + +- [We no longer have access to this repository, check your SSH keys](we-no-longer-have-access-to-this-repository.md) diff --git a/docusaurus/docs/faq/troubleshooting/why-is-my-file-over-150-kb-missing.md b/docusaurus/docs/faq/troubleshooting/why-is-my-file-over-150-kb-missing.md new file mode 100644 index 0000000000..fb7f2f24e7 --- /dev/null +++ b/docusaurus/docs/faq/troubleshooting/why-is-my-file-over-150-kb-missing.md @@ -0,0 +1,48 @@ +--- +title: Why is my file over 150 KB missing? +--- + + +Codacy Cloud currently [doesn't analyze files that are larger than 150 KB](../code-analysis/does-codacy-place-limits-on-the-code-analysis.md). Codacy doesn't display these files on the [Files page](../../repositories/files.md), and doesn't take them into account when grading your repository. + +## Why is there a limit? + +As part of our performance improvement measures, we spent time breaking down the total time it takes to analyze a repository and found that a large percentage of time was spent on files that didn't add value to our users. Those files tend to be the biggest in the repository and are typically generated by or dependent on a third-party. It increased analysis time significantly due to the file size and even resulted in timeouts at some point, preventing the flagging of real issues. + +As a solution to this problem, we placed a size limit to the files that Codacy would analyze. This decreased the average analysis time and the number of timeouts, thus improving the overall performance for our users. + +## What if I need to analyze a file that exceeds this limit? + +While Codacy will ignore your file by default, you can still analyze it by running the analysis locally using the [Codacy Analysis CLI](https://github.com/codacy/codacy-analysis-cli). The Codacy Analysis CLI doesn't have any limitation on file size. + +## What about Codacy Self-hosted? + +By default, Codacy Self-hosted has the same limit of 150 KB as Codacy Cloud. However, in this case the limit is configurable because the resource allocation for on-premise instances is decided by each organization. + +To update the file size limit: + +1. Edit the value of `global.workerManager.workers.config.analysis.maxFileSizeBytes` in the `values-production.yaml` file that you used to install Codacy: + + ```yaml + global: + workerManager: + workers: + config: + analysis: + maxFileSizeBytes: 150000 + ``` + +1. Apply the new configuration by performing a Helm upgrade and specifying the Codacy Self-hosted version currently installed. To do so execute the command [used to install Codacy](../../chart/index.md#helm-upgrade): + + :::caution + **If you're using MicroK8s** you must use the file `values-microk8s.yaml` together with the file `values-production.yaml`. + + To do this, uncomment the last line before running the `helm upgrade` command below. + ::: + + ```bash + helm upgrade (...options used to install Codacy...) \ + --version \ + --values values-production.yaml \ + # --values values-microk8s.yaml + ``` diff --git a/docusaurus/docs/faq/troubleshooting/why-isnt-my-public-repository-being-analyzed.md b/docusaurus/docs/faq/troubleshooting/why-isnt-my-public-repository-being-analyzed.md new file mode 100644 index 0000000000..cb4db5a777 --- /dev/null +++ b/docusaurus/docs/faq/troubleshooting/why-isnt-my-public-repository-being-analyzed.md @@ -0,0 +1,6 @@ +--- +title: Why isn't my public repository being analyzed? +--- + + +Codacy only analyzes open source repositories if the admin of the repository is a committer to that repository. diff --git a/docusaurus/docs/getting-started/_order.ts b/docusaurus/docs/getting-started/_order.ts new file mode 100644 index 0000000000..3451473ceb --- /dev/null +++ b/docusaurus/docs/getting-started/_order.ts @@ -0,0 +1,17 @@ +export const gettingStartedOrder = [ + 'getting-started/codacy-quickstart', + 'getting-started/configuring-your-repository', + 'getting-started/integrating-codacy-with-your-git-workflow', + { + type: 'category' as const, + label: 'Integrating Codacy with your IDE', + items: [ + 'getting-started/configure-ide/integrating-codacy-with-intellij-ides', + 'getting-started/configure-ide/integrating-codacy-with-visual-studio-code', + ], + }, + 'getting-started/supported-languages-and-tools', + 'getting-started/which-permissions-does-codacy-need-from-my-account', + 'getting-started/adding-a-codacy-badge', +]; + diff --git a/docusaurus/docs/getting-started/adding-a-codacy-badge.md b/docusaurus/docs/getting-started/adding-a-codacy-badge.md new file mode 100644 index 0000000000..7cecf064f0 --- /dev/null +++ b/docusaurus/docs/getting-started/adding-a-codacy-badge.md @@ -0,0 +1,33 @@ +--- +title: Adding a Codacy badge +--- + + +Add a Codacy badge to the README of your repository to display the current [code quality grade](../faq/code-analysis/which-metrics-does-codacy-calculate.md#grade) or [code coverage](../faq/code-analysis/which-metrics-does-codacy-calculate.md#code-coverage) of your repository. + + +![Codacy badge on the codacy/docs README](images/codacy-badge-example.png) + + +To obtain your Codacy badge, open your repository **Settings**, tab **General**, select the markup language, and copy the generated code to your README file. You can also add a badge for your coverage if you have [set up code coverage](../coverage-reporter/index.md) for your repository. + +![Codacy badge](images/codacy-badge.png) + +To display the grade or code coverage information of a [different branch](../repositories-configure/managing-branches.mdx) analyzed by Codacy, append `?branch=` to the URL of the badge. For example: + +```text +https://app.codacy.com/project/badge/Grade/cba8fd0874ac4f569f4f880e473cbac9?branch=dev +``` + +## Fixing your Codacy badge + +The Codacy badges for your repository may become unavailable or grayed out if the analysis or code coverage information for the last commit isn't available, or if you renamed or re-added your repository on Codacy: + +![Greyed out Codacy badge](images/codacy-badge-gray.png) + +To fix each badge: + +- [Reanalyze the branch](../faq/repositories/how-do-i-reanalyze-my-repository.md#reanalyzing-a-branch) associated with the **code quality badge** +- Make sure that you're [generating and uploading code coverage reports](../../coverage-reporter/) for all the commits in the branch associated with the **coverage badge** + +If these steps don't fix your Codacy badges it can mean that the badges are no longer valid. In this case, [repeat the steps above](#adding-a-codacy-badge) to replace the existing badges with new ones. diff --git a/docusaurus/docs/getting-started/codacy-quickstart.mdx b/docusaurus/docs/getting-started/codacy-quickstart.mdx new file mode 100644 index 0000000000..6585b905f4 --- /dev/null +++ b/docusaurus/docs/getting-started/codacy-quickstart.mdx @@ -0,0 +1,76 @@ +--- +title: Codacy quickstart (5 min) +description: Set up Codacy to automatically analyze your source code and identify issues as you go, helping you develop software more efficiently with fewer issues down the line. Codacy notifies you of security issues, code coverage, duplication, and complexity in every commit and pull request. +--- +import NavMultistep from '../_includes/NavMultistep.mdx'; + + +Codacy is an automated code quality and coverage platform that analyzes your source code and identifies issues as you go, helping your team ship robust software by scanning over 40 programming languages, such as JavaScript, Python, Java, C#, and PHP. + +Check out our product demo for an overview of Codacy's main features (recorded on May 13, 2024): + +
    + +
    + +Each organization can have up to **6 active scan targets**. If you need additional capacity, contact your customer success representative. + +Scans are triggered manually through the UI and are queued before execution. You can queue one single scan per target — it will run sequentially. There is no limit to the number of scans you can run on a target, in order to support your deployment needs. + +Once a scan completes, results will be available under the **Findings** tab. Use the **Scan types > DAST/App scanning** filter to view relevant findings. + +:::caution +Depending on the complexity of the target, DAST scans can take a significant amount of time to complete. Codacy may enforce timeouts to ensure platform stability and fair resource distribution. +::: + +:::caution +Failed scans are retried based on the failure reason. Retries are added back to the queue automatically and processed when capacity allows. +::: + +:::note +Currently, DAST findings are only visible to admin and organization admin roles. +::: + +### Findings results for your DAST scans + +As previously mentioned, once a scan completes, results will be available under the **Findings** tab. Use the **Scan types > DAST/App scanning** filter to view relevant findings. +Additionaly, you can click on a configured target to expand all of that target's results. + +![DAST target results](images/security-risk-management-app-scanning-see-results.png) + +Follow our [roadmap](https://roadmap.codacy.com) for updates on this feature. diff --git a/docusaurus/docs/organizations/organization-overview.mdx b/docusaurus/docs/organizations/organization-overview.mdx new file mode 100644 index 0000000000..9eb1a5617e --- /dev/null +++ b/docusaurus/docs/organizations/organization-overview.mdx @@ -0,0 +1,69 @@ +--- +title: Organization overview +description: The Organization overview provides an overview of the repositories belonging to your Git provider organization. Here you can compare their statuses and check for items that require your attention. +--- +import DashboardApiReportNote from './../_includes/DashboardApiReportNote.mdx' + + +The **Organization overview** provides an overview of the repositories belonging to your Git provider organization that you [follow on Codacy](managing-repositories.md). Here you can compare their statuses and check for items that require your attention. + +To access your Organization overview, select an organization from the top navigation bar and select **Overview** on the left navigation sidebar. + +Use the drop-down list at the top of the page to filter the information displayed on all dashboard areas based on the repositories that you select. For example, you can use the filter to monitor the quality of the repositories maintained by specific teams or that include certain programming languages, or to ignore legacy repositories that are no longer maintained. The selected repositories are stored in your browser so that the same filter is applied between your visits to the Organization overview page. + +On the Organization overview you have the following areas to help you monitor your repositories: + +- [Overall quality chart](#overall-quality-chart) +- [Last updated repositories](#last-updated-repositories) +- [Issues metrics](issues-metrics.md) + +On this page, you can also see the **Organization setup** area, which provides you with a checklist of items that you should complete to ensure that your organization is set up correctly and that you're getting the most out of Codacy. + +The following sections provide a detailed description of the repository-related dashboard areas. + + + +## Overall quality chart + +The **Overall quality** chart compares the repositories that you follow regarding [grade](../faq/code-analysis/which-metrics-does-codacy-calculate.md#grade), [issues](../faq/code-analysis/which-metrics-does-codacy-calculate.md#issues), [complex files](../faq/code-analysis/which-metrics-does-codacy-calculate.md#complexity), [duplication](../faq/code-analysis/which-metrics-does-codacy-calculate.md#duplication), and [code coverage](../faq/code-analysis/which-metrics-does-codacy-calculate.md#code-coverage). Each tab displays the average value for the corresponding metric for the last updated repositories. + +:::caution +- The overall quality chart calculates metrics and displays data only for the **repositories that you follow** on Codacy. This means that depending on their list of followed repositories, two users can see different results on this chart. + +- The overall quality chart displays information for **at most the last 100 updated repositories**. +::: + +![Overall quality chart](images/organization-overview-overall-quality.png) + +- Hover the mouse pointer over the bars to see the metrics for the corresponding repositories. +- Click the bars to navigate directly to the corresponding repository. + +If you have over 8 repositories, the chart displays your repositories grouped by grade or percentage intervals. Click the bars to see and navigate directly to the corresponding repositories. + +![Overall quality chart with grouped repositories](images/organization-overview-overall-quality-grouped.png) + +:::tip +If you don't have coverage set up for any of your repositories yet, the coverage tab provides you with instructions on [how to add coverage for your repositories](../coverage-reporter/index.md). +::: + + +## Last updated repositories + +The **Last updated repositories** list displays the last updated repositories, sorted by reverse date of the last update. + +![Last updated repositories](images/organization-overview-repositories-last-updated.png) + +:::note +The exact value of the last updated date of the repositories depends on your Git provider: + +- **GitHub:** date of the last commit to any branch of the repository (value of `pushed_at` from the [GitHub Repositories API](https://docs.github.com/en/rest/repos/repos#list-organization-repositories)). +- **GitLab:** date when the project was last updated (value of `last_activity_at` from the [GitLab Groups API](https://docs.gitlab.com/ee/api/groups.html)). Note that this value is only updated [at most once per hour](https://gitlab.com/gitlab-org/gitlab/-/issues/20952)). +- **Bitbucket:** date when the repository was last updated (value of `updated_on` from the [Bitbucket Repositories API](https://developer.atlassian.com/cloud/bitbucket/rest/api-group-repositories/#api-group-repositories)). **On Bitbucket Server** Codacy can't obtain this information and the list displays the repositories in alphabetical order. + +::: + +## See also + +- [Which metrics does Codacy calculate?](../faq/code-analysis/which-metrics-does-codacy-calculate.md) +- [Using the Codacy API to obtain current issues in repositories](../codacy-api/examples/obtaining-current-issues-in-repositories.md) +- [Using the Codacy API to obtain code quality metrics for files](../codacy-api/examples/obtaining-code-quality-metrics-for-files.md) diff --git a/docusaurus/docs/organizations/roles-and-permissions-for-organizations.mdx b/docusaurus/docs/organizations/roles-and-permissions-for-organizations.mdx new file mode 100644 index 0000000000..0ecc622837 --- /dev/null +++ b/docusaurus/docs/organizations/roles-and-permissions-for-organizations.mdx @@ -0,0 +1,520 @@ +--- +title: Roles and permissions for organizations +description: List of operations that users can perform on Codacy depending on their role on the Git provider, and how to configure repository management permissions. +--- +import AdminAccessInfo from './../_includes/AdminAccessInfo.mdx' + + +By default, Codacy assigns each organization member a role corresponding to that member's role on your Git provider. Each Codacy role, from most restrictive (repository read) to most capable (organization admin), corresponds to a set of permissions that determine what each member can do on Codacy. + +To update a member's role on Codacy, update that member's role on your Git provider. When next logging in to Codacy, the member is assigned the new role. + +Organization admins can also grant additional permissions: + +- To roles, by [configuring repository management permissions](#change-analysis-configuration) +- To individual members, by [assigning the organization manager role](#managing-the-organization-manager-role) + +To review the permissions granted by each role, see the tables for each Git provider: + +- [Permissions for GitHub](#permissions-for-github) +- [Permissions for GitLab](#permissions-for-gitlab) +- [Permissions for Bitbucket](#permissions-for-bitbucket) + +To list and manage the members of your Codacy organization, see the [Managing people](managing-people.md) page. + +## Configuring repository management permissions \{#change-analysis-configuration\} + + +By default, only users with the Codacy role **repository write** can change analysis configurations. + +To change this, open your organization **Settings**, page **Roles and permissions**, and choose the Codacy roles that can perform the following operations on the repositories of your organization: + +- [Ignore issues](../repositories/issues.md#ignoring-and-managing-issues) +- [Ignore files](../repositories-configure/ignoring-files.md) +- [Configure code patterns](../repositories-configure/configuring-code-patterns.md) +- [Configure languages](../repositories-configure/languages.md) +- [Manage branches](../repositories-configure/managing-branches.mdx) +- [Reanalyze branches and pull requests](../faq/repositories/how-do-i-reanalyze-my-repository.md) +- [Create targets and run Dynamic Application Security Testing scans](../organizations/managing-security-and-risk.md#app-scanning) + +![Configuring repository management permissions](images/roles-permissions-repo-management.png) + +## Managing the organization manager role + + + +To grant an organization member additional permissions, you can assign that member the organization manager role. This role isn't influenced by a member's Git provider role. + +To review the additional permissions granted by the organization manager role, see the tables for each Git provider ([GitHub](#permissions-for-github), [GitLab](#permissions-for-gitlab), [Bitbucket](#permissions-for-bitbucket)). + +:::note +Organization managers can access the **Policies** and **Integrations** settings sections of your organization and can therefore impact some repository settings for all repositories of your organization, even repositories that they can't access on the Git provider. However, they can't access the repositories themselves and can only see the repository names. +::: + +### Assigning the organization manager role + +To assign the organization manager role: + +1. Open your organization **Settings**, page **Roles and permissions**. + +1. In the **Organization managers** area, use the search field to find the relevant organization member and click the member's name. + + :::note + You can only assign the organization manager role to [members of your organization](./managing-people.md#joining). + ::: + + ![Security and risk management access management](images/roles-permissions-organization-manager-assign.png) + +### Revoking the organization manager role + +To revoke the organization manager role: + +1. Open your organization **Settings**, page **Roles and permissions**. + +1. In the **Organization managers** area, scroll the list to find the relevant user. + +1. Click the **Revoke role icon** to the right of the user's name and confirm. + +## Permissions for GitHub + +The table below maps the GitHub Cloud and GitHub Enterprise roles to the corresponding Codacy roles and the operations that they're allowed to perform: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GitHub roleOutside
    collaborator1
    Repository
    read
    Repository
    triage
    Repository
    write
    Repository
    maintain
    Repository
    admin
    -Organization
    Owner
    Codacy role-Repository
    read
    Repository
    write
    Repository
    admin
    Organization
    manager
    Organization
    admin
    Join organizationNoYes2Yes2Yes2YesYes2
    View and follow private repositoryNoYesYesYesYesYes
    Access Security and risk managementNoYes3Yes3Yes3YesYes
    Ignore issues and files,
    configure code patterns and languages,
    manage branches,
    reanalyze branches and pull requests
    NoConfigurableConfigurableYesInherits original permissionYes
    Upload coverage using an account API token,
    see the coverage report logs
    NoNoYesYesInherits original permissionYes
    Configure repository Git provider integration settingsNoNoNoYesInherits original permissionYes
    Configure repository quality gates and goalsNoNoNoYesInherits original permissionYes
    Enable repository analysis to run on a local build server, manage repository API tokensNoNoNoYesInherits original permissionYes
    Add and remove repositoryNoNoNoYes4Inherits original permissionYes
    Manage organization gate policies and coding standardsNoNoNoNoYesYes
    Configure organization default settings for Git provider integrationNoNoNoNoYesYes
    Obtain audit logs for organization events5NoNoNoNoYesYes
    Invite and accept members,
    modify billing
    NoNoNoNoNoYes
    Assign and revoke the organization manager roleNoNoNoNoNoYes
    + +1: Outside collaborators aren't supported as members of organizations on Codacy. You can still [add outside collaborators to Codacy](managing-people.md#adding-people) so that Codacy analyzes their commits to private repositories, but they won't be able to join your Codacy organization. +2: Joining an organization may need an approval depending on your setting for [accepting new people](changing-your-plan-and-billing.md#allowing-new-people-to-join-your-organization). +3: These users can only see security items originating from Codacy repositories that they follow. +4: Requires that an organization owner has given the Codacy GitHub App access to the repositories to add or remove. +5: [Audit logs](./audit-logs-for-organizations.md) are available only on [Business plan](https://www.codacy.com/pricing). + +## Permissions for GitLab + +The table below maps the GitLab Cloud and GitLab Enterprise roles to the corresponding Codacy roles and the operations that they're allowed to perform: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GitLab roleExternal
    user1
    Project
    guest
    Project
    reporter
    Project
    developer
    Project
    maintainer
    Project
    owner
    -Group
    owner
    Administrator
    Codacy role-Repository
    read
    Repository
    write
    Repository
    admin
    Organization
    manager
    Organization
    admin
    Join organizationNoYes2Yes2Yes2YesYes2
    View and follow private repositoryNoYesYesYesYesYes
    Access Security and risk managementNoYes3Yes3Yes3YesYes
    Ignore issues and files,
    configure code patterns and languages,
    manage branches,
    reanalyze branches and pull requests
    NoConfigurableConfigurableYesInherits original permissionYes
    Upload coverage using an account API token,
    see the coverage report logs
    NoNoYesYesInherits original permissionYes
    Configure repository Git provider integration settingsNoNoNoYesInherits original permissionYes
    Configure repository quality gates and goalsNoNoNoYesInherits original permissionYes
    Configure repository to run analysis on local build server, manage repository API tokensNoNoNoYesInherits original permissionYes
    Add and remove repositoryNoNoNoYesInherits original permissionYes
    Manage organization gate policies and coding standardsNoNoNoNoYesYes
    Configure organization default settings for Git provider integrationNoNoNoNoYesYes
    Obtain audit logs for organization events4NoNoNoNoYesYes
    Invite and accept members,
    modify billing
    NoNoNoNoNoYes
    Assign and revoke the organization manager roleNoNoNoNoNoYes
    + +1: External users aren't supported as members of organizations on Codacy. You can still [add external users to Codacy](managing-people.md#adding-people) so that Codacy analyzes their commits to private repositories, but they won't be able to join your Codacy organization. +2: Joining an organization may need an approval depending on your setting for [accepting new people](changing-your-plan-and-billing.md#allowing-new-people-to-join-your-organization). +3: These users can only see security items originating from Codacy repositories that they follow. +4: [Audit logs](./audit-logs-for-organizations.md) are available only on [Business plan](https://www.codacy.com/pricing). + +## Permissions for Bitbucket + +The table below maps the Bitbucket Cloud and Bitbucket Server roles to the corresponding Codacy roles and the operations that they're allowed to perform: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Bitbucket roleReadWrite1-Admin
    Codacy roleRepository
    read
    Organization
    manager
    Organization
    admin
    Join organizationYes2YesYes2
    View and follow private repositoryYesYesYes
    Access Security and risk managementYes3YesYes
    Ignore issues and files,
    configure code patterns and languages,
    manage branches,
    reanalyze branches and pull requests
    ConfigurableInherits original permissionYes
    Upload coverage using an account API token,
    see the coverage report logs
    NoInherits original permissionYes
    Configure repository Git provider integration settingsNoInherits original permissionYes
    Configure repository quality gates and goalsNoInherits original permissionYes
    Configure repository to run analysis on local build server, manage repository API tokensNoInherits original permissionYes
    Add and remove repositoryNoInherits original permissionYes
    Manage organization gate policies and coding standardsNoYesYes
    Configure organization default settings for Git provider integrationNoYesYes
    Obtain audit logs for organization events4NoYesYes
    Invite and accept members,
    modify billing
    NoNoYes
    Assign and revoke the organization manager roleNoNoYes
    + +1: Codacy can't distinguish the Bitbucket roles Read and Write because of a limitation on the Bitbucket API. +2: Joining an organization may need an approval depending on your setting for [accepting new people](changing-your-plan-and-billing.md#allowing-new-people-to-join-your-organization). +3: These users can only see security items originating from Codacy repositories that they follow. +4: [Audit logs](./audit-logs-for-organizations.md) are available only on [Business plan](https://www.codacy.com/pricing). + +## See also + +- [Managing people](managing-people.md) +- [Accepting new people to your organization](changing-your-plan-and-billing.md#allowing-new-people-to-join-your-organization) diff --git a/docusaurus/docs/organizations/segments.md b/docusaurus/docs/organizations/segments.md new file mode 100644 index 0000000000..2da0b94b16 --- /dev/null +++ b/docusaurus/docs/organizations/segments.md @@ -0,0 +1,44 @@ +--- +title: Segments +--- + + +_Segments are not supported for Personal orgs, as Custom Properties are not available in Github for these orgs._ + +Segments are dimensions that Codacy reads from your provider that organizes repositories into relevant groups for you. Today, Segments is available for: +- [GitHub Custom Properties](#github-custom-properties) +- [Bitbucket Projects](#bitbucket-projects) + + +## Where can Segments be utilised? +- [Repository list](../managing-repositories/#provider-segments) +- [Security & Management Risk](../managing-security-and-risk/) + +## Enabling Segments {#enabling-segments} +To enable Segments, an initial sync between your provider and Codacy needs to happen. Once completed, you can use Segments to better locate and organize repositories within Codacy. +![Segments sync](../organizations/images/Segments-no-sync.png) +![Segments after sync](../organizations/images/segments-after-sync.png) +

    + + +### GitHub Custom Properties {#github-custom-properties} +Custom properties allow you to assign tags or metadata to repositories, making it easier to categorize and filter them. Create, use, and manage custom properties for your repositories directly in GitHub. + +> Refer to [GitHub's official documentation](https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization#adding-custom-properties) for detailed steps on how to add, edit, and manage repository **Custom Properties**. + +#### Keep Segments insync +For changes to repository **Custom Properties** in GitHub to be **automatically** reflected in Codacy, users need to [accept the new permission request made by the Codacy GitHub app](https://docs.github.com/en/apps/using-github-apps/approving-updated-permissions-for-a-github-app). +:::note +If the permission is **not accepted**, users will still be able to use Repository Custom Properties as filters in Codacy, but will need to manually trigger a sync. This can be done using the **manual sync** button available in the filter dropdown, which allows users to synchronize changes from GitHub, though the process may take longer. +::: + +### Bitbucket Projects {#bitbucket-projects} +Bitbucket Projects allow you to organize your repositories into relevant contexts for you, making it easier to categorize and filter them. Create, use, and manage Projects for your repositories directly in Bitbucket. + +> Refer to [Bitbucket's official documentation](https://support.atlassian.com/bitbucket-cloud/docs/create-a-project/) for detailed steps on how to add, edit, and manage **Projects**. + +#### Keep Segments in sync +After the first sync is done, Bitbucket Projects will continue to be insync with Codacy automatically. + + +

    diff --git a/docusaurus/docs/organizations/using-coding-standards.md b/docusaurus/docs/organizations/using-coding-standards.md new file mode 100644 index 0000000000..c56c607a0b --- /dev/null +++ b/docusaurus/docs/organizations/using-coding-standards.md @@ -0,0 +1,198 @@ +--- +title: Using coding standards +--- + + +Coding standards enable the analysis of multiple repositories with the same tool and code pattern configurations, ensuring consistent code quality across your organization. Multiple coding standards can be applied to the same repository. For example, you can use coding standards to ensure that a group of repositories follow the same security rules or coding conventions. + +This page covers the following topics: + +- [Creating a coding standard](#creating) +- [Configuring a coding standard (guided setup)](#guided-setup) +- [Configuring a coding standard (advanced setup)](#advanced-settings) +- [Defining default coding standards](#set-default) +- [Editing a coding standard](#editing) +- [Deleting a coding standard](#deleting) +- [Using a coding standard alongside tool configuration files](#using-with-tool-configuration) +- [Using a coding standard alongside repository-level customizations](#using-with-repository-configuration) +- [Using multiple coding standards](#using-multiple) + +## Creating a coding standard {#creating} +:::note +Codacy currently supports up to 10 coding standards per organization. +::: + +To create a coding standard for your organization: + +1. Open your organization **Policies** page, tab **Coding standards**. + +1. Click the button **Create new standard** at the top right-hand corner of the page. This opens the coding standard creation form. + +1. Enter a unique name for the new coding standard. + + Optionally, check **Apply to new repositories** to set the new coding standard as one of your organization's [default coding standards](#set-default), so it applies automatically to new repositories. + +1. Choose whether to create the coding standard using a guided or advanced setup: + + - The **guided setup** lets you choose preset sensitivity levels for each issue type, turning on relevant patterns in bulk. It's ideal for quickly setting up a coding standard with minimal effort. You can always fine-tune the coding standard by editing it later using the advanced setup. + + - The **advanced setup** lets you choose individual languages and code patterns to activate. It's ideal for fine-tuning the coding standard to your organization's specific needs, offering more control over the tools and code patterns used. + + With the advanced setup, you can optionally **select a repository as the baseline** for the new coding standard. This is useful if you already have a well-configured repository that you wish to use as a template. + + ![Creating a new coding standard](images/coding-standard-create.png) + +1. Click **Create coding standard** to proceed to the [guided setup](#guided-setup) or [advanced setup](#advanced-settings), depending on your choice. + +## Configuring a coding standard (guided setup) {#guided-setup} +If you selected **Guided setup** when [creating a new coding standard](#creating), follow these steps: + +1. Adjust the sensitivity of the coding standard from **Essential** to **Comprehensive** for each issue category group: + + - **Essential**: Focuses on the most important issues by including the most critical code patterns. Ideal for initial integration, to prevent overwhelming developers, and to speed up analysis times. + - **Comprehensive**: Detects all issues by including all code patterns, capturing the complete severity spectrum. Ideal for detailed code quality reviews, while reducing emphasis on critical issues. It may increase analysis times. + + :::tip + Initially, set the sensitivity to **Essential** for most category groups to focus on critical code patterns. It helps streamline the integration process with Codacy without overwhelming developers with too many reported issues. You can gradually include more patterns as needed. + ::: + + ![Coding standard presets](images/coding-standard-presets.png) + +1. Click **Next: Select and apply to repositories**. + +1. Select existing repositories that should follow the new coding standard and click **Save and apply coding standard**. + + Codacy will start using the new coding standard on the next analysis of each selected repository. + + ![Applying the coding standard to repositories](images/coding-standard-apply.png) + +## Configuring a coding standard (advanced setup) {#advanced-settings} +If you selected **Advanced setup** when [creating a new coding standard](#creating) or are editing an existing coding standard, follow these steps: + +1. Select the programming languages that the new coding standard should include. + + :::caution + The coding standard will only control tools that can analyze one or more of the languages selected in this step. + + If a language is omitted in this step, Codacy uses repository-level tool configurations if present or global Codacy defaults otherwise, and may analyze the omitted language. To prevent this: + + 1. In this step select all languages, so that the coding standard controls all tools. + + 1. In the next step, explicitly disable the tools that you don't want to use. + ::: + + ![Selecting the languages for the coding standard](images/coding-standard-select-languages.png) + +1. Click **Next: Tools and patterns**. + +1. Configure the tools and patterns of the coding standard: + + - Toggle the tools to run when Codacy analyzes your code. + - For each enabled tool, configure the code patterns to use. + - You can also use the **Discover patterns** option to find patterns across all tools. + + :::tip + - Use the filters to find the relevant tools and code patterns. The recommended configurations are manually curated by Codacy or based on tool defaults and are marked with the icon ![Recommended icon](images/coding-standard-recommended-icon.png). + - To toggle multiple code patterns at once, click the checkbox of the first pattern and **Shift+click** the checkbox of the last pattern in a range. + - To toggle all the code patterns visible on the list, click the checkbox on the header of the code patterns list. If there are more code patterns to load on the list, you can click the link **Enable/Disable all <N> patterns** to toggle all patterns matching the current filters. + ::: + + ![Configuring the tools and patterns for the coding standard](images/coding-standard-configure-tools.png) + +1. Proceed with the remaining wizard steps to finish [creating](#creating) or [editing](#editing) your coding standard. + +## Defining default coding standards {#set-default} +For ease of management, you can define multiple default coding standards that automatically apply to new repositories. In the absence of default coding standards, Codacy applies global defaults to all new repositories. + +:::note +When Codacy introduces new tools, those are automatically added to the global Codacy defaults but need to be manually added to a default coding standard. +::: + +You can mark a new coding standard as default when [creating](#creating) one. + +To mark an existing coding standard as default: + +1. Open your organization **Policies** page, tab **Coding standards**. + +1. Toggle **Apply to new repositories** on the relevant coding standard card. + + ![Setting a coding standard as the default](images/coding-standard-set-default.png) + +## Editing a coding standard {#editing} +:::note +Any edits to the configurations of a coding standard are automatically applied on the next analysis of each associated repository. +::: + +To edit an existing coding standard or change the repositories that follow that coding standard: + +1. Open your organization **Policies** page, tab **Coding standards**. + +1. Click the edit icon on the coding standard card. + + ![Editing an existing coding standard](images/coding-standard-edit.png) + +1. Edit the current coding standard configurations and click the button **Next** to advance to the following [configuration pages](#advanced-settings): + + :::note + When editing an existing coding standard, the [advanced setup](#advanced-settings) is the default view. + ::: + + - **Select languages**: the programming languages that the coding standard applies to. + + On this page, you can rename the coding standard by clicking the edit icon next to the name of the coding standard. + + ![Renaming a coding standard](images/coding-standard-rename.png) + + - **Choose tools and patterns**: the tool and code pattern configurations of the coding standard. + - **Select and apply to repositories**: the repositories that follow the coding standard. + +1. Click the button **Save and apply coding standard** on the repository selection page to save your changes to the coding standard. + + Codacy will start using the updated coding standard on the next analysis of each selected repository. + +## Deleting a coding standard {#deleting} +To delete a coding standard: + +1. Open your organization **Policies** page, tab **Coding standards**. + +1. Click the trash can icon on the coding standard card and confirm. + + ![Deleting a coding standard](images/coding-standard-delete.png) + +## Using a coding standard alongside tool configuration files {#using-with-tool-configuration} +When using a [tool configuration file](../repositories-configure/configuring-code-patterns.md#using-your-own-tool-configuration-files) alongside a coding standard, the configuration file controls the code patterns, while the coding standard controls whether the tool is enabled or disabled. + +## Using a coding standard alongside repository-level customizations {#using-with-repository-configuration} +Tools and patterns enabled by a coding standard are enforced and cannot be disabled at the repository level. You can add extra tools and patterns, if these are not already enabled by any applied coding standard. + +## Using multiple coding standards {#using-multiple} +When Codacy analyzes your code using multiple coding standards, it merges the tools and patterns from each standard. + +A common strategy is to start with a baseline standard containing fundamental rules that apply across all repositories, then layer additional standards based on specific needs. You can organize these additional standards by: + +- **Topics:** for example, security, performance, or maintainability +- **Architecture:** for example, backend or frontend +- **Languages or frameworks:** for example, React, Java or Python +- **Teams or tribes:** Allow different teams or tribes to maintain their own standards while inheriting organization-wide rules + +![Coding standards strategies](images/coding-standard-strategy.png) + +:::note +You can apply up to 10 coding standards to your organization. Standards can overlap, meaning a single repository can follow multiple standards simultaneously. +::: + +:::caution +If the same pattern appears in multiple standards, the version from the most recently created and applied standard (with its parameters) takes precedence. +::: + +### Implementation guidelines {#standards-implementation} +Consider these points when implementing coding standards: + +- **Keep maintenance simple:** Minimize overlap between standards and establish clear ownership to reduce maintenance complexity +- **Manage access:** Assign organization managers or Git provider admin roles to users who should manage (create, edit and delete) organization-level standards (learn more in [Roles and Permissions](./roles-and-permissions-for-organizations.md/#managing-the-organization-manager-role)) +- **Be mindful of repository customization:** Individual repositories can have their own specific overrides through additional code patterns, custom tool configurations, or local configuration files + +## See also + +- [Configuring code patterns on each repository](../repositories-configure/configuring-code-patterns.md) +- [How to implement Google JavaScript style guide with Codacy](https://blog.codacy.com/implement-google-javascript-style-guide-with-codacy/) diff --git a/docusaurus/docs/organizations/using-gate-policies.md b/docusaurus/docs/organizations/using-gate-policies.md new file mode 100644 index 0000000000..db7e4620e5 --- /dev/null +++ b/docusaurus/docs/organizations/using-gate-policies.md @@ -0,0 +1,90 @@ +--- +title: Using gate policies +--- + + +Gate policies help you ensure that Codacy uses the same [quality gates](../repositories-configure/adjusting-quality-gates.md) across your organization repositories. + +Codacy provides a built-in gate policy, **Codacy Gate Policy**, which sets minimum quality levels for pull requests and commits. The following screenshot displays the default configuration values: + +![Codacy built-in gate policy](images/gate-policy-codacy-default.png) + +By default, Codacy applies the **Codacy Gate Policy** automatically to newly added repositories. You can then create new gate policies with different quality gates and make them the default for your organization. + +## Creating a new gate policy {#creating} +To create a new gate policy for your organization: + +1. Open your organization **Policies** page, tab **Gate policies**. + +1. Click the button **Create new gate policy** at the top right-hand corner of the page. This opens a window with the gate policy creation form. + +1. Enter a unique name and click **Create gate policy**. + + ![Creating a new gate policy](images/gate-policy-create.png) + +1. Set the values for the quality gates and click **Next: Select and apply to repositories**. + + ![Selecting the quality gate values for the gate policy](images/gate-policy-select-values.png) + +1. Select existing repositories that should follow the gate policy and click **Save and apply gate policy**. + + Codacy will start using the new gate policy on the next analysis of each selected repository. + + ![Applying the gate policy to repositories](images/gate-policy-apply.png) + +## Setting a gate policy as default {#set-default} +To set a gate policy as default: + +1. Open your organization **Policies** page, tab **Gate policies**. + +1. Toggle **Make default** on the relevant gate policy card. + + :::note + Only one gate policy at a time can be the default gate policy. + ::: + + ![Setting a gate policy as the default](images/gate-policy-set-default.png) + + Codacy will start applying the default gate policy to newly added repositories. + +## Editing a gate policy {#editing} +To edit the quality gates of an existing gate policy or change the repositories that follow that gate policy: + +1. Open your organization **Policies** page, tab **Gate policies**. + +1. Click the edit icon on the gate policy card. + + ![Editing an existing gate policy](images/gate-policy-edit.png) + +1. Edit the current quality gate values and click the button **Next: Select and apply to repositories**. + + :::note + You can't change the quality gate values of the built-in **Codacy Gate Policy**. + ::: + +1. Edit the list of repositories that follow the gate policy. + +1. Click the button **Save and apply gate policy** to save your changes to the gate policy. + + Codacy will start using the updated gate policy on the next analysis of each selected repository. + +If you stop applying a gate policy to a repository, Codacy restores the previous quality gates of that repository. + +## Deleting a gate policy {#deleting} +:::note +You can't delete the built-in **Codacy Gate Policy**. +::: + +To delete an organization gate policy: + +1. Open your organization **Policies** page, tab **Gate policies**. + +1. Click the trash can icon on the gate policy card and confirm. + + ![Deleting a gate policy](images/gate-policy-delete.png) + +When you delete a gate policy: + +- Codacy restores the previous quality gates of each repository following that gate policy. + +- If the deleted gate policy was the default for your organization, Codacy makes the built-in **Codacy Gate Policy** the default. diff --git a/docusaurus/docs/organizations/what-are-organizations.md b/docusaurus/docs/organizations/what-are-organizations.md new file mode 100644 index 0000000000..fc1060843c --- /dev/null +++ b/docusaurus/docs/organizations/what-are-organizations.md @@ -0,0 +1,66 @@ +--- +title: What are organizations +--- + + +Codacy organizations let you automatically import your Git provider organizations, repositories (including your personal repositories that don't belong to a Git provider organization), and team members into Codacy with a few clicks. + +Changes to the organizations, repositories, and team members are synchronized with Codacy in real-time, avoiding their manual management. + +## Adding an organization + +To add a new organization to Codacy, select **Add organization** on the navigation menu. + +![Adding an organization](images/organization-add-menu.png) + +This opens the list of organizations on your Git providers. + +:::note +The organization with the same name as your Git provider username contains your personal repositories. +::: + +![Adding an organization](images/organization-add.png) + +- To add a new organization to Codacy, click the link **Add** for that organization. +- To join an organization that's already on Codacy, click the link **Join** for that organization. +- To add organizations from a Git provider not yet listed on this page, click **Add provider** and give the [necessary permissions](../getting-started/which-permissions-does-codacy-need-from-my-account.md) for Codacy to sync with the new Git provider and display your organizations. + +:::note +If you can't see the organization you're looking for, [follow these troubleshooting instructions](../faq/troubleshooting/why-cant-i-see-my-organization.md). +::: + +## Updates on the Git provider + +If you update your organization or repository information on your Git provider, some changes are automatically reflected on Codacy, as described in the table below. + +:::note +If an update to your organization name isn't automatically reflected on Codacy, navigate to the organization **Settings** page, tab **Profile**, and click the **Synchronize** button. +::: + +| Git provider | Rename repository | Change repository visibility | Delete repository | Rename organization or group | Remove member from organization or group | Delete organization or group | +|---|---|---|---|---|---|---| +| GitHub Cloud | Yes | Yes | Yes | Yes | Yes | Yes | +| GitHub Enterprise | Yes | Yes | Yes | Yes | Yes | Yes | +| GitLab Cloud | No | No | No | No | No | No | +| GitLab Enterprise | Yes | Yes | Yes | Yes | Yes | Yes | +| Bitbucket Cloud | Yes | Yes | No | No | No | No | +| Bitbucket Server | Yes | Yes | No | No | No | No | + +Se also the [roles and permission mapping from the Git providers](roles-and-permissions-for-organizations.md). + +## Deleting an organization + +Deleting an organization on Codacy completely removes the configurations and all data related to the organization and its repositories from Codacy. This operation doesn't make any changes on your Git provider. + +To delete an organization, open the **Profile** page and click the button **Delete organization**. + +![Deleting an organization](images/organization-delete.png) + + + +## See also + +- [How does Codacy support GitLab Cloud?](../faq/general/how-does-codacy-support-gitlab-cloud.md) +- [How does Codacy support GitLab Enterprise?](../faq/general/how-does-codacy-support-gitlab-enterprise.md) +- [How does Codacy support Bitbucket Cloud?](../faq/general/how-does-codacy-support-bitbucket-cloud.md) +- [How does Codacy support Bitbucket Server?](../faq/general/how-does-codacy-support-bitbucket-server.md) diff --git a/docusaurus/docs/release-notes/_order.ts b/docusaurus/docs/release-notes/_order.ts new file mode 100644 index 0000000000..0f227af972 --- /dev/null +++ b/docusaurus/docs/release-notes/_order.ts @@ -0,0 +1,17 @@ +import {cloudYearOrder} from './cloud/_order'; +import {selfHostedOrder} from './self-hosted/_order'; + +export const releaseNotesSidebarOrder = [ + 'release-notes/index', + { + type: 'category' as const, + label: 'Cloud', + items: cloudYearOrder, + }, + { + type: 'category' as const, + label: 'Self-hosted', + items: selfHostedOrder, + }, +]; + diff --git a/docusaurus/docs/release-notes/cloud/2018/2018-07-23-cloud.md b/docusaurus/docs/release-notes/cloud/2018/2018-07-23-cloud.md new file mode 100644 index 0000000000..8d33f198e9 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2018/2018-07-23-cloud.md @@ -0,0 +1,23 @@ +--- +title: Cloud July 23, 2018 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud July 23, 2018. +slug: /release-notes/cloud/cloud-2018-07-23 +--- + + +## New release + +- Added ability to copy project badge from the project dashboard + +## Improvements + +Added new documentation on: + +- SSH Keys + +## Bug fixes + +- Fixed Pylint pattern `Enforce naming conventions` that had stopped providing results +- You can import certain modules in your ESLint configuration files diff --git a/docusaurus/docs/release-notes/cloud/2018/2018-10-19-cloud.md b/docusaurus/docs/release-notes/cloud/2018/2018-10-19-cloud.md new file mode 100644 index 0000000000..10e3c6074a --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2018/2018-10-19-cloud.md @@ -0,0 +1,29 @@ +--- +title: Cloud October 19, 2018 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud October 19, 2018. +slug: /release-notes/cloud/cloud-2018-10-19 +--- + + +## Product enhancements + +- Improved the coverage UI on the project dashboard: + - The value in the graph for coverage is now also displayed below, in the coverage issues breakdown. + - Added color scheme dependent on project quality settings: from red to green depending on your settings, and blue if your coverage is set to be ignored. + - Added tooltip explanations for issues related to coverage. + +- We updated the following tools: + - Scalameta now supports Scala 2.12 + - Credo version [0.10.2](https://github.com/rrrene/credo/blob/master/CHANGELOG.md#0102) + - Checkstyle version [8.13](http://checkstyle.sourceforge.net/releasenotes.html#Release_8.13) + - Bandit version [1.5.1](https://github.com/PyCQA/bandit/releases/tag/1.5.1) + - PHP_CodeSniffer version [3.1](https://pear.php.net/package/PHP_CodeSniffer/download/3.1.0) + +## Bugs + +- Fixed a bug on [security.codacy.com](https://security.codacy.com/) that highlighted the wrong section on the sidebar when scrolling + down. +- Fixed Pylint broken build. +- Fixed a bug preventing new commits from showing on a branch. diff --git a/docusaurus/docs/release-notes/cloud/2018/2018-11-02-cloud.md b/docusaurus/docs/release-notes/cloud/2018/2018-11-02-cloud.md new file mode 100644 index 0000000000..3047fa92c6 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2018/2018-11-02-cloud.md @@ -0,0 +1,31 @@ +--- +title: Cloud November 2, 2018 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud November 2, 2018. +slug: /release-notes/cloud/cloud-2018-11-02 +--- + + +## Product enhancements + +- Improved Issues Breakdown UI on the dashboard: + - Removed project’s number of lines of code making it easier to + understand the issue split percentage. + +## Bug fixes + +- Fixed a bug in which Pylint wasn’t generating issues. +- Fixed a bug in which private projects returned a blank page for + unauthorized users instead of a 404 error page. + +## Tool updates + +- Updated RuboCop to version [v0.59.2](https://github.com/rubocop/rubocop/blob/master/relnotes/v0.59.2.md) +- Updated ESLint to version [v5.7.0](https://eslint.org/blog/2018/10/eslint-v5.7.0-released) +- Added support to [TSLint 5](https://www.npmjs.com/package/tslint/v/5.11.0) + - Previous versions are no longer supported. + +## New tools + +- Added SwiftLint to Codacy. diff --git a/docusaurus/docs/release-notes/cloud/2018/2018-11-16-cloud.md b/docusaurus/docs/release-notes/cloud/2018/2018-11-16-cloud.md new file mode 100644 index 0000000000..0f8f486203 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2018/2018-11-16-cloud.md @@ -0,0 +1,34 @@ +--- +title: Cloud November 16, 2018 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud November 16, 2018. +slug: /release-notes/cloud/cloud-2018-11-16 +--- + + +## Product enhancements + +We now support PowerShell language using [PSScriptAnalyzer](https://github.com/PowerShell/PSScriptAnalyzer). + +Created default patterns for Flawfinder. + +- Now when you add a project to Codacy, Flawfinder will run by default. + +We updated the following tools to newer versions: + +- RuboCop to [v0.60.0](https://github.com/rubocop/rubocop/blob/master/relnotes/v0.60.0.md) +- ESLint to [v5.8.0](https://eslint.org/blog/2018/10/eslint-v5.8.0-released) +- ESLint plugin airbnb-eslint-config to [v17.1.0](https://www.npmjs.com/package/eslint-config-airbnb/v/17.1.0) +- ESLint plugin babel-eslint to [v10.0.1](https://www.npmjs.com/package/babel-eslint/v/10.0.1) +- ESLint plugin-jsx-a11y to [v.6.1.2](https://www.npmjs.com/package/eslint-plugin-jsx-a11y/v/6.1.2) + +- And added the following new plugins for ESLint: + - eslint-config-standard-react + - .prettierrc.js extension + - prodigy eslint profile + +## Bug fixes + +- Fixed a bug in which the GitHub login button was trying to use Bitbucket credentials and vice versa. +- Fixed a bug that was adding projects from a deleted organization to an organization admin. Now all projects associated with a deleted organization will also be permanently deleted diff --git a/docusaurus/docs/release-notes/cloud/2019/2019-01-02-cloud.md b/docusaurus/docs/release-notes/cloud/2019/2019-01-02-cloud.md new file mode 100644 index 0000000000..b4f2aed046 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2019/2019-01-02-cloud.md @@ -0,0 +1,25 @@ +--- +title: Cloud January 2, 2019 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud January 2, 2019. +slug: /release-notes/cloud/cloud-2019-01-02 +--- + + +## Product enhancements + +- We updated the following tools to newer versions: + - eslint-plugin-vue to version [5.0.0](https://www.npmjs.com/package/eslint-plugin-vue/v/5.0.0) + - eslint-config-react-app to version [3.0.5](https://www.npmjs.com/package/eslint-config-react-app/v/3.0.5-next.c662dfb0) + - eslint-plugin-react to version [7.11.1](https://www.npmjs.com/package/eslint-plugin-react/v/7.11.1) +- And added the below new plugins for + - eslint-plugin-ember-suave [v.1.0.0](https://www.npmjs.com/package/eslint-plugin-ember-suave/v/1.0.0) + - tslint-angular [v.1.1.2](https://www.npmjs.com/package/tslint-angular/v/1.1.2) +- Improved the UI message when a file is ignored to clarify that the changes will only be applied in the next analysis + +## Bug fixes + +- Fixed a bug where it wasn't possible to select certain projects in the Team Dashboard +- Fixed a bug where an issue showed the error message repeated in the block of code, instead of the source code line +- Fixed a bug that was showing nonexistent Stylelint patterns in the UI diff --git a/docusaurus/docs/release-notes/cloud/2019/2019-02-18-cloud-bitbucket-changes.md b/docusaurus/docs/release-notes/cloud/2019/2019-02-18-cloud-bitbucket-changes.md new file mode 100644 index 0000000000..284e152eb7 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2019/2019-02-18-cloud-bitbucket-changes.md @@ -0,0 +1,34 @@ +--- +title: Bitbucket changes February 18, 2019 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +slug: /release-notes/cloud/cloud-2019-02-18-bitbucket-changes +--- + + +We're making some changes on February 18, 2019 **that will cause all existing integrations with Bitbucket to stop working**. + +## What exactly are we doing? + +We're reducing the permissions requested when authenticating with Bitbucket. + +While we currently ask for all permissions, after this we will no longer require: + +- Write access for Teams +- Write access for Projects +- Delete access for Repositories +- Full access to Wikis, Snippets, and Pipelines + +## Why? + +Previously, we were using OAuth 1, which forced us to request all permissions. This level of permissions requested to integrate with Bitbucket has been flagged as a concern by several of our users. We've now migrated to OAuth 2, which allows us to reduce the level of permissions required. + +## What do you need to do if you have Bitbucket repositories? + +The original user who set up your Bitbucket integration will need to log in to Codacy to confirm the new permissions. **Otherwise, Codacy will no longer be able to detect new Pull Requests, and existing repositories will stop receiving Pull Request status and comments on Bitbucket.** + +If the original user who set up your Bitbucket integration isn't available, someone who has Admin permissions in both Codacy and Bitbucket to [re-do the integration](../../../repositories-configure/integrations/bitbucket-integration.md) in Codacy. + +You can log in with Bitbucket through [www.codacy.com/login-with/bitbucket](https://www.codacy.com/login-with/bitbucket). + +![Logging in using Bitbucket](../../images/2019-02-18-bitbucket-changes.png) diff --git a/docusaurus/docs/release-notes/cloud/2019/2019-03-29-cloud.md b/docusaurus/docs/release-notes/cloud/2019/2019-03-29-cloud.md new file mode 100644 index 0000000000..db637c97ee --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2019/2019-03-29-cloud.md @@ -0,0 +1,47 @@ +--- +title: Cloud March 29, 2019 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud March 29, 2019. +slug: /release-notes/cloud/cloud-2019-03-29 +--- + + +## Product enhancements + +- We now integrate with [Bitbucket using OAuth2](../../../organizations/what-are-organizations.md). This has allowed us to reduce the level of permissions we require when you integrate Codacy with your Bitbucket account. + +- We updated TSLint to version [5.14.0](https://www.npmjs.com/package/tslint/v/5.14.0). + +- As a way of improving performance, we've stopped analysis for inactive, free, and open-source accounts and we've communicated to those impacted by this measure. This was done so we could allocate more resources to people that are actively using Codacy. + +- We removed the option to add projects using a Git URL. Projects that were added before February 12, 2019, will continue to be analyzed as usual. + +- As part of our performance improvement measures, we've implemented an upper limit of 150 KB for file sizes that should be considered for analysis. This means that: + + - These files won't show in the UI as ignored + - Some projects that weren't analyzing before will now be able to analyze + - Some projects will take less time to analyze + - Some projects will have fewer issues as third party libraries issues covered by this limit won't show + - Some projects will have more issues because the analysis batch in which they're inserted won't fail + - Although most of the files that are now being ignored will be third-party dependencies and generated files, there is still the chance that some files that are actually development code and should be analyzed won't be. This is a global setting and is currently not customizable per-client (that option is only available for Self-hosted customers) + +## Bug fixes + +- Fixed a bug where it wasn't possible to unignore a file +- Fixed a bug where it wasn't possible to add Bitbucket integration in the project **Settings** -> **Integrations** page +- Fixed a bug where pull requests weren't analyzing when a branch was renamed +- Fixed a bug where the "Unignore issue" button wasn't working +- Fixed a bug where webhook notifications were being sent with incomplete information +- Fixed a bug that prevented users to save changes in project Settings when using Firefox 61 +- Fixed a bug with PHP_CodeSniffer "PHPCS_Internal" pattern that was generating false positives +- Fixed a bug with PHP_CodeSniffer deprecated parameters `customSanitizingFunctions property` and `WordPress.CSRF.NonceVerification` that were generating false positives +- Fixed a bug that was causing Cppcheck to fail analysis +- Fixed a bug where the Merged Pull Requests view was showing a blank page +- Fixed a bug where it wasn't possible to invite new team members from the Commit page +- Fixed a bug where the Codacy status page link was broken +- Fixed a bug where it wasn't possible to remove a user from an organization if the user had a special character in the name +- Fixed a bug where some links in the [security.codacy.com](https://security.codacy.com/) page were broken +- Fixed a bug where a user was having to confirm access to their Bitbucket account every time they logged in to Codacy +- Fixed a bug where the link to "See all files" on the coverage applet in the project dashboard wasn't clickable +- Fixed a typo in the Pull Requests page in the "possible fixed issues" message diff --git a/docusaurus/docs/release-notes/cloud/2019/2019-04-08-cloud.md b/docusaurus/docs/release-notes/cloud/2019/2019-04-08-cloud.md new file mode 100644 index 0000000000..b836d28239 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2019/2019-04-08-cloud.md @@ -0,0 +1,13 @@ +--- +title: Cloud April 8, 2019 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud April 8, 2019. +slug: /release-notes/cloud/cloud-2019-04-08 +--- + + +## Bug fixes + +- Fixed a bug where some users weren't able to login to Codacy when using GitHub. This was related to the "Email permission" that was missing. With the fix, if that permission is missing users will now get redirected to GitHub to request for the missing permissions ("read email"), and upon authorizing they will be able to log in. +- Fixed a bug that was causing TSLint analysis to fail due to an invalid configuration syntax. diff --git a/docusaurus/docs/release-notes/cloud/2019/2019-05-05-cloud.md b/docusaurus/docs/release-notes/cloud/2019/2019-05-05-cloud.md new file mode 100644 index 0000000000..cd1733e631 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2019/2019-05-05-cloud.md @@ -0,0 +1,21 @@ +--- +title: Cloud May 5, 2019 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud May 5, 2019. +slug: /release-notes/cloud/cloud-2019-05-05 +--- + + +## Product enhancements + +We added the following plugins for ESLint: + +- [typescript-eslint/eslint-plugin](https://www.npmjs.com/package/@typescript-eslint/eslint-plugin) +- [eslint-plugin-relay](https://www.npmjs.com/package/eslint-plugin-relay) + +## Bug fixes + +- Fixed a bug that was preventing accounts from being reactivated +- Fixed a bug where we couldn't import any projects from a Bitbucket organization if there were problems with one team +- Fixed a bug that forced the user to log in with Bitbucket to be able to see the Bitbucket projects. Now the user can log in with Bitbucket or GitHub and still be able to add projects from the other provider. diff --git a/docusaurus/docs/release-notes/cloud/2019/2019-05-20-cloud.md b/docusaurus/docs/release-notes/cloud/2019/2019-05-20-cloud.md new file mode 100644 index 0000000000..a07885bb57 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2019/2019-05-20-cloud.md @@ -0,0 +1,16 @@ +--- +title: Cloud May 20, 2019 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud May 20, 2019. +slug: /release-notes/cloud/cloud-2019-05-20 +--- + + +## Product enhancements + +- As a way of improving performance and provide faster analysis, Codacy will no longer check for new updates in projects that don't have [post-commit hooks](../../../repositories-configure/integrations/post-commit-hooks.md) enabled. + +## Bug fixes + +- Fixed a bug where Go tools weren't reporting any issues in the first analysis. diff --git a/docusaurus/docs/release-notes/cloud/2019/2019-06-18-cloud.md b/docusaurus/docs/release-notes/cloud/2019/2019-06-18-cloud.md new file mode 100644 index 0000000000..565f3bb102 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2019/2019-06-18-cloud.md @@ -0,0 +1,16 @@ +--- +title: Cloud June 18, 2019 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud June 18, 2019. +slug: /release-notes/cloud/cloud-2019-06-18 +--- + + +## Product enhancements + +- New plugin available for ESLint: [eslint-config-kentcdodds](https://github.com/kentcdodds/eslint-config-kentcdodds) + +## Bug fixes + +- Fixed bug where Duplication would show incorrect values if the branch was changed diff --git a/docusaurus/docs/release-notes/cloud/2019/2019-08-07-cloud.md b/docusaurus/docs/release-notes/cloud/2019/2019-08-07-cloud.md new file mode 100644 index 0000000000..b2982a4561 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2019/2019-08-07-cloud.md @@ -0,0 +1,27 @@ +--- +title: Cloud August 7, 2019 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud August 7, 2019. +slug: /release-notes/cloud/cloud-2019-08-07 +--- + + +## Product enhancements + +- New plugins available for ESLint: + - [eslint-config-standard-jsx](https://www.npmjs.com/package/eslint-config-standard-jsx) + - [eslint-plugin-compat](https://www.npmjs.com/package/eslint-plugin-compat) + - [eslint-plugin-chai-friendly](https://www.npmjs.com/package/eslint-plugin-chai-friendly) +- Updated bundler-audit to [v0.6.1](https://github.com/rubysec/bundler-audit/releases/tag/v0.6.1) +- Updated ESLint to [v5.16.0](https://eslint.org/blog/2019/03/eslint-v5.16.0-released) +- Updated RuboCop to [v0.71.0](https://github.com/rubocop-hq/rubocop/releases/tag/v0.71.0) +- Keeping in line with the Git providers, Codacy will now ignore branches with names longer than 254 characters +- Added new list view of team members under organizations called **People** + +## Bug fixes + +- Fixed bug that, in some projects, was causing Complexity and Duplication to be incorrectly calculated +- Fixed a bug where Complexity could show different results in different branches when the value should be the same +- Fixed a bug where some issues could be found but not listed on the Pull Request +- Fixed a bug that could cause the dashboards to not load correctly diff --git a/docusaurus/docs/release-notes/cloud/2019/2019-09-05-cloud.md b/docusaurus/docs/release-notes/cloud/2019/2019-09-05-cloud.md new file mode 100644 index 0000000000..2e29752a26 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2019/2019-09-05-cloud.md @@ -0,0 +1,35 @@ +--- +title: Cloud September 5, 2019 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud September 5, 2019. +slug: /release-notes/cloud/cloud-2019-09-05 +--- + + +## Product enhancements + +- Bitbucket integration improvement: Non-admins will no longer be able to add projects to Codacy to avoid setting up integrations that don't work. +- Codacy's Coverage Reporter now supports [scrutinizer-ci](https://scrutinizer-ci.com/docs/) and [semaphoreci](https://docs.semaphoreci.com/) +- New tools: + - [Pylint version 2.3.1](https://pypi.org/project/pylint/2.3.1/) to support Python 3 (up to [3.7](https://www.python.org/downloads/release/python-370/)). This version isn't enabled by default +- Updated tools: + - SonarC# has been updated from version 5.10.1.1411 to [7.16.0.8981](https://github.com/SonarSource/sonar-dotnet/releases/tag/7.16.0.8981) + - Pylint has been updated to [version 1.9.5](https://pypi.org/project/pylint/1.9.5/) with cross support for both Python 2 (up to 2.7) and Python 3 (up to 3.6) + - Stylelint has been updated to [10.1.0](https://www.npmjs.com/package/stylelint/v/10.1.0) + - Checkstyle has been updated to [8.23](https://checkstyle.sourceforge.io/releasenotes.html#Release_8.23) + - Added new patterns to Scalastyle +- Added support for the following plugins: + - [stylelint-config-css-modules](https://www.npmjs.com/package/stylelint-config-css-modules) + - [stylelint-prettier](https://github.com/prettier/stylelint-prettier) + - [stylelint-config-standard-scss](https://www.npmjs.com/package/stylelint-config-standard-scss) + - [stylelint-config-recommended-scss](https://github.com/kristerkari/stylelint-config-recommended-scss) + - [eslint-plugin-xss](https://www.npmjs.com/package/eslint-plugin-xss) + +## Bug fixes + +- Fixed a bug that stopped users from copying the API token while using Firefox +- Fixed a bug that kept the pull requests page from loading at times +- Fixed a bug that stopped Hotspots from loading on the PR screen if there were too many changes +- Fixed a bug that caused the coverage upload to sometimes give a timeout error +- Fixed a bug where Complexity reported by ESLint would not be displayed correctly in the dashboard diff --git a/docusaurus/docs/release-notes/cloud/2019/2019-10-30-cloud.md b/docusaurus/docs/release-notes/cloud/2019/2019-10-30-cloud.md new file mode 100644 index 0000000000..70fd55cbb8 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2019/2019-10-30-cloud.md @@ -0,0 +1,40 @@ +--- +title: Cloud October 30, 2019 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud October 30, 2019. +slug: /release-notes/cloud/cloud-2019-10-30 +--- + + +## Product enhancements + +- Improved Coverage support for C# by adding a [dedicated tool to upload coverage](https://github.com/codacy/csharp-codacy-coverage) + +- [Codacy Coverage Reporter](https://github.com/codacy/codacy-coverage-reporter) now supports [LCOV](https://wiki.documentfoundation.org/Development/Lcov) making it easier to upload coverage for JavaScript, Typescript and C. + +Updated tools: + +- Remark-lint has been updated to [6.0.4](https://libraries.io/npm/remark-lint/6.0.4) +- ShellCheck has been updated to [0.7.0](https://github.com/koalaman/shellcheck/releases/tag/v0.7.0) +- Stylelint has been updated to [11.1.1](https://www.npmjs.com/package/stylelint/v/11.1.1) +- detekt has been updated to [1.0.1](https://github.com/detekt/detekt/releases/tag/1.0.1) +- SonarC# has been updated to [7.17](https://github.com/SonarSource/sonar-dotnet/releases/tag/7.17.0.9346) +- PMD has been updated to [6.18.0](https://pmd.github.io/2019/09/15/PMD-6.18.0/) +- Default patterns for PMD + +Added support for the following plugins: + +- [RuboCop-rails](https://github.com/rubocop/rubocop-rails) +- [eslint-plugin-wdio](https://www.npmjs.com/package/eslint-plugin-wdio) +- [vue-eslint-parser](https://github.com/vuejs/vue-eslint-parser) + +## Bug fixes + +- Fixed patterns that were causing false positives for Scalameta Pro +- Fixed broken links in patterns descriptions +- Fixed a bug causing an intermittent error screen when users tried to log out +- Fixed several vulnerabilities related to Cross-site Scripting +- Fixed bug causing "Error dividing by Zero" error when trying to upload a coverage report +- Fixed a bug that was stopping Checkstyle from returning results if certain patterns were enabled +- Fixed bug where Pylint would not analyze Django projects diff --git a/docusaurus/docs/release-notes/cloud/2019/2019-11-15-cloud.md b/docusaurus/docs/release-notes/cloud/2019/2019-11-15-cloud.md new file mode 100644 index 0000000000..5fdaf4c699 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2019/2019-11-15-cloud.md @@ -0,0 +1,20 @@ +--- +title: Cloud November 15, 2019 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud November 15, 2019. +slug: /release-notes/cloud/cloud-2019-11-15 +--- + + +## Product Enhancements + +Synced organizations for GitHub are live! + +This feature will allow for easier integration with GitHub and organization management. Here you can find our [documentation on the new features and how to use them](../../../organizations/what-are-organizations.md). + +As a consequence, the next time you log in to Codacy you will see a window asking for one additional permission on GitHub with this information: + +![Authorizing access to organizations](../../images/2019-11-15-organizations-authorize.png) + +This will allow us to create an organization hook on GitHub for the new Synced organizations that will notify us whenever changes occur on GitHub. diff --git a/docusaurus/docs/release-notes/cloud/2020/2020-02-cloud-github-apps.md b/docusaurus/docs/release-notes/cloud/2020/2020-02-cloud-github-apps.md new file mode 100644 index 0000000000..6a50d9ec11 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2020/2020-02-cloud-github-apps.md @@ -0,0 +1,17 @@ +--- +title: Codacy now supports GitHub Apps February 2020 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +slug: /release-notes/cloud/cloud-2020-02-github-apps +--- + + +We're changing the way you authenticate to Codacy with GitHub: Starting February 2020, when you sign in, you'll be prompted to use GitHub Apps. + +GitHub Apps are the new preferred way of building products that work with GitHub repositories. Unlike right now, where you must grant access to everything in your account, with Apps you'll be able to select which accounts, organizations, and repositories Codacy has access to. You can also grant access to more later. If you previously wanted to grant access to only one of your organizations or only a specific repository, Apps will have you covered. + +Using Apps also unlocks access to new APIs, like GitHub Checks for creating better pull request reviews. + +![Installing the Codacy GitHub app](../../images/2020-02-github-apps.gif) + +To migrate to Apps all you have to do is sign out, sign in to Codacy and follow the wizard requesting the new permissions. Existing integrations will continue to work. diff --git a/docusaurus/docs/release-notes/cloud/2020/2020-03-09-cloud-nodesecurity-golint-scsslint-removal.md b/docusaurus/docs/release-notes/cloud/2020/2020-03-09-cloud-nodesecurity-golint-scsslint-removal.md new file mode 100644 index 0000000000..3ea3a6982a --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2020/2020-03-09-cloud-nodesecurity-golint-scsslint-removal.md @@ -0,0 +1,19 @@ +--- +title: Removal of NodeSecurity, GoLint, and SCSSLint March 9, 2020 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +slug: /release-notes/cloud/cloud-2020-03-09-nodesecurity-golint-scsslint-removal +--- + + +On the week of March 9th 2020, we'll be removing some tools from Codacy. + +Those tools are NodeSecurity, GoLint, and SCSSLint. + +These tools have become deprecated or stopped being updated by their maintainers and started providing a bad experience for Codacy users either by reporting false positives or causing other unexpected issues. + +We've been working on alternatives for each tool. Continue reading to find out how you can replace each of the removed tools: + +- **NodeSecurity:** This tool detects outdated NPM dependencies. It stopped being maintained two years ago when [it was acquired and replaced by NPM](https://github.com/nodesecurity/nsp#the-node-security-platform-has-been-acquired-by-npm-inc) itself. Since it stopped being updated it will no longer find new vulnerabilities, thus becoming useless and only providing a false sense of security. _Recommendation: If you have an NPM repository you now have this functionality out-of-the-box._ +- **GoLint:** Last month we launched a new Go tool - [Revive](https://github.com/mgechev/revive) - which is a drop-in replacement for GoLint supporting all its rules and even more. _Recommendation: Revive was enabled by default for your Go repositories with GoLint's. Check that the default patterns make sense for your team._ +- **SCSSLint:** [This tool is now unmaintained](https://github.com/sds/scss-lint#notice-consider-other-tools-before-adopting-scss-lint) for four years with the old maintainers suggesting that users migrate to Stylelint which is already supported by Codacy for quite some time. _Recommendation: Check that the Stylelint is enabled and its default patterns make sense for your team._ diff --git a/docusaurus/docs/release-notes/cloud/2020/2020-04-01-cloud-deprecating-http-headers-for-api-tokens.md b/docusaurus/docs/release-notes/cloud/2020/2020-04-01-cloud-deprecating-http-headers-for-api-tokens.md new file mode 100644 index 0000000000..f43373b3e1 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2020/2020-04-01-cloud-deprecating-http-headers-for-api-tokens.md @@ -0,0 +1,34 @@ +--- +title: Deprecating HTTP headers for API tokens April 1, 2020 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: On April 1st, 2020 we're deprecating the api_token and project_token HTTP headers used to authenticate to the Codacy API. +slug: /release-notes/cloud/cloud-2020-04-01-deprecating-http-headers-for-api-tokens +--- + + +On April 1st, 2020 we're deprecating the following HTTP headers used to authenticate to the [Codacy API](https://api.codacy.com/api/api-docs) using either an API token or project token: + +- `api_token` +- `project_token` + +From this date onward, use the following HTTP headers instead: + +- `api-token` +- `project-token` + +## How does this change impact me? + +We will support the new and old HTTP headers simultaneously for some time. However, we intend to drop the support for the old HTTP headers in the future. + +As such, to avoid downtime in your operations, we recommend that you do the following **as soon as possible**: + +- Update the [Codacy Coverage Reporter](https://github.com/codacy/codacy-coverage-reporter) to version 7.6.6 or later +- Update the [Codacy Analysis CLI](https://github.com/codacy/codacy-analysis-cli) to version 3.0.0 or later +- If you have any custom tools or scripts that integrate with the Codacy API, update them to use the new HTTP headers. + +## Background information + +By default, [NGINX silently drops HTTP headers containing underscores](https://www.nginx.com/nginx-wiki/build/dirhtml/start/topics/tutorials/config_pitfalls/#missing-disappearing-http-headers). With the old HTTP headers, this would require an extra configuration step during the Codacy installation process. + +We decided to avoid this extra complexity by changing to the new HTTP headers that don't include underscores. diff --git a/docusaurus/docs/release-notes/cloud/2021/2021-07-03-cloud-scheduled-db-maintenance.md b/docusaurus/docs/release-notes/cloud/2021/2021-07-03-cloud-scheduled-db-maintenance.md new file mode 100644 index 0000000000..42a2be57c0 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2021/2021-07-03-cloud-scheduled-db-maintenance.md @@ -0,0 +1,35 @@ +--- +title: Performing scheduled database maintenance July 3, 2021 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +slug: /release-notes/cloud/cloud-2021-07-03-scheduled-db-maintenance +--- + + +On July 3, 2021, starting at 08:00 UTC we'll perform scheduled database maintenance to improve the performance and scalability of Codacy Cloud. + +To ensure an adequate performance level and scalability of our product, we'll be cleaning historical static code analysis data from our databases. Code coverage data or any other data or settings related to your account, organizations, and repositories won't be affected. + +This operation will include around 2 hours of initial downtime, followed by 8 hours of degraded analysis performance for all users and an additional 5 hours for open source users. We expect to finish the maintenance operation at around July 3, 2021 23:00 UTC. + +Our [status page](https://status.codacy.com/) will always include the most up-to-date information regarding the operational status of Codacy Cloud. + +## How does this impact me? + +To mitigate the impact, as part of the maintenance operation we'll re-analyze the pull requests and the last commit in the default branch of each repository according to the following retention periods: + +- 6 months for **Pro and Trial plans** +- 15 days for **Open source plans** + +The following is the expected impact during the maintenance operation: + +- New commits and pull requests will either not be picked up by Codacy or take longer to analyze. If you have set Codacy as a required check to merge it will fail. + +The following is the expected impact after the maintenance operation is complete: + +- Historical static code analysis information will be missing for any commits and pull requests that we don't re-analyze as part of the maintenance operation, and the grade and badges for your repositories may become unavailable +- The static code analysis information for re-analyzed commits and pull requests can be different from the original if you made changes to the tool and code pattern settings since the original commit date + +## What to do if you're missing information on your repositories? + +You can wait for Codacy to analyze new pushes to your repositories or [manually trigger the re-analysis](../../../faq/repositories/how-do-i-reanalyze-my-repository.md) of any commits and pull requests to re-populate the pages. diff --git a/docusaurus/docs/release-notes/cloud/2021/2021-08-cloud.md b/docusaurus/docs/release-notes/cloud/2021/2021-08-cloud.md new file mode 100644 index 0000000000..1da38619c5 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2021/2021-08-cloud.md @@ -0,0 +1,70 @@ +--- +title: Cloud August 2021 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud August 2021. +included_jira_versions: ['2021.Q3.3', '2021.Q3.4'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/3.5.3 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/3.7.0 +slug: /release-notes/cloud/cloud-2021-08 +--- + + +These release notes are for the Codacy Cloud updates during August 2021. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +It's now possible to configure the Codacy quality settings with the minimum severity level of new issues and a maximum number of new security issues, giving you more control over the pull requests that Codacy blocks from being merged. Besides this, the status reported by Codacy on pull requests now includes more information on why the quality checks failed. (CY-4216) + +![Improved flexibility of quality settings](../../images/cy-4216.png) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.283 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 1.6 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- detekt 1.17.1 +- **ESLint 7.32.0 (updated from 7.30.0)** +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.3.0 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP_CodeSniffer 3.6.0 +- PHP Mess Detector 2.8.1 +- **PMD 6.36.0 (updated from 6.33.0)** +- PMD (Legacy) 5.8.1 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.19.1 (updated from 1.18.3)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.1 +- SonarC# 8.25 +- SonarVB 8.15 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- Stylelint 13.13.1 +- SwiftLint 0.40.0 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/cloud/2021/2021-09-cloud.md b/docusaurus/docs/release-notes/cloud/2021/2021-09-cloud.md new file mode 100644 index 0000000000..5cff1442cc --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2021/2021-09-cloud.md @@ -0,0 +1,86 @@ +--- +title: Cloud September 2021 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud September 2021. +included_jira_versions: ['2021.Q3.5', '2021.Q3.6', '2021.Q4.1'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/3.7.0 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/3.9.12 +slug: /release-notes/cloud/cloud-2021-09 +--- + + +These release notes are for the Codacy Cloud updates during September 2021. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- [codacy-clang-tidy](https://github.com/codacy/codacy-clang-tidy) is now also published as a macOS binary. (CY-5053) +- Added the following plugins to [codacy-eslint](https://github.com/codacy/codacy-eslint): + - [eslint-plugin-i18n-json](https://www.npmjs.com/package/eslint-plugin-i18n-json) (CY-5029) + - [eslint-plugin-suitescript](https://www.npmjs.com/package/eslint-plugin-suitescript) (CY-4918) + - [eslint-config-xo-typescript](https://www.npmjs.com/package/eslint-config-xo-typescript) (CY-4890) + - [@vue/cli-plugin-babel](https://www.npmjs.com/package/@vue/cli-plugin-babel) (CY-4864) + - [eslint-plugin-sort-keys-fix](https://www.npmjs.com/package/eslint-plugin-sort-keys-fix) (CY-4763) + - [eslint-plugin-playwright](https://www.npmjs.com/package/eslint-plugin-playwright) (CY-4751) + +## Bug fixes + +- Fixed an issue that caused a redirect to different repository settings when enabling the GitHub integration for a repository. (CY-5056) +- Fixed an issue that caused the PMD option `ignoreUsings` to be ignored when calculating duplication for C#. (CY-5026) +- Fixed Codacy Coverage Reporter not finding some LCOV coverage reports automatically. (CY-5015) +- Fixed an issue that caused the error `Failed to analyze file` when CodeNarc identified issues using code patterns that had no associated message. (CY-4974) +- Improved the code pattern names for Cppcheck. (CY-4887) +- Improved the severity for issues detected by Stylelint. (CY-4851) +- Fixed an issue where inline exclusions for Bandit weren't being correctly applied. (CY-4843) +- Fixed Checkov failing the analysis with some Terraform files. (CY-4744) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- **Checkov 2.0.399 (updated from 2.0.283)** +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- **CodeNarc 2.2.0 (updated from 1.6)** +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- **detekt 1.18.1 (updated from 1.17.1)** +- ESLint 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- **Gosec 2.8.1 (updated from 2.3.0)** +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- **PHP Mess Detector 2.10.1 (updated from 2.8.1)** +- PHP_CodeSniffer 3.6.0 +- PMD 6.36.0 +- PMD (Legacy) 5.8.1 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.21.0 (updated from 1.19.1)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.1 +- SonarC# 8.25 +- SonarVB 8.15 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- Stylelint 13.13.1 +- SwiftLint 0.40.0 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/cloud/2021/2021-10-cloud.md b/docusaurus/docs/release-notes/cloud/2021/2021-10-cloud.md new file mode 100644 index 0000000000..b452368fd3 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2021/2021-10-cloud.md @@ -0,0 +1,78 @@ +--- +title: Cloud October 2021 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud October 2021. +included_jira_versions: ['2021.Q4.2', '2021.Q4.3'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/3.9.12 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/3.9.48 +slug: /release-notes/cloud/cloud-2021-10 +--- + + +These release notes are for the Codacy Cloud updates during October 2021. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Added the plugin [@next/eslint-plugin-next](https://www.npmjs.com/package/@next/eslint-plugin-next) to [codacy-eslint](https://github.com/codacy/codacy-eslint). (CY-5071) + +## Bug fixes + +- Added protection against CSRF attacks targeting the Codacy API v3. In the case of phishing, even if the victim opens a malicious link, the attack won't work. CVSS v3.1 score: 6.4 (Medium) (CY-5131) +- Fixed an issue that prevented Codacy from displaying secondary email addresses from GitLab accounts. (CY-5130) +- Fixed an issue that was causing organizations using a legacy plan to get wrong messages about missing members and to not be able to reanalyze commits and PRs. (CY-5112) +- Fixed an issue that caused features that depend on the payment plan to misbehave in rare cases, such as fix suggestions not being available for organizations that had recently updated their payment plan. (CY-5107) +- Added support for the JavaScript extension `.mjs`. (CY-5086) +- Fixed an issue that caused the Pro plan to be canceled immediately instead of on the scheduled date for cancellation. (CY-5025) +- Fixed an issue that could cause the Account Profile screen to incorrectly report the Name field as invalid. (CY-779) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- detekt 1.18.1 +- ESLint 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- **PHP_CodeSniffer 3.6.1 (updated from 3.6.0)** +- PMD 6.36.0 +- PMD (Legacy) 5.8.1 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.22.2 (updated from 1.21.0)** +- Scalastyle 1.5.0 +- **ShellCheck 0.7.2 (updated from 0.7.1)** +- **SonarC# 8.30 (updated from 8.25)** +- SonarVB 8.15 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- Stylelint 13.13.1 +- **SwiftLint 0.43.1 (updated from 0.40.0)** +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/cloud/2021/2021-11-02-cloud-legacy-organizations.md b/docusaurus/docs/release-notes/cloud/2021/2021-11-02-cloud-legacy-organizations.md new file mode 100644 index 0000000000..a9580e1781 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2021/2021-11-02-cloud-legacy-organizations.md @@ -0,0 +1,35 @@ +--- +title: End of support for legacy manual organizations November 2, 2021 +slug: /release-notes/cloud/cloud-2021-11-02-legacy-organizations +--- + + +On November 2, 2021, as part of our efforts to improve Codacy Cloud and allow all our customers to benefit from a more seamless experience, we’re removing the support for legacy manual organizations. As part of this process, we'll automatically migrate your legacy organization to a new [synced organization](../../../organizations/what-are-organizations.md). + +To make sure that Codacy will continue to analyze your repositories **please perform the following steps before November 2, 2021**: + +1. **If you're using GitHub** you must [install the Codacy GitHub App](https://github.com/apps/codacy-production/installations/new) on the GitHub organizations that contain your repositories so that Codacy has the [necessary permissions](../../../getting-started/which-permissions-does-codacy-need-from-my-account.md) to analyze your code. + +1. Make sure that your Git provider organization owners belong to the **Administrators** team of your legacy organization on Codacy. + +If you already have any synced organizations on Codacy, the migration process won't overwrite any data on those synced organizations, nor copy any repositories that you have in your legacy organization. + +:::caution +After the migration process ends on December 2, 2021, we'll delete any existing legacy organizations that we couldn't migrate. +::: + +## How does this impact me? + +Synced organizations have several advantages, such as keeping the repositories and team member permissions in sync with the Git provider. Besides this, Codacy is actively developing new features and improvements for synced organizations only. + +However, the following scenarios may impact you: + +- **If your legacy organization is using the Open source plan** then Codacy has already stopped analyzing your repositories. Codacy will attempt to migrate your organization and restore the analysis of your repositories. + +- **If we can't automatically migrate your legacy organization** Codacy will stop analyzing your repositories, and you'll lose access to your existing repositories on Codacy. Please make sure that you follow the steps above to guarantee that the migration is successful. + +Codacy appreciates your continued support through this time of growth and change. If you have any questions, please don’t hesitate to reach out by sending an email to [support@codacy.com](mailto:support@codacy.com) or by using the in-app chat. + +## See also + +- **On Codacy Self-hosted,** legacy manual organizations stopped being supported on [version 5.0.0](../self-hosted/self-hosted-v5.0.0.md) diff --git a/docusaurus/docs/release-notes/cloud/2021/2021-11-cloud.md b/docusaurus/docs/release-notes/cloud/2021/2021-11-cloud.md new file mode 100644 index 0000000000..5ad416f4cf --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2021/2021-11-cloud.md @@ -0,0 +1,83 @@ +--- +title: Cloud November 2021 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud November 2021. +included_jira_versions: ['2021.Q4.4', '2021.Q4.5'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/3.9.48 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/4.0.22 +slug: /release-notes/cloud/cloud-2021-11 +--- + + +These release notes are for the Codacy Cloud updates during November 2021. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Now, Codacy supports linting OpenAPI and AsyncAPI descriptions in either YAML or JSON files using [Spectral](https://stoplight.io/open-source/spectral/). (CY-5088) + +- You can now [use an organization coding standard](../../../organizations/using-coding-standards.md) to apply the same coding best practices, conventions, or security rules to a group of repositories. (CY-4654) + + ![Organization coding standard](../../images/cy-4654.png) + +- The Codacy API now includes [a set of endpoints](https://api.codacy.com/api/api-docs#codacy-api-coding-standards) for creating, managing, and applying organization coding standards programmatically. (CY-4617) + +## Bug fixes + +- The Files page now allows sorting the list by each column. (CY-5255) +- Fixed an issue that prevented the message "Refresh the page to see the results" from being displayed on the commit and pull request pages after an analysis was completed. (CY-5187) +- Fixed some default regular expressions on [codacy-checkstyle](https://github.com/codacy/codacy-checkstyle) that could cause the code pattern PackageName to report false positives when configured using the Codacy UI. (CY-5185) +- Fixed an issue that caused ESLint to report false positive issues regarding import statement organization if prettier was enabled. (CY-5143) +- Fixed the issue cards in the context of a file to display the issue category. (CY-5125) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- detekt 1.18.1 +- ESLint 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.1 +- PMD 6.36.0 +- PMD (Legacy) 5.8.1 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.22.3 (updated from 1.22.2)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.2 +- SonarC# 8.30 +- SonarVB 8.15 +- **Spectral 1.2.7 (new)** +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- Stylelint 13.13.1 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/cloud/2021/2021-12-cloud.md b/docusaurus/docs/release-notes/cloud/2021/2021-12-cloud.md new file mode 100644 index 0000000000..9550145afb --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2021/2021-12-cloud.md @@ -0,0 +1,79 @@ +--- +title: Cloud December 2021 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud December 2021. +included_jira_versions: ['2021.Q4.6', '2021.Q4.7'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/4.0.22 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/4.0.54 +slug: /release-notes/cloud/cloud-2021-12 +--- + + +These release notes are for the Codacy Cloud updates during December 2021. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- It's now possible to [assign a coding standard automatically to new repositories](../../../organizations/using-coding-standards.md#set-default). (CY-5263) + +## Bug fixes + +- Fixed an issue that could cause payment plans to change to "Open source" when Chargebee is unreachable. (CY-5386) +- Fixed an issue that sometimes caused repository quality settings to be saved only partially. (CY-5380) +- Fixed an issue that prevented merge commits from displaying any information regarding files, duplication, and complexity. (CY-5364) +- Fixed a scenario where the number of applied repositories on a coding standard didn't update when deleting a repository. (CY-5363) +- Fixed an issue that prevented non-logged users to see the file list of open source repositories. (CY-5298) +- Fixed a popup that overlapped the list on the People page. (CY-5282) +- Improved the visual feedback for the Jira integration status. (CY-5190) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- **detekt 1.19.0 (updated from 1.18.1)** +- ESLint 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- **PHP_CodeSniffer 3.6.2 (updated from 3.6.1)** +- PMD 6.36.0 +- PMD (Legacy) 5.8.1 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.23.0 (updated from 1.22.3)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.2 +- SonarC# 8.30 +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- **Stylelint 14.1.0 (updated from 13.13.1)** +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/cloud/2022/2022-01-cloud.md b/docusaurus/docs/release-notes/cloud/2022/2022-01-cloud.md new file mode 100644 index 0000000000..3acd15cb49 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2022/2022-01-cloud.md @@ -0,0 +1,79 @@ +--- +title: Cloud January 2022 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud January 2022. +included_jira_versions: ['2022.Q1.1', '2022.Q1.2'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/4.0.54 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/4.4.2 +slug: /release-notes/cloud/cloud-2022-01 +--- + + +These release notes are for the Codacy Cloud updates during January 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- The Codacy API now includes endpoints that allow you to [create and manage project API tokens programmatically](../../../codacy-api/examples/creating-repository-api-tokens-programmatically.md). This feature can be used to automate setting up coverage for either new repositories or for all your existing repositories. (CY-5090) +- Added the plugin [eslint-plugin-storybook](https://www.npmjs.com/package/eslint-plugin-storybook) to [codacy-eslint](https://github.com/codacy/codacy-eslint). (CY-5406) +- Now, Codacy supports static code analysis for Dart/Flutter projects using [dartanalyzer](https://github.com/dart-lang/sdk/tree/main/pkg/analyzer_cli). The new tool checks your code for errors and warnings that are specified in the [Dart language specification](https://dart.dev/guides/language/spec). (CY-4314) +- Now, all configurable Stylelint code patterns have [default values set to the recommended settings](https://github.com/codacy/codacy-stylelint/pull/240/files), ensuring that they're ready to be used as soon as you enable them. (CY-3275) + +## Bug fixes + +- Updated the Git URL used to clone public repositories to comply with the recent [GitHub protocol changes](https://github.blog/2021-09-01-improving-git-protocol-security-github/). (CY-5436) +- Fixed an issue that could prevent users from using the Codacy app website temporarily if they were exposed to a phishing attack. CVSS v3.1 score: 3.1 (Low) (CY-5420) +- Fixed a security issue that, under rare circumstances, could allow an attacker to run arbitrary code on the **Ignored files** settings page. CVSS v3.1 score: 3.8 (Low) (CY-5419) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- **dartanalyzer 2.15.1 (new)** +- detekt 1.19.0 +- ESLint 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.36.0 +- PMD (Legacy) 5.8.1 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.25.0 (updated from 1.23.0)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.2 +- SonarC# 8.30 +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- **Stylelint 14.2.0 (updated from 14.1.0)** +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/cloud/2022/2022-02-16-cloud-pmd-legacy-removal.md b/docusaurus/docs/release-notes/cloud/2022/2022-02-16-cloud-pmd-legacy-removal.md new file mode 100644 index 0000000000..60557ccb50 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2022/2022-02-16-cloud-pmd-legacy-removal.md @@ -0,0 +1,19 @@ +--- +title: Removal of PMD (Legacy) February 16, 2022 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +slug: /release-notes/cloud/cloud-2022-02-16-pmd-legacy-removal +--- + + +On the week of February 16th 2022 we'll be removing the tool **PMD (Legacy)** from Codacy. + +The **PMD (Legacy)** tool runs [PMD 5.8.1](https://github.com/pmd/pmd/releases/tag/pmd_releases%2F5.8.1), and was introduced to allow a smoother migration to PMD 6. + +However, the legacy version of PMD is almost five years old and is no longer being maintained by the tool developers, while PMD 6 is now very stable and provides newer features. + +## If you were using PMD (Legacy) + +To continue using PMD to analyze your repositories, [enable the **PMD** tool](../../../repositories-configure/configuring-code-patterns.md) on the **Code patterns** page of your repositories. + +If you have any questions or need help, please contact [support@codacy.com](mailto:support@codacy.com). diff --git a/docusaurus/docs/release-notes/cloud/2022/2022-02-cloud.md b/docusaurus/docs/release-notes/cloud/2022/2022-02-cloud.md new file mode 100644 index 0000000000..ffff38e90c --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2022/2022-02-cloud.md @@ -0,0 +1,95 @@ +--- +title: Cloud February 2022 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud February 2022. +included_jira_versions: ['2022.Q1.3', '2022.Q1.4'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/4.4.2 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/5.2.6 +slug: /release-notes/cloud/cloud-2022-02 +--- + + +These release notes are for the Codacy Cloud updates during February 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- The [**Overall quality** chart](../../../organizations/organization-overview.md#overall-quality-chart) now allows drilling down on the information to understand which repositories require attention to improve the organization's code quality. (Beta) (CY-5580) + + ![Drilling down on the Overall quality chart](../../images/cy-5580.png) + +- Now, Codacy calculates the new metric [diff coverage for pull requests](../../../repositories/pull-requests.mdx#quality-overview). (CY-5533) + + It's also possible to [set up a quality gate rule](../../../repositories-configure/adjusting-quality-gates.md) for diff coverage. (CY-5534) + + ![Diff coverage for a pull request](../../images/cy-5533.png) + + ![Quality gate rule for diff coverage](../../images/cy-5534.png) + +## Bug fixes + +- Fixed an issue that caused the Codacy API v2 endpoint [analyse](https://api.codacy.com/api-docs#analyse) to fail to start the analysis of the commit as expected. (CY-5622) +- Updated the [codacy-rubocop](https://github.com/codacy/codacy-rubocop) plugins listed below. (CY-5550) + + - [rubocop-shopify 2.4.0](https://rubygems.org/gems/rubocop-shopify/versions/2.4.0) + - [rubocop-sorbet 0.6.5](https://rubygems.org/gems/rubocop-sorbet/versions/0.6.5) + - [rubocop-rails 2.13.2](https://rubygems.org/gems/rubocop-rails/versions/2.13.2) + - [rubocop-performance 1.13.2](https://rubygems.org/gems/rubocop-performance/versions/1.13.2) + - [rubocop-graphql 0.12.3](https://rubygems.org/gems/rubocop-graphql/versions/0.12.3) + - [rubocop-ast 1.15.1](https://rubygems.org/gems/rubocop-ast/versions/1.15.1) + +- Now, the **Coverage** column always appears on the Files page even when there's no coverage data, avoiding a jump in the view. (CY-5518) +- Now, the [**Issues breakdown** area on the Repository Dashboard](../../../repositories/repository-dashboard.md#issues-breakdown) displays all issue categories, including **Code complexity**. (CY-5463) +- You can now use the Codacy configuration file to [adjust how PMD CPD detects duplicated code](../../../repositories-configure/codacy-configuration-file.md#pmd-cpd-duplication), giving you more flexibility to eliminate false positives. (CY-5184) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.15.1 +- detekt 1.19.0 +- ESLint 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.36.0 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.25.1 (updated from 1.25.0)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.2 +- SonarC# 8.30 +- SonarVB 8.15 +- Spectral 1.2.7 +- **SpotBugs 4.5.3 (updated from 4.1.2)** +- **SQLint 0.2.1 (updated from 0.1.9)** +- Staticcheck 2020.1.6 +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/cloud/2022/2022-03-31-cloud-adding-eslint8.md b/docusaurus/docs/release-notes/cloud/2022/2022-03-31-cloud-adding-eslint8.md new file mode 100644 index 0000000000..e54f3bda8a --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2022/2022-03-31-cloud-adding-eslint8.md @@ -0,0 +1,45 @@ +--- +title: Adding ESLint 8 as a supported tool March 31, 2022 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +slug: /release-notes/cloud/cloud-2022-03-31-adding-eslint8 +--- + + +On March 31, 2022 Codacy is adding ESLint 8 as a new supported tool and deprecating ESLint 7: + +- ESLint 8 will be enabled by default on new repositories and Codacy recommends that you migrate to this version of the tool to benefit from the new features and fixes of ESLint + +- ESLint 7 will still be available but Codacy will stop providing updates for this version of the tool, and will remove it completely on April 4, 2023 + +[See this post on the Codacy Community](https://community.codacy.com/t/introducing-eslint-version-8-on-our-platform/868) for more details on this update. + +## Migrating your configuration files to use ESLint 8 + +ESLint 8 [introduces breaking changes](https://eslint.org/docs/latest/user-guide/migrating-to-8.0.0) that may affect the analysis of your repositories. + +**If you're using an [ESLint configuration file](https://eslint.org/docs/user-guide/configuring/configuration-files) with the parser `babel-eslint`** you must update your configuration file before enabling ESLint 8 on Codacy: + +- The `babel-eslint` parser was deprecated on February 26, 2020 in favor of `@babel/eslint-parser` and removed in ESLint 8. `@babel/eslint-parser` has stricter requirements compared to its predecessor. If you're using `babel-eslint` you must update it and relax the requirements: + + ```diff + - parser: "babel-eslint", + + parser: "@babel/eslint-parser", + + parserOptions: { + + requireConfigFile: false, + + }, + ``` + +- Additionally, if you have `.jsx` files in your repository you must select the Babel React preset: + + ```diff + parser: "@babel/eslint-parser", + parserOptions: { + requireConfigFile: false, + + babelOptions: { + + presets: ["@babel/preset-react"], + + }, + }, + ``` + +If you have any questions or need help, please contact [support@codacy.com](mailto:support@codacy.com). diff --git a/docusaurus/docs/release-notes/cloud/2022/2022-03-cloud.md b/docusaurus/docs/release-notes/cloud/2022/2022-03-cloud.md new file mode 100644 index 0000000000..a333909c9e --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2022/2022-03-cloud.md @@ -0,0 +1,114 @@ +--- +title: Cloud March 2022 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud March 2022. +included_jira_versions: ['2022.Q1.5', '2022.Q1.6', '2022.Q2.1'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/5.2.6 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/5.6.3 +slug: /release-notes/cloud/cloud-2022-03 +--- + + +These release notes are for the Codacy Cloud updates during March 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- GitLab project members with the Maintainer role can now perform the following operations on Codacy: + + - Adding the project + - Configuring the project + - Changing the following analysis settings: ignoring issues and files, configuring code patterns, configuring file extensions, and managing branches + + [See the updated permissions](../../../organizations/roles-and-permissions-for-organizations.md#permissions-for-gitlab) for all GitLab roles. (CY-5876) + +- Included ESLint 8 as a new supported tool and deprecated ESLint 7. + + New repositories will use ESLint 8 by default, and **Codacy won't provide more updates for ESLint 7 and will remove ESLint 7 on April 4, 2023**. [See this post on the Codacy Community](https://community.codacy.com/t/introducing-eslint-version-8-on-our-platform/868) for more details on this update. (CY-5848) + +- The [Codacy Coverage Reporter Docker image](https://hub.docker.com/r/codacy/codacy-coverage-reporter/tags) is now published with a stable tag as well. For example, we publish `codacy/codacy-coverage-reporter:13.8.0` as well as `codacy/codacy-coverage-reporter:13`. (CY-5837) + +- Added the plugins [vue-template-compiler](https://www.npmjs.com/package/vue-template-compiler) and [eslint-plugin-vuejs-accessibility](https://www.npmjs.com/package/eslint-plugin-vuejs-accessibility) to [codacy-eslint](https://github.com/codacy/codacy-eslint). (CY-5821) + +- RuboCop configuration files can now reference the [GraphQL extension](https://github.com/DmitryTsepelev/rubocop-graphql). (CY-5814) + +- The [**Repositories list** page](https://docs.codacy.com/v7.0/organizations/managing-repositories/) now displays a warning icon to improve the visibility of warnings and errors affecting the repositories. (CY-5797) + + ![Repositories with warnings on the Repositories list page](../../images/cy-5797.png) + +- The [**Open pull requests** area](https://docs.codacy.com/v7.0/repositories/repository-dashboard/#open-pull-requests) on the Repository Dashboard now displays more details about the open pull requests. (CY-5796) + + ![Open pull requests area on the Repository Dashboard](../../images/cy-5796.png) + +- The [**Access management** page](https://docs.codacy.com/v7.0/getting-started/which-permissions-does-codacy-need-from-my-account/#revoking-access-to-integrations) under your account settings now also allows adding new Git providers. (CY-5795) + +- The **Organization Overview** and **Repositories list** pages have improved loading times using a short-lived cache in the user's browser. (CY-5793) + +- Codacy Coverage Reporter now supports [automatic commit SHA hash detection](../../../coverage-reporter/troubleshooting-coverage-cli-issues.md#commit-detection) on AWS CodeBuild. (CY-5787) + +- Added new Codacy Analysis CLI options to allow uploading analysis results in batches of configurable size and to use only specific tool categories while performing the analysis. For more information [see the documentation](https://github.com/codacy/codacy-analysis-cli#commands-and-configuration) of the options `--tool` and `--upload-batch-size`. (CY-5727) + +- The [**Repositories list** page](https://docs.codacy.com/v7.0/organizations/managing-repositories/) now allows sorting the list of repositories using the available columns in organizations with less than 100 repositories. (CY-5695) + +- Moved the code coverage setup page under the repository **Settings**, tab **Coverage**. The new page includes a list of the most recent coverage reports uploaded to Codacy to [help you troubleshoot your coverage setup](../../../coverage-reporter/index.md#uploading-coverage). (CY-5399) + +## Bug fixes + +- Fixed an issue that prevented running [standalone tools](../../../repositories-configure/local-analysis/client-side-tools.md) using the Codacy Analysis CLI GitHub Action. (CY-5812) +- Fixed an issue that caused inconsistencies on the last updated date when listing GitHub repositories. Now, the last updated date is the [date of the last push to the repositories](../../../organizations/organization-overview.md#last-updated-repositories). (CY-5784) +- Fixed an issue on the API endpoint [getRepositoryPullRequest](https://api.codacy.com/api/api-docs#getrepositorypullrequest) where the grades for coverage weren't being taken into account when calculating if the pull request is up to standards. (CY-5716) +- dartanalyzer now supports including the packages [lints](https://pub.dev/packages/lints) and [flutter_lints](https://pub.dev/packages/flutter_lints) in the `analysis_option.yaml` configuration file. (CY-5626) +- The re-analyze button is now hidden on repositories that are running analysis through a build server. (CY-4205) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- **[dartanalyzer 2.16.1](https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md#2161---2022-02-09) (updated from 2.15.1)** +- detekt 1.19.0 +- **[ESLint 8.12.0](https://github.com/eslint/eslint/releases/tag/v8.12.0) (new)** +- ESLint 7.32.0 (**deprecated**) +- Faux-Pas 1.7.2 +- **[Flawfinder 2.0.19](https://github.com/david-a-wheeler/flawfinder/blob/master/ChangeLog) (updated from 2.0.11)** +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.36.0 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **[RuboCop 1.26.1](https://github.com/rubocop/rubocop/releases/tag/v1.26.1) (updated from 1.25.1)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.2 +- SonarC# 8.30 +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.5.3 +- SQLint 0.2.1 +- Staticcheck 2020.1.6 +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/cloud/2022/2022-04-cloud.md b/docusaurus/docs/release-notes/cloud/2022/2022-04-cloud.md new file mode 100644 index 0000000000..79f93b5bf3 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2022/2022-04-cloud.md @@ -0,0 +1,78 @@ +--- +title: Cloud April 2022 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud April 2022. +included_jira_versions: ['2022.Q2.2', '2022.Q2.3'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/5.6.3 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/5.7.31 +slug: /release-notes/cloud/cloud-2022-04 +--- + + +These release notes are for the Codacy Cloud updates during April 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Added support for the RuboCop extension [rubocop-thread_safety](https://github.com/covermymeds/rubocop-thread_safety) to check your Ruby code for thread-safety issues. (CY-5991) +- Added support for the ESLint plugin [eslint-plugin-es](https://github.com/mysticatea/eslint-plugin-es) to disallow the syntax of specific ECMAScript versions. (CY-5968) + +## Bug fixes + +- Fixed a broken link in the notification emails sent to organization admins when new members ask to join an organization. (CY-5979) +- Now, the PMD CPD duplication tool runs [without the `--ignore-identifiers` flag](../../../repositories-configure/codacy-configuration-file.md#pmd-cpd-duplication) because it was found to report more false positives. (CY-5955) +- Fixed an issue that prevented Codacy from listing GitHub repositories on the Repositories list. (CY-5935) +- Fixed an issue that could cause the **Organization Overview** page to display pull requests with the wrong status under the **Most problematic** open pull requests tab. (CY-5872) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- **[dartanalyzer 2.16.2](https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md) (updated from 2.16.1)** +- detekt 1.19.0 +- **[ESLint 8.14.0](https://github.com/eslint/eslint/releases/tag/v8.14.0) (updated from 8.12.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.36.0 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **[RuboCop 1.28.2](https://github.com/rubocop/rubocop/releases/tag/v1.28.2) (updated from 1.26.1)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.2 +- **[SonarC# 8.33](https://github.com/SonarSource/sonar-dotnet/releases/tag/8.33.0.40503) (updated from 8.30)** +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.5.3 +- SQLint 0.2.1 +- Staticcheck 2020.1.6 +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/cloud/2022/2022-05-cloud.md b/docusaurus/docs/release-notes/cloud/2022/2022-05-cloud.md new file mode 100644 index 0000000000..6387906fec --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2022/2022-05-cloud.md @@ -0,0 +1,87 @@ +--- +title: Cloud May 2022 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud May 2022. +included_jira_versions: ['2022.Q2.4'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/5.7.31 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/6.1.19 +slug: /release-notes/cloud/cloud-2022-05 +--- + + +These release notes are for the Codacy Cloud updates during May 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- The [**Code Patterns** page](../../../repositories-configure/configuring-code-patterns.md) was redesigned to make which tool is being configured more noticeable. (CY-6021) + + ![Configuring code patterns for a tool](../../images/cy-6021.png) + +- Codacy now [displays diff coverage as not applicable](../../../repositories/pull-requests.mdx#quality-overview) (represented by `∅`) when there are no coverable lines included in a pull request, and correctly reports the pull request status on your Git provider in this scenario. (CY-5960) + + ![Not applicable diff coverage](../../images/cy-5960.png) + +## Bug fixes + +- Fixed an issue that caused commits to be in the "Analyzing" state indefinitely if the setting **Run the repository analysis on your build server** was off and a client-side result was uploaded to the repository. (CY-6136) +- Improved the coverage data processing reliability and speed on repositories with a high workload. (CY-6135) +- Increased the timeout limit when uploading coverage data to Codacy using the Codacy Coverage Reporter. (CY-6092) +- Improved the error message displayed by the Codacy Coverage Reporter in case of a timeout while uploading coverage data to Codacy. (CY-6072) +- Fixed an issue that caused analyzing C# repositories to fail because of an outdated SonarC# tool. (CY-6061) +- Now, reanalyzing a commit correctly updates the severity level of existing issues in case the reported severity level is different in the latest tool version. (CY-6055) +- Fixed an issue that could be used by an attacker to redirect Codacy users to a malicious URL. CVSS v3.1 score: 6.5 (Medium) (CY-6052) +- Fixed an issue that prevented the complexity metric from being calculated for C# repositories. Now, the complexity value is visible for all C# repositories, both on the Repository Dashboard and on the Files page. (CY-6006) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- **[dartanalyzer 2.17.0](https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md#2170---2022-05-11) (updated from 2.16.2)** +- detekt 1.19.0 +- **[ESLint 8.15.0](https://github.com/eslint/eslint/releases/tag/v8.15.0) (updated from 8.14.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.36.0 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- **[Revive 1.2.1](https://github.com/mgechev/revive/releases/tag/v1.2.1) (updated from 1.0.2)** +- RuboCop 1.28.2 +- Scalastyle 1.5.0 +- ShellCheck 0.7.2 +- **[SonarC# 8.39](https://github.com/SonarSource/sonar-dotnet/releases/tag/8.39.0.47922) (updated from 8.33)** +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.5.3 +- SQLint 0.2.1 +- Staticcheck 2020.1.6 +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/cloud/2022/2022-06-cloud.md b/docusaurus/docs/release-notes/cloud/2022/2022-06-cloud.md new file mode 100644 index 0000000000..d03e0e62e1 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2022/2022-06-cloud.md @@ -0,0 +1,80 @@ +--- +title: Cloud June 2022 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud June 2022. +included_jira_versions: ['2022.Q3.1'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/6.1.19 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/6.1.55 +slug: /release-notes/cloud/cloud-2022-06 +--- + + +These release notes are for the Codacy Cloud updates during June 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Codacy now supports using [expiring access tokens](https://docs.gitlab.com/ee/integration/oauth_provider.html#expiring-access-tokens) to integrate with GitLab. Users affected by issues connecting to GitLab should re-login on the Codacy UI **using their GitLab accounts**, or [revoke the GitLab integration on Codacy](../../../getting-started/which-permissions-does-codacy-need-from-my-account.md#revoking-access-to-integrations) if the issues persist. (CY-6117) +- [Pull request notification emails](../../../account/emails.md#managing-your-email-notifications) now display the diff coverage metric. (CY-5700) + +## Bug fixes + +- Fixed an issue to allow saving coverage data for the first commit in a repository. (CY-6196) +- Fixed an issue that could allow an attacker with an account on the Git provider to do destructive actions on **Codacy personal organizations**, such as removing members from Codacy or deleting the personal organization on Codacy. The issue didn't allow the attacker to see or change any information on the Git provider organization or repositories. CVSS v3.1 score: 7.9 (High) (CY-6184, CY-6187, CY-6188) +- Fixed an issue that could allow an attacker with an account on the Git provider to join a **public Codacy organization** and know the email addresses of the organization members on Codacy. The issue didn't allow the attacker to see or change any information on the Git provider organization or repositories. CVSS v3.1 score: 5.1 (Low) (CY-6174) +- Removed the username field from the Codacy UI and relevant API endpoints since it's no longer used and could be exploited to leak email addresses that are already in use on Codacy. (CY-6173) +- Fixed a Codacy Analysis CLI error when running markdownlint on a repository without a `.markdownlint.json` config file. (CY-6112) +- Fixed the parsing of dartanalyzer results containing many issues. (CY-6067) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.19.0 +- **[ESLint 8.18.0](https://github.com/eslint/eslint/releases/tag/v8.18.0) (updated from 8.15.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.36.0 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.2.1 +- RuboCop 1.28.2 +- Scalastyle 1.5.0 +- **[ShellCheck 0.8.0](https://github.com/koalaman/shellcheck/blob/master/CHANGELOG.md#v080---2021-11-06) (updated from v0.7.2)** +- SonarC# 8.39 +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.5.3 +- SQLint 0.2.1 +- Staticcheck 2020.1.6 +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/cloud/2022/2022-07-cloud.md b/docusaurus/docs/release-notes/cloud/2022/2022-07-cloud.md new file mode 100644 index 0000000000..424e2c15e8 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2022/2022-07-cloud.md @@ -0,0 +1,70 @@ +--- +title: Cloud July 2022 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud July 2022. +included_jira_versions: ['2022.Q3.2', '2022.Q3.3'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/6.1.55 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/6.2.24 +slug: /release-notes/cloud/cloud-2022-07 +--- + + +These release notes are for the Codacy Cloud updates during July 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Bug fixes + +- Fixed an issue that prevented SwiftLint from using a configuration file if multiple configuration files were present. (CY-6272) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- **[Checkov 2.1.81](https://github.com/bridgecrewio/checkov/releases/tag/2.1.81) (updated from 2.0.399)** +- **[Checkstyle 10.3.1](https://checkstyle.sourceforge.io/releasenotes.html#Release_10.3.1) (updated from 8.44)** +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.19.0 +- ESLint 8.18.0 +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.36.0 +- **[Prospector 1.7.7](https://github.com/landscapeio/prospector/releases/tag/1.7.7) (updated from 1.3.1)** +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- **[Pylint (Python 3) 2.14.5](https://github.com/pylint-dev/pylint/releases/tag/v2.14.5) (updated from 2.7.4)** +- remark-lint 7.0.1 +- Revive 1.2.1 +- RuboCop 1.28.2 +- Scalastyle 1.5.0 +- **[ShellCheck 0.8.0](https://github.com/koalaman/shellcheck/blob/master/CHANGELOG.md#v080---2021-11-06) (updated from v0.8.0)** +- SonarC# 8.39 +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.5.3 +- SQLint 0.2.1 +- Staticcheck 2020.1.6 +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/cloud/2022/2022-08-cloud.md b/docusaurus/docs/release-notes/cloud/2022/2022-08-cloud.md new file mode 100644 index 0000000000..c0f45917f8 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2022/2022-08-cloud.md @@ -0,0 +1,102 @@ +--- +title: Cloud August 2022 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud August 2022. +included_jira_versions: ['2022.Q3.4', '2022.Q3.5', '2022.Q3.6'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/6.2.24 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/6.2.59 +slug: /release-notes/cloud/cloud-2022-08 +--- + + +These release notes are for the Codacy Cloud updates during August 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- The [GitHub integration](../../../repositories-configure/integrations/github-integration.md) now uses a GitHub Apps token instead of a personal one so that the following features continue working even if the person who created the integration leaves the organization on GitHub: + + - Analyzing new commits and pull requests + - Updating the status check of pull requests + - Suggesting changes + - Creating comments and issues on GitHub for issues detected by Codacy + + Additionally, all activity related to the GitHub integration features now appear as having been performed by Codacy instead of the person who created the integration. (PLUTO-36, PLUTO-77) + + ![Suggested fix created by the Codacy GitHub integration](../../images/pluto-77.png) + +- Added the new API endpoint [searchOrganizationRepositoriesWithAnalysis](https://api.codacy.com/api/api-docs#searchorganizationrepositorieswithanalysis) to allow searching for repositories in more advanced use cases. For now, it's possible to search for repositories filtered by a list of names. (PLUTO-45) + +- Codacy now displays the coverage variation metric with a precision of two decimal places on the [Pull request](../../../repositories/pull-requests.mdx), [Commit](../../../repositories/commits.mdx), and [Files](../../../repositories/files.md) page. + + The increased precision of the metric reflects the code coverage changes better by reducing issues with rounding errors. (IO-92, IO-93) + + ![Coverage variation on the Pull request quality overview](../../images/io-92.png) + +- Improved the Codacy Analysis CLI output to provide better feedback when tools fail to run. (IO-47) + +- Improved the error handling for the [Stylelint exit codes](https://stylelint.io/user-guide/usage/cli/#exit-codes). (IO-47) + +- The [Organization Overview](../../../organizations/organization-overview.md) now allows filtering repositories to help you see and focus on the information for the repositories that matter most to your team. (CY-5573) + + ![Repository filter on the Organization Overview](../../images/cy-5573.png) + +## Bug fixes + +- Codacy now supports user accounts with email addresses containing the special characters specified in [RFC 5322](https://www.rfc-editor.org/rfc/rfc5322#section-3.4.1). (PLUTO-73) +- Fixed an issue that prevented changing code pattern configurations in a coding standard if Codacy added the code patterns only after the coding standard had been created. (PLUTO-37) +- Fixed an issue in the Codacy Analysis CLI and the cloc metrics tool that made the tools fail when running for an empty set of files. (IO-47) +- Fixed an issue that caused PMD to fail when called in some modes. (IO-47) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.1.81 +- Checkstyle 10.3.1 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.19.0 +- ESLint 8.18.0 +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- **[PMD 6.48.0](https://pmd.sourceforge.io/pmd-6.48.0/pmd_release_notes.html) (updated from 6.36.0)** +- Prospector 1.7.7 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.14.5 +- remark-lint 7.0.1 +- Revive 1.2.1 +- **[RuboCop 1.32.0](https://github.com/rubocop/rubocop/releases/tag/v1.32.0) (updated from 1.28.2)** +- Scalastyle 1.5.0 +- ShellCheck 0.8.0 +- SonarC# 8.39 +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.5.3 +- SQLint 0.2.1 +- **[Staticcheck 2022.1.3](https://staticcheck.io/changes/2022.1/#2022.1.3) (updated from 2020.1.6)** +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/cloud/2022/2022-09-cloud.md b/docusaurus/docs/release-notes/cloud/2022/2022-09-cloud.md new file mode 100644 index 0000000000..e838b4d9ea --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2022/2022-09-cloud.md @@ -0,0 +1,86 @@ +--- +title: Cloud September 2022 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud September 2022. +included_jira_versions: ['2022.Q3.7'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/6.2.59 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/6.3.14 +slug: /release-notes/cloud/cloud-2022-09 +--- + + +These release notes are for the Codacy Cloud updates during September 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Codacy now displays the coverage variation metric with a precision of two decimal places on the [Repository Dashboard](../../../repositories/repository-dashboard.md) and [Organization Overview](../../../organizations/organization-overview.md), and you can [define quality gates](../../../repositories-configure/adjusting-quality-gates.md) with a coverage variation threshold using the same precision. + + The increased precision of the metric reflects the code coverage changes better by reducing issues with rounding errors. (IO-54, IO-56) + + ![Coverage threshold with two decimal places on the Quality settings page](../../images/io-56.png) + +- While [configuring a coding standard](../../../organizations/using-coding-standards.md), you can now toggle all code patterns that are currently visible on the list using the new checkbox on the header. This allows you to conveniently toggle code patterns in bulk, for example, to enable all security code patterns. (CY-6336) + + ![Selecting all code patterns while configuring a coding standard](../../images/cy-6336.png) + +- Now, the **Files** tab on [Pull request](../../../repositories/pull-requests.mdx#files-tab) and [Commit](../../../repositories/commits.mdx#files-tab) pages displays only files with a variation of their code quality metrics, to make it more convenient to analyze the impact of your changes on the code quality of the files. + + You can still list all files that the pull request updated, even if their code quality metrics didn't change, by toggling the new option **Show files without code quality changes**. (CY-6455) + + ![Updated Files tab focusing only on files that have a variation in the code quality metrics](../../images/cy-6455.png) + +- The **Repositories list** page has improved loading times using a short-lived cache in the user's browser. (CY-6421) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- **[Checkov 2.1.188](https://github.com/bridgecrewio/checkov/releases/tag/2.1.188) (updated from 2.1.81)** +- Checkstyle 10.3.1 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.19.0 +- **[ESLint 8.23.1](https://github.com/eslint/eslint/releases/tag/v8.23.1) (updated from 8.18.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.48.0 +- Prospector 1.7.7 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.14.5 +- remark-lint 7.0.1 +- **[Revive 1.2.3](https://github.com/mgechev/revive/releases/tag/v1.2.3) (updated from 1.2.1)** +- RuboCop 1.32.0 +- Scalastyle 1.5.0 +- ShellCheck 0.8.0 +- SonarC# 8.39 +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.5.3 +- SQLint 0.2.1 +- Staticcheck 2022.1.3 +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/cloud/2022/2022-10-cloud.md b/docusaurus/docs/release-notes/cloud/2022/2022-10-cloud.md new file mode 100644 index 0000000000..58b2f90dd3 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2022/2022-10-cloud.md @@ -0,0 +1,80 @@ +--- +title: Cloud October 2022 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud October 2022. +included_jira_versions: ['2022.Q4.1', '2022.Q4.2'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/6.3.14 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/6.5.4 +slug: /release-notes/cloud/cloud-2022-10 +--- + + +These release notes are for the Codacy Cloud updates during October 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Improved the performance and error handling of retrieving many open pull requests from the Git providers while populating the [**Pull requests** page](../../../repositories/pull-requests.mdx). (IO-133) +- While [configuring a coding standard](../../../organizations/using-coding-standards.md), you can now click the link **Enable/Disable all <N> patterns** to toggle all patterns matching the current filters, including the code patterns that weren't loaded on the list yet. (CY-6255) + +## Bug fixes + +- Now, Codacy correctly posts the coverage status check on the Git provider even if the coverage report uploaded to Codacy only contains data for ignored files. (IO-149) +- Added support for the following ESLint plugins: + - [prettier-plugin-tailwindcss](https://www.npmjs.com/package/prettier-plugin-tailwindcss) (CY-6570) + - [eslint-plugin-typescript-sort-keys](https://www.npmjs.com/package/eslint-plugin-typescript-sort-keys) (CY-6561) +- Fixed an issue that could cause Codacy to fail the quality gate **Coverage variation is under** if the coverage variation was equal to the defined threshold. (CY-6558) +- Now, the coverage report parser also takes into account lines of type `cond` in Clover coverage reports. (CY-6384) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.1.188 +- Checkstyle 10.3.1 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.19.0 +- ESLint 8.23.1 +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- **[JSHint 2.13.5](https://github.com/jshint/jshint/releases/tag/2.13.5) (updated from 2.12.0)** +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.48.0 +- Prospector 1.7.7 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.14.5 +- remark-lint 7.0.1 +- Revive 1.2.3 +- RuboCop 1.32.0 +- Scalastyle 1.5.0 +- ShellCheck 0.8.0 +- SonarC# 8.39 +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.5.3 +- SQLint 0.2.1 +- Staticcheck 2022.1.3 +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/cloud/2022/2022-11-cloud.md b/docusaurus/docs/release-notes/cloud/2022/2022-11-cloud.md new file mode 100644 index 0000000000..09c5bc9482 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2022/2022-11-cloud.md @@ -0,0 +1,84 @@ +--- +title: Cloud November 2022 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud November 2022. +included_jira_versions: ['2022.Q4.3', '2022.Q4.4'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/6.5.4 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/6.6.5 +slug: /release-notes/cloud/cloud-2022-11 +--- + + +These release notes are for the Codacy Cloud updates during November 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Improved the performance of applying [coding standards](../../../organizations/using-coding-standards.md) to repositories to avoid timeouts when updating hundreds of repositories. (PLUTO-83) +- The **Status** column of the [coverage reports list](../../../coverage-reporter/index.md#validating-coverage) now includes direct links to troubleshooting instructions when there are coverage errors. (IO-155) +- Codacy now supports the [client-side tool Unity Roslyn Analyzers](../../../repositories-configure/local-analysis/client-side-tools.md) for reporting error-prone and performance issues on C# projects that use the Unity framework. (IO-96) + +## Bug fixes + +- Now, Codacy asks for confirmation when you change a code pattern parameter on a repository that follows a coding standard. (PLUTO-149) +- Fixed an issue that caused Codacy to calculate coverage taking into account the total lines of code instead of the coverable lines of code. This scenario happened if Codacy received the coverage reports before completing the static code analysis for the corresponding commit. (IO-250) +- Fixed a situation where Codacy calculated the coverage metrics before receiving the `final` command, using only the coverage reports uploaded so far. (IO-236) +- Now, Codacy correctly posts the coverage status check on the Git provider even if the coverage report uploaded to Codacy only contains data for ignored files. (IO-149) +- Fixed a scenario where the GitLab integration failed to update a pending status check with the analysis results. (CY-6607) +- Fixed a bug that was keeping Intercom logged in after logging out from Codacy. (CY-6605) +- Now, the [quality overview](https://docs.codacy.com/repositories/pull-requests/#quality-overview) of commits and pull requests display the value `=` (representing no variation) using the green color if there's a quality gate configured for issues. (CY-6590) +- Added support for the remark-lint plugin [remarkjs/remark-gfm](https://github.com/remarkjs/remark-gfm). (CY-6513) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.1.188 +- Checkstyle 10.3.1 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.19.0 +- ESLint 8.23.1 +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.13.5 +- **[markdownlint 0.26.2](https://github.com/DavidAnson/markdownlint/releases/tag/v0.26.2) (updated from 0.23.1)** +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- **[PMD 6.51.0](https://pmd.sourceforge.io/pmd-6.51.0/pmd_release_notes.html) (updated from 6.48.0)** +- Prospector 1.7.7 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.14.5 +- remark-lint 7.0.1 +- Revive 1.2.3 +- **[RuboCop 1.39.0](https://github.com/rubocop/rubocop/releases/tag/v1.39.0) (updated from 1.32.0)** +- Scalastyle 1.5.0 +- ShellCheck 0.8.0 +- SonarC# 8.39 +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.5.3 +- SQLint 0.2.1 +- Staticcheck 2022.1.3 +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.14.0 diff --git a/docusaurus/docs/release-notes/cloud/2022/2022-12-cloud.md b/docusaurus/docs/release-notes/cloud/2022/2022-12-cloud.md new file mode 100644 index 0000000000..8c69069108 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2022/2022-12-cloud.md @@ -0,0 +1,81 @@ +--- +title: Cloud December 2022 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud December 2022. +included_jira_versions: ['2022.Q4.5'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/6.6.5 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/6.7.36 +slug: /release-notes/cloud/cloud-2022-12 +--- + + +These release notes are for the Codacy Cloud updates during December 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- The pull request detail page now displays a message when Codacy can't calculate the pull request metrics. The message includes a link to the **Coverage** tab in your repository settings, where you can [test and validate your coverage setup](../../../coverage-reporter/index.md#validating-coverage). (IO-152) + + ![Warning on pull request missing coverage data](../../images/io-152.png) + +## Bug fixes + +- Fixed an issue that caused Codacy to display the coverage value on the wrong file in specific edge cases. (COV-25) +- All [coding standards API endpoints](https://api.codacy.com/api/api-docs#codacy-api-coding-standards) now return the **`403 Forbidden`** status code when authorization is required instead of **`401 Forbidden`**, since user permissions on Codacy are [synced with the permissions on the Git provider](../../../organizations/roles-and-permissions-for-organizations.md) and re-authenticating the user doesn't change the access to the endpoints. (IO-333) + +- Fixed an issue affecting GitLab repositories configured to use merge request pipelines, where Codacy would create a separate branch pipeline. (PLUTO-184) +- Fixed an issue that caused Checkov to output warnings when the tool had no files to analyze. (TS-11) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.1.188 +- Checkstyle 10.3.1 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.19.0 +- ESLint 8.23.1 +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.13.5 +- markdownlint 0.26.2 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.51.0 +- Prospector 1.7.7 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.14.5 +- remark-lint 7.0.1 +- Revive 1.2.3 +- RuboCop 1.39.0 +- Scalastyle 1.5.0 +- **[ShellCheck 0.9.0](https://github.com/koalaman/shellcheck/blob/master/CHANGELOG.md#v090---2022-12-12) (updated from 0.8.0)** +- SonarC# 8.39 +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.5.3 +- SQLint 0.2.1 +- Staticcheck 2022.1.3 +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.14.0 diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-01-cloud.md b/docusaurus/docs/release-notes/cloud/2023/2023-01-cloud.md new file mode 100644 index 0000000000..f32584e895 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-01-cloud.md @@ -0,0 +1,91 @@ +--- +title: Cloud January 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud January 2023. +included_jira_versions: ['2023.01'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/6.7.36 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/6.7.76 +slug: /release-notes/cloud/cloud-2023-01 +--- + + +These release notes are for the Codacy Cloud updates during January 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- The Codacy Coverage Reporter now supports [automatic commit SHA-1 detection](../../../coverage-reporter/troubleshooting-coverage-cli-issues.md#commit-detection) on Argo CD. (TS-140) +- Extended the visibility of the [coding standards page](../../../organizations/using-coding-standards.md) to all users, regardless of their permission level. (IO-359) +- The pull request detail page now displays the [commits that are missing coverage data](../../../coverage-reporter/index.md#validating-coverage) for Codacy to calculate the coverage metrics. This information is also visible in the analysis logs. (IO-152) + + ![Pull request analysis logs showing the commits that are missing coverage data](../../images/io-152b.png) + + + +- The documentation now includes an end-to-end example illustrating the usage of an [API endpoint to identify commits without coverage data](../../../codacy-api/examples/identifying-commits-without-coverage-data.md) to troubleshoot issues with the calculation of coverage metrics. (DOCS-503) + +- Codacy now supports [reporting a summary of the coverage metrics](../../../repositories-configure/integrations/github-integration.md#coverage-summaries) directly on your pull requests. For now, this feature is only supported on GitHub Cloud. (COV-2, COV-3) + + ![Coverage summary on GitHub](../../images/cov-2.png) + +## Bug fixes + +- Codacy no longer counts ignored files towards the [maximum number of files for calculating complexity](../../../faq/code-analysis/does-codacy-place-limits-on-the-code-analysis.md). (TS-93) +- Fixed an issue that caused all ESLint 8 code patterns to be turned off by default when adding a new repository. (TS-50) +- Fixed the repository page not opening for Bitbucket users with scope `repository:admin` when the Bitbucket repository has many branch restrictions. (PLUTO-290) +- The Files page now correctly loads and displays more files when scrolling. (PLUTO-225) +- Improved the reporting of analysis and coverage status to Git providers when new commits are pushed during an ongoing analysis. (IO-341) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.1.188 +- Checkstyle 10.3.1 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.19.0 +- ESLint 8.23.1 +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.13.5 +- markdownlint 0.26.2 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.51.0 +- Prospector 1.7.7 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- **[Pylint (Python 3) 2.15.10](https://github.com/pylint-dev/pylint/releases/tag/v2.15.10) (updated from 2.14.5)** +- remark-lint 7.0.1 +- Revive 1.2.3 +- RuboCop 1.39.0 +- Scalastyle 1.5.0 +- ShellCheck 0.9.0 +- SonarC# 8.39 +- SonarVB 8.15 +- Spectral 1.2.7 +- **[SpotBugs 4.7.3](https://github.com/spotbugs/spotbugs/releases/tag/4.7.3) (updated from 4.5.3)** +- SQLint 0.2.1 +- Staticcheck 2022.1.3 +- Stylelint 14.2.0 +- **[SwiftLint 0.50.3](https://github.com/realm/SwiftLint/releases/tag/0.50.3) (updated from 0.43.1)** +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.14.0 diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-02-cloud.md b/docusaurus/docs/release-notes/cloud/2023/2023-02-cloud.md new file mode 100644 index 0000000000..27bc9b784b --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-02-cloud.md @@ -0,0 +1,83 @@ +--- +title: Cloud February 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud February 2023. +included_jira_versions: ['2023.02'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/6.7.76 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/6.7.116 +slug: /release-notes/cloud/cloud-2023-02 +--- + + +These release notes are for the Codacy Cloud updates during February 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- In some Enterprise plans, Codacy now automatically adds to the organization new people that commit to your private repositories and analyzes their commits, providing a more streamlined user management experience. (PLUTO-244) +- You can now run the Codacy Coverage Reporter [Java binary](../../../coverage-reporter/alternative-ways-of-running-coverage-reporter.md#java) using the latest Java version. (TS-261) +- Added support for the following ESLint plugins: + - [eslint-config-qiw](https://www.npmjs.com/package/eslint-config-qiwi) (TS-256) + - [@remix-run/eslint-config](https://www.npmjs.com/package/@remix-run/eslint-config) (TS-234) + +## Bug fixes + +- Fixed an issue that prevented organization owners from receiving the email notification with new requests to join the Codacy organization when the requester user didn't have a name set up. (PLUTO-365) +- Fixed an unexpected error when editing a coding standard and moving back to the **Select languages** step and then forward to the tool selection step. (IO-434) +- Fixed an issue that caused Codacy to send incorrect analysis status notifications to Git providers when failing to reanalyze a pull request. (IO-424) +- The **Files** page on public repositories now correctly displays the **Coverage** column to users who are logged out. (COV-181) +- Fixed the scenarios where Codacy didn't merge the coverage data from [multiple coverage reports](../../../coverage-reporter/uploading-coverage-in-advanced-scenarios.md#multiple-reports). (COV-147) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.1.188 +- Checkstyle 10.3.1 +- Clang-Tidy 10.0.1 +- **[CodeNarc 3.2.0](https://github.com/CodeNarc/CodeNarc/blob/master/CHANGELOG.md#version-320----jan-2023) (updated from 2.2.0)** +- CoffeeLint 2.1.0 +- **[Cppcheck 2.10](https://github.com/danmar/cppcheck/releases/tag/2.10) (updated from 2.2)** +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.19.0 +- **[ESLint 8.34.0](https://github.com/eslint/eslint/releases/tag/v8.34.0) (updated from 8.23.1)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.13.5 +- markdownlint 0.26.2 +- **[PHP Mess Detector 2.13.0](https://github.com/phpmd/phpmd/releases/tag/2.13.0) (updated from 2.10.1)** +- PHP_CodeSniffer 3.6.2 +- PMD 6.51.0 +- Prospector 1.7.7 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.15.10 +- remark-lint 7.0.1 +- Revive 1.2.3 +- RuboCop 1.39.0 +- Scalastyle 1.5.0 +- ShellCheck v0.9.0 +- **[SonarC# 8.40](https://github.com/SonarSource/sonar-dotnet/releases/tag/8.40.0.48530) (updated from 8.39)** +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.7.3 +- SQLint 0.2.1 +- Staticcheck 2022.1.3 +- **[Stylelint 14.16.1](https://github.com/stylelint/stylelint/releases/tag/14.16.1) (updated from 14.2.0)** +- SwiftLint 0.50.3 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.14.0 diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-03-cloud.md b/docusaurus/docs/release-notes/cloud/2023/2023-03-cloud.md new file mode 100644 index 0000000000..2c18d79c30 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-03-cloud.md @@ -0,0 +1,88 @@ +--- +title: Cloud March 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud March 2023. +included_jira_versions: ['2023.03'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/6.7.116 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.0.9 +slug: /release-notes/cloud/cloud-2023-03 +--- + + +These release notes are for the Codacy Cloud updates during March 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Added support for the following plugins: + - [@tailwindcss/line-clamp](https://www.npmjs.com/package/@tailwindcss/line-clamp) for ESLint (TS-288) + - [pylint-beam](https://github.com/kvudata/pylint-beam) for Pylint (Python 3) (TS-274) + - [PHPCompatibilityWP](https://github.com/PHPCompatibility/PHPCompatibilityWP) for PHP_CodeSniffer (TS-56) +- Some Enterprise plans now allow downloading a CSV list of all organization members from the **People** page. This feature is also available on all plans using the API endpoint [listPeopleFromOrganizationCsv](https://api.codacy.com/api/api-docs#listpeoplefromorganizationcsv). (PLUTO-388) +- Codacy now supports up to 10 coding standards per organization, allowing you to [optimize and apply quality settings to multiple repositories quickly](../../../organizations/using-coding-standards.md). (IO-358) + + ![Multiple coding standards](../../images/io-358.png) + +## Bug fixes + +- Updated the Codacy Analysis CLI GitHub Action so it's no longer rate-limited by the GitHub API. (TS-109) +- Fixed an issue while synchronizing the name of Codacy organizations with the corresponding GitLab groups. (PLUTO-450) +- Fixed an issue that prevented some API endpoints from listing repository languages. (IO-512) +- Fixed an issue listing issues found by some tools under the **New Issues** tab for pull requests. (IO-461) +- Fixed an inconsistent issue count between the Commit list and the Repository Dashboard pages. (IO-422) +- Now, the [Codacy API v3 docs](https://api.codacy.com/api/api-docs) correctly identify public endpoints as not requiring authentication. (DOCS-540) +- Fixed an issue that caused the repository-level navigation sidebar to hide all icons from anonymous users visiting public repositories. (COV-186) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.1.188 +- Checkstyle 10.3.1 +- Clang-Tidy 10.0.1 +- CodeNarc 3.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.10 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.19.0 +- ESLint 8.34.0 +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.13.5 +- markdownlint 0.26.2 +- PHP Mess Detector 2.13.0 +- **[PHP_CodeSniffer 3.7.2](https://github.com/squizlabs/PHP_CodeSniffer/releases/tag/3.7.2) (updated from 3.6.2)** +- **[PMD 6.55.0](https://pmd.sourceforge.io/pmd-6.55.0/pmd_release_notes.html) (updated from 6.51.0)** +- Prospector 1.7.7 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- **[Pylint (Python 3) 2.17.0](https://github.com/pylint-dev/pylint/releases/tag/v2.17.0) (updated from 2.15.10)** +- remark-lint 7.0.1 +- Revive 1.2.3 +- RuboCop 1.39.0 +- Scalastyle 1.5.0 +- ShellCheck v0.9.0 +- SonarC# 8.40 +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.7.3 +- SQLint 0.2.1 +- Staticcheck 2022.1.3 +- Stylelint 14.16.1 +- SwiftLint 0.50.3 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.14.0 diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-04-cloud.md b/docusaurus/docs/release-notes/cloud/2023/2023-04-cloud.md new file mode 100644 index 0000000000..8b23e3cc6d --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-04-cloud.md @@ -0,0 +1,79 @@ +--- +title: Cloud April 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud April 2023. +included_jira_versions: ['2023.04'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.0.9 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.3.5 +slug: /release-notes/cloud/cloud-2023-04 +--- + + +These release notes are for the Codacy Cloud updates during April 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- We’ve revamped the way you [manage your repositories](../../../organizations/managing-repositories.md) on Codacy. You can now select which repositories you want to follow on Codacy, giving you more control over your dashboard for a cleaner, more personalized view. (PLUTO-336) + +## Bug fixes + +- It's now possible to see and change the repository settings for repositories without commits or before Codacy finishes performing the first analysis. (TS-320) +- The button to reanalyze commits or pull requests is now disabled if the committer isn't part of the organization. (PLUTO-49) +- Improved the performance of the Code patterns page while listing many code patterns. (IO-479) +- Now, the link "See all files" on the **Coverage** area of the Repository Dashboard navigates to the Files page on the currently selected branch. (CY-6823) +- Fixed an issue that could cause Codacy to report the diff coverage metric as `∅` (not applicable) even though there weren't any uploaded coverage reports. (COV-152) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- **[Checkov 2.3.187](https://github.com/bridgecrewio/checkov/releases/tag/2.3.187) (updated from 2.1.188)** +- Checkstyle 10.3.1 +- Clang-Tidy 10.0.1 +- CodeNarc 3.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.10 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- **[detekt 1.22.0](https://github.com/detekt/detekt/releases/tag/v1.22.0) (updated from 1.19.0)** +- **[ESLint 8.38.0](https://github.com/eslint/eslint/releases/tag/v8.38.0) (updated from 8.34.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- **[Gosec 2.15.0](https://github.com/securego/gosec/releases/tag/v2.15.0) (updated from 2.8.1)** +- Hadolint 1.18.2 +- **[Jackson Linter 2.14.2](https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.14.2) (updated from 2.10.2)** +- JSHint 2.13.5 +- markdownlint 0.26.2 +- PHP Mess Detector 2.13.0 +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- **[Prospector 1.9.0](https://github.com/landscapeio/prospector/releases/tag/v1.9.0) (updated from 1.7.7)** +- PSScriptAnalyzer 1.18.3 +- **[Pylint 2.17.3](https://github.com/pylint-dev/pylint/releases/tag/v2.17.3) (updated from 2.17.0)** +- Pylint (deprecated) 1.9.5 +- remark-lint 7.0.1 +- Revive 1.2.3 +- RuboCop 1.39.0 +- Scalastyle 1.5.0 +- ShellCheck v0.9.0 +- SonarC# 8.40 +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.7.3 +- SQLint 0.2.1 +- Staticcheck 2022.1.3 +- **[Stylelint 15.5.0](https://github.com/stylelint/stylelint/releases/tag/15.5.0) (updated from 14.16.1)** +- SwiftLint 0.50.3 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.14.0 diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-05-cloud.md b/docusaurus/docs/release-notes/cloud/2023/2023-05-cloud.md new file mode 100644 index 0000000000..880792a5b1 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-05-cloud.md @@ -0,0 +1,90 @@ +--- +title: Cloud May 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud May 2023. +included_jira_versions: ['2023.05'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.3.5 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.5.4 +slug: /release-notes/cloud/cloud-2023-05 +--- + + +These release notes are for the Codacy Cloud updates during May 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Added support for the following ESLint plugins: + - [eslint-plugin-rxjs](https://www.npmjs.com/package/eslint-plugin-rxjs) (TS-346) + - [eslint-plugin-markdown](https://www.npmjs.com/package/eslint-plugin-markdown) (TS-121) + - [eslint-plugin-yml](https://www.npmjs.com/package/eslint-plugin-yml) (TS-121) + +- The [quality gates](../../../repositories-configure/adjusting-quality-gates.md) defined for your repository now apply to both pull requests and commits. (PLUTO-540) + +- To enhance your experience and bring clarity to your settings, we've split the **Quality settings** of your repository into two tabs, [**Gates**](../../../repositories-configure/adjusting-quality-gates.md) and [**Goals**](../../../repositories-configure/adjusting-quality-goals.md). (PLUTO-520) + +- To ensure consistency across repositories, organization admins can now configure the [default settings that Codacy uses to integrate with the Git provider](../../../organizations/integrations/default-git-provider-integration-settings.md) when adding a new repository to Codacy. These default settings can also be applied to all repositories. (PLUTO-470, PLUTO-546) + + ![Organization-level settings for the Git provider integration](../../images/pluto-470.png) + +- The Codacy Coverage Reporter now supports glob patterns to specify the coverage report to upload. (TS-193) + +## Bug fixes + +- Fixed the error `unexpected end of file` when running the Codacy Analysis CLI GitHub Action. (TS-358) +- Fixed an issue that prevented Codacy from providing more detailed information about the issues found directly on the Git provider status check messages. (IO-525) +- Fixed inconsistencies while parsing Go coverage reports in scenarios where the same line of code included multiple statements. (COV-207) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.3.187 +- Checkstyle 10.3.1 +- Clang-Tidy 10.0.1 +- CodeNarc 3.2.0 +- CoffeeLint 2.1.0 +- **[Cppcheck 2.10.3](https://github.com/danmar/cppcheck/releases/tag/2.10) (updated from 2.10)** +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.22.0 +- **[ESLint 8.40.0](https://github.com/eslint/eslint/releases/tag/v8.40.0) (updated from 8.38.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- Jackson Linter 2.14.2 +- JSHint 2.13.5 +- markdownlint 0.26.2 +- PHP Mess Detector 2.13.0 +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- **[Prospector 1.10.2](https://github.com/landscapeio/prospector/releases/tag/v1.10.2) (updated from 1.9.0)** +- PSScriptAnalyzer 1.18.3 +- Pylint 2.17.3 +- Pylint (deprecated) 1.9.5 +- remark-lint 7.0.1 +- **[Revive 1.3.2](https://github.com/mgechev/revive/releases/tag/v1.3.2) (updated from 1.2.3)** +- RuboCop 1.39.0 +- Scalastyle 1.5.0 +- ShellCheck v0.9.0 +- SonarC# 8.40 +- SonarVB 8.15 +- **Spectral 1.16.0 (updated from 1.2.7)** +- SpotBugs 4.7.3 +- SQLint 0.2.1 +- Staticcheck 2022.1.3 +- **[Stylelint 15.6.2](https://github.com/stylelint/stylelint/releases/tag/15.6.2) (updated from 15.5.0)** +- SwiftLint 0.50.3 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.14.0 diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-06-cloud.md b/docusaurus/docs/release-notes/cloud/2023/2023-06-cloud.md new file mode 100644 index 0000000000..a2c1d5c441 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-06-cloud.md @@ -0,0 +1,104 @@ +--- +title: Cloud June 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud June 2023. +included_jira_versions: ['2023.06'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.5.4 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.5.46 +slug: /release-notes/cloud/cloud-2023-06 +--- + + +These release notes are for the Codacy Cloud updates during June 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Added support for the Stylelint plugin [stylelint-no-px](https://www.npmjs.com/package/stylelint-no-px). (TS-455) +- Added support for the following ESLint plugins: + - [eslint-plugin-perfectionist](https://www.npmjs.com/package/eslint-plugin-perfectionist) (TS-416) + - [@ngrx/eslint-plugin](https://www.npmjs.com/package/@ngrx/eslint-plugin) (TS-419) + - [@nx/react](https://www.npmjs.com/package/@nx/react) (TS-419) + - [@tanstack/eslint-plugin-query](https://www.npmjs.com/package/@tanstack/eslint-plugin-query) (TS-419) + - [eslint-plugin-deprecation](https://www.npmjs.com/package/eslint-plugin-deprecation) (TS-419) + - [eslint-plugin-ember](https://www.npmjs.com/package/eslint-plugin-ember) (TS-419) + - [eslint-plugin-eslint-plugin](https://www.npmjs.com/package/eslint-plugin-eslint-plugin) (TS-419) + - [eslint-plugin-fp](https://www.npmjs.com/package/eslint-plugin-fp) (TS-419) + - [eslint-plugin-header](https://www.npmjs.com/package/eslint-plugin-header) (TS-419) + - [eslint-plugin-import-alias](https://www.npmjs.com/package/eslint-plugin-import-alias) (TS-419) + - [eslint-plugin-import-newlines](https://www.npmjs.com/package/eslint-plugin-import-newlines) (TS-419) + - [eslint-plugin-jest-extended](https://www.npmjs.com/package/eslint-plugin-jest-extended) (TS-419) + - [eslint-plugin-jira-ticket-todo-comment](https://www.npmjs.com/package/eslint-plugin-jira-ticket-todo-comment) (TS-419) + - [eslint-plugin-lit](https://www.npmjs.com/package/eslint-plugin-lit) (TS-419) + - [eslint-plugin-prefer-object-spread](https://www.npmjs.com/package/eslint-plugin-prefer-object-spread) (TS-419) + - [eslint-plugin-rxjs-angular](https://www.npmjs.com/package/eslint-plugin-rxjs-angular) (TS-419) + - [eslint-plugin-tailwindcss](https://www.npmjs.com/package/eslint-plugin-tailwindcss) (TS-419) + - [eslint-plugin-test-selectors](https://www.npmjs.com/package/eslint-plugin-test-selectors) (TS-419) + - [eslint-plugin-you-dont-need-lodash-underscore](https://www.npmjs.com/package/eslint-plugin-you-dont-need-lodash-underscore) (TS-419) + - [eslint-plugin-filenames](https://www.npmjs.com/package/eslint-plugin-filenames) (TS-424) + - [eslint-plugin-diff](https://www.npmjs.com/package/eslint-plugin-diff) (TS-428) + - [eslint-config-airbnb-typescript-prettier](https://www.npmjs.com/package/eslint-config-airbnb-typescript-prettier) (TS-448) + - [eslint-plugin-jest-dom](https://www.npmjs.com/package/eslint-plugin-jest-dom) (TS-449) + - [eslint-plugin-testing-library](https://www.npmjs.com/package/eslint-plugin-testing-library) (TS-449) + - [eslint-plugin-sort-destructure-keys](https://www.npmjs.com/package/eslint-plugin-sort-destructure-keys) (TS-448) +- Improved the performance of the tool Stylelint by reviewing and refactoring the tool configurations and supported packages. (TS-438) +- Updated and refactored the tool Ameba. [Thanks to Sija for the contribution!](https://github.com/codacy/codacy-ameba/pull/25) (TS-417) +- There's now an onboarding tutorial to guide you through the steps of [adding and setting up your first repository](../../../getting-started/codacy-quickstart.md#adding-your-first-repository). (DOCS-468) + +## Bug fixes + +- While [configuring code patterns](../../../repositories-configure/configuring-code-patterns.md), it's now possible to correctly configure rules using strings that include the character sequence `\\`, such as regular expressions. Before, Codacy stripped out one of the `\` characters. (IO-484) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- **[Ameba 1.4.3](https://github.com/crystal-ameba/ameba/releases/tag/v1.4.3) (updated from 0.13.1)** +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.3.187 +- Checkstyle 10.3.1 +- Clang-Tidy 10.0.1 +- CodeNarc 3.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.10.3 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.22.0 +- **[ESLint 8.43.0](https://github.com/eslint/eslint/releases/tag/v8.43.0) (updated from 8.40.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- Jackson Linter 2.14.2 +- JSHint 2.13.5 +- markdownlint 0.26.2 +- PHP Mess Detector 2.13.0 +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- Prospector 1.10.2 +- PSScriptAnalyzer 1.18.3 +- Pylint 2.17.3 +- Pylint (deprecated) 1.9.5 +- remark-lint 7.0.1 +- Revive 1.3.2 +- **[RuboCop 1.52.1](https://github.com/rubocop/rubocop/releases/tag/v1.52.1) (updated from 1.39.0)** +- Scalastyle 1.5.0 +- ShellCheck v0.9.0 +- SonarC# 8.40 +- SonarVB 8.15 +- Spectral 1.16.0 +- SpotBugs 4.7.3 +- SQLint 0.2.1 +- Staticcheck 2022.1.3 +- **[Stylelint 15.9.0](https://github.com/stylelint/stylelint/releases/tag/15.9.0) (updated from 15.6.2)** +- SwiftLint 0.50.3 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.14.0 diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-07-cloud.md b/docusaurus/docs/release-notes/cloud/2023/2023-07-cloud.md new file mode 100644 index 0000000000..f893bcad4b --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-07-cloud.md @@ -0,0 +1,91 @@ +--- +title: Cloud July 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud July 2023. +included_jira_versions: ['2023.07'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.5.46 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.6.39 +slug: /release-notes/cloud/cloud-2023-07 +--- + + +These release notes are for the Codacy Cloud updates during July 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Added support for AI-generated context-aware comments and fix suggestions directly in your Git provider. For more details, [see the announcement on our blog](https://blog.codacy.com/codacy-quality-ai-actionable-fixes/). (CY-6855, HRZ-286) + + ![AI-generated context-aware comments and fix suggestions](../../images/cy-6855.png) + +- You can now use [Security and risk management](../../../organizations/managing-security-and-risk.md) to detect security vulnerabilities across your Codacy repositories and Jira issues and assign the Security Manager role to any organization member. For more details, [see the announcement on our blog](https://blog.codacy.com/centralized-view-of-security-issues/). (HRZ-6, PUL-1924, HRZ-180) + + ![Security and risk management item list](../../images/hrz-6.png) + +- To ensure that Codacy uses the same quality gates across your repositories, organization admins can now apply [gate policies](../../../organizations/using-gate-policies.md) to multiple repositories. **Gate policies** are available under the new organization page **Policies**, where you can now also find your **Coding standards**. (PLUTO-484) + + ![Organization-level gate policies](../../images/pluto-484.png) + +- For increased privacy, Codacy no longer requests access to read or write Git SSH keys from your GitHub account. (PLUTO-624) + +- When developers commit from GitHub, now Codacy automatically associates all commit email addresses belonging to the same GitHub user with a single Codacy committer. This reduces the number of duplicate seats for GitHub organizations when developers don’t log in to Codacy. (PLUTO-653) + +## Bug fixes + +- Fixed a bug causing the TSQLLint tool to fail analyzing the correct files and displaying in the UI and API. (TS-470) +- Fixed an issue that caused Codacy issue permalinks to change between commits. (PUL-2202) +- Fixed an issue that prevented Codacy from retrieving coverage information for individual files. (ALA-514) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 1.4.3 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- **[bundler-audit 0.9.1](https://github.com/rubysec/bundler-audit/releases/tag/v0.9.1) (updated from 0.6.1)** +- Checkov 2.3.187 +- Checkstyle 10.3.1 +- Clang-Tidy 10.0.1 +- CodeNarc 3.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.10.3 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.22.0 +- **[ESLint 8.45.0](https://github.com/eslint/eslint/releases/tag/v8.45.0) (updated from 8.43.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- Jackson Linter 2.14.2 +- JSHint 2.13.5 +- markdownlint 0.26.2 +- PHP Mess Detector 2.13.0 +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- Prospector 1.10.2 +- PSScriptAnalyzer 1.18.3 +- **[Pylint 2.17.4](https://github.com/pylint-dev/pylint/releases/tag/v2.17.4) (updated from 2.17.3)** +- Pylint (deprecated) 1.9.5 +- remark-lint 7.0.1 +- Revive 1.3.2 +- RuboCop 1.52.1 +- Scalastyle 1.5.0 +- ShellCheck v0.9.0 +- SonarC# 8.40 +- SonarVB 8.15 +- Spectral 1.16.0 +- SpotBugs 4.7.3 +- SQLint 0.2.1 +- Staticcheck 2022.1.3 +- **[Stylelint 15.10.1](https://github.com/stylelint/stylelint/releases/tag/15.10.1) (updated from 15.9.0)** +- SwiftLint 0.50.3 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.14.0 diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-08-cloud.md b/docusaurus/docs/release-notes/cloud/2023/2023-08-cloud.md new file mode 100644 index 0000000000..15f4bcfb33 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-08-cloud.md @@ -0,0 +1,81 @@ +--- +title: Cloud August 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud August 2023. +included_jira_versions: ['2023.08'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.6.39 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.8.2 +slug: /release-notes/cloud/cloud-2023-08 +--- + + +These release notes are for the Codacy Cloud updates during August 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Added [support for Trivy](../../../getting-started/supported-languages-and-tools.md) to detect committed secrets, IaC misconfigurations, and other security risks. (TAROT-2290) +- The CSV file exported by Security and risk management now includes three new columns: file path, line number, and detected pattern. (TAROT-2203) +- When developers commit from Bitbucket, now Codacy automatically associates all commit email addresses belonging to the same Bitbucket user with a single Codacy committer. This reduces the number of duplicate seats for Bitbucket organizations when developers don’t log in to Codacy. (PLUTO-652) +- The [getRepositoryWithAnalysis API endpoint](https://api.codacy.com/api/api-docs#getrepositorywithanalysis) now includes data about coverable and covered lines for a given repository. (ALA-254) +- Pylint now supports Python 3.11 syntax. (TS-467) + +## Bug fixes + +- Fixed an issue occurring for some Enterprise plans that caused the People page to show fewer emails than expected for committers who logged in to the Codacy app. (PLUTO-691) +- Fixed an issue that prevented unauthenticated users from accessing the coverage dashboard of a public repository. (ALA-524) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 1.4.3 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.9.1 +- Checkov 2.3.187 +- **[Checkstyle 10.12.2](https://checkstyle.sourceforge.io/releasenotes.html#Release_10.12.2) (updated from 10.3.1)** +- Clang-Tidy 10.0.1 +- CodeNarc 3.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.10.3 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.22.0 +- **[ESLint 8.47.0](https://github.com/eslint/eslint/releases/tag/v8.47.0) (updated from 8.45.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- Jackson Linter 2.14.2 +- JSHint 2.13.5 +- markdownlint 0.26.2 +- PHP Mess Detector 2.13.0 +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- Prospector 1.10.2 +- PSScriptAnalyzer 1.18.3 +- Pylint 2.17.4 +- Pylint (deprecated) 1.9.5 +- remark-lint 7.0.1 +- Revive 1.3.2 +- RuboCop 1.52.1 +- Scalastyle 1.5.0 +- ShellCheck v0.9.0 +- SonarC# 8.40 +- SonarVB 8.15 +- Spectral 1.16.0 +- SpotBugs 4.7.3 +- SQLint 0.2.1 +- Staticcheck 2022.1.3 +- **[Stylelint 15.10.2](https://github.com/stylelint/stylelint/releases/tag/15.10.2) (updated from 15.10.1)** +- SwiftLint 0.50.3 +- Tailor 0.12.0 +- **[Trivy 0.44.1](https://github.com/aquasecurity/trivy/releases/tag/v0.44.1) (new)** +- TSLint 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.14.0 diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-09-cloud.md b/docusaurus/docs/release-notes/cloud/2023/2023-09-cloud.md new file mode 100644 index 0000000000..69c3485387 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-09-cloud.md @@ -0,0 +1,94 @@ +--- +title: Cloud September 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud September 2023. +included_jira_versions: ['2023.09'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.8.2 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.10.32 +slug: /release-notes/cloud/cloud-2023-09 +--- + + +These release notes are for the Codacy Cloud updates during September 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- It's now possible to send notifications to a Slack channel of your choice whenever Codacy detects new critical Security issues in the default branch of any repository in your organization. See [how to install the Codacy Slack integration for Security issues](../../../organizations/integrations/slack-integration.md). (TAROT-2242) + + ![Slack integration for Security issues](../../images/tarot-2242.png) + +- You can now use the new [Codacy Visual Studio Code extension](https://github.com/codacy/codacy-vscode-extension) to review and manage the issues found by Codacy for a pull request directly within Visual Studio Code. See [how to install and use the Codacy Visual Studio Code extension](../../../getting-started/integrating-codacy-with-visual-studio-code.md). (ALA-549) + + ![Visual Studio Code extension](../../images/ala-549.png) + +- It's now possible to get an additional coverage status report on GitHub using the new faster Coverage engine. (ALA-572) + + ![New Coverage status report](../../images/ala-572.png) + +- In some Enterprise plans, Codacy now automatically manages people activity and seat usage for your organization. (PLUTO-647) + +- In some Enterprise plans, you can now navigate from the Last Analysis column on the People page list to the details of the last analyzed pull request or commit. The link is only available for analysis executed from Sep 11, 2023. (PLUTO-644) + +- Now, when you switch to a different plan or cancel your plan, Codacy no longer re-triggers your repositories analysis automatically. To ensure all information is updated on Codacy UI after changing or canceling your plan, re-analyze your repositories or push new commits. (PLUTO-667) + +## Bug fixes + +- Fixed an incorrect popup being shown when loading the repository Code patterns page. (PLUTO-717) +- Fixed a issue causing the repository Security monitor page to show outdated information when having security patterns applied to the used coding standard. (PLUTO-745) +- Fixed an issue for Git providers that don't send events on main branch changing (Bitbucket, GitLab) causing an empty dashboard page and failures to analyze pull requests targeting the main branch. (IO-799) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 1.4.3 +- **[Bandit 1.7.5](https://github.com/PyCQA/bandit/releases/tag/1.7.5) (updated from 1.7.0)** +- Brakeman 4.3.1 +- bundler-audit 0.9.1 +- Checkov 2.3.187 +- **[Checkstyle 10.12.3](https://checkstyle.sourceforge.io/releasenotes.html#Release_10.12.3) (updated from 10.12.2)** +- Clang-Tidy 10.0.1 +- CodeNarc 3.2.0 +- **[CoffeeLint 5.2.11](https://github.com/coffeelint/coffeelint/releases/tag/v5.2.11) (updated from 2.1.0)** +- **[Cppcheck 2.12.0](https://github.com/danmar/cppcheck/releases/tag/2.12.0) (updated from 2.10.3)** +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.22.0 +- **[ESLint 8.48.0](https://github.com/eslint/eslint/releases/tag/v8.48.0) (updated from 8.47.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- **[Jackson Linter 2.15.2](https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.15.2) (updated from 2.14.2)** +- **[JSHint 2.13.6](https://github.com/jshint/jshint/releases/tag/2.13.6) (updated from 2.13.5)** +- markdownlint 0.26.2 +- PHP Mess Detector 2.13.0 +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- Prospector 1.10.2 +- **[PSScriptAnalyzer 1.21.0](https://github.com/PowerShell/PSScriptAnalyzer/releases/tag/1.21.0) (updated from 1.18.3)** +- **[Pylint 2.17.5](https://github.com/pylint-dev/pylint/releases/tag/v2.17.5) (updated from 2.17.4)** +- Pylint (deprecated) 1.9.5 +- **[remark-lint 9.1.2](https://github.com/remarkjs/remark-lint/releases/tag/9.1.2) (updated from 7.0.1)** +- **[Revive 1.3.3](https://github.com/mgechev/revive/releases/tag/v1.3.3) (updated from 1.3.2)** +- **[RuboCop 1.56.1](https://github.com/rubocop/rubocop/releases/tag/v1.56.1) (updated from 1.52.1)** +- **[Scalastyle 1.5.1](https://github.com/beautiful-scala/scalastyle/releases/tag/v1.5.1) (updated from 1.5.0)** +- ShellCheck v0.9.0 +- SonarC# 8.40 +- SonarVB 8.15 +- Spectral 1.16.0 +- SpotBugs 4.7.3 +- SQLint 0.2.1 +- **[Staticcheck 2023.1.5](https://staticcheck.io/changes/2023.1/#2023.1.5) (updated from 2022.1.3)** +- **[Stylelint 15.10.3](https://github.com/stylelint/stylelint/releases/tag/15.10.3) (updated from 15.10.2)** +- SwiftLint 0.50.3 +- Tailor 0.12.0 +- Trivy 0.44.1 +- TSLint 6.1.3 +- TSQLLint 1.11.1 +- **[Unity Roslyn Analyzers 1.17.0](https://github.com/microsoft/Microsoft.Unity.Analyzers/releases/tag/1.17.0) (updated from 1.14.0)** diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-10-13-cloud-bundler-audit-deprecation.md b/docusaurus/docs/release-notes/cloud/2023/2023-10-13-cloud-bundler-audit-deprecation.md new file mode 100644 index 0000000000..9c7115139e --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-10-13-cloud-bundler-audit-deprecation.md @@ -0,0 +1,21 @@ +--- +title: Deprecation of bundler-audit October 13, 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +slug: /release-notes/cloud/cloud-2023-10-13-bundler-audit-deprecation +--- + + +On October 13th 2023 we deprecated the tool **bundler-audit** in favor of [**Trivy**](https://github.com/codacy/codacy-trivy), a more complete and actively maintained tool for detecting vulnerabilities in Ruby gems and other languages, with a vulnerability database that's updated daily. + +## Removal of bundler-audit January 1, 2024 + +On January 1st, 2024 we'll be removing **bundler-audit** from Codacy. + +## If you are using bundler-audit + +To continue monitoring your repositories for vulnerable Ruby gems, enable the **Trivy** tool in your [organization coding standards](../../../organizations/using-coding-standards.md) (recommended) or on the [code patterns page](../../../repositories-configure/configuring-code-patterns.md) of each of the affected repositories. + +For new repositories, **Trivy** will be active by default. + +If you have any questions or need help, please contact [support@codacy.com](mailto:support@codacy.com). diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-10-25-cloud-csslint-jshint-fauxpas-tailor-tslint-deprecation.md b/docusaurus/docs/release-notes/cloud/2023/2023-10-25-cloud-csslint-jshint-fauxpas-tailor-tslint-deprecation.md new file mode 100644 index 0000000000..e54736c82f --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-10-25-cloud-csslint-jshint-fauxpas-tailor-tslint-deprecation.md @@ -0,0 +1,35 @@ +--- +title: Deprecation of CSSLint, JSHint, Faux Pas, Tailor, TSLint October 25, 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +slug: /release-notes/cloud/cloud-2023-10-25-csslint-jshint-fauxpas-tailor-tslint-deprecation +--- + + +On October 25th 2023 we deprecated the following tools: **CSSLint**, **Faux Pas**, **JSHint**, **Tailor**, and **TSLint**. + +These tools have become deprecated or stopped being updated by their maintainers and started providing a bad experience to Codacy users either by reporting false positives or causing other unexpected issues. + +We've been working on alternatives for each deprecated tool. See [what to do if you are using one of the deprecated tools](#if-you-are-using-one-of-these-tools). + +## Removal of CSSLint and TSLint January 1, 2024 + +On January 1st, 2024 we'll be removing the following tools from Codacy: **CSSLint** and **TSLint**. + +The remaining deprecated tools (Faux Pas, JSHint, and Tailor) will be removed later. You can follow the [Codacy release notes](https://docs.codacy.com/release-notes/) for further updates. + +## If you are using one of these tools + +To continue analyzing your repositories, enable the replacement tool for the corresponding deprecated tool listed below in your [organization coding standards](../../../organizations/using-coding-standards.md) (recommended) or on the [code patterns page](../../../repositories-configure/configuring-code-patterns.md) of each affected repository: + +| Deprecated tool | Replacement tool | +|-----------------|------------------| +| CSSLint | Stylelint | +| Faux Pas | Clang-Tidy | +| JSHint | ESLint | +| Tailor | SwiftLint | +| TSLint | ESLint | + +The suggested replacement tools are enabled by default for new repositories, except for Clang Tidy, which is a [client-side tool](../../../repositories-configure/local-analysis/client-side-tools.md). + +If you have any questions or need help, please contact [support@codacy.com](mailto:support@codacy.com). diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-10-cloud.md b/docusaurus/docs/release-notes/cloud/2023/2023-10-cloud.md new file mode 100644 index 0000000000..cf2b0b4501 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-10-cloud.md @@ -0,0 +1,99 @@ +--- +title: Cloud October 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud October 2023. +included_jira_versions: ['2023.10'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.10.32 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.10.80 +slug: /release-notes/cloud/cloud-2023-10 +--- + + +These release notes are for the Codacy Cloud updates during October 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- You can now get two additional coverage status reports on GitHub using the new faster Coverage engine, showing whether your diff coverage and coverage variation are up to standards or not as configured on the quality gate rules for your repository. (ALA-593) + + :::note + This setting has been active by default since November 23rd, 2023. See [how to update your setup to use the new Coverage status reports](/release-notes/cloud/cloud-2023-11-23-new-coverage-engine-status-checks). + ::: + + ![New Coverage status report](../../images/ala-593.png) + +- The permission level set for the **Analysis configuration** on the organization **Settings > Member privileges** now applies also to the reanalysis of a pull request or the last commit in a branch. (PLUTO-587) + +## Bug fixes + +- Fixed an issue that caused code duplication warnings to link to the original code block instead of the duplicated one. (TS-545) +- TSQLLint can now also detect and analyze files with an `sql` extension. (TS-543) +- Codacy no longer supports and now skips the analysis of branches named `HEAD` or matching the pattern `refs/heads/*`, as these are Git reserved terms. (IO-830) + +## Feature removal + +Due to their limited adoption, we removed the following options from the menu of each issue listed on the **Issues** page: + +- GitHub: Create pull request comments and GitHub issues. +- Bitbucket: Create pull requests comments and Bitbucket issues. +- Jira: Create Jira issues. (CY-6535) + +## Tool deprecations + +- On October 13th 2023 we deprecated the tool **bundler-audit**. For more information, [see the deprecation notice](/release-notes/cloud/cloud-2023-10-13-bundler-audit-deprecation). +- On October 25th 2023 we deprecated the following tools: **CSSLint**, **Faux Pas**, **JSHint**, **Tailor**, and **TSLint**. For more information, [see the deprecation notice](/release-notes/cloud/cloud-2023-10-25-csslint-jshint-fauxpas-tailor-tslint-deprecation). + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- CoffeeLint 5.2.11 +- Ameba 1.4.3 +- Bandit 1.7.5 +- Brakeman 4.3.1 +- bundler-audit (deprecated) 0.9.1 +- Checkov 2.3.187 +- Checkstyle 10.12.3 +- Clang-Tidy 10.0.1 +- **[CodeNarc 3.3.0](https://github.com/CodeNarc/CodeNarc/blob/master/CHANGELOG.md) (updated from 3.2.0)** +- Cppcheck 2.12.0 +- Credo 1.4.0 +- CSSLint (deprecated) 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.22.0 +- **[ESLint 8.51.0](https://github.com/eslint/eslint/releases/tag/v8.51.0) (updated from 8.48.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- Jackson Linter 2.15.2 +- JSHint (deprecated) 2.13.6 +- markdownlint 0.26.2 +- PHP Mess Detector 2.13.0 +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- Prospector 1.10.2 +- PSScriptAnalyzer 1.21.0 +- Pylint 2.17.5 +- Pylint (deprecated) 1.9.5 +- remark-lint 9.1.2 +- Revive 1.3.3 +- RuboCop 1.56.1 +- Scalastyle 1.5.1 +- ShellCheck v0.9.0 +- SonarC# 8.40 +- SonarVB 8.15 +- Spectral 1.16.0 +- SpotBugs 4.7.3 +- SQLint 0.2.1 +- Staticcheck 2023.1.5 +- Stylelint 15.10.3 +- SwiftLint 0.50.3 +- Tailor 0.12.0 +- **[Trivy 0.46.0](https://github.com/aquasecurity/trivy/releases/tag/v0.46.0) (updated from 0.44.1)** +- TSLint (deprecated) 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.17.0 diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-11-13-cloud-jira-slack-webhooks-repo-integrations-removal.md b/docusaurus/docs/release-notes/cloud/2023/2023-11-13-cloud-jira-slack-webhooks-repo-integrations-removal.md new file mode 100644 index 0000000000..fb1b42e6f4 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-11-13-cloud-jira-slack-webhooks-repo-integrations-removal.md @@ -0,0 +1,21 @@ +--- +title: Removal of Jira, Slack, and Webhooks repository integrations November 13, 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +slug: /release-notes/cloud/cloud-2023-11-13-jira-slack-webhooks-repo-integrations-removal +--- + + +On the week of November 13th 2023 we removed the option to create, configure, and delete **Jira**, **Slack**, and **Webhooks integrations for your repositories**. These integrations were available on the repository **Settings**, tab **Integration**. + +Your existing integrations will keep working [until the end of 2023](#removal-of-existing-integrations). However, you can no longer configure or delete them on the Codacy app. + +Due to their limited adoption, these integrations haven't been maintained for some time and have started impacting the delivery of new features. Although there's no plan to make these integrations available again, we're open to looking into them upon feedback. + +## Removal of existing integrations + +We're planning to remove the existing Jira, Slack, and Webhooks repository integrations from the Codacy app by the **end of 2023**. By this time, your existing integrations will stop working and we'll delete all related data, including authentication data. + +## If you are using Jira, Slack, or Webhooks repository integrations + +If you have critical workflows relying on these integrations, please contact us at [support@codacy.com](mailto:support@codacy.com) so we can advise on the best alternative. diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-11-23-cloud-new-coverage-engine-status-checks.mdx b/docusaurus/docs/release-notes/cloud/2023/2023-11-23-cloud-new-coverage-engine-status-checks.mdx new file mode 100644 index 0000000000..c2633bcdb4 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-11-23-cloud-new-coverage-engine-status-checks.mdx @@ -0,0 +1,142 @@ +--- +title: Rollout of new Coverage engine November 23, 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +slug: /release-notes/cloud/cloud-2023-11-23-new-coverage-engine-status-checks +--- + +import CoverageGithubAcceptPermissions from '../../../_includes/CoverageGithubAcceptPermissions.mdx'; + + + +As part of an ongoing effort to improve the speed and value of the insights provided by Codacy, we've been working on a new Coverage engine and started its deployment on November 23rd, 2023. The rollout to use the new engine across Codacy will be phased across several months and will gradually impact the coverage data you see on the Git provider, UI, and API. + +Please refer to the table below for the updated status of the transition process. The table will be updated as changes are introduced. + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Feature setFeatureStatusNotes
    Git providersGit provider status checksLiveThe new Coverage engine now sends coverage data to your Git provider.
    Codacy stopped sending coverage checks from the old Coverage engine on June 5th, 2024.
    GitHub coverage summariesLiveThe new Coverage engine now sends coverage summaries to GitHub. If you haven't done so yet, please review and update your app permissions as mentioned above.
    Other pages and componentsPlanned-
    + +:::note +Because of this transition, both old and new data will coexist during this period, potentially leading to [differences in reported metrics](#differences-in-coverage-metrics-between-the-old-and-new-coverage-engines). +::: + +## Git provider status checks from the new Coverage engine \{#status-checks\} +:::note[This section applies to the repositories for which you set Codacy to send pull request coverage status data to your Git provider (see how on [GitHub](../../../repositories-configure/integrations/github-integration.md#status-checks), [GitLab](../../../repositories-configure/integrations/gitlab-integration.md#pull-request-status), and [Bitbucket](../../../repositories-configure/integrations/bitbucket-integration.md#pull-request-status)).] +::: + +On June 5th 2024, Codacy stopped sending coverage checks from the old Coverage engine. As a consequence of this, you will only see the new checks from the new Coverage engine, **Codacy Diff Coverage** and **Codacy Coverage Variation**, and will no longer see the old **Codacy Coverage Report** check on your pull requests. + +:::caution +GitHub only: If you are using the Codacy Coverage Report status check to block merging pull requests, please [update your GitHub setup](#if-you-are-using-the-old-coverage-status-check-to-block-merging-pull-requests-on-github) to fix any disruptions. +::: + +This is what the new checks look like on each provider: + +- On GitHub: + + ![New Coverage status checks GitHub](../../images/ala-695-status-checks-github.png) + +- On GitLab: + + ![New Coverage status checks GitLab](../../images/ala-695-status-checks-gitlab.png) + +- On Bitbucket: + + ![New Coverage status checks Bitbucket](../../images/ala-695-status-checks-bitbucket.png) + +### Deprecation and removal calendar for the old Coverage engine status checks + + + + + + + + + + + + + + + + + + + + + + + + +
    DateEventWhat to expect
    February 14th, 2024Deprecation of the old Coverage status check +

    From this day on, the new checks will be the official status checks for Codacy Coverage and will no longer be marked beta. The old check will be marked deprecated but will keep working.

    +

    If on this date you are still using the old check to block merging pull requests on GitHub, please update your Git provider settings.

    +
    April 18th, 2024Brownout of the old Coverage status check +

    Codacy will not send the old status check on this day.

    +

    This will help you confirm that your setup has been updated correctly and lower the risk of disruptions when the old status check is removed.
    If on this day you can merge your pull requests using the new checks and don't encounter other issues, it means that your setup has been updated correctly. Otherwise, if on this date you are still using the old check to block merging pull requests on GitHub, please update your Git provider settings.

    +
    June 5th, 2024Removal of the old Coverage status check +

    Codacy will stop sending the old status check.

    +

    If on this date you are still using the old check to block merging pull requests on GitHub, you will no longer be able to merge them. To fix this, follow the instructions below.

    +
    + +### If you are using the old Coverage status check to block merging pull requests on GitHub + +If you are using the old status check to block merging pull requests on GitHub, remove the old Codacy Coverage Report as a required check of your pull requests' target branch: + +1. [Edit the branch protection rule](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/managing-a-branch-protection-rule#editing-a-branch-protection-rule) of your pull requests' target branch. +1. Remove the old **Codacy Coverage Report** under the section **Require status checks to pass before merging** and save your changes: + +![New Coverage status checks GitHub](../../images/ala-695-update-status-checks-github.png) + +## GitHub coverage summaries from the new Coverage engine \{#coverage-summaries\} +:::note[This section applies to the repositories for which you set Codacy to post [coverage summaries](../../../repositories-configure/integrations/github-integration.md#coverage-summaries) to your GitHub pull requests] +::: + + + +On December 7th 2023, the new Coverage engine started posting coverage summaries to GitHub, replacing the old Coverage engine. + +## New Coverage engine side effects + +### Missing data on the Coverage Pull request page \{#differences-in-coverage-metrics-between-the-coverage-and-quality-pull-request-pages\} +You may notice missing coverage data on the Coverage Pull requests page for older pull requests when compared to the coverage data shown on the [Quality Pull requests page](../../../repositories/pull-requests.mdx). This may happen due to a number of reasons: + +- GitHub only: The new Coverage service requires updated app permissions to calculate coverage data. If you haven't done so yet, [review and accept the updated Codacy app permissions](https://docs.github.com/en/enterprise-cloud@latest/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#reviewing-permissions) on GitHub and re-analyze the pull request by pushing an empty commit. + +- The data may be missing because the latest commit to the pull request was pushed before the new Coverage engine was enabled. To resolve this, re-analyze the pull request by pushing an empty commit: + + ```bash + git commit --allow-empty -m "Trigger analysis" + git push + ``` + +### Differences in coverage metrics between the old and new Coverage engines \{#differences-in-coverage-metrics-between-the-old-and-new-coverage-engines\} +You may notice some differences in the coverage metrics reported by the old and new Coverage engines and may need to update your [coverage gate rules](../../../repositories-configure/adjusting-quality-gates.md) accordingly. This may happen because the new Coverage engine calculates coverage metrics considering all the files included in the coverage report, while the old Coverage engine ignores some files: + +- The old Coverage engine ignores any files on a coverage report that aren't present on the repository on that given commit. +- The old Coverage engine may ignore additional files since it shares [ignore rules](../../../repositories-configure/ignoring-files.md) with the Codacy analysis engine. diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-11-cloud.md b/docusaurus/docs/release-notes/cloud/2023/2023-11-cloud.md new file mode 100644 index 0000000000..9cebac55bc --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-11-cloud.md @@ -0,0 +1,86 @@ +--- +title: Cloud November 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud November 2023. +included_jira_versions: ['2023.11'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.10.80 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.10.123 +slug: /release-notes/cloud/cloud-2023-11 +--- + + +These release notes are for the Codacy Cloud updates during November 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Added [support for Semgrep’s open-source engine](../../../getting-started/supported-languages-and-tools.md) to perform static application security testing (SAST), with the option to upgrade to Semgrep Pro. (TAROT-2347) +- You now get two additional coverage status reports from the new, faster Coverage engine on your Git provider, showing whether your diff coverage and coverage variation are up to standard or not as configured on the quality gate rules for your repository. (ALA-624) + + :::note + This setting is active by default. [If you're using GitHub, see how to update your setup to use the new Coverage status reports](/release-notes/cloud/cloud-2023-11-23-new-coverage-engine-status-checks). + ::: + +## Bug fixes + +- The Codacy Coverage engine can now process coverage reports that contain an arbitrarily large number of hits for each covered line. (ALA-660) + +## Feature removal + +- We removed the option to create, configure, and delete repository-level Slack, Jira, and Webhook integrations. Your existing integrations will keep working, but you can no longer configure or delete them on the Codacy app. For more information, [see the deprecation notice](/release-notes/cloud/cloud-2023-11-13-jira-slack-webhooks-repo-integrations-removal). (CY-7202, CY-7203, CY-7204) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- CoffeeLint 5.2.11 +- Ameba 1.4.3 +- Bandit 1.7.5 +- Brakeman 4.3.1 +- bundler-audit (deprecated) 0.9.1 +- **[Checkov 3.0.25](https://github.com/bridgecrewio/checkov/releases/tag/3.0.25) (updated from 2.3.187)** +- **[Checkstyle 10.12.5](https://checkstyle.sourceforge.io/releasenotes.html#Release_10.12.5) (updated from 10.12.3)** +- Clang-Tidy 10.0.1 +- CodeNarc 3.3.0 +- Cppcheck 2.12.0 +- Credo 1.4.0 +- CSSLint (deprecated) 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.22.0 +- **[ESLint 8.54.0](https://github.com/eslint/eslint/releases/tag/v8.54.0) (updated from 8.51.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- Jackson Linter 2.15.2 +- JSHint (deprecated) 2.13.6 +- **[markdownlint 0.31.1](https://github.com/DavidAnson/markdownlint/releases/tag/v0.31.1) (updated from 0.26.2)** +- **[PHP Mess Detector 2.14.1](https://github.com/phpmd/phpmd/releases/tag/2.14.1) (updated from 2.13.0)** +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- **[Prospector 1.10.3](https://github.com/landscapeio/prospector/releases/tag/1.10.3) (updated from 1.10.2)** +- PSScriptAnalyzer 1.21.0 +- **[Pylint 3.0.2](https://github.com/pylint-dev/pylint/releases/tag/v3.0.2) (updated from 2.17.5)** +- Pylint (deprecated) 1.9.5 +- remark-lint 9.1.2 +- **[Revive 1.3.4](https://github.com/mgechev/revive/releases/tag/v1.3.4) (updated from 1.3.3)** +- **[RuboCop 1.57.2](https://github.com/rubocop/rubocop/releases/tag/v1.57.2) (updated from 1.56.1)** +- Scalastyle 1.5.1 +- **[Semgrep 1.50.0](https://github.com/semgrep/semgrep/releases/tag/v1.50.0) (new)** +- ShellCheck v0.9.0 +- SonarC# 8.40 +- SonarVB 8.15 +- **[Spectral 1.18.0](https://github.com/stoplightio/spectral/releases/tag/%40stoplight%2Fspectral-rulesets-v1.18.0) (updated from 1.16.0)** +- **[SpotBugs 4.8.0](https://github.com/spotbugs/spotbugs/releases/tag/4.8.0) (updated from 4.7.3)** +- SQLint 0.2.1 +- Staticcheck 2023.1.5 +- Stylelint 15.10.3 +- SwiftLint 0.50.3 +- Tailor 0.12.0 +- **[Trivy 0.47.0](https://github.com/aquasecurity/trivy/releases/tag/v0.47.0) (updated from 0.46.0)** +- TSLint (deprecated) 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.17.0 diff --git a/docusaurus/docs/release-notes/cloud/2023/2023-12-cloud.md b/docusaurus/docs/release-notes/cloud/2023/2023-12-cloud.md new file mode 100644 index 0000000000..1c43070e02 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2023/2023-12-cloud.md @@ -0,0 +1,84 @@ +--- +title: Cloud December 2023 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud December 2023. +included_jira_versions: ['2023.12'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.10.123 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.10.158 +slug: /release-notes/cloud/cloud-2023-12 +--- + + +These release notes are for the Codacy Cloud updates during December 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- The [Security and risk management feature](../../../organizations/managing-security-and-risk.md), previously only available to organization admins and security managers, is now open to all organization members and shows information related to the repositories that each member follows. (TAROT-2442) +- The [GitHub coverage summaries](/release-notes/cloud/cloud-2023-11-23-new-coverage-engine-status-checks#coverage-summaries) and the Codacy app UI diff tabs now get data from the new Coverage engine. For more information, [see the rollout details of the new Coverage engine](/release-notes/cloud/cloud-2023-11-23-new-coverage-engine-status-checks). (ALA-589, ALA-676) + + :::caution + These features require updated app permissions. Make sure an organization owner [approves the updated permissions for the Codacy GitHub App](https://docs.github.com/en/enterprise-cloud@latest/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#reviewing-permissions) on your GitHub organization. + ::: + +- When calculating coverage data, the [new coverage engine](/release-notes/cloud/cloud-2023-11-23-new-coverage-engine-status-checks) now ignores files in the coverage report that aren't in the associated Git repository. (ALA-716) + +## Bug fixes + +- Fixed an issue that caused the Issue list page to show more issues than expected when filtering for a specific language. (TAROT-2448) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- **[Ameba 1.5.0](https://github.com/crystal-ameba/ameba/releases/tag/v1.5.0) (updated from 1.4.3)** +- Bandit 1.7.5 +- Brakeman 4.3.1 +- bundler-audit (deprecated) 0.9.1 +- Checkov 3.0.25 +- Checkstyle 10.12.5 +- Clang-Tidy 10.0.1 +- CodeNarc 3.3.0 +- CoffeeLint 5.2.11 +- Cppcheck 2.12.0 +- Credo 1.4.0 +- CSSLint (deprecated) 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.22.0 +- **[ESLint 8.55.0](https://github.com/eslint/eslint/releases/tag/v8.55.0) (updated from 8.54.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- Jackson Linter 2.15.2 +- JSHint (deprecated) 2.13.6 +- markdownlint 0.31.1 +- PHP Mess Detector 2.14.1 +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- Prospector 1.10.3 +- PSScriptAnalyzer 1.21.0 +- Pylint 3.0.2 +- Pylint (deprecated) 1.9.5 +- remark-lint 9.1.2 +- Revive 1.3.4 +- **[RuboCop 1.59.0](https://github.com/rubocop/rubocop/releases/tag/v1.59.0) (updated from 1.57.2)** +- Scalastyle 1.5.1 +- Semgrep 1.50.0 +- ShellCheck v0.9.0 +- SonarC# 8.40 +- SonarVB 8.15 +- Spectral 1.18.0 +- **[SpotBugs 4.8.3](https://github.com/spotbugs/spotbugs/releases/tag/4.8.3) (updated from 4.8.0)** +- SQLint 0.2.1 +- **[Staticcheck 2023.1.6](https://staticcheck.dev/changes/2023.1/#2023.1.6) (updated from 2023.1.5)** +- Stylelint 15.10.3 +- **[SwiftLint 0.54.0](https://github.com/realm/SwiftLint/releases/tag/0.54.0) (updated from 0.50.3)** +- Tailor 0.12.0 +- Trivy 0.47.0 +- TSLint (deprecated) 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.17.0 diff --git a/docusaurus/docs/release-notes/cloud/2024/2024-01-15-cloud-gh-repository-ssh-keys-discontinuation.md b/docusaurus/docs/release-notes/cloud/2024/2024-01-15-cloud-gh-repository-ssh-keys-discontinuation.md new file mode 100644 index 0000000000..ee018db91b --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2024/2024-01-15-cloud-gh-repository-ssh-keys-discontinuation.md @@ -0,0 +1,82 @@ +--- +title: Discontinuation of SSH keys for GitHub repositories January 15, 2024 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +slug: /release-notes/cloud/cloud-2024-01-15-gh-repository-ssh-keys-discontinuation +--- + + +:::note[This release note applies only to GitHub] +::: + +For increased security, Codacy is discontinuing the usage of **repository SSH keys** for Git operations on GitHub in favor of **installation access tokens**. + +This change translates into important security improvements: + +- It limits the access level of the Codacy GitHub App, as it no longer requires [read and write repository permissions for Administration](https://docs.github.com/en/rest/authentication/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-administration). +- Contrary to long-living SSH keys, [installation access tokens](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-an-installation-access-token-for-a-github-app#about-installation-access-tokens) expire after one hour and Codacy loses access when the GitHub App is uninstalled. + +To minimize any impact, Codacy is currently discontinuing the usage of repository SSH keys but will keep using them as a fallback mechanism at this first stage. At a later stage, Codacy will [stop using repository SSH keys and delete the keys](#timeline) stored in our systems. + +## Changes on the Codacy GitHub App required permissions {#changes-permissions} +To use installation access tokens, the Codacy GitHub App now requires [repository read permissions for Contents](https://docs.github.com/en/rest/authentication/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-contents). + +On the other hand, the usage of installation access tokens no longer requires [read and write repository permissions for Administration](https://docs.github.com/en/rest/authentication/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-administration). The Codacy GitHub App still requests this permission during this first stage, while using repository SSH keys as a fallback mechanism. At a later stage, Codacy will [remove the permission from the GitHub App](#timeline). + +## What do you need to do if you have a GitHub organization? {#to-do} +Make sure an organization owner [approves the updated permissions for the Codacy GitHub App](https://docs.github.com/en/apps/using-github-apps/reviewing-and-modifying-installed-github-apps) on your GitHub organization, if not done yet. + +Codacy has been requesting repository read permissions for **Contents** since September 2023. Organization owners should have received a GitHub notification to review a request for this additional permission: + +![Codacy GitHub App updated permissions request](../../images/2024-01-15-gh-updated-permissions.png) + +If you have any questions or need help, please contact [support@codacy.com](mailto:support@codacy.com). + +## Removal of repository permissions for Administration and SSH keys {#timeline} +To ensure the conditions to use installation access tokens on GitHub organizations are met before the removal of repository permissions for Administration and SSH keys, Codacy will execute a phased rollout according to the timeline below: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    DateEventWhat to expect
    January 15, 2024Codacy started using installation access tokens to clone and integrate with your repositories +

    From this day on, repository SSH keys are used exclusively as a fallback mechanism when the Contents permission is missing.

    +

    If not done yet, make sure an organization owner approves Codacy GitHub App updated permissions on your GitHub organization.

    +
    February 12, 2024Brownout of repository permissions for Administration +

    On this day, Codacy won't use any fallback mechanism if the Contents permission is missing.

    +

    This will help you confirm that the updated permissions for the Codacy GitHub App were already approved for your organization.
    If on this date your Codacy quality analysis fails or you have problems adding new repositories to Codacy, make sure an organization owner approves the updated permissions for the Codacy GitHub App on your GitHub organization.

    +
    February 19, 2024Codacy will remove repository permissions for Administration from the Codacy GitHub App and stop using repository SSH keys +

    Codacy will start using installation access tokens to clone and integrate with your repositories, with no fallback mechanisms. Also, repository permissions for Administration will be removed from the Codacy GitHub App.

    +

    If on this day the Codacy GitHub App updated permissions haven't been approved on your GitHub organization yet, your Codacy quality analysis will fail and you'll not be able to add new repositories to Codacy until an organization owner approves the updated permissions.

    +
    To defineCodacy will no longer store repository SSH keys +

    On this day, Codacy will delete all the repository SSH keys stored in our systems.

    +

    For increased security, you can revoke the keys created by Codacy on your GitHub repository.

    +
    + +## See also + +- [Which permissions are required by Codacy GitHub App?](../../../getting-started/which-permissions-does-codacy-need-from-my-account.md#github-cloud) diff --git a/docusaurus/docs/release-notes/cloud/2024/2024-01-cloud.md b/docusaurus/docs/release-notes/cloud/2024/2024-01-cloud.md new file mode 100644 index 0000000000..33a3606c5d --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2024/2024-01-cloud.md @@ -0,0 +1,86 @@ +--- +title: Cloud January 2024 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud January 2024. +included_jira_versions: ['2024.01'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.10.158 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.10.193 +slug: /release-notes/cloud/cloud-2024-01 +--- + + +These release notes are for the Codacy Cloud updates during January 2024. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Codacy now uses installation access tokens to integrate with your GitHub repositories instead of repository SSH keys, which are being discontinued. For more information, [see the discontinuation notice](/release-notes/cloud/cloud-2024-01-15-gh-repository-ssh-keys-discontinuation). (PLUTO-764) +- You can now filter the [security and risk items](../../../organizations/managing-security-and-risk.md) by security category. (TAROT-2444) + +## Bug fixes + +- Fixed an error for GitHub organizations preventing the repositories list from loading on the **Manage repositories** modal when retrieving a large number of repositories. (PLUTO-854) +- The pull requests list now shows partial results when one of the pull requests has errors. (PLUTO-838) +- Fixed an error causing pull requests to have missing source commits, preventing them from being correctly displayed on the Codacy UI. (IO-915) +- Fixed an issue that caused some security and risk management items to display the wrong severity. (TAROT-2517) + +## Feature removal + +- We deleted the existing Slack, Jira, and Webhook repository integrations, and all related data, including authentication data. For more information, [see the deprecation notice](/release-notes/cloud/cloud-2023-11-13-jira-slack-webhooks-repo-integrations-removal). (CY-7202, CY-7203, CY-7204) +- The repository security monitor has been replaced by the [Security and risk management feature](../../../organizations/managing-security-and-risk.md), which shows the information related to the repositories that each member follows. (TAROT-2444) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 1.5.0 +- Bandit 1.7.5 +- Brakeman 4.3.1 +- bundler-audit (deprecated) 0.9.1 +- Checkov 3.0.25 +- **[Checkstyle 10.13.0](https://checkstyle.sourceforge.io/releasenotes.html#Release_10.13.0) (updated from 10.12.5)** +- Clang-Tidy 10.0.1 +- CodeNarc 3.3.0 +- CoffeeLint 5.2.11 +- Cppcheck 2.12.0 +- **[Credo 1.7.2](https://github.com/rrrene/credo/releases/tag/v1.7.2) (updated from 1.4.0)** +- CSSLint (deprecated) 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.22.0 +- **[ESLint 8.56.0](https://github.com/eslint/eslint/releases/tag/v8.56.0) (updated from 8.55.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- Jackson Linter 2.15.2 +- JSHint (deprecated) 2.13.6 +- **[markdownlint 0.33.0](https://github.com/DavidAnson/markdownlint/releases/tag/v0.33.0) (updated from 0.31.1)** +- PHP Mess Detector 2.14.1 +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- Prospector 1.10.3 +- PSScriptAnalyzer 1.21.0 +- **[Pylint 3.0.3](https://github.com/pylint-dev/pylint/releases/tag/v3.0.3) (updated from 3.0.2)** +- Pylint (deprecated) 1.9.5 +- remark-lint 9.1.2 +- Revive 1.3.4 +- **[RuboCop 1.60.2](https://github.com/rubocop/rubocop/releases/tag/v1.60.2) (updated from 1.59.0)** +- Scalastyle 1.5.1 +- **[Semgrep 1.58.0](https://github.com/semgrep/semgrep/releases/tag/v1.58.0) (updated from 1.50.0)** +- ShellCheck v0.9.0 +- SonarC# 8.40 +- SonarVB 8.15 +- Spectral 1.18.0 +- SpotBugs 4.8.3 +- SQLint 0.2.1 +- Staticcheck 2023.1.6 +- Stylelint 15.10.3 +- SwiftLint 0.54.0 +- Tailor 0.12.0 +- Trivy 0.47.0 +- TSLint (deprecated) 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.17.0 diff --git a/docusaurus/docs/release-notes/cloud/2024/2024-02-cloud.md b/docusaurus/docs/release-notes/cloud/2024/2024-02-cloud.md new file mode 100644 index 0000000000..4f703ed751 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2024/2024-02-cloud.md @@ -0,0 +1,92 @@ +--- +title: Cloud February 2024 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud February 2024. +included_jira_versions: ['2024.02'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.10.193 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.10.234 +slug: /release-notes/cloud/cloud-2024-02 +--- + + +These release notes are for the Codacy Cloud updates during February 2024. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- The Codacy GitHub App no longer requires **Read and write access to Administration** repository permission. For more information, see the [Discontinuation of SSH keys for GitHub repositories](/release-notes/cloud/cloud-2024-01-15-gh-repository-ssh-keys-discontinuation). (PLUTO-803) +- The coverage data sent by the new Coverage engine to your Git provider moved from **beta** to stable. Thus, the coverage data sent by the old engine is now marked **deprecated**. For more information, [see the rollout details of the new Coverage engine](/release-notes/cloud/cloud-2023-11-23-new-coverage-engine-status-checks). (ALA-766) +- The Coverage Pull Requests page now gets data from the new Coverage engine. For more information, [see the rollout details of the new Coverage engine](/release-notes/cloud/cloud-2023-11-23-new-coverage-engine-status-checks). (ALA-770) +- The [Organization overview](../../../organizations/organization-overview.md) is now available on all plans. (ALA-842) +- Improved the mechanism to refresh organizations from the Git provider. As a result, we removed the option to manually refresh the list of organizations when [adding new organizations to Codacy](../../../organizations/what-are-organizations.md#adding-an-organization). (ALA-862) +- For GitHub, if you have email privacy enabled on the provider, Codacy doesn't show your private email addresses when displaying your personal details on lists, search filters, or activity. (PLUTO-794) +- Added support for the Checkstyle filters [SuppressionCommentFilter](https://checkstyle.sourceforge.io/filters/suppressioncommentfilter.html), [SuppressWarningsHolder](https://checkstyle.sourceforge.io/checks/annotation/suppresswarningsholder.html), and [SuppressWarningsFilter](https://checkstyle.sourceforge.io/filters/suppresswarningsfilter.html). (TCE-709) + +## Bug fixes + +- Fixed the required permissions for Codacy API endpoints `updateRepositoryQualitySettings` and `resetRepositoryQualitySettings`. (PLUTO-870) +- Fixed an issue preventing the Codacy app from showing the repository information for specific edge cases of repositories following a gate policy. (PLUTO-900) +- Codacy no longer analyzes branches matching the reserved Git pattern `refs/heads/main`. (IO-905) +- The Codacy API endpoint `listPullRequestIssues` now returns pagination information correctly. (ALA-808) +- Fixed an issue allowing users to list GitHub personal organizations with no Codacy GitHub App installed. (ALA-820) +- Fixed issues in the new Coverage engine causing the Codacy Diff Coverage status check on GitHub to get stuck. (ALA-869, ALA-880) + +## Feature removal + +- Due to its limited adoption, we removed the option to sign up and login to Codacy using your Google Account. For increased security, remove the Codacy OAuth application access on your Google Account. For more information, see **How do I remove third-party access to my Google Account?** on [Google documentation](https://support.google.com/accounts/answer/14012355?hl=en&ref_topic=14134549&sjid=15422466131901595846-EU). (ALA-817) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 1.5.0 +- Bandit 1.7.5 +- Brakeman 4.3.1 +- bundler-audit (deprecated) 0.9.1 +- Checkov 3.0.25 +- Checkstyle 10.13.0 +- Clang-Tidy 10.0.1 +- CodeNarc 3.3.0 +- CoffeeLint 5.2.11 +- Cppcheck 2.12.0 +- Credo 1.7.2 +- CSSLint (deprecated) 1.0.5 +- **[dartanalyzer 3.3.0](https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md) (updated from 2.17.0)** +- **[detekt 1.23.5](https://github.com/detekt/detekt/releases/tag/v1.23.5) (updated from 1.22.0)** +- ESLint 8.56.0 +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- Jackson Linter 2.15.2 +- JSHint (deprecated) 2.13.6 +- markdownlint 0.33.0 +- PHP Mess Detector 2.14.1 +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- Prospector 1.10.3 +- PSScriptAnalyzer 1.21.0 +- Pylint 3.0.3 +- Pylint (deprecated) 1.9.5 +- remark-lint 9.1.2 +- **[Revive 1.3.7](https://github.com/mgechev/revive/releases/tag/v1.3.7) (updated from 1.3.4)** +- RuboCop 1.60.2 +- Scalastyle 1.5.1 +- **[Semgrep 1.61.1](https://github.com/semgrep/semgrep/releases/tag/v1.61.1) (updated from 1.58.0)** +- ShellCheck v0.9.0 +- **[SonarC# 9.19](https://github.com/SonarSource/sonar-dotnet/tags) (updated from 8.40)** +- SonarVB 8.15 +- Spectral 1.18.0 +- SpotBugs 4.8.3 +- SQLint 0.2.1 +- Staticcheck 2023.1.6 +- Stylelint 15.10.3 +- SwiftLint 0.54.0 +- Tailor 0.12.0 +- Trivy 0.47.0 +- TSLint (deprecated) 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.17.0 diff --git a/docusaurus/docs/release-notes/cloud/2024/2024-03-cloud.md b/docusaurus/docs/release-notes/cloud/2024/2024-03-cloud.md new file mode 100644 index 0000000000..b7c32564d5 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2024/2024-03-cloud.md @@ -0,0 +1,87 @@ +--- +title: Cloud March 2024 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud March 2024. +included_jira_versions: ['2024.03'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.10.234 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.10.272 +slug: /release-notes/cloud/cloud-2024-03 +--- + + +These release notes are for the Codacy Cloud updates during March 2024. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Streamlined new organization setup with a guided path for adding new organizations and a setup checklist on the [Organization overview](../../../organizations/organization-overview.md) page. (ALA-825) +- It's now possible to display penetration testing results in the Codacy app. See how to [start pen testing with Codacy](https://go.codacy.com/pen-testing-product). (TAROT-2553) +- It's now possible to [unfollow a repository](../../../organizations/managing-repositories.md#follow-unfollow) through the Codacy app. (PLUTO-902) +- In Enterprise plans where Codacy automatically manages seat usage for your organization, the billing period is now based only on the code analysis activity. Codacy app users who don’t contribute to your private repositories no longer occupy a seat. (PLUTO-867) + +## Bug fixes + +- Fixed a bug that prevented Security and risk management items from linking to their respective Jira issues. (TAROT-2648) +- Fixed an issue preventing pull requests from showing on Codacy due to Git operations timeout when synchronizing the current state of a repository. (IO-1019) +- Fixed an issue that caused sidebar labels to overlap interactive interface elements on smaller screens. (CY-7193) +- Fixed a bug that prevented Codacy from calculating diff coverage correctly when the diff contained only removed files. (ALA-921) + +## Feature removal + +- We removed the option to bulk copy code patterns between repositories and to import code pattern configurations from another repository. If you want to share tool and code pattern configurations between repositories, the recommended approach is to use a [coding standard](../../../organizations/using-coding-standards.md). (ALA-826) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 1.5.0 +- Bandit 1.7.5 +- Brakeman 4.3.1 +- bundler-audit (deprecated) 0.9.1 +- **[Checkov 3.2.37](https://github.com/bridgecrewio/checkov/releases/tag/3.2.37) (updated from 3.0.25)** +- Checkstyle 10.13.0 +- Clang-Tidy 10.0.1 +- CodeNarc 3.3.0 +- CoffeeLint 5.2.11 +- **[Cppcheck 2.13.0](https://github.com/danmar/cppcheck/releases/tag/2.13.0) (updated from 2.12.0)** +- Credo 1.7.2 +- CSSLint (deprecated) 1.0.5 +- **[dartanalyzer 3.3.3](https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md) (updated from 3.3.0)** +- detekt 1.23.5 +- **[ESLint 8.57.0](https://github.com/eslint/eslint/releases/tag/v8.57.0) (updated from 8.56.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- Jackson Linter 2.15.2 +- JSHint (deprecated) 2.13.6 +- markdownlint 0.33.0 +- PHP Mess Detector 2.14.1 +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- Prospector 1.10.3 +- PSScriptAnalyzer 1.21.0 +- **[Pylint 3.1.0](https://github.com/pylint-dev/pylint/releases/tag/v3.1.0) (updated from 3.0.3)** +- Pylint (deprecated) 1.9.5 +- remark-lint 9.1.2 +- Revive 1.3.7 +- RuboCop 1.60.2 +- Scalastyle 1.5.1 +- **[Semgrep 1.66.0](https://github.com/semgrep/semgrep/releases/tag/v1.66.0) (updated from 1.61.1)** +- ShellCheck v0.9.0 +- SonarC# 9.19 +- SonarVB 8.15 +- **[Spectral 1.18.1](https://github.com/stoplightio/spectral/releases/tag/%40stoplight%2Fspectral-rulesets-1.18.1) (updated from 1.18.0)** +- SpotBugs 4.8.3 +- SQLint 0.2.1 +- Staticcheck 2023.1.6 +- Stylelint 15.10.3 +- SwiftLint 0.54.0 +- Tailor 0.12.0 +- Trivy 0.47.0 +- TSLint (deprecated) 6.1.3 +- TSQLLint 1.11.1 +- **[Unity Roslyn Analyzers 1.19.0](https://github.com/microsoft/Microsoft.Unity.Analyzers/releases/tag/1.19.0) (updated from 1.17.0)** diff --git a/docusaurus/docs/release-notes/cloud/2024/2024-04-cloud.md b/docusaurus/docs/release-notes/cloud/2024/2024-04-cloud.md new file mode 100644 index 0000000000..cbe122466c --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2024/2024-04-cloud.md @@ -0,0 +1,97 @@ +--- +title: Cloud April 2024 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud April 2024. +included_jira_versions: ['2024.04'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.10.272 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.10.305 +slug: /release-notes/cloud/cloud-2024-04 +--- + + +These release notes are for the Codacy Cloud updates during April 2024. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Improved [Security and risk management](../../../organizations/managing-security-and-risk.md) with a redesigned overview page, offering comprehensive metrics and summary graphs for better visibility and tracking of security findings. An improved findings table now includes a streamlined view of security findings. (TAROT-2546) + + :::note + To align with the new features, all references to **security items** were updated to **security findings**. + ::: + + ![Security and risk management](../../images/tarot-2546.png) + +- Repository admins can now [bypass Codacy status check](../../../faq/code-analysis/can-i-bypass-codacy-status-check.md) to unblock the merge of a pull request. (IO-1036) +- You can now manually trigger the reanalysis of the coverage of a pull request using the [`reanalyzeCoverage`](https://api.codacy.com/api/api-docs#reanalyzecoverage) API endpoint. (ALA-1003) + +## Bug fixes + +- The [Codacy configuration file](../../../repositories-configure/codacy-configuration-file.md) no longer overrides the [default ignored files](../../../repositories-configure/ignoring-files.md#default-ignored-files). Also, Codacy no longer ignores by default files matching the regular expression `.*docs?/.*`. (IO-1031) +- Fixed a parsing error causing detected issues of a commit to show on the analysis logs instead of listed on the commit's Issues tab. (IO-1054) +- Improved the resilience of cloning repositories during analysis that would sporadically fail. (IO-1057) +- Fixed an issue in the analysis retention mechanism causing some data to be incorrectly deleted without being eligible for retention. (IO-1059) +- Codacy no longer updates the [default branch](../../../repositories-configure/managing-branches.mdx) automatically when you change the default branch on your Git provider. (TCE-838) + +## Feature removal + +Due to their limited adoption, while revamping the **Commit** and **Pull Request** detail pages we removed the following options for the issues listed on the **Issues** tab: + +- GitHub: Create pull request comments and GitHub issues. +- Bitbucket: Create pull requests comments and Bitbucket issues. (ALA-639) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 1.5.0 +- Bandit 1.7.5 +- Brakeman 4.3.1 +- bundler-audit (deprecated) 0.9.1 +- Checkov 3.2.37 +- Checkstyle 10.13.0 +- Clang-Tidy 10.0.1 +- CodeNarc 3.3.0 +- CoffeeLint 5.2.11 +- Cppcheck 2.13.0 +- Credo 1.7.2 +- CSSLint (deprecated) 1.0.5 +- dartanalyzer 3.3.3 +- detekt 1.23.5 +- ESLint 8.57.0 +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- Jackson Linter 2.15.2 +- JSHint (deprecated) 2.13.6 +- markdownlint 0.33.0 +- PHP Mess Detector 2.14.1 +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- Prospector 1.10.3 +- PSScriptAnalyzer 1.21.0 +- Pylint 3.1.0 +- Pylint (deprecated) 1.9.5 +- remark-lint 9.1.2 +- Revive 1.3.7 +- **[RuboCop 1.63.1](https://github.com/rubocop/rubocop/releases/tag/v1.63.1) (updated from 1.60.2)** +- Scalastyle 1.5.1 +- **[Semgrep 1.68.0](https://github.com/semgrep/semgrep/releases/tag/v1.68.0) (updated from 1.66.0)** +- ShellCheck v0.9.0 +- **[SonarC# 9.23](https://github.com/SonarSource/sonar-dotnet/tags) (updated from 9.19)** +- SonarVB 8.15 +- Spectral 1.18.1 +- SpotBugs 4.8.3 +- SQLint 0.2.1 +- Staticcheck 2023.1.6 +- Stylelint 15.10.3 +- SwiftLint 0.54.0 +- Tailor 0.12.0 +- **[Trivy 0.49.1](https://github.com/aquasecurity/trivy/releases/tag/v0.49.1) (updated from 0.47.0)** +- TSLint (deprecated) 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.19.0 diff --git a/docusaurus/docs/release-notes/cloud/2024/2024-05-cloud.md b/docusaurus/docs/release-notes/cloud/2024/2024-05-cloud.md new file mode 100644 index 0000000000..09afa07510 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2024/2024-05-cloud.md @@ -0,0 +1,95 @@ +--- +title: Cloud May 2024 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud May 2024. +included_jira_versions: ['2024.05'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.10.305 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.14.11 +slug: /release-notes/cloud/cloud-2024-05 +--- + + +These release notes are for the Codacy Cloud updates during May 2024. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- You can now [create a new coding standard](../../../organizations/using-coding-standards.md#creating) by adjusting the sensitivity of preset category groups. This option is also available when setting up a new organization to create a default coding standard. (ALA-824) + + ![New coding standard presets](../../images/ala-824.png) + +- Improved repositories integration with the Git provider: + + - Now the integration is always enabled. For [GitLab](../../../repositories-configure/integrations/gitlab-integration.md#refreshing) and [Bitbucket](../../../repositories-configure/integrations/bitbucket-integration.md#refreshing), repository admins are able to refresh the integration in case the user who added the repository to Codacy loses access to the repository. + - For consistency across the Codacy app, we renamed the [GitLab](../../../repositories-configure/integrations/gitlab-integration.md#configuring) and [Bitbucket](../../../repositories-configure/integrations/bitbucket-integration.md#configuring) integration options - **Pull Request Status** is now **Status checks**, **Pull Request Comment** is now **Issue annotations**, and **Pull Request Summary** is now **Issue summaries**. (CY-6612) + + ![Repository Git provider integration](../../images/cy-6612.png) + +- Organization admins now see on the **Repositories list** the total number of repositories that have already been added to the organization. (CY-7305) + + ![Total number of repositories](../../images/cy-7305.png) + +- Added duplication analysis support for Dart via [jscpd](https://github.com/kucherenko/jscpd). (TCE-983) +- Added support for an alternative RuboCop configuration file for Codacy analysis, `.rubocop-codacy.yml`. (TCE-983) +- Added dependency vulnerability scanning support for Java via [Trivy](https://trivy.dev/). (TCE-794) + +## Bug fixes + +- Fixed an issue that caused [Security and risk management](../../../organizations/managing-security-and-risk.md) to miscalculate the counts of open findings in aggregated data. (TAROT-2682) +- Fixed an issue preventing the analysis of a file that had previously been [ignored using the Codacy configuration file](../../../repositories-configure/codacy-configuration-file.md#ignore-files) and later removed from `exclude_path` setting. (TCE-924) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 1.5.0 +- Bandit 1.7.5 +- Brakeman 4.3.1 +- bundler-audit (deprecated) 0.9.1 +- **[Checkov 3.2.79](https://github.com/bridgecrewio/checkov/releases/tag/3.2.79) (updated from 3.2.37)** +- Checkstyle 10.13.0 +- Clang-Tidy 10.0.1 +- CodeNarc 3.3.0 +- CoffeeLint 5.2.11 +- Cppcheck 2.13.0 +- Credo 1.7.2 +- CSSLint (deprecated) 1.0.5 +- **[dartanalyzer 3.3.4](https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md) (updated from 3.3.3)** +- detekt 1.23.5 +- ESLint 8.57.0 +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- Jackson Linter 2.15.2 +- JSHint (deprecated) 2.13.6 +- markdownlint 0.33.0 +- PHP Mess Detector 2.14.1 +- **[PHP_CodeSniffer 3.9.2](https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/tag/3.9.2) (updated from 3.7.2)** +- PMD 6.55.0 +- Prospector 1.10.3 +- PSScriptAnalyzer 1.21.0 +- Pylint 3.1.0 +- Pylint (deprecated) 1.9.5 +- remark-lint 9.1.2 +- Revive 1.3.7 +- RuboCop 1.63.1 +- Scalastyle 1.5.1 +- Semgrep 1.68.0 +- ShellCheck v0.9.0 +- SonarC# 9.23 +- SonarVB 8.15 +- Spectral 1.18.1 +- SpotBugs 4.8.3 +- SQLint 0.2.1 +- Staticcheck 2023.1.6 +- Stylelint 15.10.3 +- SwiftLint 0.54.0 +- Tailor 0.12.0 +- Trivy 0.49.1 +- TSLint (deprecated) 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.19.0 diff --git a/docusaurus/docs/release-notes/cloud/2024/2024-06-cloud.md b/docusaurus/docs/release-notes/cloud/2024/2024-06-cloud.md new file mode 100644 index 0000000000..a68c6e11fd --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2024/2024-06-cloud.md @@ -0,0 +1,86 @@ +--- +title: Cloud June 2024 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud June 2024. +included_jira_versions: ['2024.06'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.14.11 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.16.17 +slug: /release-notes/cloud/cloud-2024-06 +--- + + +These release notes are for the Codacy Cloud updates during June 2024. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- You can now [filter Security and Risk Management findings by scan type](../../../organizations/managing-security-and-risk.md#scan-types) to see results based on the detection method, including Code Scanning, Software Composition Analysis, Exposed Secrets, Infrastructure as Code, and Penetration Testing. (TCE-1028) +- For increased security, Codacy now sets [automatic expiration timeouts](../../../account/user-session-management.md) for every session. (PLUTO-879) +- The Codacy configuration file now supports a [new field `include_paths`](../../../repositories-configure/codacy-configuration-file.md#include-files) that lets you explicitly specify files or directories to include in the analysis. This is particularly useful for bypassing files or directories that are ignored by default or specified in `exclude_paths`. (TCE-977) +- Codacy can now detect duplicated code in the following languages: CoffeeScript, Elixir, Groovy, Objective C, Rust, Visual Basic (TCE-1021) + +## Bug fixes + +- Fixed an issue that caused missing data in the user interface when navigating the Gate policies settings in the Codacy app. (PLUTO-918) +- Fixed an issue that caused discrepancies in reported coverage variation values. (TCE-948) +- Fixed a case-sensitivity issue when analyzing file paths in coverage reports. (TCE-982) + +## Deprecations + +- On June 5th, Codacy [stopped sending status checks from the old Coverage engine](/release-notes/cloud/cloud-2023-11-23-new-coverage-engine-status-checks#deprecation-and-removal-calendar-for-the-old-coverage-engine-status-checks). (ALA-767) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 1.5.0 +- Bandit 1.7.5 +- Brakeman 4.3.1 +- bundler-audit (deprecated) 0.9.1 +- Checkov 3.2.79 +- Checkstyle 10.13.0 +- Clang-Tidy 10.0.1 +- CodeNarc 3.3.0 +- CoffeeLint 5.2.11 +- Cppcheck 2.13.0 +- Credo 1.7.2 +- CSSLint (deprecated) 1.0.5 +- **[dartanalyzer 3.4.2](https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md) (updated from 3.3.4)** +- detekt 1.23.5 +- ESLint 8.57.0 +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- **[Hadolint 2.12.0](https://github.com/hadolint/hadolint/releases/tag/v2.12.0) (updated from 1.18.2)** +- Jackson Linter 2.15.2 +- JSHint (deprecated) 2.13.6 +- markdownlint 0.33.0 +- PHP Mess Detector 2.14.1 +- PHP_CodeSniffer 3.9.2 +- PMD 6.55.0 +- Prospector 1.10.3 +- PSScriptAnalyzer 1.21.0 +- Pylint 3.1.0 +- Pylint (deprecated) 1.9.5 +- remark-lint 9.1.2 +- Revive 1.3.7 +- **[RuboCop 1.64.1](https://github.com/rubocop/rubocop/releases/tag/v1.64.1) (updated from 1.63.1)** +- Scalastyle 1.5.1 +- **[Semgrep 1.77.0](https://github.com/semgrep/semgrep/releases/tag/v1.77.0) (updated from 1.68.0)** +- ShellCheck v0.9.0 +- SonarC# 9.23 +- SonarVB 8.15 +- Spectral 1.18.1 +- SpotBugs 4.8.3 +- SQLint 0.2.1 +- Staticcheck 2023.1.6 +- **[Stylelint 16.6.1](https://github.com/stylelint/stylelint/releases/tag/16.6.1) (updated from 15.10.3)** +- SwiftLint 0.54.0 +- Tailor 0.12.0 +- **[Trivy 0.52.2](https://github.com/aquasecurity/trivy/releases/tag/v0.52.2) (updated from 0.49.1)** +- TSLint (deprecated) 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.19.0 diff --git a/docusaurus/docs/release-notes/cloud/2024/2024-07-cloud.md b/docusaurus/docs/release-notes/cloud/2024/2024-07-cloud.md new file mode 100644 index 0000000000..55141c3459 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2024/2024-07-cloud.md @@ -0,0 +1,74 @@ +--- +title: Cloud July 2024 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud July 2024. +included_jira_versions: ['2024.07'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.16.17 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.22.33 +slug: /release-notes/cloud/cloud-2024-07 +--- + + +These release notes are for the Codacy Cloud updates during July 2024. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- You can now [upload Dynamic Application Security Testing (DAST) findings](../../../codacy-api/examples/uploading-dast-results.md) which appear in the [Security and Risk Management dashboard](../../../organizations/managing-security-and-risk.md#dashboard). (TAROT-2657) +- The Quality Issues page now groups issues detected in a repository by code pattern and displays them as a list for quick filtering. (ALA-1147) + +## Tool versions + +Codacy Cloud now includes the tool versions below. The tools that were recently updated are highlighted in bold: + +- Ameba 1.5.0 +- Bandit 1.7.5 +- Brakeman 4.3.1 +- bundler-audit (deprecated) 0.9.1 +- Checkov 3.2.79 +- Checkstyle 10.13.0 +- Clang-Tidy 10.0.1 +- CodeNarc 3.3.0 +- CoffeeLint 5.2.11 +- Cppcheck 2.13.0 +- Credo 1.7.2 +- CSSLint (deprecated) 1.0.5 +- dartanalyzer 3.4.2 +- detekt 1.23.5 +- ESLint 8.57.0 +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 2.12.0 +- Jackson Linter 2.15.2 +- JSHint (deprecated) 2.13.6 +- **[markdownlint 0.34.0](https://github.com/DavidAnson/markdownlint/releases/tag/v0.34.0) (updated from 0.33.0)** +- PHP Mess Detector 2.14.1 +- **[PHP_CodeSniffer 3.10.1](https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/tag/3.10.1) (updated from 3.9.2)** +- PMD 6.55.0 +- Prospector 1.10.3 +- PSScriptAnalyzer 1.21.0 +- Pylint 3.1.0 +- Pylint (deprecated) 1.9.5 +- remark-lint 9.1.2 +- Revive 1.3.7 +- RuboCop 1.64.1 +- Scalastyle 1.5.1 +- **[Semgrep 1.78.0](https://github.com/semgrep/semgrep/releases/tag/v1.78.0) (updated from 1.77.0)** +- ShellCheck v0.9.0 +- SonarC# 9.23 +- SonarVB 8.15 +- Spectral 1.18.1 +- SpotBugs 4.8.3 +- SQLint 0.2.1 +- Staticcheck 2023.1.6 +- Stylelint 16.6.1 +- SwiftLint 0.54.0 +- Tailor 0.12.0 +- **[Trivy 0.53.0](https://github.com/aquasecurity/trivy/releases/tag/v0.53.0) (updated from 0.52.2)** +- TSLint (deprecated) 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.19.0 diff --git a/docusaurus/docs/release-notes/cloud/2024/2024-08-cloud.md b/docusaurus/docs/release-notes/cloud/2024/2024-08-cloud.md new file mode 100644 index 0000000000..5860e1a377 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2024/2024-08-cloud.md @@ -0,0 +1,40 @@ +--- +title: Cloud August 2024 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud August 2024. +included_jira_versions: ['2024.08'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.22.33 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.22.74 +slug: /release-notes/cloud/cloud-2024-08 +--- + + +These release notes are for the Codacy Cloud updates during August 2024. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements +- Semgrep now supports PL/SQL rules from Checkmarx (TCE-942) +- Radon now calculates the average complexity of each file (TCE-1091) +- Show status checks protection rule value everywhere in the UI (ALA-1160) +- Several improvements made on the repository code patterns page (ALA-1080) +- Multiple coding standards supported: apply more than one coding standards to a single repository (ALA-1119) +- Allowing configurations in repositories code patterns, while following a Coding Standard (ALA-1120) +- Issues now grouped by patterns in Issues page (ALA-1147) +- Support of poetry.lock files when doing dependency checks with Trivy (TCE-1005) + +## Bug fixes +- Fixed a problem with Sonar C# analysing non .cs files creating false positives (IO-1156) +- Fixed a problem with the repository code patterns page not applying the filters correctly (ALA-1222) +- Fixed a problem with losing the context of the branch when navigating to some pages, so now if you are getting info on a specific branch, you'll see information on the same branch on other pages (ALA-1214) + +## Tool updates +- **codacy-checkstyle** has a new version: **10.17.0** ( updated from 10.13.0 ) +- **codacy-pylint-python3** has a new version: **3.2.6** ( updated from 3.1.0 ) +- **codacy-rubocop** has a new version: **1.65.1** ( updated from 1.64.1 ) +- **codacy-sonar-csharp** has a new version: **9.32** ( updated from 9.23 ) +- **codacy-swiftlint** has a new version: **0.55.1** ( updated from 0.54.0 ) +- **codacy-dartanalyzer** has a new version: **3.5.2** ( updated from 3.4.2 ) +- **codacy-trivy** has a new version: **0.54.1** ( updated from 0.53.0 ) + diff --git a/docusaurus/docs/release-notes/cloud/2024/2024-09-cloud-adding-eslint9-and-pmd7.md b/docusaurus/docs/release-notes/cloud/2024/2024-09-cloud-adding-eslint9-and-pmd7.md new file mode 100644 index 0000000000..f2316327d5 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2024/2024-09-cloud-adding-eslint9-and-pmd7.md @@ -0,0 +1,31 @@ +--- +title: Adding ESLint 9 and PMD 7 as new supported tools September, 2024 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +slug: /release-notes/cloud/cloud-2024-09-adding-eslint9-and-pmd7 +--- + + +On September, 2024 Codacy added ESLint 9 and PMD 7 as new supported tools and it will deprecate ESLint 8 and PMD 6 soon: + +- ESLint 9 and PMD 7 won't be enabled by default for new repositories. Update these tools version to benefit from the new features and fixes. + +- ESLint 8 and PMD 6 will still be available but Codacy will stop providing updates for this version of the tool, and it will be deprecated + +- ESLint 7 will be deleted + +## Migrating your configuration files to use ESLint 9 + +ESLint 9 [introduces breaking changes](https://eslint.org/blog/2024/04/eslint-v9.0.0-released/) that may affect the analysis of your repositories. + +**If you're using the following [ESLint configuration files](https://eslint.org/docs/user-guide/configuring/configuration-files) ".eslintrc.js", ".eslintrc.cjs", ".eslintrc.yaml", ".eslintrc.yml", ".eslintrc.json"** you must update your configuration file before enabling ESLint 9 on Codacy because the only **[ESLint configuration files](https://eslint.org/docs/user-guide/configuring/configuration-files) supported are "eslint.config.js", "eslint.config.mjs", "eslint.config.cjs" and you can check how to create them [here](https://eslint.org/docs/latest/use/configure/configuration-files)** + +If you have any questions or need help, please contact [support@codacy.com](mailto:support@codacy.com). + +## PMD 7 + +PMD 7 [introduces some changes](https://pmd.github.io/2024/03/22/PMD-7-is-here/) + +**PMD 7 now supports Kotlin, Swift and TypeScript, apart from the other languages already part of the previous version of the tool** + +If you have any questions or need help, please contact [support@codacy.com](mailto:support@codacy.com). diff --git a/docusaurus/docs/release-notes/cloud/2024/2024-09-cloud.md b/docusaurus/docs/release-notes/cloud/2024/2024-09-cloud.md new file mode 100644 index 0000000000..e5bb0cc061 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2024/2024-09-cloud.md @@ -0,0 +1,36 @@ +--- +title: Cloud September 2024 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud September 2024. +included_jira_versions: ['2024.09'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.22.74 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.24.6 +slug: /release-notes/cloud/cloud-2024-09 +--- + + +These release notes are for the Codacy Cloud updates during September 2024. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements +- Jscpd supports new languages: Rust, CoffeeScript, Objective C, Elixir, Groovy, and VisualBasic (TCE-1021) +- The issue card now shows next to the code pattern, the source of the configuration requiring that pattern: repository rules, coding standards, or configuration file (ALA-1231) +- When applying multiple coding standards to the same repository, if a conflict between parameters in the same enforced pattern is found, it shows a warning on the repository code patterns page (ALA-1232) +- In the repository code patterns show a tooltip in enforced tools and patterns with the names of the Coding Standards that require those tools or patterns (ALA-1230) +- Revamped coverage: deleted old coverage pages and added a new repository page for coverage with new insights (CY-7340) +- Changed the order by the findings list of SRM are sorted, which means now they're sorted by first detected (TAROT-2822) +- Readability improvements in the tooltip of the 'Open findings (last 3 months)' chart in the SRM tab (TAROT-2825) +- Added new field with open findings of the current week on the first widget of SRM overview page (TAROT-2823) + +## Bug fixes +- Fixed a problem where an analysis could have extra Patterns enabled when using a coding standard alongside repository-level customizations (ALA-1247) +- Fixed a bug where some tools could be missing, if 'back' and 'next' actions would be performed multiple times in a row while editing a coding standard (ALA-1239) +- Fixed an issue where existing DAST findings (in the SRM tab) for a given host would be closed if a DAST report for a different host was submitted (TAROT-2807) + +## Tool updates +- **Detekt** has a new version: **1.23.7** ( updated from 1.23.5 ) +- **Spotbugs** has a new version: **4.8.4** ( updated from 4.8.3 ) +- **TSQLlint** has a new version: **1.15.3** ( updated from 1.11.1 ) +- **Trivy** has a new version: **0.55.2** ( updated from 0.54.1 ) diff --git a/docusaurus/docs/release-notes/cloud/2024/2024-10-cloud.md b/docusaurus/docs/release-notes/cloud/2024/2024-10-cloud.md new file mode 100644 index 0000000000..1d5f2e1b34 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2024/2024-10-cloud.md @@ -0,0 +1,42 @@ +--- +title: Cloud October 2024 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud October 2024. +included_jira_versions: ['2024.10'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.24.6 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.24.57 +slug: /release-notes/cloud/cloud-2024-10 +--- + + +These release notes are for the Codacy Cloud updates during October 2024. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements +- The "Status" filter in Code Patterns now shows a count for each option, making it easier to see how many items match each status. (ALA-1281) +- New cross-search feature allows you to search patterns across all tools in Coding Standards. (ALA-1272, ALA-1249) +- Expanded filtering options in Coding Standards: you can now filter by search term, recommended status, and other criteria. (ALA-1271) +- Updated the way issues are displayed: now shown as occurrences per kLoC instead of a percentage for better clarity. (ALA-1245) +- You can now duplicate coding standards for quicker setup and management. (ALA-1235) +- Added Shift+Click functionality to select multiple items at once in checkbox lists. (CY-7355) +- Improved navigation: switching between organizations or repositories via the top navigation bar now keeps you on the same page in the newly selected section. (CY-7353) +- Redesigned coverage page: removed old pages and added a new repository coverage page, featuring updated insights. (CY-7332) +- Improved seat count accuracy in Enterprise plans: only users contributing to private repositories occupy a seat, optimizing license usage. (PLUTO-867) +- Enhanced security management: now possible to ignore or restore ignored security findings, keeping your metrics accurate. [Check the documentation for more details] (https://docs.codacy.com/organizations/managing-security-and-risk/#ignoring-findings) (TAROT-2863) +- Cleaned up and organized the menu sections for Quality, Coverage, and Settings to streamline navigation. (TAROT-2844) + +## Tool updates +- **CheckStyle** has a new version: **10.18.2** ( updated from 10.17.0 ) +- **DartAnalyzer** has a new version: **3.5.4** ( updated from 3.5.2 ) +- **ESLint** has a new version: **9.12.0** ( updated from 9.11.1 ) +- **Revive** has a new version: **1.4.0** ( updated from 1.3.7 ) +- **PMD** has a new version: **7.6.0** ( updated from 7.5.0 ) +- **Pylint** has a new version: **3.3.1** ( updated from 3.2.6 ) +- **Rubocop** has a new version: **1.66.1** ( updated from 1.65.1 ) +- **StaticCheck** has a new version: **2024.1.1** ( updated from 2023.1.6 ) +- **StyleLint** has a new version: **16.10.0** ( updated from 16.6.1 ) +- **SwiftLint** has a new version: **0.57.0** ( updated from 0.55.1 ) +- **Trivy** has a new version: **0.56.2** ( updated from 0.55.2 ) +- **TSQLLint** has a new version: **1.16.0** ( updated from 1.15.3 ) diff --git a/docusaurus/docs/release-notes/cloud/2024/2024-11-cloud.md b/docusaurus/docs/release-notes/cloud/2024/2024-11-cloud.md new file mode 100644 index 0000000000..7c0614cc15 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2024/2024-11-cloud.md @@ -0,0 +1,85 @@ +--- +title: Cloud November 2024 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud November 2024. +included_jira_versions: ['2024.11'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/7.24.6 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/7.24.57 +slug: /release-notes/cloud/cloud-2024-11 +--- + + +These release notes are for the Codacy Cloud updates during November 2024. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements +- Enhanced Bulk Updates for Coding Standards: Updating Coding Standards patterns now respects your search and recommended filters. (ALA-1322) +- Revamped Suggested People Widget: Premium users now see an always-visible Suggested People widget with a sleek new design. (ALA-1302) +- Improved Coding Standards Filters: Filters now display totals and only include relevant, available options. (ALA-1296) +- SRM Findings Count: You can now see the total count of SRM findings without applying filters. (TAROT-2910) +- ZAP DAST Report ID Management: Improved ID generation for findings from ZAP DAST reports to avoid collisions. (TAROT-2870) +- Support for Custom Extensions: We now support custom file extensions with capital letters. (TCE-1150) + + +## Bug fixes +- GitLab Activity Fix: Addressed an issue with GitLab activity flags based on commit activity in the past 90 days. (PLUTO-1148) +- Accurate Seat Count for Committers: Adjusted the seat count to include only active authors and committers with a valid provider ID. (PLUTO-1139) +- GitHub Enterprise Account Validation: Codacy now prevents connecting an enterprise account if its email is already linked to another GitHub account. (PLUTO-1124) +- Improved Login Handling for Managed Users: Fixed an issue where GitHub Cloud Enterprise users with Managed Accounts could log into older accounts if emails were shared. (PLUTO-1123) +- Branch Name URL Fixes: Resolved issues with branch names containing slashes, like "new/branch," to ensure proper functionality. (PLUTO-1117) +- Ignored Files Page Loading Fix: Resolved an issue preventing the Ignored Files page from loading correctly. (PLUTO-1091) +- Seamless PR Analysis: Pull request analysis no longer stalls when new commits are pushed during ongoing analysis. (TAROT-2917) + +## Tools Updated +- **CheckStyle** has a new version: **10.18.2** ( updated from 10.17.0 ) +- **DartAnalyzer** has a new version: **3.5.4** ( updated from 3.5.2 ) +- **Eslint-9** has a new version: **9.12.0** ( updated from 9.11.1 ) +- **Revive** has a new version: **1.4.0** ( updated from 1.3.7 ) +- **PMD-7** has a new version: **7.6.0** ( updated from 7.5.0 ) +- **Pylint** has a new version: **3.3.1** ( updated from 3.2.6 ) +- **Rubocop** has a new version: **1.66.1** ( updated from 1.65.1 ) +- **StaticCheck** has a new version: **2024.1.1** ( updated from 2023.1.6 ) +- **StyleLint** has a new version: **16.10.0** ( updated from 16.6.1 ) +- **SwiftLint** has a new version: **0.57.0** ( updated from 0.55.1 ) +- **Trivy** has a new version: **0.56.2** ( updated from 0.55.2 ) +- **TSQLLint** has a new version: **1.16.0** ( updated from 1.15.3 ) + +## Tools not Updated +- **AlignCheck**: 1.0.0 +- **Ameba**: 1.5.0 +- **Bandit**: 1.7.5 +- **Brakeman**: 4.3.1 +- **Bundler-Audit**: 0.9.1 +- **Checkov**: 3.2.79 +- **Clang-Tidy**: 10.0.1 +- **Codenarc**: 3.3.0 +- **CoffeeLint**: 5.2.11 +- **Credo**: 1.7.2 +- **Deadcode**: 1.0.0 +- **Detekt**: 1.23.7 +- **Eslint-8**: 8.57.0 +- **Eslint-6**: 7.32.0 +- **Faux-Pas**: 1.7.2 +- **FlawFinder**: 2.0.19 +- **GoSec**: 2.15.0 +- **Jackson-Linter**: 2.15.2 +- **JSHint**: 2.13.6 +- **MarkdownLint**: 0.33.0 +- **PHP Mess Detector**: 2.14.1 +- **PMD-6**: 6.55.0 +- **Prospector**: 1.10.3 +- **PSScriptAnalyzer**: 1.21.0 +- **Pylint-old version**: 1.9.5 +- **Remark-Lint**: 9.1.2 +- **Roslyn**: 1.19.0 +- **Scalameta-Pro**: 1.4.4 +- **Scalastyle**: 1.5.1 +- **Semgrep**: 1.78.0 +- **Sonar CSharp**: 9.32 +- **Sonar Visual Basic**: 8.13 +- **Spectral**: 1.18.1 +- **Spotbugs**: 4.8.4 +- **SQLint**: 0.2.1 +- **Tailor**: 0.12.0 \ No newline at end of file diff --git a/docusaurus/docs/release-notes/cloud/2024/2024-12-cloud.md b/docusaurus/docs/release-notes/cloud/2024/2024-12-cloud.md new file mode 100644 index 0000000000..d32484a832 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2024/2024-12-cloud.md @@ -0,0 +1,73 @@ +--- +title: Cloud December 2024 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud December 2024. +included_jira_versions: ['2024.12'] +codacy_tools_version_old: https://github.com/codacy/tools/releases/tag/7.25.53 +codacy_tools_version_new: https://github.com/codacy/tools/releases/tag/7.25.87 +slug: /release-notes/cloud/cloud-2024-12 +--- + + +These release notes are for the Codacy Cloud updates during December 2024. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements +- **Enabled enterprise section for all users:** GitHub Enterprise Cloud views are now available - [Check the official documentation](https://docs.codacy.com/enterprise-cloud/github-enterprise-cloud) (PLUTO-1195) +- **Created SRM dependencies banner:** SRM dependencies tab allows users to view dependency lists, their distribution across repositories, versions, and associated security findings. (TAROT-3079) + +## Tool versions +- **Aligncheck**: 1.0.0 +- **Ameba**: 1.5.0 +- **Bandit**: 1.7.5 +- **Brakeman**: 4.3.1 +- **Bundler-audit**: 0.9.1 +- **Checkov**: 3.2.79 +- **Checkstyle**: 10.20.1 +- **Clang-tidy**: 10.0.1 +- **Codenarc**: 3.3.0 +- **Codesniffer**: 3.10.1 +- **Coffeelint**: 5.2.11 +- **Cppcheck**: 2.13.0 +- **Credo**: 1.7.2 +- **Csslint**: 1.0.5 +- **Dartanalyzer**: 3.5.4 +- **Deadcode**: 1.0.0 +- **Detekt**: 1.23.7 +- **Eslint v7**: 7.32.0 +- **Eslint v9**: 9.12.0 +- **Faux-pas**: 1.7.2 +- **Flawfinder**: 2.0.19 +- **Gorevive**: 1.4.0 +- **Gosec**: 2.15.0 +- **Hadolint**: 2.12.0 +- **Jackson-linter**: 2.15.2 +- **Jshint**: 2.13.6 +- **Markdownlint**: 0.33.0 +- **Phpmd**: 2.14.1 +- **Pmd v6**: 6.55.0 +- **Pmd v7**: 7.6.0 +- **Prospector**: 1.10.3 +- **Psscriptanalyzer**: 1.21.0 +- **Pylint v1**: 1.9.5 +- **Pylint v3**: 3.3.1 +- **Remarklint**: 9.1.2 +- **Roslyn**: 1.19.0 +- **Rubocop**: 1.68.0 +- **Scalameta Pro**: 1.4.4 +- **Scalastyle**: 1.5.1 +- **Semgrep**: 1.78.0 +- **Shellcheck**: v0.9.0 +- **Sonar CSharp**: 9.32 +- **Sonar VB**: 8.13 +- **Spectral**: 1.18.1 +- **Spotbugs**: 4.8.4 +- **Sqlint**: 0.2.1 +- **Staticcheck**: 2024.1.1 +- **Swiftlint**: 0.57.0 +- **Tailor**: 0.12.0 +- **Trivy**: 0.57.1 +- **Tslint**: 6.1.3 +- **Tsqllint**: 1.16.0 \ No newline at end of file diff --git a/docusaurus/docs/release-notes/cloud/2025/2025-01-cloud.md b/docusaurus/docs/release-notes/cloud/2025/2025-01-cloud.md new file mode 100644 index 0000000000..f148c2603c --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2025/2025-01-cloud.md @@ -0,0 +1,80 @@ +--- +title: Cloud January 2025 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud January 2025. +included_jira_versions: ['2025.01'] +codacy_tools_version_old: https://github.com/codacy/tools/releases/tag/7.25.88 +codacy_tools_version_new: https://github.com/codacy/tools/releases/tag/7.25.130 +slug: /release-notes/cloud/cloud-2025-01 +--- + + +These release notes are for the Codacy Cloud updates during January 2025. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements +- **Use goals for the repository page:** Added color indicators to the organization’s repositories list metrics, highlighting when values exceed or fall short of set goals. (ALA-1416) +- **Use new API information for repository goals:** Repository table now visually differentiates metrics with colors, indicating whether they meet the defined goals. (ALA-1402) +- **GitHub Enterprise Managed accounts locked out of Codacy:** Accounts without verified emails can now be created on Codacy by assigning a random email. This ensures GitHub Enterprise users without valid emails can access the platform. (PLUTO-1243) +- **Revamp SRM findings:** Experience a fresh, revamped look for your Security Findings! 🚀 (TAROT-3035) + +## Bug fixes +- **Not processing GitHub events for updates on custom properties:** While the issue resolved itself, we used the opportunity to enhance log readability and tracking for improved debugging. (PLUTO-1253) + +## Tool versions +- **DartAnalyzer** has a new version: **3.6.1** ( updated from 3.5.4 ) +- **PMD v7** has a new version: **7.9.0** ( updated from 7.6.0 ) +- **Trivy** has a new version: **0.58.2** ( updated from 0.57.1 ) +- **Aligncheck**: 1.0.0 +- **Ameba**: 1.5.0 +- **Bandit**: 1.7.5 +- **Brakeman**: 4.3.1 +- **Bundler-audit**: 0.9.1 +- **Checkov**: 3.2.79 +- **Checkstyle**: 10.20.1 +- **Clang-tidy**: 10.0.1 +- **Codenarc**: 3.3.0 +- **Codesniffer**: 3.10.1 +- **Coffeelint**: 5.2.11 +- **Cppcheck**: 2.13.0 +- **Credo**: 1.7.2 +- **Csslint**: 1.0.5 +- **Deadcode**: 1.0.0 +- **Detekt**: 1.23.7 +- **Eslint v7**: 7.32.0 +- **Eslint v8**: 8.57.0 +- **Eslint v9**: 9.12.0 +- **Faux-pas**: 1.7.2 +- **Flawfinder**: 2.0.19 +- **Gorevive**: 1.4.0 +- **Gosec**: 2.15.0 +- **Hadolint**: 2.12.0 +- **Jackson-linter**: 2.15.2 +- **Jshint**: 2.13.6 +- **Markdownlint**: 0.33.0 +- **Phpmd**: 2.14.1 +- **Pmd v6**: 6.55.0 +- **Prospector**: 1.10.3 +- **Psscriptanalyzer**: 1.21.0 +- **Pylint v1**: 1.9.5 +- **Pylint v3**: 3.3.1 +- **Remarklint**: 9.1.2 +- **Roslyn**: 1.19.0 +- **Rubocop**: 1.68.0 +- **Scalameta Pro**: 1.4.4 +- **Scalastyle**: 1.5.1 +- **Semgrep**: 1.78.0 +- **Shellcheck**: v0.9.0 +- **Sonar CSharp**: 9.32 +- **Sonar VB**: 8.13 +- **Spectral**: 1.18.1 +- **Spotbugs**: 4.8.4 +- **Sqlint**: 0.2.1 +- **Staticcheck**: 2024.1.1 +- **Staticcheck**: 2024.1.1 +- **StyleLint**: 16.10.0 +- **Tailor**: 0.12.0 +- **Tslint**: 6.1.3 +- **Tsqllint**: 1.16.0 \ No newline at end of file diff --git a/docusaurus/docs/release-notes/cloud/2025/2025-02-cloud-adding-ruff-lizard.md b/docusaurus/docs/release-notes/cloud/2025/2025-02-cloud-adding-ruff-lizard.md new file mode 100644 index 0000000000..e5d5ce6de9 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2025/2025-02-cloud-adding-ruff-lizard.md @@ -0,0 +1,40 @@ +--- +title: Adding Lizard and Ruff as new supported tools February, 2025 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +slug: /release-notes/cloud/cloud-2025-02-adding-ruff-lizard +--- + + +## Lizard + +With Lizard, Codacy can now detect and report code complexity issues across 15 different languages, helping developers write cleaner, more maintainable code. Specifically, it will: + +- Flag methods with cyclomatic complexity above the set threshold +- Report functions that have too many parameters +- Identify methods that exceed a reasonable number of lines (excluding comments) + +These insights will be available at the commit, PR, and file levels, integrated into GitHub and IDE, just like the issues reported by the other static analysis tools. + +### Important Notes + +Not enabled by default (for now): Since Lizard may introduce a significant number of new issues, we’ve opted not to activate it by default (though this may change in the future) + +### Tool vs. Metric + +Currently, Lizard operates as a tool, meaning it does not impact: + +- File-level complexity scores +- Complexity Quality gates +- Dashboard complexity metrics + +However, we plan to integrate it as a metric soon—stay tuned! + +## Ruff + +We've increased our offering in Python tools and we added Ruff as our new tool for Quality. +Ruff is a fast Python linter designed to be a drop-in replacement for tools like Flake8, isort, and Black. This tool significantly outperforms traditional Python linters, making it ideal for large codebases. Ruff supports over 500 linting rules and type-aware linting. + +Currently it's compatible with **Python up to 3.13** + +If you have any questions or need help, please contact [support@codacy.com](mailto:support@codacy.com). diff --git a/docusaurus/docs/release-notes/cloud/2025/2025-02-cloud.md b/docusaurus/docs/release-notes/cloud/2025/2025-02-cloud.md new file mode 100644 index 0000000000..55fb6ae159 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2025/2025-02-cloud.md @@ -0,0 +1,82 @@ +--- +title: Cloud February 2025 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud February 2025. +included_jira_versions: ['2025.02'] +codacy_tools_version_old: https://github.com/codacy/tools/releases/tag/7.25.130 +codacy_tools_version_new: https://github.com/codacy/tools/releases/tag/8.0.36 +slug: /release-notes/cloud/cloud-2025-02 +--- + + +These release notes are for the Codacy Cloud updates during February 2025. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements +- **Issues dashboard improvements:** The **Issues dashboard activity chart** now includes a **Prevented Issues metric**, offering better insights into resolved issues. (ALA-1451) +- **New Organization Issues dashboard:** A fresh **Organization Issues dashboard** is now available. (ALA-1418) +- **Issues dashboard for Enterprise:** The **Issues Dashboard** is now accessible to **Enterprise users**. (ALA-1366) +- **Improved issue counters performance:** Optimized issue counting to enhance **Issues overview page** loading speed. (ALA-1413) +- **Accurate issue counters:** Fixed inconsistencies in **issue count displays** for different severity levels. (ALA-1412) +- **Expanded Security & Risk Management visibility:** The **Dependencies tab** inside the **Security and Risk Management page** is now visible to all users. While only proactive SCA customers can access its content, non-proactive users can explore it to consider upgrades. (TAROT-3106) + +## Bug fixes +- **Fix for missing repository files in Coverage Reporter:** Resolved an issue where **no matching file** was found when listing Git repository files. (ALA-1387) + +## Tool versions +- **Checkov** has a new version: **3.2.362** ( updated from 3.2.79 ) +- **Checkstyle** has a new version: **10.21.1** ( updated from 10.20.1 ) +- **Pylint v3** has a new version: **3.3.4** ( updated from 3.3.1 ) +- **Rubocop** has a new version: **1.70.0** ( updated from 1.68.0 ) +- **Trivy** has a new version: **0.59.1** ( updated from 0.58.2 ) +- **Aligncheck**: 1.0.0 +- **Ameba**: 1.5.0 +- **Bandit**: 1.7.5 +- **Brakeman**: 4.3.1 +- **Bundler-audit**: 0.9.1 +- **Clang-tidy**: 10.0.1 +- **Codenarc**: 3.3.0 +- **Codesniffer**: 3.10.1 +- **Coffeelint**: 5.2.11 +- **Cppcheck**: 2.13.0 +- **Credo**: 1.7.2 +- **Csslint**: 1.0.5 +- **DartAnalyzer**: 3.6.1 +- **Deadcode**: 1.0.0 +- **Detekt**: 1.23.7 +- **Eslint v7**: 7.32.0 +- **Eslint v8**: 8.57.0 +- **Eslint v9**: 9.12.0 +- **Faux-pas**: 1.7.2 +- **Flawfinder**: 2.0.19 +- **Gorevive**: 1.4.0 +- **Gosec**: 2.15.0 +- **Hadolint**: 2.12.0 +- **Jackson-linter**: 2.15.2 +- **Jshint**: 2.13.6 +- **Markdownlint**: 0.33.0 +- **Phpmd**: 2.14.1 +- **Pmd v6**: 6.55.0 +- **Pmd v7**: 7.9.0 +- **Prospector**: 1.10.3 +- **Psscriptanalyzer**: 1.21.0 +- **Pylint v1**: 1.9.5 +- **Remarklint**: 9.1.2 +- **Roslyn**: 1.19.0 +- **Scalameta Pro**: 1.4.4 +- **Scalastyle**: 1.5.1 +- **Semgrep**: 1.78.0 +- **Shellcheck**: v0.9.0 +- **Sonar CSharp**: 9.32 +- **Sonar VB**: 8.13 +- **Spectral**: 1.18.1 +- **Spotbugs**: 4.8.4 +- **Sqlint**: 0.2.1 +- **Staticcheck**: 2024.1.1 +- **Staticcheck**: 2024.1.1 +- **StyleLint**: 16.10.0 +- **Tailor**: 0.12.0 +- **Tslint**: 6.1.3 +- **Tsqllint**: 1.16.0 \ No newline at end of file diff --git a/docusaurus/docs/release-notes/cloud/2025/2025-03-cloud.md b/docusaurus/docs/release-notes/cloud/2025/2025-03-cloud.md new file mode 100644 index 0000000000..5227ec2baa --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2025/2025-03-cloud.md @@ -0,0 +1,76 @@ +--- +title: Cloud March 2025 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud March 2025. +included_jira_versions: ['2025.03'] +codacy_tools_version_old: https://github.com/codacy/tools/releases/tag/8.0.36 +codacy_tools_version_new: https://github.com/codacy/tools/releases/tag/8.0.101 +slug: /release-notes/cloud/cloud-2025-03 +--- + + +These release notes are for the Codacy Cloud updates during March 2025. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements or Bug fixes +- While this month there are no flashy features or UI tweaks to show for, our teams have been hard at work in improving our system stability, so that the Codacy you know and love will perform at its best in the near future. + +## Tool versions +- **ameba** has a new version: **1.6.4** ( updated from 1.5.0 ) +- **bandit** has a new version: **1.8.3** ( updated from 1.7.5 ) +- **checkstyle** has a new version: **10.21.4** ( updated from 10.21.1 ) +- **codenarc** has a new version: **3.6.0** ( updated from 3.3.0 ) +- **cppcheck** has a new version: **2.17.1** ( updated from 2.13.0 ) +- **credo** has a new version: **1.7.11** ( updated from 1.7.2 ) +- **detekt** has a new version: **1.23.8** ( updated from 1.23.7 ) +- **eslint** has a new version: **9.23.0** ( updated from 9.12.0 ) +- **gorevive** has a new version: **1.7.0** ( updated from 1.4.0 ) +- **pmd** has a new version: **7.11.0** ( updated from 7.9.0 ) +- **prospector** has a new version: **1.15.3** ( updated from 1.10.3 ) +- **psscriptanalyzer** has a new version: **1.24.0** ( updated from 1.21.0 ) +- **pylint** has a new version: **3.3.6** ( updated from 3.3.4 ) +- **roslyn** has a new version: **1.22.0** ( updated from 1.19.0 ) +- **rubocop** has a new version: **1.75.1** ( updated from 1.70.0 ) +- **ruff** has a new version: **0.11.2** ( updated from 0.9.7 ) +- **shellcheck** has a new version: **0.10.0** ( updated from v0.9.0 ) +- **spectral** has a new version: **1.21.4** ( updated from 1.18.1 ) +- **staticcheck** has a new version: **2025.1.1** ( updated from 2024.1.1 ) +- **stylelint** has a new version: **16.17.0** ( updated from 16.10.0 ) +- **swiftlint** has a new version: **0.58.2** ( updated from 0.57.0 ) +- **aligncheck**: **1.0.0** +- **brakeman**: **4.3.1** +- **bundler-audit**: **0.9.1** +- **checkov**: **3.2.362** +- **clang-tidy**: **10.0.1** +- **codesniffer**: **3.10.1** +- **coffeelint**: **5.2.11** +- **csslint**: **1.0.5** +- **dartanalyzer**: **3.6.1** +- **deadcode**: **1.0.0** +- **eslint v8**: **8.57.0** +- **eslint v7**: **7.32.0** +- **faux-pas**: **1.7.2** +- **flawfinder**: **2.0.19** +- **gosec**: **2.15.0** +- **hadolint**: **2.12.0** +- **jackson-linter**: **2.15.2** +- **jshint**: **2.13.6** +- **lizard**: **1.17.19** +- **markdownlint**: **0.33.0** +- **PHP Mess Detector**: **2.14.1** +- **pmd v6**: **6.55.0** +- **pylint v1**: **1.9.5** +- **remark-lint**: **9.1.2** +- **scalameta-pro**: **1.4.4** +- **scalastyle**: **1.5.1** +- **semgrep**: **1.78.0** +- **sonar-csharp**: **9.32** +- **sonar-visual-basic**: **8.13** +- **spotbugs**: **4.8.4** +- **sqlint**: **0.2.1** +- **tailor**: **0.12.0** +- **trivy**: **0.59.1** +- **tslint**: **6.1.3** +- **tsqllint**: **1.16.0** \ No newline at end of file diff --git a/docusaurus/docs/release-notes/cloud/2025/2025-04-cloud.md b/docusaurus/docs/release-notes/cloud/2025/2025-04-cloud.md new file mode 100644 index 0000000000..bfda67266b --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2025/2025-04-cloud.md @@ -0,0 +1,97 @@ +--- +title: Cloud April 2025 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud April 2025. +included_jira_versions: ['2025.04'] +codacy_tools_version_old: https://github.com/codacy/tools/releases/tag/8.0.101 +codacy_tools_version_new: https://github.com/codacy/tools/releases/tag/8.2.11-fixdepsversioning.3.c3fc4b0 +slug: /release-notes/cloud/cloud-2025-04 +--- + + +These release notes are for the Codacy Cloud updates during April 2025. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements and Bug fixes +- **Improved pattern documentation for ESLint 9 and Detekt**, enhancing clarity and usability. Updates are available on the Code Patterns page. (ALA-1494, ALA-1499, ALA-1550) +- **Fork and Pull workflows** are now supported in the **Codacy VS Code extension**. (CY-7448) +- Expanded the number of available **coding standards to 30**, giving users access to a broader set of stackable configurations. (TAROT-3310) +- Users can now categorize ignore reasons as **“Accepted use”** or **“False positive”** on the Security and Risk Management Findings page. (TAROT-3297) +- **Resolution deadlines** for findings can now be configured by admins and organization managers based on severity. (TAROT-3141) +- Added settings customization for **Guardrails** and **CLIv2** in the Codacy extension. (CY-7450) +- Integrated **CLIv2** into the Codacy extension to enable local analysis support. (CY-7445) +- **Codacy Guardrails** are now available in the **VS Code Copilot Agent**. (CY-7425) +- **Codacy Guardrails** are also now integrated into the **Windsurf IDE**. (CY-7424) +- Released a new version of **CLI v2** with **breaking changes** (PLUTO-1371): + +[Instructions for stable version](https://github.com/codacy/codacy-cli-v2?tab=readme-ov-file#breaking-changes) + +**Highlights** + +- Added support for additional tools: **Trivy, Pylint, PMD**. +- **SARIF** format is now supported as standard output +- CLI can run multiple tools and merge SARIF results +- **\[Breaking]** Generated configuration files are now placed under `.codacy/` +- **\[Breaking]** The `init` command now uses `api-token` instead of `project-token` + + +## Tool versions + +- **dartanalyzer** has a new version: **3.7.2** ( updated from 3.6.1 ) +- **eslint v9** has a new version: **9.24.0** ( updated from 9.23.0 ) +- **aligncheck**: 1.0.0 +- **ameba**: 1.6.4 +- **bandit**: 1.8.3 +- **brakeman**: 4.3.1 +- **bundler-audit**: 0.9. 1 +- **checkov**: 3.2.362 +- **checkstyle**: 10.21.4 +- **clang-tidy**: 10.0.1 +- **codenarc**: 3.6.0 +- **codesniffer**: 3.10.1 +- **coffeelint**: 5.2.11 +- **cppcheck**: 2.17.1 +- **credo**: 1.7.11 +- **csslint**: 1.0.5 +- **deadcode**: 1.0.0 +- **detekt**: 1.23.8 +- **eslint v8**: 8.57.0 +- **eslint v7**: 7.32.0 +- **faux-pas**: 1.7.2 +- **flawfinder**: 2.0.19 +- **gorevive**: 1.7.0 +- **gosec**: 2.15.0 +- **hadolint**: 2.12.0 +- **jackson-linter**: 2.15.2 +- **jshint**: 2.13.6 +- **lizard**: 1.17.19 +- **markdownlint**: 0.33.0 +- **php mess detector**: 2.14.1 +- **pmd v6**: 6.55.0 +- **pmd v7**: 7.11.0 +- **prospector**: 1.15.3 +- **psscriptanalyzer**: 1.24.0 +- **pylint v1**: 1.9.5 +- **pylint v3**: 3.3.6 +- **remark-lint**: 9.1.2 +- **roslyn**: 1.22.0 +- **rubocop**: 1.75.1 +- **ruff**: 0.11.2 +- **scalameta-pro**: 1.4.4 +- **scalastyle**: 1.5.1 +- **semgrep**: 1.78.0 +- **shellcheck**: 0.10.0 +- **sonar-csharp**: 9.32 +- **sonar-visual-basic**: 8.13 +- **spectral**: 1.21.4 +- **spotbugs**: 4.8.4 +- **sqlint**: 0.2.1 +- **staticcheck**: 2025.1.1 +- **stylelint**: 16.17.0 +- **swiftlint**: 0.58.2 +- **tailor**: 0.12.0 +- **trivy**: 0.59.1 +- **tslint**: 6.1.3 +- **tsqllint**: 1.16.0 \ No newline at end of file diff --git a/docusaurus/docs/release-notes/cloud/2025/2025-05-cloud.md b/docusaurus/docs/release-notes/cloud/2025/2025-05-cloud.md new file mode 100644 index 0000000000..8159ecf362 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2025/2025-05-cloud.md @@ -0,0 +1,82 @@ +--- +title: Cloud May 2025 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud May 2025. +included_jira_versions: ['2025.5'] +codacy_tools_version_old: https://github.com/codacy/tools/releases/tag/8.2.11-fixdepsversioning.3.c3fc4b0 +codacy_tools_version_new: https://github.com/codacy/tools/releases/tag/8.8.0-featureapirewireala1568.1.sha.9f54e7b +slug: /release-notes/cloud/cloud-2025-05 +--- + + +These release notes are for the Codacy Cloud updates during May 2025. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements and Bug fixes +- **Codacy Guardrails Documentation Launched**, Explore the new Guardrails documentation at [Codacy Docs](https://docs.codacy.com). (TCE-1250) +- **Issue Filters Fixed**: Resolved a bug affecting filters on the Issues page. Filtering should now work as expected. (ALA-1564) +- **Windows Support via WSL for Codacy Guardrails**: The MCP Server now runs on Windows environments via Windows Subsystem for Linux (WSL). (CY-7509) +- **Improved Error Visibility in VSCode Extension**: The extension now provides clearer messages for error scenarios, such as when the project is not a Git repository. (CY-7485) +- **Automatic Rule File Updates on Git Load**: When the MCP Server is installed, loading a Git repository will now automatically update the rules file. (CY-7519) + + +## Tool versions + +- **eslint v9** has a new version: **9.26.0** ( updated from 9.24.0 ) +- **pylint v3** has a new version: **3.3.7** ( updated from 3.3.6 ) +- **aligncheck**: 1.0.0 +- **ameba**: 1.6.4 +- **bandit**: 1.8.3 +- **brakeman**: 4.3.1 +- **bundler-audit**: 0.9. 1 +- **checkov**: 3.2.362 +- **checkstyle**: 10.21.4 +- **clang-tidy**: 10.0.1 +- **codenarc**: 3.6.0 +- **codesniffer**: 3.10.1 +- **coffeelint**: 5.2.11 +- **cppcheck**: 2.17.1 +- **credo**: 1.7.11 +- **csslint**: 1.0.5 +- **dartanalyzer**: 3.7.2 +- **deadcode**: 1.0.0 +- **detekt**: 1.23.8 +- **eslint v8**: 8.57.0 +- **eslint v7**: 7.32.0 +- **faux-pas**: 1.7.2 +- **flawfinder**: 2.0.19 +- **gorevive**: 1.7.0 +- **gosec**: 2.15.0 +- **hadolint**: 2.12.0 +- **jackson-linter**: 2.15.2 +- **jshint**: 2.13.6 +- **lizard**: 1.17.19 +- **markdownlint**: 0.33.0 +- **php mess detector**: 2.14.1 +- **pmd v6**: 6.55.0 +- **pmd v7**: 7.11.0 +- **prospector**: 1.15.3 +- **psscriptanalyzer**: 1.24.0 +- **pylint v1**: 1.9.5 +- **remark-lint**: 9.1.2 +- **roslyn**: 1.22.0 +- **rubocop**: 1.75.1 +- **ruff**: 0.11.2 +- **scalameta-pro**: 1.4.4 +- **scalastyle**: 1.5.1 +- **semgrep**: 1.78.0 +- **shellcheck**: 0.10.0 +- **sonar-csharp**: 9.32 +- **sonar-visual-basic**: 8.13 +- **spectral**: 1.21.4 +- **spotbugs**: 4.8.4 +- **sqlint**: 0.2.1 +- **staticcheck**: 2025.1.1 +- **stylelint**: 16.17.0 +- **swiftlint**: 0.58.2 +- **tailor**: 0.12.0 +- **trivy**: 0.59.1 +- **tslint**: 6.1.3 +- **tsqllint**: 1.16.0 \ No newline at end of file diff --git a/docusaurus/docs/release-notes/cloud/2025/2025-06-cloud-adding-sqlfluff-reek.md b/docusaurus/docs/release-notes/cloud/2025/2025-06-cloud-adding-sqlfluff-reek.md new file mode 100644 index 0000000000..a3b86e38e7 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2025/2025-06-cloud-adding-sqlfluff-reek.md @@ -0,0 +1,35 @@ +--- +title: Adding SQLFluff and Reek as new supported tools June, 2025 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +slug: /release-notes/cloud/cloud-2025-06-adding-sqlfluff-reek +--- + + +## SQLFluff + +We’re excited to announce support for SQLFluff, a powerful SQL linter and formatter for a wide variety of SQL dialects. With SQLFluff, Codacy can now analyze your SQL queries for both formatting and best practice issues. + +SQLFluff supports dialects like PostgreSQL, BigQuery, Snowflake, MySQL, and more. Key features include: + +- Detection of syntax and formatting inconsistencies +- Enforcing common SQL conventions (indentation, casing, spacing) +- Identification of potential logic errors in queries + +## Reek + +We’ve also added support for Reek, a static code analysis tool for Ruby that detects code smells. Reek helps you keep your codebase clean by identifying potential design problems and maintenance risks. + +With Reek, Codacy will now: + +- Highlight methods and classes that are too complex or long +- Detect duplicated code logic and unused parameters +- Report on design smells like long parameter lists or feature envy + +This makes it easier to maintain high-quality Ruby code and improve overall design. + +### Important Note + +None of these tools will be enabled by default: Due to the potential volume of new issues reported, SQLFluff or Reek are not enabled by default on existing repositories. You can enable them manually in your repository settings. + +If you have any questions or need help, please contact [support@codacy.com](mailto:support@codacy.com). diff --git a/docusaurus/docs/release-notes/cloud/2025/2025-06-cloud.md b/docusaurus/docs/release-notes/cloud/2025/2025-06-cloud.md new file mode 100644 index 0000000000..34793759ab --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2025/2025-06-cloud.md @@ -0,0 +1,81 @@ +--- +title: Cloud June 2025 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud June 2025. +included_jira_versions: ['2025.6'] +codacy_tools_version_old: https://github.com/codacy/tools/releases/tag/8.8.0-featureapirewireala1568.1.sha.9f54e7b +codacy_tools_version_new: https://github.com/codacy/tools/releases/tag/8.11.1 +slug: /release-notes/cloud/cloud-2025-06 +--- + + +These release notes are for the Codacy Cloud updates during June 2025. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements and Bug fixes +- Resolved an issue where an incorrect error banner appeared for GitHub repository integrations: "We can't analyze your pull requests because the GitHub integration is disabled. Please remove the repository from Codacy and add the repository again." This message is no longer shown erroneously. (TCE-1290) +- Fixed the query responsible for retrieving GitHub segments in the Codacy UI and improved the related database workflow. (LK-1442) + + +## Tool versions + + +- **checkov** has a new version: **3.2.442** ( updated from 3.2.362 ) +- **aligncheck**: 1.0.0 +- **ameba**: 1.6.4 +- **bandit**: 1.8.3 +- **brakeman**: 4.3.1 +- **bundler-audit**: 0.9. 1 +- **checkov**: 3.2.362 +- **checkstyle**: 10.21.4 +- **clang-tidy**: 10.0.1 +- **codenarc**: 3.6.0 +- **codesniffer**: 3.10.1 +- **coffeelint**: 5.2.11 +- **cppcheck**: 2.17.1 +- **credo**: 1.7.11 +- **csslint**: 1.0.5 +- **dartanalyzer**: 3.7.2 +- **deadcode**: 1.0.0 +- **detekt**: 1.23.8 +- **eslint v9**: 9.26.0 +- **eslint v8**: 8.57.0 +- **eslint v7**: 7.32.0 +- **faux-pas**: 1.7.2 +- **flawfinder**: 2.0.19 +- **gorevive**: 1.7.0 +- **gosec**: 2.15.0 +- **hadolint**: 2.12.0 +- **jackson-linter**: 2.15.2 +- **jshint**: 2.13.6 +- **lizard**: 1.17.19 +- **markdownlint**: 0.33.0 +- **php mess detector**: 2.14.1 +- **pmd v6**: 6.55.0 +- **pmd v7**: 7.11.0 +- **prospector**: 1.15.3 +- **psscriptanalyzer**: 1.24.0 +- **pylint v1**: 1.9.5 +- **pylint v3**: 3.3.7 +- **remark-lint**: 9.1.2 +- **roslyn**: 1.22.0 +- **rubocop**: 1.75.1 +- **ruff**: 0.11.2 +- **scalameta-pro**: 1.4.4 +- **scalastyle**: 1.5.1 +- **semgrep**: 1.78.0 +- **shellcheck**: 0.10.0 +- **sonar-csharp**: 9.32 +- **sonar-visual-basic**: 8.13 +- **spectral**: 1.21.4 +- **spotbugs**: 4.8.4 +- **sqlint**: 0.2.1 +- **staticcheck**: 2025.1.1 +- **stylelint**: 16.17.0 +- **swiftlint**: 0.58.2 +- **tailor**: 0.12.0 +- **trivy**: 0.59.1 +- **tslint**: 6.1.3 +- **tsqllint**: 1.16.0 \ No newline at end of file diff --git a/docusaurus/docs/release-notes/cloud/2025/2025-07-cloud.md b/docusaurus/docs/release-notes/cloud/2025/2025-07-cloud.md new file mode 100644 index 0000000000..62a04c9b11 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2025/2025-07-cloud.md @@ -0,0 +1,100 @@ +--- +title: Cloud July 2025 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud July 2025. +included_jira_versions: ['2025.7'] +codacy_tools_version_old: https://github.com/codacy/tools/releases/tag/8.11.1 +codacy_tools_version_new: https://github.com/codacy/tools/releases/tag/8.13.37 +slug: /release-notes/cloud/cloud-2025-07 +--- + + +These release notes are for the Codacy Cloud updates during July 2025. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements and Bug fixes +**Add severity gate for security issues:** +Users can now enforce a minimum severity threshold for security issues within gate policies. (LK-1493) + +**Segments filter and filter item rearrangement:** +Introduced segments filtering to both Coding Standards and Gate Policies. (LK-1471, LK-1470) + +**GitHub custom properties with Coding Standards:** +Use Codacy Segments to easily identify the relevant repositories for applying your Coding Standards. (LK-1450) + +**API token expiration support:** +Users can now create account API tokens with expiration settings. Choose a predefined range (7–90 days), set a custom date, or opt for no expiration. (LK-1443) + +**Unfollow repositories:** +You can now [unfollow repositories](../../../organizations/managing-repositories.md#follow-unfollow) directly from the Codacy app. (LK-902) + +**Static API authentication for DAST targets:** +Business tier customers can now scan DAST API targets with or without authentication headers. (TAROT-2977) + +**Lizard as the default complexity tool:** +Lizard is now the main complexity tool, supporting C, C++, Objective-C, Rust, C#, Go, Java, JavaScript, TypeScript, PHP, Python, Ruby, Scala, and Swift. (TCE-1286) + + +## Tool versions + + +- **checkov** has a new version: **3.2.457** ( updated from 3.2.442 ) +- **checkstyle** has a new version: **10.26.1** ( updated from 10.21.4 ) +- **credo** has a new version: **1.7.12** ( updated from 1.7.11 ) +- **eslint v9** has a new version: **9.32.0** ( updated from 9.26.0 ) +- **revive** has a new version: **1.11.0** ( updated from 1.7.0 ) +- **gosec** has a new version: **2.22.7** ( updated from 2.15.0 ) +- **pmd** has a new version: **7.16.0** ( updated from 7.11.0 ) +- **prospector** has a new version: **1.17.2** ( updated from 1.15.3 ) +- **roslyn** has a new version: **1.23.0** ( updated from 1.22.0 ) +- **rubocop** has a new version: **1.79.0** ( updated from 1.75.1 ) +- **ruff** has a new version: **0.12.5** ( updated from 0.11.2 ) +- **spectral** has a new version: **1.22.0** ( updated from 1.21.4 ) +- **stylelint** has a new version: **16.23.0** ( updated from 16.17.0 ) +- **swiftlint** has a new version: **0.59.1** ( updated from 0.58.2 ) +- **aligncheck**: **1.0.0** +- **ameba**: **1.6.4** +- **bandit**: **1.8.3** +- **brakeman**: **4.3.1** +- **bundler-audit**: **0.9.1** +- **clang-tidy**: **10.0.1** +- **codenarc**: **3.6.0** +- **codesniffer**: **3.10.1** +- **coffeelint**: **5.2.11** +- **cppcheck**: **2.17.1** +- **csslint**: **1.0.5** +- **dartanalyzer**: **3.7.2** +- **deadcode**: **1.0.0** +- **detekt**: **1.23.8** +- **eslint v8**: **8.57.0** +- **eslint v7**: **7.32.0** +- **faux-pas**: **1.7.2** +- **flawfinder**: **2.0.19** +- **hadolint**: **2.12.0** +- **jackson-linter**: **2.15.2** +- **jshint**: **2.13.6** +- **lizard**: **1.17.19** +- **markdownlint**: **0.33.0** +- **php mess detector**: **2.14.1** +- **pmd v6**: **6.55.0** +- **psscriptanalyzer**: **1.24.0** +- **pylint v1**: **1.9.5** +- **pylint v3**: **3.3.7** +- **reek**: **6.5.0** +- **remark-lint**: **9.1.2** +- **scalameta-pro**: **1.4.4** +- **scalastyle**: **1.5.1** +- **semgrep**: **1.78.0** +- **shellcheck**: **0.10.0** +- **sonar-csharp**: **9.32** +- **sonar-visual-basic**: **8.13** +- **spotbugs**: **4.8.4** +- **sqlfluff**: **3.4.1** +- **sqlint**: **0.2.1** +- **staticcheck**: **2025.1.1** +- **tailor**: **0.12.0** +- **trivy**: **0.59.1** +- **tslint**: **6.1.3** +- **tsqllint**: **1.16.0** \ No newline at end of file diff --git a/docusaurus/docs/release-notes/cloud/2025/2025-08-cloud.md b/docusaurus/docs/release-notes/cloud/2025/2025-08-cloud.md new file mode 100644 index 0000000000..6b28ba7a7e --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2025/2025-08-cloud.md @@ -0,0 +1,84 @@ +--- +title: Cloud August 2025 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud August 2025. +included_jira_versions: ['2025.8'] +codacy_tools_version_old: https://github.com/codacy/tools/releases/tag/8.13.37 +codacy_tools_version_new: https://github.com/codacy/tools/releases/tag/8.15.12-testnewdbemptycommit.1.sha.2cc7013 +slug: /release-notes/cloud/cloud-2025-08 +--- + + +These release notes are for the Codacy Cloud updates during August 2025. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements and Bug fixes +**Dark Mode Is Here** +Enjoy a sleek new Dark Mode in the Codacy app for a more comfortable and visually appealing experience. (LK-1529) + +**Clearer License Insights** +Easily see license information for every dependency and repository right in the Security & Risk Management dashboard’s Dependencies tab. (LK-1481) + +## Tool versions + + +- **Cppcheck** has a new version: **2.18.0** ( updated from 2.17.1 ) +- **Jackson Linter** has a new version: **2.19.2** ( updated from 2.15.2 ) +- **Lizard** has a new version: **1.17.31** ( updated from 1.17.19 ) +- **Rubocop** has a new version: **1.79.1** ( updated from 1.79.0 ) +- **Ruff** has a new version: **0.12.7** ( updated from 0.12.5 ) +- **Sqlfluff** has a new version: **3.4.2** ( updated from 3.4.1 ) +- **Trivy** has a new version: **0.65.0** ( updated from 0.59.1 ) +- **Aligncheck**: **1.0.0** +- **Ameba**: **1.6.4** +- **Bandit**: **1.8.3** +- **Brakeman**: **4.3.1** +- **Bundler Audit**: **0.9.1** +- **Checkov**: **3.2.457** +- **Checkstyle**: **10.26.1** +- **Clang-Tidy**: **10.0.1** +- **Codenarc**: **3.6.0** +- **Codesniffer**: **3.10.1** +- **Coffeelint**: **5.2.11** +- **Credo**: **1.7.12** +- **Csslint**: **1.0.5** +- **Dartanalyzer**: **3.7.2** +- **Deadcode**: **1.0.0** +- **Detekt**: **1.23.8** +- **Eslint v8**: **8.57.0** +- **Eslint v7**: **7.32.0** +- **Eslint v9**: **9.32.0** +- **Faux Pas**: **1.7.2** +- **Flawfinder**: **2.0.19** +- **Revive**: **1.11.0** +- **Gosec**: **2.22.7** +- **Hadolint**: **2.12.0** +- **JShint**: **2.13.6** +- **Markdownlint**: **0.33.0** +- **PHP Mess Detector**: **2.14.1** +- **PMD v6**: **6.55.0** +- **PMD v7**: **7.16.0** +- **Prospector**: **1.17.2** +- **Psscriptanalyzer**: **1.24.0** +- **Pylint v1**: **1.9.5** +- **Pylint v3**: **3.3.7** +- **Reek**: **6.5.0** +- **Remark Lint**: **9.1.2** +- **Roslyn**: **1.23.0** +- **Scalameta PRO**: **1.4.4** +- **Scalastyle**: **1.5.1** +- **Semgrep**: **1.78.0** +- **Shellcheck**: **0.10.0** +- **Sonar CSharp**: **9.32** +- **Sonar Visual Basic**: **8.13** +- **Spectral**: **1.22.0** +- **Spotbugs**: **4.8.4** +- **Sqlint**: **0.2.1** +- **Staticcheck**: **2025.1.1** +- **Stylelint**: **16.23.0** +- **Swiftlint**: **0.59.1** +- **Tailor**: **0.12.0** +- **Tslint**: **6.1.3** +- **Tsqllint**: **1.16.0** \ No newline at end of file diff --git a/docusaurus/docs/release-notes/cloud/2025/2025-09-cloud.md b/docusaurus/docs/release-notes/cloud/2025/2025-09-cloud.md new file mode 100644 index 0000000000..3b6ed482c5 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2025/2025-09-cloud.md @@ -0,0 +1,96 @@ +--- +title: Cloud September 2025 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud September 2025. +included_jira_versions: ['2025.9'] +codacy_tools_version_old: https://github.com/codacy/tools/releases/tag/8.15.12-testnewdbemptycommit.1.sha.2cc7013 +codacy_tools_version_new: https://github.com/codacy/tools/releases/tag/8.15.49-fixgorevive.3.sha.0865086a +slug: /release-notes/cloud/cloud-2025-09 +--- + + +These release notes are for the Codacy Cloud updates during September 2025. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements and Bug fixes +**Accurate Issue Counts Across Dashboards** +Resolved an inconsistency between the number of issues shown in metrics and the Issues tab, ensuring consistent and reliable reporting across repository and organization dashboards. (CF-1897) + +**Cleaner and Updated Pattern Set** +Removed the deprecated pattern Trivy_vulnerability, which has been replaced by Trivy_vulnerability_critical and Trivy_vulnerability_high for more precise vulnerability tracking. (CF-1857) + +**Improved Issue Uniqueness Detection** +Enhanced how Codacy identifies and displays multiple issues reported on the same line by tools like Trivy and Prospector, ensuring that all unique issues are now visible as expected. (CF-1786) + +**OpenSSF Scorecard Integration** +You can now view the OpenSSF Scorecard report directly from any dependency, helping you assess the security posture of your open-source components. (LK-1527) + +**Smarter Issue Updates** +Fixed an issue where the issue message wouldn’t update when a tool reported a new message for an existing issue. The displayed information now always stays up to date. (TAROT-3438) + +**AI Summaries Removed** +AI-powered PR summaries have been discontinued and removed from the product to streamline the review experience. (TAROT-3261) + +## Tool versions + + +- **Dartanalyzer** has a new version: **3.9.3** ( updated from 3.7.2 ) +- **Pylint v3** has a new version: **3.3.8** ( updated from 3.3.7 ) +- **Remark Lint** has a new version: **10.0.1** ( updated from 9.1.2 ) +- **Rubocop** has a new version: **1.80.2** ( updated from 1.79.1 ) +- **Trivy** has a new version: **0.66.0** ( updated from 0.65.0 ) +- **Aligncheck**: **1.0.0** +- **Ameba**: **1.6.4** +- **Bandit**: **1.8.3** +- **Brakeman**: **4.3.1** +- **Bundler Audit**: **0.9.1** +- **Checkov**: **3.2.457** +- **Checkstyle**: **10.26.1** +- **Clang Tidy**: **10.0.1** +- **Codenarc**: **3.6.0** +- **Codesniffer**: **3.10.1** +- **Coffeelint**: **5.2.11** +- **Cppcheck**: **2.18.0** +- **Credo**: **1.7.12** +- **Csslint**: **1.0.5** +- **Deadcode**: **1.0.0** +- **Detekt**: **1.23.8** +- **Eslint v8**: **8.57.0** +- **Eslint v7**: **7.32.0** +- **Eslint v9**: **9.32.0** +- **Faux Pas**: **1.7.2** +- **Flawfinder**: **2.0.19** +- **Revive**: **1.11.0** +- **Gosec**: **2.22.7** +- **Hadolint**: **2.12.0** +- **Jackson linter**: **2.19.2** +- **Jshint**: **2.13.6** +- **Lizard**: **1.17.31** +- **Markdownlint**: **0.33.0** +- **PHP Mess Detector**: **2.14.1** +- **PMD v6**: **6.55.0** +- **PMD v7**: **7.16.0** +- **Prospector**: **1.17.2** +- **Psscriptanalyzer**: **1.24.0** +- **Pylint v1**: **1.9.5** +- **Reek**: **6.5.0** +- **Roslyn**: **1.23.0** +- **Ruff**: **0.12.7** +- **Scalameta**: **1.4.4** +- **Scalastyle**: **1.5.1** +- **Semgrep**: **1.78.0** +- **Shellcheck**: **0.10.0** +- **Sonar CSharp**: **9.32** +- **Sonar Visual Basic**: **8.13** +- **Spectral**: **1.22.0** +- **Spotbugs**: **4.8.4** +- **Sqlfluff**: **3.4.2** +- **Sqlint**: **0.2.1** +- **Staticcheck**: **2025.1.1** +- **Stylelint**: **16.23.0** +- **Swiftlint**: **0.59.1** +- **Tailor**: **0.12.0** +- **Tslint**: **6.1.3** +- **Tsqllint**: **1.16.0** \ No newline at end of file diff --git a/docusaurus/docs/release-notes/cloud/2025/2025-10-cloud.md b/docusaurus/docs/release-notes/cloud/2025/2025-10-cloud.md new file mode 100644 index 0000000000..f5686f3ad9 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2025/2025-10-cloud.md @@ -0,0 +1,97 @@ +--- +title: Cloud October 2025 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud October 2025. +included_jira_versions: ['2025.10'] +codacy_tools_version_old: https://github.com/codacy/tools/releases/tag/8.15.49-fixgorevive.3.sha.0865086a +codacy_tools_version_new: https://github.com/codacy/tools/releases/tag/8.16.41 +slug: /release-notes/cloud/cloud-2025-10 +--- + + +These release notes are for the Codacy Cloud updates during October 2025. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements and Bug fixes + +**Improvements** + +- Enhanced performance on the Open Issues dashboard, making it faster to load and navigate. (CF-1957) +- Improved responsiveness when adding repositories on the Manage Repositories page. (CF-1955) + +**New Features** + +- Codacy now flags potentially false positive issues! You can review these issues directly in the Codacy App — mark them as real or ignore them. This feature is available on the Business tier. To enable it, contact your Customer Success Manager or reach out to our Support team.(CF-1932, CF-1926) + + +**Documentation Updates** + +- Added details about the False Positive Detection feature to the documentation. (CF-1932) + +**Tooling Updates** + +- Added support for additional Markdownlint configuration files. (TCE-1391) + +## Tool versions + + +- **Eslint v9** has a new version: **9.38.0** ( updated from 9.32.0 ) +- **Revive** has a new version: **1.12.0** ( updated from 1.11.0 ) +- **Pylint v3** has a new version: **3.3.9** ( updated from 3.3.8 ) +- **Swiftlint** has a new version: **0.61.0** ( updated from 0.59.1 ) +- **Trivy** has a new version: **0.67.2** ( updated from 0.66.0 ) +- **Aligncheck**: **1.0.0** +- **Ameba**: **1.6.4** +- **Bandit**: **1.8.3** +- **Brakeman**: **4.3.1** +- **Bundler Audit**: **0.9.1** +- **Checkov**: **3.2.457** +- **Checkstyle**: **10.26.1** +- **Clang Tidy**: **10.0.1** +- **Codenarc**: **3.6.0** +- **Codesniffer**: **3.10.1** +- **Coffeelint**: **5.2.11** +- **Cppcheck**: **2.18.0** +- **Credo**: **1.7.12** +- **Csslint**: **1.0.5** +- **Dartanalyzer**: **3.9.3** +- **Deadcode**: **1.0.0** +- **Detekt**: **1.23.8** +- **Eslint v8**: **8.57.0** +- **Eslint v7**: **7.32.0** +- **Faux Pas**: **1.7.2** +- **Flawfinder**: **2.0.19** +- **Gosec**: **2.22.7** +- **Hadolint**: **2.12.0** +- **Jackson linter**: **2.19.2** +- **Jshint**: **2.13.6** +- **Lizard**: **1.17.31** +- **Markdownlint**: **0.33.0** +- **PHP Mess Detector**: **2.14.1** +- **PMD v6**: **6.55.0** +- **PMD v7**: **7.16.0** +- **Prospector**: **1.17.2** +- **Psscriptanalyzer**: **1.24.0** +- **Pylint v1**: **1.9.5** +- **Reek**: **6.5.0** +- **Remark Lint**: **10.0.1** +- **Roslyn**: **1.23.0** +- **Rubocop**: **1.80.2** +- **Ruff**: **0.12.7** +- **Scalameta**: **1.4.4** +- **Scalastyle**: **1.5.1** +- **Semgrep**: **1.78.0** +- **Shellcheck**: **0.10.0** +- **Sonar CSharp**: **9.32** +- **Sonar Visual Basic**: **8.13** +- **Spectral**: **1.22.0** +- **Spotbugs**: **4.8.4** +- **Sqlfluff**: **3.4.2** +- **Sqlint**: **0.2.1** +- **Staticcheck**: **2025.1.1** +- **Stylelint**: **16.23.0** +- **Tailor**: **0.12.0** +- **Tslint**: **6.1.3** +- **Tsqllint**: **1.16.0** \ No newline at end of file diff --git a/docusaurus/docs/release-notes/cloud/2025/2025-11-cloud.md b/docusaurus/docs/release-notes/cloud/2025/2025-11-cloud.md new file mode 100644 index 0000000000..dcca118d7a --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/2025/2025-11-cloud.md @@ -0,0 +1,96 @@ +--- +title: Cloud November 2025 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Cloud November 2025. +included_jira_versions: ['2025.11'] +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/8.16.41 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/8.16.78 +slug: /release-notes/cloud/cloud-2025-11 +--- + + +These release notes are for the Codacy Cloud updates during November 2025. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements and Bug fixes + +**New Features** + +- **Malicious Package Detection:** Codacy now detects malicious packages as they are introduced via PR, or nightly via SCA (for clients with SCA enabled). Malicious packages are identified by [OSSF](https://github.com/ossf/malicious-packages) and updated daily in Codacy's platform. + This feature is automatically enabled for: + - All existing coding standards/projects that have 'Vulnerable Dependencies (critical)' detection enabled. + - All new coding standards and projects. + See [Codacy's documentation](https://docs.codacy.com/getting-started/supported-languages-and-tools/) to know which package ecosystems are supported. (TAROT-3600) +- **False Positive PR Comments:** False Positive detection now leaves a comment directly on your Pull Request, allowing you to review and handle potentially incorrect flags immediately. (CF-1975) + +**Improvements** + +- Ignoring security issues in the "Quality" dashboard now automatically ignores the corresponding finding in the "Security and Risks Management" dashboard. (CF-2045) + +**Bug Fixes** + +- Fixed an issue regarding error notifications (toasts) that caused them to close unexpectedly when clicking the "Show details" button. (LK-1773) + +## Tool versions + + +- **Aligncheck**: **1.0.0** +- **Ameba**: **1.6.4** +- **Bandit**: **1.8.3** +- **Brakeman**: **4.3.1** +- **Bundler-audit**: **0.9.1** +- **Checkov**: **3.2.457** +- **Checkstyle**: **10.26.1** +- **Clang-tidy**: **10.0.1** +- **Codenarc**: **3.6.0** +- **Codesniffer**: **3.10.1** +- **Coffeelint**: **5.2.11** +- **Cppcheck**: **2.18.0** +- **Credo**: **1.7.12** +- **Csslint**: **1.0.5** +- **Dartanalyzer**: **3.9.3** +- **Deadcode**: **1.0.0** +- **Detekt**: **1.23.8** +- **Eslint v7**: **7.32.0** +- **Eslint v8**: **8.57.0** +- **Eslint v9**: **9.38.0** +- **Faux-pas**: **1.7.2** +- **Flawfinder**: **2.0.19** +- **Gorevive**: **1.12.0** +- **Gosec**: **2.22.7** +- **Hadolint**: **2.12.0** +- **Jackson-linter**: **2.19.2** +- **Jshint**: **2.13.6** +- **Lizard**: **1.17.31** +- **Markdownlint**: **0.33.0** +- **Phpmd**: **2.14.1** +- **Pmd**: **6.55.0** +- **Pmd7**: **7.16.0** +- **Prospector**: **1.17.2** +- **Psscriptanalyzer**: **1.24.0** +- **Pylint v1**: **1.9.5** +- **Pylint v3**: **3.3.9** +- **Reek**: **6.5.0** +- **Remark-lint**: **10.0.1** +- **Roslyn**: **1.23.0** +- **Rubocop**: **1.80.2** +- **Ruff**: **0.12.7** +- **Scalameta-pro**: **1.4.4** +- **Scalastyle**: **1.5.1** +- **Semgrep**: **1.78.0** +- **Shellcheck**: **0.10.0** +- **Sonar-csharp**: **9.32** +- **Sonar-visual-basic**: **8.13** +- **Spectral**: **1.22.0** +- **Spotbugs**: **4.8.4** +- **Sqlfluff**: **3.4.2** +- **Sqlint**: **0.2.1** +- **Staticcheck**: **2025.1.1** +- **Stylelint**: **16.23.0** +- **Swiftlint**: **0.61.0** +- **Tailor**: **0.12.0** +- **Trivy**: **0.67.2** +- **Tslint**: **6.1.3** +- **Tsqllint**: **1.16.0** \ No newline at end of file diff --git a/docusaurus/docs/release-notes/cloud/_order.ts b/docusaurus/docs/release-notes/cloud/_order.ts new file mode 100644 index 0000000000..9ba3695169 --- /dev/null +++ b/docusaurus/docs/release-notes/cloud/_order.ts @@ -0,0 +1,133 @@ +export const cloudYearOrder = [ + { + type: 'category' as const, + label: '2025', + items: [ + 'release-notes/cloud/2025/2025-11-cloud', + 'release-notes/cloud/2025/2025-10-cloud', + 'release-notes/cloud/2025/2025-09-cloud', + 'release-notes/cloud/2025/2025-08-cloud', + 'release-notes/cloud/2025/2025-07-cloud', + 'release-notes/cloud/2025/2025-06-cloud-adding-sqlfluff-reek', + 'release-notes/cloud/2025/2025-06-cloud', + 'release-notes/cloud/2025/2025-05-cloud', + 'release-notes/cloud/2025/2025-04-cloud', + 'release-notes/cloud/2025/2025-03-cloud', + 'release-notes/cloud/2025/2025-02-cloud-adding-ruff-lizard', + 'release-notes/cloud/2025/2025-02-cloud', + 'release-notes/cloud/2025/2025-01-cloud', + ], + }, + { + type: 'category' as const, + label: '2024', + items: [ + 'release-notes/cloud/2024/2024-12-cloud', + 'release-notes/cloud/2024/2024-11-cloud', + 'release-notes/cloud/2024/2024-10-cloud', + 'release-notes/cloud/2024/2024-09-cloud-adding-eslint9-and-pmd7', + 'release-notes/cloud/2024/2024-09-cloud', + 'release-notes/cloud/2024/2024-08-cloud', + 'release-notes/cloud/2024/2024-07-cloud', + 'release-notes/cloud/2024/2024-06-cloud', + 'release-notes/cloud/2024/2024-05-cloud', + 'release-notes/cloud/2024/2024-04-cloud', + 'release-notes/cloud/2024/2024-03-cloud', + 'release-notes/cloud/2024/2024-02-cloud', + 'release-notes/cloud/2024/2024-01-15-cloud-gh-repository-ssh-keys-discontinuation', + 'release-notes/cloud/2024/2024-01-cloud', + ], + }, + { + type: 'category' as const, + label: '2023', + items: [ + 'release-notes/cloud/2023/2023-12-cloud', + 'release-notes/cloud/2023/2023-11-23-cloud-new-coverage-engine-status-checks', + 'release-notes/cloud/2023/2023-11-13-cloud-jira-slack-webhooks-repo-integrations-removal', + 'release-notes/cloud/2023/2023-11-cloud', + 'release-notes/cloud/2023/2023-10-25-cloud-csslint-jshint-fauxpas-tailor-tslint-deprecation', + 'release-notes/cloud/2023/2023-10-13-cloud-bundler-audit-deprecation', + 'release-notes/cloud/2023/2023-10-cloud', + 'release-notes/cloud/2023/2023-09-cloud', + 'release-notes/cloud/2023/2023-08-cloud', + 'release-notes/cloud/2023/2023-07-cloud', + 'release-notes/cloud/2023/2023-06-cloud', + 'release-notes/cloud/2023/2023-05-cloud', + 'release-notes/cloud/2023/2023-04-cloud', + 'release-notes/cloud/2023/2023-03-cloud', + 'release-notes/cloud/2023/2023-02-cloud', + 'release-notes/cloud/2023/2023-01-cloud', + ], + }, + { + type: 'category' as const, + label: '2022', + items: [ + 'release-notes/cloud/2022/2022-12-cloud', + 'release-notes/cloud/2022/2022-11-cloud', + 'release-notes/cloud/2022/2022-10-cloud', + 'release-notes/cloud/2022/2022-09-cloud', + 'release-notes/cloud/2022/2022-08-cloud', + 'release-notes/cloud/2022/2022-07-cloud', + 'release-notes/cloud/2022/2022-06-cloud', + 'release-notes/cloud/2022/2022-05-cloud', + 'release-notes/cloud/2022/2022-04-cloud', + 'release-notes/cloud/2022/2022-03-31-cloud-adding-eslint8', + 'release-notes/cloud/2022/2022-03-cloud', + 'release-notes/cloud/2022/2022-02-16-cloud-pmd-legacy-removal', + 'release-notes/cloud/2022/2022-02-cloud', + 'release-notes/cloud/2022/2022-01-cloud', + ], + }, + { + type: 'category' as const, + label: '2021', + items: [ + 'release-notes/cloud/2021/2021-12-cloud', + 'release-notes/cloud/2021/2021-11-02-cloud-legacy-organizations', + 'release-notes/cloud/2021/2021-11-cloud', + 'release-notes/cloud/2021/2021-10-cloud', + 'release-notes/cloud/2021/2021-09-cloud', + 'release-notes/cloud/2021/2021-08-cloud', + 'release-notes/cloud/2021/2021-07-03-cloud-scheduled-db-maintenance', + ], + }, + { + type: 'category' as const, + label: '2020', + items: [ + 'release-notes/cloud/2020/2020-04-01-cloud-deprecating-http-headers-for-api-tokens', + 'release-notes/cloud/2020/2020-03-09-cloud-nodesecurity-golint-scsslint-removal', + 'release-notes/cloud/2020/2020-02-cloud-github-apps', + ], + }, + { + type: 'category' as const, + label: '2019', + items: [ + 'release-notes/cloud/2019/2019-11-15-cloud', + 'release-notes/cloud/2019/2019-10-30-cloud', + 'release-notes/cloud/2019/2019-09-05-cloud', + 'release-notes/cloud/2019/2019-08-07-cloud', + 'release-notes/cloud/2019/2019-06-18-cloud', + 'release-notes/cloud/2019/2019-05-20-cloud', + 'release-notes/cloud/2019/2019-05-05-cloud', + 'release-notes/cloud/2019/2019-04-08-cloud', + 'release-notes/cloud/2019/2019-03-29-cloud', + 'release-notes/cloud/2019/2019-02-18-cloud-bitbucket-changes', + 'release-notes/cloud/2019/2019-01-02-cloud', + ], + }, + { + type: 'category' as const, + label: '2018', + items: [ + 'release-notes/cloud/2018/2018-11-16-cloud', + 'release-notes/cloud/2018/2018-11-02-cloud', + 'release-notes/cloud/2018/2018-10-19-cloud', + 'release-notes/cloud/2018/2018-07-23-cloud', + ], + }, +]; + diff --git a/docusaurus/docs/release-notes/images/2019-02-18-bitbucket-changes.png b/docusaurus/docs/release-notes/images/2019-02-18-bitbucket-changes.png new file mode 100644 index 0000000000..54104d2c09 Binary files /dev/null and b/docusaurus/docs/release-notes/images/2019-02-18-bitbucket-changes.png differ diff --git a/docusaurus/docs/release-notes/images/2019-11-15-organizations-authorize.png b/docusaurus/docs/release-notes/images/2019-11-15-organizations-authorize.png new file mode 100644 index 0000000000..bcec3ee0fd Binary files /dev/null and b/docusaurus/docs/release-notes/images/2019-11-15-organizations-authorize.png differ diff --git a/docusaurus/docs/release-notes/images/2020-02-github-apps.gif b/docusaurus/docs/release-notes/images/2020-02-github-apps.gif new file mode 100644 index 0000000000..011171aded Binary files /dev/null and b/docusaurus/docs/release-notes/images/2020-02-github-apps.gif differ diff --git a/docusaurus/docs/release-notes/images/2024-01-15-gh-updated-permissions.png b/docusaurus/docs/release-notes/images/2024-01-15-gh-updated-permissions.png new file mode 100644 index 0000000000..8c9b264713 Binary files /dev/null and b/docusaurus/docs/release-notes/images/2024-01-15-gh-updated-permissions.png differ diff --git a/docusaurus/docs/release-notes/images/ala-549.png b/docusaurus/docs/release-notes/images/ala-549.png new file mode 100644 index 0000000000..e0908e9aac Binary files /dev/null and b/docusaurus/docs/release-notes/images/ala-549.png differ diff --git a/docusaurus/docs/release-notes/images/ala-572.png b/docusaurus/docs/release-notes/images/ala-572.png new file mode 100644 index 0000000000..b118da67dc Binary files /dev/null and b/docusaurus/docs/release-notes/images/ala-572.png differ diff --git a/docusaurus/docs/release-notes/images/ala-593.png b/docusaurus/docs/release-notes/images/ala-593.png new file mode 100644 index 0000000000..6c92fd8d75 Binary files /dev/null and b/docusaurus/docs/release-notes/images/ala-593.png differ diff --git a/docusaurus/docs/release-notes/images/ala-695-status-checks-bitbucket.png b/docusaurus/docs/release-notes/images/ala-695-status-checks-bitbucket.png new file mode 100644 index 0000000000..0720399c7e Binary files /dev/null and b/docusaurus/docs/release-notes/images/ala-695-status-checks-bitbucket.png differ diff --git a/docusaurus/docs/release-notes/images/ala-695-status-checks-github.png b/docusaurus/docs/release-notes/images/ala-695-status-checks-github.png new file mode 100644 index 0000000000..7d3ff30db4 Binary files /dev/null and b/docusaurus/docs/release-notes/images/ala-695-status-checks-github.png differ diff --git a/docusaurus/docs/release-notes/images/ala-695-status-checks-gitlab.png b/docusaurus/docs/release-notes/images/ala-695-status-checks-gitlab.png new file mode 100644 index 0000000000..68292f625d Binary files /dev/null and b/docusaurus/docs/release-notes/images/ala-695-status-checks-gitlab.png differ diff --git a/docusaurus/docs/release-notes/images/ala-695-update-status-checks-github.png b/docusaurus/docs/release-notes/images/ala-695-update-status-checks-github.png new file mode 100644 index 0000000000..6045c188d4 Binary files /dev/null and b/docusaurus/docs/release-notes/images/ala-695-update-status-checks-github.png differ diff --git a/docusaurus/docs/release-notes/images/ala-824.png b/docusaurus/docs/release-notes/images/ala-824.png new file mode 100644 index 0000000000..f30a81ccb5 Binary files /dev/null and b/docusaurus/docs/release-notes/images/ala-824.png differ diff --git a/docusaurus/docs/release-notes/images/cov-2.png b/docusaurus/docs/release-notes/images/cov-2.png new file mode 100644 index 0000000000..7a8d8a47a4 Binary files /dev/null and b/docusaurus/docs/release-notes/images/cov-2.png differ diff --git a/docusaurus/docs/release-notes/images/cy-4196.png b/docusaurus/docs/release-notes/images/cy-4196.png new file mode 100644 index 0000000000..77462ed711 Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-4196.png differ diff --git a/docusaurus/docs/release-notes/images/cy-4216.png b/docusaurus/docs/release-notes/images/cy-4216.png new file mode 100644 index 0000000000..768c091c61 Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-4216.png differ diff --git a/docusaurus/docs/release-notes/images/cy-4654.png b/docusaurus/docs/release-notes/images/cy-4654.png new file mode 100644 index 0000000000..08f325df5f Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-4654.png differ diff --git a/docusaurus/docs/release-notes/images/cy-5533.png b/docusaurus/docs/release-notes/images/cy-5533.png new file mode 100644 index 0000000000..53850afed6 Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-5533.png differ diff --git a/docusaurus/docs/release-notes/images/cy-5534.png b/docusaurus/docs/release-notes/images/cy-5534.png new file mode 100644 index 0000000000..2e7b0a5800 Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-5534.png differ diff --git a/docusaurus/docs/release-notes/images/cy-5573.png b/docusaurus/docs/release-notes/images/cy-5573.png new file mode 100644 index 0000000000..ddc7000a4b Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-5573.png differ diff --git a/docusaurus/docs/release-notes/images/cy-5580.png b/docusaurus/docs/release-notes/images/cy-5580.png new file mode 100644 index 0000000000..9b70d58845 Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-5580.png differ diff --git a/docusaurus/docs/release-notes/images/cy-5796.png b/docusaurus/docs/release-notes/images/cy-5796.png new file mode 100644 index 0000000000..2d3572cc75 Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-5796.png differ diff --git a/docusaurus/docs/release-notes/images/cy-5797.png b/docusaurus/docs/release-notes/images/cy-5797.png new file mode 100644 index 0000000000..7d795d5e01 Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-5797.png differ diff --git a/docusaurus/docs/release-notes/images/cy-5876.png b/docusaurus/docs/release-notes/images/cy-5876.png new file mode 100644 index 0000000000..8f0cb09176 Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-5876.png differ diff --git a/docusaurus/docs/release-notes/images/cy-5960.png b/docusaurus/docs/release-notes/images/cy-5960.png new file mode 100644 index 0000000000..f6e37621f7 Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-5960.png differ diff --git a/docusaurus/docs/release-notes/images/cy-6021.png b/docusaurus/docs/release-notes/images/cy-6021.png new file mode 100644 index 0000000000..66f35813ad Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-6021.png differ diff --git a/docusaurus/docs/release-notes/images/cy-6336.png b/docusaurus/docs/release-notes/images/cy-6336.png new file mode 100644 index 0000000000..84f4aa39f0 Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-6336.png differ diff --git a/docusaurus/docs/release-notes/images/cy-6455.png b/docusaurus/docs/release-notes/images/cy-6455.png new file mode 100644 index 0000000000..ac8d6e57c3 Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-6455.png differ diff --git a/docusaurus/docs/release-notes/images/cy-6612.png b/docusaurus/docs/release-notes/images/cy-6612.png new file mode 100644 index 0000000000..5a4acc34bd Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-6612.png differ diff --git a/docusaurus/docs/release-notes/images/cy-6855.png b/docusaurus/docs/release-notes/images/cy-6855.png new file mode 100644 index 0000000000..97ab3d4057 Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-6855.png differ diff --git a/docusaurus/docs/release-notes/images/cy-7305.png b/docusaurus/docs/release-notes/images/cy-7305.png new file mode 100644 index 0000000000..05630ee172 Binary files /dev/null and b/docusaurus/docs/release-notes/images/cy-7305.png differ diff --git a/docusaurus/docs/release-notes/images/hrz-6.png b/docusaurus/docs/release-notes/images/hrz-6.png new file mode 100644 index 0000000000..d23ede4e3c Binary files /dev/null and b/docusaurus/docs/release-notes/images/hrz-6.png differ diff --git a/docusaurus/docs/release-notes/images/io-152.png b/docusaurus/docs/release-notes/images/io-152.png new file mode 100644 index 0000000000..3b0842a9d7 Binary files /dev/null and b/docusaurus/docs/release-notes/images/io-152.png differ diff --git a/docusaurus/docs/release-notes/images/io-152b.png b/docusaurus/docs/release-notes/images/io-152b.png new file mode 100644 index 0000000000..1995fc0fc8 Binary files /dev/null and b/docusaurus/docs/release-notes/images/io-152b.png differ diff --git a/docusaurus/docs/release-notes/images/io-358.png b/docusaurus/docs/release-notes/images/io-358.png new file mode 100644 index 0000000000..eeb219db55 Binary files /dev/null and b/docusaurus/docs/release-notes/images/io-358.png differ diff --git a/docusaurus/docs/release-notes/images/io-56.png b/docusaurus/docs/release-notes/images/io-56.png new file mode 100644 index 0000000000..f3853fdeec Binary files /dev/null and b/docusaurus/docs/release-notes/images/io-56.png differ diff --git a/docusaurus/docs/release-notes/images/io-92.png b/docusaurus/docs/release-notes/images/io-92.png new file mode 100644 index 0000000000..5973bd2b16 Binary files /dev/null and b/docusaurus/docs/release-notes/images/io-92.png differ diff --git a/docusaurus/docs/release-notes/images/pluto-470.png b/docusaurus/docs/release-notes/images/pluto-470.png new file mode 100644 index 0000000000..e5a2a2c789 Binary files /dev/null and b/docusaurus/docs/release-notes/images/pluto-470.png differ diff --git a/docusaurus/docs/release-notes/images/pluto-484.png b/docusaurus/docs/release-notes/images/pluto-484.png new file mode 100644 index 0000000000..a8fde3af3e Binary files /dev/null and b/docusaurus/docs/release-notes/images/pluto-484.png differ diff --git a/docusaurus/docs/release-notes/images/pluto-77.png b/docusaurus/docs/release-notes/images/pluto-77.png new file mode 100644 index 0000000000..49e20b730b Binary files /dev/null and b/docusaurus/docs/release-notes/images/pluto-77.png differ diff --git a/docusaurus/docs/release-notes/images/tarot-2242.png b/docusaurus/docs/release-notes/images/tarot-2242.png new file mode 100644 index 0000000000..18277e755f Binary files /dev/null and b/docusaurus/docs/release-notes/images/tarot-2242.png differ diff --git a/docusaurus/docs/release-notes/images/tarot-2546.png b/docusaurus/docs/release-notes/images/tarot-2546.png new file mode 100644 index 0000000000..1466cfbdc8 Binary files /dev/null and b/docusaurus/docs/release-notes/images/tarot-2546.png differ diff --git a/docusaurus/docs/release-notes/index.md b/docusaurus/docs/release-notes/index.md new file mode 100644 index 0000000000..85bdfb04b3 --- /dev/null +++ b/docusaurus/docs/release-notes/index.md @@ -0,0 +1,209 @@ +--- +title: Codacy release notes +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Index of release notes for Codacy Cloud and Codacy Self-hosted. +hide_toc: true +--- + + +This section contains the release notes for Codacy Cloud and Codacy Self-hosted. + +For product updates that are in progress or planned [visit the Codacy public roadmap instead](https://roadmap.codacy.com). + +:::tip +Subscribe to this [Codacy release notes RSS feed RSS feed](/feed_rss_created.xml) using your favorite news aggregator to receive notifications when there are new Codacy release notes. +::: + +## Codacy Cloud release notes {#cloud} +2025 + + +- [Cloud November 2025](cloud/cloud-2025-11.md) +- [Cloud October 2025](cloud/cloud-2025-10.md) +- [Cloud September 2025](cloud/cloud-2025-09.md) +- [Cloud August 2025](cloud/cloud-2025-08.md) +- [Cloud July 2025](cloud/cloud-2025-07.md) +- [Cloud June 2025](cloud/cloud-2025-06.md) +- [Adding SQLFluff and Reek as new supported tools June, 2025](cloud/cloud-2025-06-adding-sqlfluff-reek.md) +- [Cloud May 2025](cloud/cloud-2025-05.md) +- [Cloud April 2025](cloud/cloud-2025-04.md) +- [Cloud March 2025](cloud/cloud-2025-03.md) +- [Adding Ruff and Lizard as new supported tools February, 2025](cloud/cloud-2025-02-adding-ruff-lizard.md) +- [Cloud February 2025](cloud/cloud-2025-02.md) +- [Cloud January 2025](cloud/cloud-2025-01.md) + +2024 + +- [Cloud December 2024](cloud/cloud-2024-12.md) +- [Cloud November 2024](cloud/cloud-2024-11.md) +- [Cloud October 2024](cloud/cloud-2024-10.md) +- [Cloud September 2024](cloud/cloud-2024-09.md) +- [Adding ESLint 9 and PMD 7 as new supported tools September, 2024](cloud/cloud-2024-09-adding-eslint9-and-pmd7.md) +- [Cloud August 2024](cloud/cloud-2024-08.md) +- [Cloud July 2024](cloud/cloud-2024-07.md) +- [Cloud June 2024](cloud/cloud-2024-06.md) +- [Cloud May 2024](cloud/cloud-2024-05.md) +- [Cloud April 2024](cloud/cloud-2024-04.md) +- [Cloud March 2024](cloud/cloud-2024-03.md) +- [Cloud February 2024](cloud/cloud-2024-02.md) +- [Cloud January 2024](cloud/cloud-2024-01.md) +- [Discontinuation of SSH keys for GitHub repositories January 15, 2024](cloud/cloud-2024-01-15-gh-repository-ssh-keys-discontinuation.md) + +2023 + +- [Cloud December 2023](cloud/cloud-2023-12.md) +- [Cloud November 2023](cloud/cloud-2023-11.md) +- [Rollout of new Coverage engine November 23, 2023](cloud/cloud-2023-11-23-new-coverage-engine-status-checks.md) +- [Removal of Jira, Slack, and Webhooks repository integrations November 13, 2023](cloud/cloud-2023-11-13-jira-slack-webhooks-repo-integrations-removal.md) +- [Cloud October 2023](cloud/cloud-2023-10.md) +- [Deprecation of CSSLint, JSHint, Faux Pas, Tailor, TSLint October 25, 2023](cloud/cloud-2023-10-25-csslint-jshint-fauxpas-tailor-tslint-deprecation.md) +- [Deprecation of bundler-audit October 13, 2023](cloud/cloud-2023-10-13-bundler-audit-deprecation.md) +- [Cloud September 2023](cloud/cloud-2023-09.md) +- [Cloud August 2023](cloud/cloud-2023-08.md) +- [Cloud July 2023](cloud/cloud-2023-07.md) +- [Cloud June 2023](cloud/cloud-2023-06.md) +- [Cloud May 2023](cloud/cloud-2023-05.md) +- [Cloud April 2023](cloud/cloud-2023-04.md) +- [Cloud March 2023](cloud/cloud-2023-03.md) +- [Cloud February 2023](cloud/cloud-2023-02.md) +- [Cloud January 2023](cloud/cloud-2023-01.md) + +2022 + +- [Cloud December 2022](cloud/cloud-2022-12.md) +- [Cloud November 2022](cloud/cloud-2022-11.md) +- [Cloud October 2022](cloud/cloud-2022-10.md) +- [Cloud September 2022](cloud/cloud-2022-09.md) +- [Cloud August 2022](cloud/cloud-2022-08.md) +- [Cloud July 2022](cloud/cloud-2022-07.md) +- [Cloud June 2022](cloud/cloud-2022-06.md) +- [Cloud May 2022](cloud/cloud-2022-05.md) +- [Cloud April 2022](cloud/cloud-2022-04.md) +- [Cloud March 2022](cloud/cloud-2022-03.md) +- [Adding ESLint 8 as a supported tool March 31, 2022](cloud/cloud-2022-03-31-adding-eslint8.md) +- [Cloud February 2022](cloud/cloud-2022-02.md) +- [Removal of PMD (Legacy) February 16, 2022](cloud/cloud-2022-02-16-pmd-legacy-removal.md) +- [Cloud January 2022](cloud/cloud-2022-01.md) + +2021 + +- [Cloud December 2021](cloud/cloud-2021-12.md) +- [Cloud November 2021](cloud/cloud-2021-11.md) +- [Cloud October 2021](cloud/cloud-2021-10.md) +- [Cloud September 2021](cloud/cloud-2021-09.md) +- [End of support for legacy manual organizations November 2, 2021](cloud/cloud-2021-11-02-legacy-organizations.md) +- [Cloud August 2021](cloud/cloud-2021-08.md) +- [Performing scheduled database maintenance July 3, 2021](cloud/cloud-2021-07-03-scheduled-db-maintenance.md) + +2020 + +- [Deprecating HTTP headers for API tokens April 1, 2020](cloud/cloud-2020-04-01-deprecating-http-headers-for-api-tokens.md) +- [Removal of NodeSecurity, GoLint, and SCSS Lint March 9, 2020](cloud/cloud-2020-03-09-nodesecurity-golint-scsslint-removal.md) +- [Codacy now supports GitHub Apps February 2, 2020](cloud/cloud-2020-02-github-apps.md) + +2019 + +- [Cloud November 15, 2019](cloud/cloud-2019-11-15.md) +- [Cloud October 30, 2019](cloud/cloud-2019-10-30.md) +- [Cloud September 5, 2019](cloud/cloud-2019-09-05.md) +- [Cloud August 7, 2019](cloud/cloud-2019-08-07.md) +- [Cloud June 18, 2019](cloud/cloud-2019-06-18.md) +- [Cloud May 20, 2019](cloud/cloud-2019-05-20.md) +- [Cloud May 5, 2019](cloud/cloud-2019-05-05.md) +- [Cloud April 8, 2019](cloud/cloud-2019-04-08.md) +- [Cloud March 29, 2019](cloud/cloud-2019-03-29.md) +- [Bitbucket changes February 18, 2019](cloud/cloud-2019-02-18-bitbucket-changes.md) +- [Cloud January 2, 2019](cloud/cloud-2019-01-02.md) + +2018 + +- [Cloud November 16, 2018](cloud/cloud-2018-11-16.md) +- [Cloud November 2, 2018](cloud/cloud-2018-11-02.md) +- [Cloud October 19, 2018](cloud/cloud-2018-10-19.md) +- [Cloud July 23, 2018](cloud/cloud-2018-07-23.md) + +## Codacy Self-hosted release notes {#self-hosted} +v15 + +- [v15.0.0](self-hosted/self-hosted-v15.0.0.md) (April 10, 2025) + +v14 + +- [v14.1.1](self-hosted/self-hosted-v14.1.1.md) (March 10, 2025) +- [v14.0.0](self-hosted/self-hosted-v14.0.0.md) (June 26, 2024) + +v13 + +- [v13.0.0](self-hosted/self-hosted-v13.0.0.md) (November 23, 2023) + +v12 + +- [v12.0.0](self-hosted/self-hosted-v12.0.0.md) (July 20, 2023) + +v11 + +- [v11.0.0](self-hosted/self-hosted-v11.0.0.md) (April 20, 2023) + +v10 + +- [v10.0.0](self-hosted/self-hosted-v10.0.0.md) (February 3, 2023) + +v9 + +- [v9.0.0](self-hosted/self-hosted-v9.0.0.md) (September 23, 2022) + +v8 + +- [v8.1.0](self-hosted/self-hosted-v8.1.0.md) (June 17, 2022) +- [v8.0.0](self-hosted/self-hosted-v8.0.0.md) (May 12, 2022) + +v7 + +- [v7.0.0](self-hosted/self-hosted-v7.0.0.md) (April 4, 2022) + +v6 + +- [v6.0.0](self-hosted/self-hosted-v6.0.0.md) (March 2, 2022) + +v5 + +- [v5.1.0](self-hosted/self-hosted-v5.1.0.md) (January 6, 2022) +- [v5.0.0](self-hosted/self-hosted-v5.0.0.md) (December 17, 2021) + +v4 + +- [v4.4.0](self-hosted/self-hosted-v4.4.0.md) (October 12, 2021) +- [v4.3.0](self-hosted/self-hosted-v4.3.0.md) (September 16, 2021) +- [v4.2.0](self-hosted/self-hosted-v4.2.0.md) (August 31, 2021) +- [v4.1.0](self-hosted/self-hosted-v4.1.0.md) (July 6, 2021) +- [v4.0.1](self-hosted/self-hosted-v4.0.1.md) (June 2, 2021) +- [v4.0.0](self-hosted/self-hosted-v4.0.0.md) (May 18, 2021) + +v3 + +- [v3.5.1](self-hosted/self-hosted-v3.5.1.md) (June 1, 2021) +- [v3.5.0](self-hosted/self-hosted-v3.5.0.md) (March 31, 2021) +- [v3.4.0](self-hosted/self-hosted-v3.4.0.md) (March 12, 2021) +- [v3.3.0](self-hosted/self-hosted-v3.3.0.md) (February 12, 2021) +- [v3.2.0](self-hosted/self-hosted-v3.2.0.md) (December 17, 2020) +- [v3.1.0](self-hosted/self-hosted-v3.1.0.md) (December 10, 2020) +- [v3.0.0](self-hosted/self-hosted-v3.0.0.md) (November 2, 2020) + +v2 + +- [v2.2.1](self-hosted/self-hosted-v2.2.1.md) (October 22, 2020) +- [v2.2.0](self-hosted/self-hosted-v2.2.0.md) (October 8, 2020) +- [v2.1.1](self-hosted/self-hosted-v2.1.1.md) (September 24, 2020) +- [v2.1.0](self-hosted/self-hosted-v2.1.0.md) (September 16, 2020) +- [v2.0.0](self-hosted/self-hosted-v2.0.0.md) (August 18, 2020) + +v1 + +- [v1.5.0](self-hosted/self-hosted-v1.5.0.md) (July 20, 2020) +- [v1.4.0](self-hosted/self-hosted-v1.4.0.md) (June 23, 2020) +- [v1.3.0](self-hosted/self-hosted-v1.3.0.md) (June 12, 2020) +- [v1.2.0](self-hosted/self-hosted-v1.2.0.md) (June 4, 2020) +- [v1.1.0](self-hosted/self-hosted-v1.1.0.md) (May 26, 2020) +- [v1.0.1](self-hosted/self-hosted-v1.0.1.md) (May 21, 2020) +- [v1.0.0](self-hosted/self-hosted-v1.0.0.md) (May 18, 2020) diff --git a/docusaurus/docs/release-notes/self-hosted/_order.ts b/docusaurus/docs/release-notes/self-hosted/_order.ts new file mode 100644 index 0000000000..d41482263e --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/_order.ts @@ -0,0 +1,42 @@ +export const selfHostedOrder = [ + 'release-notes/self-hosted/v15.0.0-self-hosted', + 'release-notes/self-hosted/v14.1.1-self-hosted', + 'release-notes/self-hosted/v14.0.0-self-hosted', + 'release-notes/self-hosted/v13.0.0-self-hosted', + 'release-notes/self-hosted/v12.0.0-self-hosted', + 'release-notes/self-hosted/v11.0.0-self-hosted', + 'release-notes/self-hosted/v10.0.0-self-hosted', + 'release-notes/self-hosted/v9.0.0-self-hosted', + 'release-notes/self-hosted/v8.1.0-self-hosted', + 'release-notes/self-hosted/v8.0.0-self-hosted', + 'release-notes/self-hosted/v7.0.0-self-hosted', + 'release-notes/self-hosted/v6.0.0-self-hosted', + 'release-notes/self-hosted/v5.1.0-self-hosted', + 'release-notes/self-hosted/v5.0.0-self-hosted', + 'release-notes/self-hosted/v4.4.0-self-hosted', + 'release-notes/self-hosted/v4.3.0-self-hosted', + 'release-notes/self-hosted/v4.2.0-self-hosted', + 'release-notes/self-hosted/v4.1.0-self-hosted', + 'release-notes/self-hosted/v4.0.1-self-hosted', + 'release-notes/self-hosted/v4.0.0-self-hosted', + 'release-notes/self-hosted/v3.5.1-self-hosted', + 'release-notes/self-hosted/v3.5.0-self-hosted', + 'release-notes/self-hosted/v3.4.0-self-hosted', + 'release-notes/self-hosted/v3.3.0-self-hosted', + 'release-notes/self-hosted/v3.2.0-self-hosted', + 'release-notes/self-hosted/v3.1.0-self-hosted', + 'release-notes/self-hosted/v3.0.0-self-hosted', + 'release-notes/self-hosted/v2.2.1-self-hosted', + 'release-notes/self-hosted/v2.2.0-self-hosted', + 'release-notes/self-hosted/v2.1.1-self-hosted', + 'release-notes/self-hosted/v2.1.0-self-hosted', + 'release-notes/self-hosted/v2.0.0-self-hosted', + 'release-notes/self-hosted/v1.5.0-self-hosted', + 'release-notes/self-hosted/v1.4.0-self-hosted', + 'release-notes/self-hosted/v1.3.0-self-hosted', + 'release-notes/self-hosted/v1.2.0-self-hosted', + 'release-notes/self-hosted/v1.1.0-self-hosted', + 'release-notes/self-hosted/v1.0.1-self-hosted', + 'release-notes/self-hosted/v1.0.0-self-hosted', +]; + diff --git a/docusaurus/docs/release-notes/self-hosted/v1.0.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v1.0.0-self-hosted.md new file mode 100644 index 0000000000..72985bef53 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v1.0.0-self-hosted.md @@ -0,0 +1,23 @@ +--- +title: Self-hosted v1.0.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v1.0.0. +slug: /release-notes/self-hosted/self-hosted-v1.0.0 +--- + + +These release notes are for [Codacy Self-hosted v1.0.0](https://github.com/codacy/chart/releases/tag/1.0.0), released on May 18, 2020. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Product enhancements + +- Streamlined the configuration of Git providers and improved the onboarding flow that guides the user while performing the initial Codacy setup. (CY-468) + +## Bug fixes + +- Fixed an issue that could cause pull requests to not be analyzed by improving the robustness of how Codacy fetches Git repositories. (CY-1542) +- Fixed an issue that caused Codacy to fail to display the information for the pull request tabs **Hotspots** and **Diff**. (CY-1690) +- Fixed an issue that prevented Codacy from analyzing repositories in synced organizations if the repositories had the state `OwnerNotCommiter`. (CY-1611) +- Fixed an issue that prevented using the Codacy configuration file to exclude files from the coverage analysis. (CY-229) diff --git a/docusaurus/docs/release-notes/self-hosted/v1.0.1-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v1.0.1-self-hosted.md new file mode 100644 index 0000000000..17244d850e --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v1.0.1-self-hosted.md @@ -0,0 +1,16 @@ +--- +title: Self-hosted v1.0.1 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v1.0.1. +slug: /release-notes/self-hosted/self-hosted-v1.0.1 +--- + + +These release notes are for [Codacy Self-hosted v1.0.1](https://github.com/codacy/chart/releases/tag/1.0.1), released on May 21, 2020. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Bug fixes + +- Fixed an issue that caused the Helm deployment to time out because the Fluentd pods failed to start. (CY-1761) diff --git a/docusaurus/docs/release-notes/self-hosted/v1.1.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v1.1.0-self-hosted.md new file mode 100644 index 0000000000..5c84a10b8b --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v1.1.0-self-hosted.md @@ -0,0 +1,24 @@ +--- +title: Self-hosted v1.1.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v1.1.0. +slug: /release-notes/self-hosted/self-hosted-v1.1.0 +--- + + +These release notes are for [Codacy Self-hosted v1.1.0](https://github.com/codacy/chart/releases/tag/1.1.0), released on May 26, 2020. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Product enhancements + +- The Profile and Access Management pages are now built using the React framework. (CY-83) +- It's now possible to define custom values for the analysis inactivity timeout, analysis task timeout, and maximum analysis file size. (CY-1298) + +## Bug fixes + +- Fixed an issue that sometimes caused logging into Codacy with GitLab Cloud to fail. (CY-1772) +- Fixed an issue that caused the deletion of an account in Codacy to fail. (CY-1720) +- Fixed an issue that could block Bitbucket Cloud and Bitbucket Server repositories from being added to Codacy if they contained spaces in the name. (CY-1717) +- Fixed an issue that prevented pull request notification emails from being sent to the pull request authors. (CY-1678) diff --git a/docusaurus/docs/release-notes/self-hosted/v1.2.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v1.2.0-self-hosted.md new file mode 100644 index 0000000000..89cea83477 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v1.2.0-self-hosted.md @@ -0,0 +1,21 @@ +--- +title: Self-hosted v1.2.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v1.2.0. +slug: /release-notes/self-hosted/self-hosted-v1.2.0 +--- + + +These release notes are for [Codacy Self-hosted v1.2.0](https://github.com/codacy/chart/releases/tag/1.2.0), released on June 4, 2020. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Product enhancements + +- To avoid downtime, Codacy now automatically rolls the deployment when performing an Help upgrade. (CY-1420) +- Now, Codacy doesn't allow the last Codacy administrator to delete its own account. (CY-1768) + +## Bug fixes + +- Fixed an issue that prevented the correct removal of repositories from Codacy when the repositories were deleted on GitHub. (CY-1820) diff --git a/docusaurus/docs/release-notes/self-hosted/v1.3.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v1.3.0-self-hosted.md new file mode 100644 index 0000000000..da3cc75668 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v1.3.0-self-hosted.md @@ -0,0 +1,18 @@ +--- +title: Self-hosted v1.3.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v1.3.0. +slug: /release-notes/self-hosted/self-hosted-v1.3.0 +--- + + +These release notes are for [Codacy Self-hosted v1.3.0](https://github.com/codacy/chart/releases/tag/1.3.0), released on June 12, 2020. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Bug fixes + +- Fixed misaligned organization cards in the onboarding screen UI. (CY-1864) +- Fixed an issue to improve the security of the OAuth 2.0 access token when making calls to the Bitbucket Cloud API. (CY-1856) +- Fixed alignment and wrong color of Git provider buttons when adding a new Git provider using Safari. (CY-1284) diff --git a/docusaurus/docs/release-notes/self-hosted/v1.4.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v1.4.0-self-hosted.md new file mode 100644 index 0000000000..6bd72ce432 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v1.4.0-self-hosted.md @@ -0,0 +1,22 @@ +--- +title: Self-hosted v1.4.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v1.4.0. +slug: /release-notes/self-hosted/self-hosted-v1.4.0 +--- + + +These release notes are for [Codacy Self-hosted v1.4.0](https://github.com/codacy/chart/releases/tag/1.4.0), released on June 23, 2020. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Bug fixes + +- Fixed an issue that could cause the list of repositories in an organization to display the repositories in the incorrect order. (CY-1940) +- Fixed an issue that could prevent pull requests from being analyzed if they were created while Codacy was already performing an analysis. (CY-1902) +- Fixed a UI issue affecting the Country drop-down box in the Plan and Billing page. (CY-1896) +- Fixed broken layout of Codacy comments on pull requests by removing the Codacy logo. (CY-1819) +- Fixed an UI issue affecting the list of default patterns under the account settings. (CY-522) +- Improved the feedback message provided by Codacy when deactivating a pattern that already has detected issues. (CY-117) +- Fixed an issue preventing the coverage information tab to be displayed in the page for specific files in the repository if the coverage was 0%. (CY-118) diff --git a/docusaurus/docs/release-notes/self-hosted/v1.5.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v1.5.0-self-hosted.md new file mode 100644 index 0000000000..9219198fe2 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v1.5.0-self-hosted.md @@ -0,0 +1,28 @@ +--- +title: Self-hosted v1.5.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v1.5.0. +slug: /release-notes/self-hosted/self-hosted-v1.5.0 +--- + + +These release notes are for [Codacy Self-hosted v1.5.0](https://github.com/codacy/chart/releases/tag/1.5.0), released on July 20, 2020. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Product enhancements + +- Added support for Gosec, the Golang Security Checker, as a [client-side tool](../../repositories-configure/local-analysis/client-side-tools.md). +- It's now possible to add repositories to Codacy programmatically with the new API v3 endpoint [addRepository](https://app.codacy.com/api/api-docs#addrepository). (CY-1877) +- Streamlined the configuration of Git providers and improved the onboarding flow that guides the user while performing the initial Codacy setup. (CY-468) +- Added support for GitLab Enterprise synced organizations. (CY-68) + +## Bug fixes + +- Codacy no longer displays a banner asking to add the user to the list of authors for commits with no associated email address. (CY-2020) +- Fixed an issue that prevented Codacy from automatically removing GitHub organizations with the GitHub Marketplace plan when they were deleted on the Git provider. (CY-1989) +- Fixed an issue that allowed users with access to a repository on the Git provider but who didn't belong to the organization on Codacy to change settings for that repository on the Codacy UI. (CY-1985) +- Added missing redirect from the login page to the repositories list page when the user is already logged in. (CY-1946) +- Fixed an issue that prevented Codacy from reporting the Complexity metric on TypeScript repositories. (CY-1824) +- Fixed an issue related to the expiration of the session cookie that caused the Codacy API to return 401 Unauthorized errors when the user was correctly logged in. (CY-1815) diff --git a/docusaurus/docs/release-notes/self-hosted/v10.0.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v10.0.0-self-hosted.md new file mode 100644 index 0000000000..57345e7336 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v10.0.0-self-hosted.md @@ -0,0 +1,120 @@ +--- +title: Self-hosted v10.0.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v10.0.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools-legacy/releases/tag/6.3.0 +codacy_tools_version_new: https://github.com/codacy/codacy-tools-legacy/releases/tag/sh-1.1.0 +slug: /release-notes/self-hosted/self-hosted-v10.0.0 +--- + + +These release notes are for [Codacy Self-hosted v10.0.0](https://github.com/codacy/chart/releases/tag/10.0.0), released on February 3, 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Upgrading Codacy Self-hosted + +Follow the steps below to upgrade to Codacy Self-hosted v10.0.0: + +1. Check the [release notes for all Codacy Self-hosted versions](../index.md#self-hosted) **between your current version and the most recent version** for breaking changes and follow the instructions provided carefully. + +1. Follow the instructions to [upgrade your Codacy Self-hosted instance](https://docs.codacy.com/v10.0/chart/maintenance/upgrade/). + +1. Update your Codacy command-line tools to the following versions: + + - [Codacy Analysis CLI 7.7.4](https://github.com/codacy/codacy-analysis-cli/releases/tag/7.7.4) + - [Codacy Coverage Reporter 13.12.3](https://github.com/codacy/codacy-coverage-reporter/releases/tag/13.12.3) + +## Breaking changes + +This Codacy Self-hosted version requires [PostgreSQL version 11.18](https://docs.codacy.com/v10.0/chart/requirements/#postgresql-server-setup) since the previous major version [recently reached end-of-life (EOL)](https://www.postgresql.org/support/versioning/). + +To upgrade PostgreSQL: + +1. Follow the instructions on [how to upgrade a PostgreSQL cluster](https://www.postgresql.org/docs/11/upgrading.html). + +1. After the upgrade, clean the Codacy databases with [vacuumdb](https://www.postgresql.org/docs/11/app-vacuumdb.html) to prevent the autovacuum feature from momentarily affecting the performance of the databases at a later time. + +**If you're using GitHub Enterprise Server** this Codacy Self-hosted version requires [GitHub Enterprise Server version 3.6.2 or later](https://docs.codacy.com/v10.0/faq/general/which-version-control-systems-does-codacy-support/). + +## Product enhancements + +- Added support for [Kubernetes 1.22.\*](https://docs.codacy.com/v10.0/chart/requirements/#kubernetes-or-microk8s-cluster-setup) (REL-992) +- You can now configure your Codacy GitHub App to use [expiring user access tokens](https://docs.github.com/en/developers/apps/building-github-apps/refreshing-user-to-server-access-tokens). (PLUTO-133) +- Improved the performance of applying coding standards to repositories to avoid timeouts when updating hundreds of repositories. (PLUTO-83) +- The **Status** column of the [coverage reports list](https://docs.codacy.com/v10.0/coverage-reporter/#validating-coverage) now includes direct links to troubleshooting instructions when there are coverage errors. (IO-155) +- Improved the performance and error handling of retrieving many open pull requests from the Git providers while populating the [**Pull requests** page](https://docs.codacy.com/v10.0/repositories/pull-requests/). (IO-133) +- Codacy now supports the [client-side tool Unity Roslyn Analyzers](https://docs.codacy.com/v10.0/related-tools/local-analysis/client-side-tools/) for reporting error-prone and performance issues on C# projects that use the Unity framework. (IO-96) +- Codacy now displays the coverage variation metric with a precision of two decimal places on the [Repository Dashboard](https://docs.codacy.com/v10.0/repositories/repository-dashboard/) and [Organization Overview](https://docs.codacy.com/v10.0/organizations/organization-overview/), and you can [define quality gates](https://docs.codacy.com/v10.0/repositories-configure/adjusting-quality-settings/#gates) with a coverage variation threshold using the same precision. + + The increased precision of the metric reflects the code coverage changes better by reducing issues with rounding errors. (IO-56) + + ![Coverage threshold with two decimal places on the Quality settings page](../images/io-56.png) + +- Added support for the following ESLint plugins: + - [prettier-plugin-tailwindcss](https://www.npmjs.com/package/prettier-plugin-tailwindcss) (CY-6570) + - [eslint-plugin-typescript-sort-keys](https://www.npmjs.com/package/eslint-plugin-typescript-sort-keys) (CY-6561) +- Added support for the remark-lint plugin [remarkjs/remark-gfm](https://github.com/remarkjs/remark-gfm). (CY-6513) + +- While [configuring a coding standard](https://docs.codacy.com/v10.0/organizations/using-a-coding-standard/), you can now toggle all code patterns using the new checkbox on the header. This allows you to conveniently toggle code patterns in bulk, for example, to enable all security code patterns. (CY-6255, CY-6336) + + ![Selecting all code patterns while configuring a coding standard](../images/cy-6336.png) + +## Bug fixes + +- Fixed an issue that caused Codacy to display the coverage value on the wrong file in specific edge cases. (COV-25) +- Now, Codacy asks for confirmation when you change a code pattern parameter on a repository that follows a coding standard. (PLUTO-149) +- Fixed an issue that could cause the commit details page to display an empty **Diff** tab. (IO-129) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.1.188 +- Checkstyle 10.3.1 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.19.0 +- ESLint 8.23.1 +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- **[JSHint 2.13.5](https://github.com/jshint/jshint/releases/tag/2.13.5) (updated from 2.12.0)** +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.48.0 +- Prospector 1.7.7 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.14.5 +- remark-lint 7.0.1 +- Revive 1.2.3 +- **[RuboCop 1.39.0](https://github.com/rubocop/rubocop/releases/tag/v1.39.0) (updated from 1.32.0)** +- Scalastyle 1.5.0 +- ShellCheck 0.8.0 +- Sonar C# 8.39 +- Sonar Visual Basic 8.15 +- Spectral 1.2.7 +- SpotBugs 4.5.3 +- SQLint 0.2.1 +- Staticcheck 2022.1.3 +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 +- **[Unity Roslyn Analyzers 1.14.0](https://github.com/microsoft/Microsoft.Unity.Analyzers/releases/tag/1.14.0) (new)** diff --git a/docusaurus/docs/release-notes/self-hosted/v11.0.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v11.0.0-self-hosted.md new file mode 100644 index 0000000000..b1a7530100 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v11.0.0-self-hosted.md @@ -0,0 +1,99 @@ +--- +title: Self-hosted v11.0.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v11.0.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools-sh/releases/tag/sh-1.1.3 +codacy_tools_version_new: https://github.com/codacy/codacy-tools-sh/releases/tag/sh-1.1.6 +slug: /release-notes/self-hosted/self-hosted-v11.0.0 +--- + + +These release notes are for [Codacy Self-hosted v11.0.0](https://github.com/codacy/chart/releases/tag/11.0.0), released on April 20, 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Upgrading Codacy Self-hosted + +Follow the steps below to upgrade to Codacy Self-hosted v11.0.0: + +1. Check the [release notes for all Codacy Self-hosted versions](../index.md#self-hosted) **between your current version and the most recent version** for breaking changes and follow the instructions provided carefully. + +1. Follow the instructions to [upgrade your Codacy Self-hosted instance](https://docs.codacy.com/v11.0/chart/maintenance/upgrade/). + +1. Update your Codacy command-line tools to the following versions: + + - [Codacy Analysis CLI 7.8.3](https://github.com/codacy/codacy-analysis-cli/releases/tag/7.8.3) + - [Codacy Coverage Reporter 13.13.1](https://github.com/codacy/codacy-coverage-reporter/releases/tag/13.13.1) + +## Breaking changes + +This version of Codacy Self-hosted drops support for Kubernetes 1.19, 1.20, and 1.21. These are old versions that [already reached EOL](https://kubernetes.io/releases/patch-releases/#non-active-branch-history). + +If you're using Kubernetes 1.19, 1.20, or 1.21, make sure that you upgrade your cluster before upgrading Codacy. For the current supported versions, see the [chart requirements page](https://docs.codacy.com/v11.0/chart/requirements/#kubernetes-or-microk8s-cluster-setup). + +:::caution +**If you use MicroK8s to run Codacy Self-hosted please use version 1.19 only**, as we're investigating feedback from customers that had issues running Codacy Self-hosted using MicroK8s versions newer than 1.19.\*. +::: + +## Product enhancements + +- Added support for [Kubernetes 1.23.\*](https://docs.codacy.com/v11.0/chart/requirements/#kubernetes-or-microk8s-cluster-setup) (REL-1151) + +## Bug fixes + +- Fixed an issue while synchronizing the name of Codacy organizations with the corresponding GitLab groups. (PLUTO-450) +- Fixed a scenario where tools could fail to complete the analysis due to a shorter than expected timeout. (IO-482) +- Fixed an inconsistent issue count between the **Commits** list and the **Repository Dashboard** page. (IO-422) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.1.188 +- Checkstyle 10.3.1 +- Clang-Tidy 10.0.1 +- **[CodeNarc 3.2.0](https://github.com/CodeNarc/CodeNarc/blob/master/CHANGELOG.md#version-320----jan-2023) (updated from 2.2.0)** +- CoffeeLint 2.1.0 +- **[Cppcheck 2.10](https://github.com/danmar/cppcheck/releases/tag/2.10) (updated from 2.2)** +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.19.0 +- **[ESLint 8.34.0](https://github.com/eslint/eslint/releases/tag/v8.34.0) (updated from 8.23.1)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- **[Jackson Linter 2.14.2](https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.14.2) (updated from 2.10.2)** +- JSHint 2.13.5 +- **[markdownlint 0.26.2](https://github.com/DavidAnson/markdownlint/releases/tag/v0.26.2) (updated from 0.23.1)** +- **[PHP Mess Detector 2.13.0](https://github.com/phpmd/phpmd/releases/tag/2.13.0) (updated from 2.10.1)** +- **[PHP_CodeSniffer 3.7.2](https://github.com/squizlabs/PHP_CodeSniffer/releases/tag/3.7.2) (updated from 3.6.2)** +- **[PMD 6.55.0](https://pmd.sourceforge.io/pmd-6.55.0/pmd_release_notes.html) (updated from 6.48.0)** +- Prospector 1.7.7 +- PSScriptAnalyzer 1.18.3 +- **[Pylint 2.17.0](https://github.com/pylint-dev/pylint/releases/tag/v2.17.0) (updated from 2.14.5)** +- Pylint (deprecated) 1.9.5 +- remark-lint 7.0.1 +- Revive 1.2.3 +- RuboCop 1.39.0 +- Scalastyle 1.5.0 +- **[ShellCheck 0.9.0](https://github.com/koalaman/shellcheck/blob/master/CHANGELOG.md#v090---2022-12-12) (updated from 0.8.0)** +- **[SonarC# 8.40](https://github.com/SonarSource/sonar-dotnet/releases/tag/8.40.0.48530) (updated from 8.39)** +- SonarVB 8.15 +- Spectral 1.2.7 +- **[SpotBugs 4.7.3](https://github.com/spotbugs/spotbugs/releases/tag/4.7.3) (updated from 4.5.3)** +- SQLint 0.2.1 +- Staticcheck 2022.1.3 +- **[Stylelint 14.16.1](https://github.com/stylelint/stylelint/releases/tag/14.16.1) (updated from 14.2.0)** +- **[SwiftLint 0.50.3](https://github.com/realm/SwiftLint/releases/tag/0.50.3) (updated from 0.43.1)** +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.14.0 diff --git a/docusaurus/docs/release-notes/self-hosted/v12.0.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v12.0.0-self-hosted.md new file mode 100644 index 0000000000..3309ce9475 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v12.0.0-self-hosted.md @@ -0,0 +1,130 @@ +--- +title: Self-hosted v12.0.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v12.0.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools-sh/releases/tag/sh-1.1.6 +codacy_tools_version_new: https://github.com/codacy/codacy-tools-sh/releases/tag/sh-1.2.2 +slug: /release-notes/self-hosted/self-hosted-v12.0.0 +--- + + +These release notes are for [Codacy Self-hosted v12.0.0](https://github.com/codacy/chart/releases/tag/12.0.0), released on July 20, 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Upgrading Codacy Self-hosted + +Follow the steps below to upgrade to Codacy Self-hosted v12.0.0: + +1. Check the [release notes for all Codacy Self-hosted versions](../index.md#self-hosted) **between your current version and the most recent version** for breaking changes and follow the instructions provided carefully. + +1. Follow the instructions to [upgrade your Codacy Self-hosted instance](https://docs.codacy.com/v12.0/chart/maintenance/upgrade/). + +1. Update your Codacy command-line tools to the following versions: + + - [Codacy Analysis CLI 7.8.3](https://github.com/codacy/codacy-analysis-cli/releases/tag/7.8.3) + - [Codacy Coverage Reporter 13.10.15](https://github.com/codacy/codacy-coverage-reporter/releases/tag/13.10.15) + +## Breaking changes + +- If you have set `scheduler.enable: "true"` in `values-production.yaml` (or `values-microk8s.yaml` if using MicroK8s), do the following before updating Kubernetes. + + Assuming you're using the default `codacy` namespace: + + 1. Remove all `scheduler.*` settings from `values-production.yaml` (or `values-microk8s.yaml` if using MicroK8s) + + 1. Update the ConfigMap of `codacy-worker-manager`: + + ```bash + kubectl patch configmap/codacy-worker-manager --namespace codacy --type merge --patch '{"data":{"CONFIG_FORCE_codacy_kubernetes_scheduler_enable": "false","CONFIG_FORCE_codacy_kubernetes_scheduler_name":"default-scheduler"}}' + ``` + + 1. Restart the `codacy-worker-manager` Deployment: + + ```bash + kubectl rollout restart deployment/codacy-worker-manager -n codacy + ``` + + 1. List any pending `worker` Pods: + + ```bash + kubectl get pods -l app=worker --field-selector=status.phase=Pending -n codacy + ``` + + 1. If there are any pending `worker` Pods, remove them: + + :::caution + This is a destructive action. Make sure you understand the consequences. + ::: + + ```bash + kubectl delete pods -l app=worker --field-selector=status.phase=Pending -n codacy + ``` + +- If you're upgrading your Kubernetes installation to v1.25, make sure to do the following in the recommended order to avoid service outages: + + 1. Upgrade to Codacy Self-hosted v12.0.0 + + 1. If using the monitoring functionality [Grafana + Prometheus + Loki](https://docs.codacy.com/v12.0/chart/configuration/monitoring/#setting-up-monitoring-using-grafana-prometheus-and-loki), update Loki and Promtail by following the latest respective installation instructions ([Loki](https://docs.codacy.com/v12.0/chart/configuration/monitoring/#2-installing-loki), [Promtail](https://docs.codacy.com/v12.0/chart/configuration/monitoring/#3-installing-promtail)). + + 1. Upgrade Kubernetes to v1.25 + +## Product enhancements + +- Added support for [Kubernetes 1.24.\* and 1.25.\*](https://docs.codacy.com/v12.0/chart/requirements/#kubernetes-or-microk8s-cluster-setup) (REL-1304, REL-1306) +- Added support for the Stylelint plugin [stylelint-no-px](https://www.npmjs.com/package/stylelint-no-px). (TS-455) +- Improved the performance of the tool Stylelint by reviewing and refactoring the tool configurations and supported packages. (TS-438) +- Updated and refactored the tool Ameba. [Thanks to Sija for the contribution!](https://github.com/codacy/codacy-ameba/pull/25) (TS-417) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- **[Ameba 1.4.3](https://github.com/crystal-ameba/ameba/releases/tag/v1.4.3) (updated from 0.13.1)** +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- **[Checkov 2.3.187](https://github.com/bridgecrewio/checkov/releases/tag/2.3.187) (updated from 2.1.188)** +- Checkstyle 10.3.1 +- Clang-Tidy 10.0.1 +- CodeNarc 3.2.0 +- CoffeeLint 2.1.0 +- **[Cppcheck 2.10.3](https://github.com/danmar/cppcheck/releases/tag/2.10.3) (updated from 2.10)** +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- **[detekt 1.22.0](https://github.com/detekt/detekt/releases/tag/v1.22.0) (updated from 1.19.0)** +- ESLint 8.34.0 +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- **[Gosec 2.15.0](https://github.com/securego/gosec/releases/tag/v2.15.0) (updated from 2.8.1)** +- Hadolint 1.18.2 +- Jackson Linter 2.14.2 +- JSHint 2.13.5 +- markdownlint 0.26.2 +- PHP Mess Detector 2.13.0 +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- **[Prospector 1.10.2](https://github.com/landscapeio/prospector/releases/tag/1.10.2) (updated from 1.7.7)** +- PSScriptAnalyzer 1.18.3 +- **[Pylint 2.17.3](https://github.com/PyCQA/pylint/releases/tag/v2.17.3) (updated from 2.17.0)** +- Pylint (deprecated) 1.9.5 +- remark-lint 7.0.1 +- **[Revive 1.3.2](https://github.com/mgechev/revive/releases/tag/v1.3.2) (updated from 1.2.3)** +- **[RuboCop 1.52.1](https://github.com/rubocop/rubocop/releases/tag/v1.52.1) (updated from 1.39.0)** +- Scalastyle 1.5.0 +- ShellCheck v0.9.0 +- SonarC# 8.40 +- SonarVB 8.15 +- **[Spectral 1.16.0](https://github.com/stoplightio/spectral/releases/tag/%40stoplight%2Fspectral-rulesets-v1.16.0) (updated from 1.2.7)** +- SpotBugs 4.7.3 +- SQLint 0.2.1 +- Staticcheck 2022.1.3 +- **[Stylelint 15.9.0](https://github.com/stylelint/stylelint/releases/tag/15.9.0) (updated from 14.16.1)** +- SwiftLint 0.50.3 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.14.0 diff --git a/docusaurus/docs/release-notes/self-hosted/v13.0.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v13.0.0-self-hosted.md new file mode 100644 index 0000000000..4b03018215 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v13.0.0-self-hosted.md @@ -0,0 +1,152 @@ +--- +title: Self-hosted v13.0.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v13.0.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools-sh/releases/tag/sh-1.2.6 +codacy_tools_version_new: https://github.com/codacy/codacy-tools-sh/releases/tag/sh-1.2.7 +slug: /release-notes/self-hosted/self-hosted-v13.0.0 +--- + + +These release notes are for [Codacy Self-hosted v13.0.0](https://github.com/codacy/chart/releases/tag/13.0.0), released on November 23, 2023. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Upgrading Codacy Self-hosted + +Follow the steps below to upgrade to Codacy Self-hosted v13.0.0: + +1. Check the [release notes for all Codacy Self-hosted versions](../index.md#self-hosted) **between your current version and the most recent version** for breaking changes and follow the instructions provided carefully. + +1. Follow the instructions to [upgrade your Codacy Self-hosted instance](https://docs.codacy.com/v13.0/chart/maintenance/upgrade/). + +1. Update your Codacy command-line tools to the following versions: + + - [Codacy Analysis CLI 7.9.5](https://github.com/codacy/codacy-analysis-cli/releases/tag/7.9.5) + - [Codacy Coverage Reporter 13.10.15](https://github.com/codacy/codacy-coverage-reporter/releases/tag/13.10.15) + +## Support for ingress-nginx chart 4.8.3 + +This version of Codacy Self-hosted adds support for [ingress-nginx chart 4.8.3](https://github.com/kubernetes/ingress-nginx/releases/tag/helm-chart-4.8.3), which fixes the following vulnerabilities: + +- [CVE-2022\-4886](https://github.com/kubernetes/ingress-nginx/issues/10570) +- [CVE-2023\-5043](https://github.com/kubernetes/ingress-nginx/issues/10571) +- [CVE-2023\-5044](https://github.com/kubernetes/ingress-nginx/issues/10572) + +:::note +Although [ingress-nginx chart 4.8.3 officially supports](https://github.com/kubernetes/ingress-nginx/tree/helm-chart-4.8.3#supported-versions-table) Kubernetes **version 1.25** to **1.28**, we tested this version of Codacy Self-hosted using [ingress-nginx chart 4.8.3](https://github.com/kubernetes/ingress-nginx/releases/tag/helm-chart-4.8.3) on all the [supported Kubernetes versions](https://docs.codacy.com/v13.0/chart/requirements/#kubernetes-or-microk8s-cluster-setup), **1.22.\*** to **1.26.\***. All tests were successful in accordance with our quality assurance standards. +::: + +### Upgrading ingress-nginx chart to version 4.8.3 + +:::caution +- If you applied **custom configurations** to ingress-nginx different from the Codacy's `values-nginx.yaml` file, follow the [ingress-nginx documentation](https://artifacthub.io/packages/helm/ingress-nginx/ingress-nginx/4.8.3) to upgrade your installation. +- If your NGINX Ingress Controller is shared by other components out of Codacy's installation scope, check those components documentation to evaluate the impact of this upgrade. + +If you have any questions regarding the above scenarios or need help, please contact [support@codacy.com](mailto:support@codacy.com). + +::: + +If your Codacy Self-hosted setup uses a **dedicated NGINX Ingress Controller** that follows [Codacy's installation instructions](https://docs.codacy.com/v13.0/chart/infrastructure/eks-quickstart/) with **no custom configurations**, you can upgrade ingress-nginx chart to version 4.8.3 by executing the steps below: + +1. Download the updated configuration file [`values-nginx.yaml`](https://docs.codacy.com/v13.0/chart/values-files/values-nginx.yaml) for the NGINX Ingress Controller, which enables `enableAnnotationValidations`. + +1. Run the following script: + + ``` + kubectl create namespace codacy + helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx + helm repo update + helm upgrade --install --namespace codacy --version 4.8.3 nginx-ingress ingress-nginx/ingress-nginx -f values-nginx.yaml + ``` + +:::note +This ingress-nginx chart upgrade can be applied to Codacy Self-hosted v10.0 and later. +::: + +## Product enhancements + +- Added support for [Kubernetes 1.26](https://docs.codacy.com/v13.0/chart/requirements/#kubernetes-or-microk8s-cluster-setup). (REL-1389) +- Added support for [PostgreSQL server 12](https://docs.codacy.com/v13.0/chart/requirements/#postgresql-server-setup). (REL-1347) +- Pylint now supports Python 3.11 syntax. (TS-467) +- Added support for the ESLint plugin [vue-scoped-css](https://www.npmjs.com/package/eslint-plugin-vue-scoped-css). (TS-356) +- Added support for the ESLint plugin [eslint-plugin-rxjs](https://www.npmjs.com/package/eslint-plugin-rxjs). (TS-346) +- Added support for the ESLint plugins [eslint-plugin-markdown](https://www.npmjs.com/package/eslint-plugin-markdown) and [eslint-plugin-yml](https://www.npmjs.com/package/eslint-plugin-yml). (TS-121) +- Added support for [ingress-nginx chart 4.8.3](https://github.com/kubernetes/ingress-nginx/releases/tag/helm-chart-4.8.3). (REL-1416) + +## Bug fixes + +- Fixed an incorrect popup being shown when loading the repository Code patterns page. (PLUTO-717) + +## Tool deprecations + +This version of Codacy Self-hosted deprecates the following tools: **CSSLint**, **Faux Pas**, **JSHint**, **Tailor**, and **TSLint**. + +These tools have become deprecated or stopped being updated by their maintainers and started providing a bad experience to Codacy users either by reporting false positives or causing other unexpected issues. + +To continue analyzing your repositories, enable the replacement tool for the corresponding deprecated tool listed below on the [code patterns page](https://docs.codacy.com/v13.0/repositories-configure/configuring-code-patterns/) of each affected repository or in your [organization coding standard](https://docs.codacy.com/v13.0/organizations/using-a-coding-standard/), if you are using one: + +| Deprecated tool | Replacement tool | +|-----------------|------------------| +| CSSLint | Stylelint | +| Faux Pas | Clang-Tidy | +| JSHint | ESLint | +| Tailor | SwiftLint | +| TSLint | ESLint | + +The suggested replacement tools are enabled by default for new repositories, except for Clang Tidy, which is a [client-side tool](https://docs.codacy.com/v13.0/related-tools/local-analysis/client-side-tools/). + +If you have any questions or need help, please contact [support@codacy.com](mailto:support@codacy.com). + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 1.4.3 +- **[Bandit 1.7.5](https://github.com/PyCQA/bandit/releases/tag/1.7.5) (updated from 1.7.0)** +- Brakeman 4.3.1 +- **[bundler-audit 0.9.1](https://github.com/rubysec/bundler-audit/releases/tag/v0.9.1) (updated from 0.6.1)** +- Checkov 2.3.187 +- **[Checkstyle 10.12.3](https://checkstyle.sourceforge.io/releasenotes.html#Release_10.12.3) (updated from 10.3.1)** +- Clang-Tidy 10.0.1 +- **[CodeNarc 3.3.0](https://github.com/CodeNarc/CodeNarc/blob/master/CHANGELOG.md) (updated from 3.2.0)** +- **[CoffeeLint 5.2.11](https://github.com/coffeelint/coffeelint/releases/tag/v5.2.11) (updated from 2.1.0)** +- **[Cppcheck 2.12.0](https://github.com/danmar/cppcheck/releases/tag/2.12.0) (updated from 2.10.3)** +- Credo 1.4.0 +- **CSSLint (deprecated) 1.0.5** +- dartanalyzer 2.17.0 +- detekt 1.22.0 +- **[ESLint 8.51.0](https://github.com/eslint/eslint/releases/tag/v8.51.0) (updated from 8.34.0)** +- ESLint (deprecated) 7.32.0 +- **Faux-Pas (deprecated) 1.7.2** +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- **[Jackson Linter 2.15.2](https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.15.2) (updated from 2.14.2)** +- **[JSHint (deprecated) 2.13.6](https://github.com/jshint/jshint/releases/tag/2.13.6) (updated from 2.13.5)** +- markdownlint 0.26.2 +- PHP Mess Detector 2.13.0 +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- Prospector 1.10.2 +- **[PSScriptAnalyzer 1.21.0](https://github.com/PowerShell/PSScriptAnalyzer/releases/tag/1.21.0) (updated from 1.18.3)** +- **[Pylint 2.17.5](https://github.com/pylint-dev/pylint/releases/tag/v2.17.5) (updated from 2.17.3)** +- Pylint (deprecated) 1.9.5 +- **[remark-lint 9.1.2](https://github.com/remarkjs/remark-lint/releases/tag/9.1.2) (updated from 7.0.1)** +- **[Revive 1.3.3](https://github.com/mgechev/revive/releases/tag/v1.3.3) (updated from 1.3.2)** +- **[RuboCop 1.56.1](https://github.com/rubocop/rubocop/releases/tag/v1.56.1) (updated from 1.52.1)** +- **[Scalastyle 1.5.1](https://github.com/beautiful-scala/scalastyle/releases/tag/v1.5.1) (updated from 1.5.0)** +- ShellCheck v0.9.0 +- SonarC# 8.40 +- SonarVB 8.15 +- Spectral 1.16.0 +- SpotBugs 4.7.3 +- SQLint 0.2.1 +- **[Staticcheck 2023.1.5](https://staticcheck.io/changes/2023.1.5/#2023.1.5) (updated from 2022.1.3)** +- **[Stylelint 15.10.3](https://github.com/stylelint/stylelint/releases/tag/15.10.3) (updated from 15.9.0)** +- SwiftLint 0.50.3 +- **Tailor (deprecated) 0.12.0** +- **TSLint (deprecated) 6.1.3** +- TSQLLint 1.11.1 +- **[Unity Roslyn Analyzers 1.17.0](https://github.com/microsoft/Microsoft.Unity.Analyzers/releases/tag/1.17.0) (updated from 1.14.0)** diff --git a/docusaurus/docs/release-notes/self-hosted/v14.0.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v14.0.0-self-hosted.md new file mode 100644 index 0000000000..4de119e22e --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v14.0.0-self-hosted.md @@ -0,0 +1,88 @@ +--- +title: Self-hosted v14.0.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v14.0.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools-sh/releases/tag/sh-1.2.7 +codacy_tools_version_new: https://github.com/codacy/codacy-tools-sh/releases/tag/sh-1.2.12 +slug: /release-notes/self-hosted/self-hosted-v14.0.0 +--- + + +These release notes are for [Codacy Self-hosted v14.0.0](https://github.com/codacy/chart/releases/tag/14.0.0), released on June 26, 2024. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Upgrading Codacy Self-hosted + +Follow the steps below to upgrade to Codacy Self-hosted v14.0.0: + +1. Check the [release notes for all Codacy Self-hosted versions](../index.md#self-hosted) **between your current version and the most recent version** for breaking changes and follow the instructions provided carefully. + +1. Follow the instructions to [upgrade your Codacy Self-hosted instance](https://docs.codacy.com/v14.0/chart/maintenance/upgrade/). + +1. Update your Codacy command-line tools to the following versions: + + - [Codacy Analysis CLI 7.9.5](https://github.com/codacy/codacy-analysis-cli/releases/tag/7.9.5) + - [Codacy Coverage Reporter 13.10.15](https://github.com/codacy/codacy-coverage-reporter/releases/tag/13.10.15) + +## Product enhancements + +- Added support for [Kubernetes 1.27](https://docs.codacy.com/v14.0/chart/requirements/#kubernetes-or-microk8s-cluster-setup). (REL-1428) +- ESLint now supports file extensions `.cjs` (JavaScript) and `.mts` (TypeScript). (TCE-673) + +## Bug fixes + +- Fixed an issue that caused the coverage settings page to time out when loading. (TCE-1001) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- **[Ameba 1.5.0](https://github.com/crystal-ameba/ameba/releases/tag/v1.5.0) (updated from 1.4.3)** +- Bandit 1.7.5 +- Brakeman 4.3.1 +- bundler-audit (deprecated) 0.9.1 +- **[Checkov 3.0.25](https://github.com/bridgecrewio/checkov/releases/tag/3.0.25) (updated from 2.3.187)** +- **[Checkstyle 10.13.0](https://checkstyle.sourceforge.io/releasenotes.html#Release_10.13.0) (updated from 10.12.3)** +- Clang-Tidy 10.0.1 +- CodeNarc 3.3.0 +- CoffeeLint 5.2.11 +- Cppcheck 2.12.0 +- **[Credo 1.7.2](https://github.com/rrrene/credo/releases/tag/v1.7.2) (updated from 1.4.0)** +- CSSLint (deprecated) 1.0.5 +- **[dartanalyzer 3.3.0](https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md) (updated from 2.17.0)** +- **[detekt 1.23.5](https://github.com/detekt/detekt/releases/tag/v1.23.5) (updated from 1.22.0)** +- **[ESLint 8.56.0](https://github.com/eslint/eslint/releases/tag/v8.56.0) (updated from 8.51.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- Jackson Linter 2.15.2 +- JSHint (deprecated) 2.13.6 +- **[markdownlint 0.33.0](https://github.com/DavidAnson/markdownlint/releases/tag/v0.33.0) (updated from 0.26.2)** +- **[PHP Mess Detector 2.14.1](https://github.com/phpmd/phpmd/releases/tag/2.14.1) (updated from 2.13.0)** +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- **[Prospector 1.10.3](https://github.com/landscapeio/prospector/releases/tag/v1.10.3) (updated from 1.10.2)** +- PSScriptAnalyzer 1.21.0 +- **[Pylint 3.0.3](https://github.com/pylint-dev/pylint/releases/tag/v3.0.3) (updated from 2.17.5)** +- Pylint (deprecated) 1.9.5 +- remark-lint 9.1.2 +- **[Revive 1.3.7](https://github.com/mgechev/revive/releases/tag/v1.3.7) (updated from 1.3.3)** +- **[RuboCop 1.60.2](https://github.com/rubocop/rubocop/releases/tag/v1.60.2) (updated from 1.56.1)** +- Scalastyle 1.5.1 +- ShellCheck v0.9.0 +- **[SonarC# 9.19](https://github.com/SonarSource/sonar-dotnet/tags) (updated from 8.40)** +- SonarVB 8.15 +- **[Spectral 1.18.1](https://github.com/stoplightio/spectral/releases/tag/%40stoplight%2Fspectral-rulesets-1.18.1) (updated from 1.16.0)** +- **[SpotBugs 4.8.3](https://github.com/spotbugs/spotbugs/releases/tag/4.8.3) (updated from 4.7.3)** +- SQLint 0.2.1 +- **[Staticcheck 2023.1.6](https://staticcheck.io/changes/2023.1/#2023.1.6) (updated from 2023.1.5)** +- Stylelint 15.10.3 +- **[SwiftLint 0.54.0](https://github.com/realm/SwiftLint/releases/tag/0.54.0) (updated from 0.50.3)** +- Tailor 0.12.0 +- TSLint (deprecated) 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.17.0 diff --git a/docusaurus/docs/release-notes/self-hosted/v14.1.1-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v14.1.1-self-hosted.md new file mode 100644 index 0000000000..09f6a1e68a --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v14.1.1-self-hosted.md @@ -0,0 +1,81 @@ +--- +title: Self-hosted v14.1.1 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v14.1.1. +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/1.2.12 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/1.2.12 +slug: /release-notes/self-hosted/self-hosted-v14.1.1 +--- + + +These release notes are for [Codacy Self-hosted v14.1.1](https://github.com/codacy/chart/releases/tag/14.1.1), released on March 10, 2025. + + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Upgrading Codacy Self-hosted + +Follow the steps below to upgrade to Codacy Self-hosted v14.1.1: + +1. Check the [release notes for all Codacy Self-hosted versions](../index.md#self-hosted) **between your current version and the most recent version** for breaking changes and follow the instructions provided carefully. + +1. Follow the instructions to [upgrade your Codacy Self-hosted instance](https://docs.codacy.com/v14.1/chart/maintenance/upgrade/). + +1. Update your Codacy command-line tools to the following versions: + + - [Codacy Analysis CLI 7.9.5](https://github.com/codacy/codacy-analysis-cli/releases/tag/7.9.5) + - [Codacy Coverage Reporter 13.10.15](https://github.com/codacy/codacy-coverage-reporter/releases/tag/13.10.15) + +## Product enhancements +- Added support for [Kubernetes 1.28](https://docs.codacy.com/v14.1/chart/requirements/#kubernetes-or-microk8s-cluster-setup). (REL-1560) + + +## Tool versions +- Ameba 1.5.0 +- Bandit 1.7.5 +- Brakeman 4.3.1 +- bundler-audit (deprecated) 0.9.1 +- Checkov 3.0.25 +- Checkstyle 10.13.0 +- Clang-Tidy 10.0.1 +- CodeNarc 3.3.0 +- CoffeeLint 5.2.11 +- Cppcheck 2.12.0 +- Credo 1.7.2 +- CSSLint (deprecated) 1.0.5 +- dartanalyzer 3.3.0 +- detekt 1.23.5 +- ESLint 8.56.0 +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- Jackson Linter 2.15.2 +- JSHint (deprecated) 2.13.6 +- markdownlint 0.33.0 +- PHP Mess Detector 2.14.1 +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- Prospector 1.10.3 +- PSScriptAnalyzer 1.21.0 +- Pylint 3.0.3 +- Pylint (deprecated) 1.9.5 +- remark-lint 9.1.2 +- Revive 1.3.7 +- RuboCop 1.60.2 +- Scalastyle 1.5.1 +- ShellCheck v0.9.0 +- SonarC# 9.19 +- SonarVB 8.15 +- Spectral 1.18.1 +- SpotBugs 4.8.3 +- SQLint 0.2.1 +- Staticcheck 2023.1.6 +- Stylelint 15.10.3 +- SwiftLint 0.54.0 +- Tailor 0.12.0 +- TSLint (deprecated) 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.17.0 diff --git a/docusaurus/docs/release-notes/self-hosted/v15.0.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v15.0.0-self-hosted.md new file mode 100644 index 0000000000..21862c5ddb --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v15.0.0-self-hosted.md @@ -0,0 +1,81 @@ +--- +title: Self-hosted v15.0.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v15.0.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools-sh/releases/tag/1.2.12 +codacy_tools_version_new: https://github.com/codacy/codacy-tools-sh/releases/tag/1.2.20 +slug: /release-notes/self-hosted/self-hosted-v15.0.0 +--- + + +These release notes are for [Codacy Self-hosted v15.0.0](https://github.com/codacy/chart/releases/tag/15.0.0), released on June 5, 2025. + + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Upgrading Codacy Self-hosted + +Follow the steps below to upgrade to Codacy Self-hosted v15.0.0: + +1. Check the [release notes for all Codacy Self-hosted versions](../index.md#self-hosted) **between your current version and the most recent version** for breaking changes and follow the instructions provided carefully. + +1. Follow the instructions to [upgrade your Codacy Self-hosted instance](https://docs.codacy.com/v14.1/chart/maintenance/upgrade/). + +1. Update your Codacy command-line tools to the following versions: + + - [Codacy Analysis CLI 7.9.5](https://github.com/codacy/codacy-analysis-cli/releases/tag/7.9.5) + - [Codacy Coverage Reporter 13.10.15](https://github.com/codacy/codacy-coverage-reporter/releases/tag/13.10.15) + +## Product enhancements +- Added support for [Kubernetes 1.30](https://docs.codacy.com/v15.0/chart/requirements/#kubernetes-or-microk8s-cluster-setup). (REL-1717) + + +## Tool versions +- Ameba 1.5.0 (updated from 1.4.0) +- Bandit 1.7.5 (updated from 1.7.1) +- Brakeman 4.3.1 +- bundler-audit (deprecated) 0.9.1 +- Checkov 3.0.25 (updated from 2.3.187) +- Checkstyle 10.13.0 +- Clang-Tidy 10.0.1 +- CodeNarc 3.3.0 +- CoffeeLint 5.2.11 (updated from 5.2.10) +- Cppcheck 2.12.0 +- Credo 1.7.2 +- CSSLint (deprecated) 1.0.5 +- dartanalyzer 3.3.0 +- detekt 1.23.5 +- ESLint 8.56.0 (updated from 8.55.0) +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.15.0 +- Hadolint 1.18.2 +- Jackson Linter 2.15.2 +- JSHint (deprecated) 2.13.6 +- markdownlint 0.33.0 (updated from 0.26.2) +- PHP Mess Detector 2.14.1 (updated from 2.13.0) +- PHP_CodeSniffer 3.7.2 +- PMD 6.55.0 +- Prospector 1.10.3 +- PSScriptAnalyzer 1.21.0 +- Pylint 3.0.3 +- Pylint (deprecated) 1.9.5 +- remark-lint 9.1.2 +- Revive 1.3.7 +- RuboCop 1.60.2 (updated from 1.59.0) +- Scalastyle 1.5.1 +- ShellCheck v0.9.0 +- SonarC# 9.19 +- SonarVB 8.15 +- Spectral 1.18.1 +- SpotBugs 4.8.3 +- SQLint 0.2.1 +- Staticcheck 2023.1.6 +- Stylelint 15.10.3 +- SwiftLint 0.54.0 +- Tailor 0.12.0 +- TSLint (deprecated) 6.1.3 +- TSQLLint 1.11.1 +- Unity Roslyn Analyzers 1.17.0 diff --git a/docusaurus/docs/release-notes/self-hosted/v2.0.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v2.0.0-self-hosted.md new file mode 100644 index 0000000000..760d12213a --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v2.0.0-self-hosted.md @@ -0,0 +1,177 @@ +--- +title: Self-hosted v2.0.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v2.0.0. +slug: /release-notes/self-hosted/self-hosted-v2.0.0 +--- + + +These release notes are for [Codacy Self-hosted v2.0.0](https://github.com/codacy/chart/releases/tag/2.0.0), released on August 18, 2020. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Breaking changes + +This version of Codacy Self-hosted introduces the following breaking changes: + +- You must manually delete the existing RabbitMQ PVCs before upgrading Codacy. + + To do this, start by removing the RabbitMQ statefulset: + + ```bash + kubectl delete sts/codacy-rabbitmq-ha -n codacy + ``` + + Confirm the name of the PVCs that were created by RabbitMQ: + + ```bash + kubectl get pvc -n codacy + ``` + + Finally, delete all the PVCs related to RabbitMQ. You should have three replicas which was the default for versions older than 2.0.0: + + ```bash + kubectl delete pvc data-codacy-rabbitmq-ha-0 -n codacy + kubectl delete pvc data-codacy-rabbitmq-ha-1 -n codacy + kubectl delete pvc data-codacy-rabbitmq-ha-2 -n codacy + ``` + + :::caution + After you upgrade Codacy, our chart will install a new version of RabbitMQ with the **new default of one replica**. + ::: + +- The structure of the file [`values-production.yaml`](https://docs.codacy.com/v2.0/chart/values-files/values-production.yaml) changed. You must update your version of the file to match the structure of the new file: + + - The following analysis workers configuration values moved from: + + ```yaml + worker-manager: + config: + workers: + [...] + workerResources: + [...] + pluginResources: + [...] + ``` + + To: + + ```yaml + global: + workerManager: + workers: + config: + [...] + workerResources: + [...] + pluginResources: + [...] + ``` + + - The following database configuration values moved from: + + ```yaml + hotspots-api: + hotspotsdb: + [...] + + activities: + activitiesdb: + [...] + + crow: + crowdb: + [...] + ``` + + To: + + ```yaml + global: + hotspotsdb: + [...] + activitiesdb: + [...] + crowdb: + [...] + ``` + + - The following Erlang cookie configuration was added to the RabbitMQ configuration values: + + ```yaml + rabbitmq-ha: + rabbitmqErlangCookie: <--- erlang-cookie ---> # Generate one with `cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1` + [...] + ``` + + When you previously installed Codacy, this cookie was automatically set to a random value. We recommend that you keep the same cookie to help ensure that the Codacy upgrade runs smoothly. + + Run the following command to retrieve the current cookie value and define it explicitly in the new configuration: + + ```bash + kubectl get secrets -n codacy codacy-rabbitmq-ha -o jsonpath="{.data.rabbitmq-erlang-cookie}" | base64 --decode + ``` + +## Product enhancements + +- The chart for Codacy Self-hosted now [supports Helm 3.3](https://docs.codacy.com/v2.0/chart/#2-installing-codacy). +- Updated the RabbitMQ chart to version 7.5.7 from the Bitnami Helm chart repository. +- Updated the MinIO chart to version 5.0.33 from the stable Helm chart repository. + +## Bug fixes + +- Now, Codacy provides feedback if the Country field is empty while updating the invoice details for an organization. (CY-2600) +- Fixed an issue that prevented users from finishing the onboarding process unless they added a Git provider organization. (CY-2580) +- Fixed an issue that prevented Codacy from loading the organization data from the Git provider during the onboarding process. (CY-2572) +- Fixed an issue that prevented Codacy from sending commit and pull request notification emails to members of an organization. (CY-2467) +- Fixed an issue that could cause Codacy to display an HTTP 404 error page instead of the Repositories page for an organization. (CY-2356) +- Fixed an issue that could cause Codacy to stop syncing Bitbucket Cloud repositories and updating pull requests in those repositories. (CY-2355) +- Fixed an issue that could prevent new users from starting the onboarding wizard. (CY-2288) +- Now, Codacy automatically navigates to the Organizations page after deleting an organization. (CY-2278) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- **Ameba: 0.13.1 (updated from 0.12.0)** +- Bandit: 1.6.2 +- Brakeman: 4.3.1 +- bundler-audit: 0.6.1 +- Checkstyle: 8.34 +- **CodeNarc: 1.6 (updated from 1.5)** +- CoffeeLint: 2.1.0 +- **Cppcheck: 2.1 (updated from 1.90)** +- Credo: 1.3.0 +- CSSLint: 1.0.5 +- **detekt: 1.10.0 (updated from 1.8.0)** +- **ESLint: 7.6.0 (updated from 6.8.0)** +- Flawfinder: 2.0.11 +- Gorevive: 1.0.2 +- Gosec: v2.3.0 +- Hadolint: 1.17.5 +- Jackson Linter: 2.10.2 +- JSHint: 2.10.2 +- **PHP_CodeSniffer: 3.5.6 (updated from 3.5.5)** +- Phpmd: 2.8.1 +- PMD (Legacy): 5.8.1 +- PMD: 6.25.0 +- Prospector: 1.2.0 +- PSScriptAnalyser: 1.18.3 +- Pylint Python3: 2.5.3 +- Pylint: 1.9.5 +- Remark Lint: 7.0.0 +- RuboCop: 0.82.0 +- Scalastyle: 1.0.0 +- ShellCheck: v0.7.0 +- **SonarC#: 8.10 (updated from 8.9)** +- **SonarVB: 8.10 (updated from 8.9)** +- **SpotBugs: 4.0.1 (updated from 4.0.0)** +- SQLint: 0.1.9 +- Staticcheck: 2017.2.2 +- Stylelint: 13.6.1 +- **SwiftLint: 0.39.2 (updated from 0.36.0)** +- Tailor: 0.12.0 +- TSLint: 5.14.0 +- TSQLLint: 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v2.1.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v2.1.0-self-hosted.md new file mode 100644 index 0000000000..e373d5756f --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v2.1.0-self-hosted.md @@ -0,0 +1,76 @@ +--- +title: Self-hosted v2.1.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v2.1.0. +slug: /release-notes/self-hosted/self-hosted-v2.1.0 +--- + + +These release notes are for [Codacy Self-hosted v2.1.0](https://github.com/codacy/chart/releases/tag/2.1.0), released on September 16, 2020. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Product enhancements + +- Improved the [repositories list page](../../organizations/managing-repositories.md) to streamline managing the repositories in an organization and display metrics for each repository. (CY-1847) + +## Bug fixes + +- Fixed an issue that prevented analyzing private repositories in organizations that had upgraded from trial to the Pro plan. (CY-2716) +- Fixed an issue that prevented changes to GitHub Marketplace subscriptions to be reflected accordingly on Codacy. (CY-2712) +- Fixed an issue that caused repository dashboards to show empty charts for the last 8 commits. (CY-2699) +- Fixed an issue that caused the code patterns page to incorrectly display the configuration file option selected for tools that didn't have a configuration file in the repository. (CY-2697) +- Fixed an issue that caused repository dashboards to show empty charts instead of the last 8 commits if the repositories didn't have enough historical data. (CY-2694) +- Fixed an issue that could prevent Codacy from displaying organizations and repositories that the user had access to on GitLab Cloud or GitLab Enterprise. (CY-2685) +- Fixed an issue that could cause the quality evolution chart in repository dashboards to display historical data only for the last 8 commits instead of for the last 31 or 7 days. (CY-2670) +- When trying to add a repository that already exists in a different organization, Codacy now provides a more detailed error message that includes the name of the organization that already contains the repository. (CY-2620) +- If the duplication metric isn't calculated, the repository dashboards now provide clear error messages that include instructions on how to solve the issue. (CY-2436) +- Fixed an error when opening an empty repository list on GitHub Enterprise organizations. (CY-2361) +- Fixed the text alignment in the repositories screen empty state. (CY-2074) +- Fixed an issue that caused Codacy to send spurious email notifications to users who had enabled repository notifications only for their activity. (CY-1932) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.6.2 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkstyle 8.34 +- CodeNarc 1.6 +- CoffeeLint 2.1.0 +- Cppcheck 2.1 +- Credo 1.3.0 +- CSSLint 1.0.5 +- detekt 1.10.0 +- **ESLint 7.8.1 (updated from 7.6.0)** +- Flawfinder 2.0.11 +- Gorevive 1.0.2 +- Gosec v2.3.0 +- Hadolint 1.17.5 +- Jackson Linter 2.10.2 +- JSHint 2.10.2 +- PHP_CodeSniffer 3.5.6 +- PHP Mess Detector 2.8.1 +- **Pmd 6.27.0 (updated from 6.25.0)** +- Pmdjava 5.8.1 +- Prospector 1.2.0 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- **Pylint Python3 2.6.0 (updated from 2.5.3)** +- Remark Lint 7.0.0 +- RuboCop 0.82.0 +- Scalastyle 1.0.0 +- **ShellCheck 0.7.1 (updated from 0.7.0)** +- **SonarC# 8.12 (updated from 8.10)** +- **SonarVB 8.12 (updated from 8.10)** +- **SpotBugs 4.1.2 (updated from 4.0.1)** +- SQLint 0.1.9 +- Staticcheck 2017.2.2 +- **Stylelint 13.7.0 (updated from 13.6.1)** +- SwiftLint 0.39.2 +- Tailor 0.12.0 +- TSLint 5.14.0 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v2.1.1-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v2.1.1-self-hosted.md new file mode 100644 index 0000000000..062fb390c0 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v2.1.1-self-hosted.md @@ -0,0 +1,61 @@ +--- +title: Self-hosted v2.1.1 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v2.1.1. +slug: /release-notes/self-hosted/self-hosted-v2.1.1 +--- + + +These release notes are for [Codacy Self-hosted v2.1.1](https://github.com/codacy/chart/releases/tag/2.1.1), released on September 24, 2020. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Bug fixes + +- Fixed an issue that prevented Codacy from detecting and analyzing new commits and pull requests in repositories belonging to synced organizations. This issue only affected repositories that didn't have a post-commit hook enabled and required Codacy to poll for changes. (CY-2781) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. + +- Ameba 0.13.1 +- Bandit 1.6.2 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkstyle 8.34 +- CodeNarc 1.6 +- CoffeeLint 2.1.0 +- Cppcheck 2.1 +- Credo 1.3.0 +- CSSLint 1.0.5 +- detekt 1.10.0 +- ESLint 7.8.1 +- Flawfinder 2.0.11 +- Gorevive 1.0.2 +- Gosec v2.3.0 +- Hadolint 1.17.5 +- Jackson Linter 2.10.2 +- JSHint 2.10.2 +- PHP_CodeSniffer 3.5.6 +- Phpmd 2.8.1 +- PMD 6.27.0 +- Pmdjava 5.8.1 +- Prospector 1.2.0 +- PSScriptAnalyser 1.18.3 +- Pylint 1.9.5 +- Pylint Python3 2.6.0 +- Remark Lint 7.0.0 +- RuboCop 0.82.0 +- Scalastyle 1.0.0 +- ShellCheck 0.7.1 +- SonarC# 8.12 +- SonarVB 8.12 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2017.2.2 +- Stylelint 13.7.0 +- SwiftLint 0.39.2 +- Tailor 0.12.0 +- TSLint 5.14.0 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v2.2.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v2.2.0-self-hosted.md new file mode 100644 index 0000000000..7b37a3167b --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v2.2.0-self-hosted.md @@ -0,0 +1,76 @@ +--- +title: Self-hosted v2.2.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v2.2.0. +slug: /release-notes/self-hosted/self-hosted-v2.2.0 +--- + + +These release notes are for [Codacy Self-hosted v2.2.0](https://github.com/codacy/chart/releases/tag/2.2.0), released on October 8, 2020. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Product enhancements + +- You can now use the Codacy Analysis CLI [GitHub Action](https://github.com/marketplace/actions/codacy-analysis-cli) to analyze each commit and pull request. (CY-2663) +- You can now use [personal organizations](../../organizations/what-are-organizations.md#adding-an-organization) to manage your personal repositories. (CY-1802) +- Updated the [Organization](../../organizations/organization-overview.md) and [Repository](../../repositories/repository-dashboard.md) dashboards with a cleaner user experience and better performance. (CY-1733) + +## Bug fixes + +- Fixed an issue that could cause worker pods to stay alive indefinitely, consuming unneeded resources. (CY-2932) +- Now, Codacy lists 100 organizations for each Git provider on the Organizations page. (CY-2853) +- Fixed an issue that caused the error `No instant converter found for type: java.time.Instant` while trying to open some pages in legacy manual organizations. (CY-2852) +- Now, the Repositories list page allows opening repositories in a new browser tab using either Ctrl + Click or right-clicking the repository names. (CY-2604) +- Fixed an issue that caused Content Security Policy console errors while opening the Repositories list page. (CY-2494) +- Fixed a UI glitch on the Plan and billing page that was visible when upgrading to the Pro plan. (CY-1977) +- Now, the tab Without Owner on the page Admin / Projects correctly lists projects without an owner for synced organizations. (CY-224) +- Fixed an issue that caused the button Load More on the page Admin / Search to load random results. (CY-220) +- Fixed a UI glitch on the modal window asking for confirmation to ignore a file that was visible for long file names. (CY-92) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.6.2 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkstyle 8.34 +- Clang-Tidy 10.0.1 +- CodeNarc 1.6 +- CoffeeLint 2.1.0 +- Cppcheck 2.1 +- **Credo 1.4.0 (updated from 1.3.0)** +- CSSLint 1.0.5 +- detekt 1.10.0 +- **ESLint 7.10.0 (updated from 7.8.1)** +- Flawfinder 2.0.11 +- Gosec v2.3.0 +- Hadolint 1.17.5 +- Jackson Linter 2.10.2 +- **JSHint 2.12.0 (updated from 2.10.2)** +- PHP_CodeSniffer 3.5.6 +- PHP Mess Detector 2.8.1 +- PMD (Legacy) 5.8.1 +- PMD 6.27.0 +- Prospector 1.2.0 +- PSScriptAnalyzer 1.18.3 +- Pylint (Python 3) 2.6.0 +- Pylint 1.9.5 +- **remark-lint 7.0.1 (updated from 7.0.0)** +- Revive 1.0.2 +- RuboCop 0.82.0 +- Scalastyle 1.0.0 +- ShellCheck 0.7.1 +- **SonarC# 8.13 (updated from 8.12)** +- **SonarVB 8.13 (updated from 8.12)** +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2017.2.2 +- **Stylelint 13.7.2 (updated from 13.7.0)** +- SwiftLint 0.39.2 +- Tailor 0.12.0 +- TSLint 5.14.0 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v2.2.1-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v2.2.1-self-hosted.md new file mode 100644 index 0000000000..4553e1f1c3 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v2.2.1-self-hosted.md @@ -0,0 +1,72 @@ +--- +title: Self-hosted v2.2.1 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v2.2.1. +slug: /release-notes/self-hosted/self-hosted-v2.2.1 +--- + + +These release notes are for [Codacy Self-hosted v2.2.1](https://github.com/codacy/chart/releases/tag/2.2.1), released on October 22, 2020. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). After that, restart the Fluentd pods by running the following command, replacing `` with the namespace in which Codacy was installed: + +```bash +daemonset=$(kubectl get daemonsets --namespace -o jsonpath='{.items[*].metadata.name}') && \ +kubectl rollout restart daemonset $daemonset --namespace && \ +kubectl rollout status daemonset $daemonset --namespace --watch +``` + +## Bug fixes + +- Fixed an issue that caused the [script that collects logs from a Codacy instance](../../chart/troubleshoot/logs-collect.md) to return an empty archive. (CY-3068) +- Fixed a UI glitch that prevented enabling Git provider integrations in the repository settings. (CY-3049) +- Fixed an issue that prevented Codacy from displaying repositories in Bitbucket organizations. (CY-3048) +- Fixed an issue that prevented Codacy from displaying repositories in GitHub organizations. (CY-3002) +- Fixed an issue that caused deployments of the `codacy-tools` pod to fail. (CY-2990) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.6.2 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkstyle 8.34 +- Clang-Tidy 10.0.1 +- CodeNarc 1.6 +- CoffeeLint 2.1.0 +- **Cppcheck 2.2 (updated from 2.1)** +- Credo 1.4.0 +- CSSLint 1.0.5 +- detekt 1.10.0 +- ESLint 7.10.0 +- Flawfinder 2.0.11 +- Gosec v2.3.0 +- Hadolint 1.17.5 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- PHP_CodeSniffer 3.5.6 +- PHP Mess Detector 2.8.1 +- PMD (Legacy) 5.8.1 +- PMD 6.27.0 +- Prospector 1.2.0 +- PSScriptAnalyzer 1.18.3 +- Pylint (Python 3) 2.6.0 +- Pylint 1.9.5 +- remark-lint 7.0.1 +- Revive 1.0.2 +- RuboCop 0.82.0 +- Scalastyle 1.0.0 +- ShellCheck 0.7.1 +- SonarC# 8.13 +- SonarVB 8.13 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2017.2.2 +- Stylelint 13.7.2 +- SwiftLint 0.39.2 +- Tailor 0.12.0 +- TSLint 5.14.0 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v3.0.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v3.0.0-self-hosted.md new file mode 100644 index 0000000000..dbe5797c3f --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v3.0.0-self-hosted.md @@ -0,0 +1,71 @@ +--- +title: Self-hosted v3.0.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v3.0.0. +slug: /release-notes/self-hosted/self-hosted-v3.0.0 +--- + + +These release notes are for [Codacy Self-hosted v3.0.0](https://github.com/codacy/chart/releases/tag/3.0.0), released on November 2, 2020. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Breaking changes + +**If you're using GitHub and require Codacy pull request status to pass before merging pull requests** you must manually re-enable the required status check on your repositories. To do this: + +1. Wait until there is a new status check from Codacy on your repositories using the new GitHub Checks integration: + + ![Codacy pull request status on GitHub](../../repositories-configure/integrations/images/github-integration-pr-status.png) + +1. Follow the instructions to [require the Codacy status check to pass before merging pull requests](https://docs.codacy.com/v3.0/faq/repositories/how-do-i-set-codacy-as-a-required-check-to-merge-prs/#github) on your GitHub branch protection rules. + +## Product enhancements + +- Codacy now supports the integration with GitHub Checks. From now on, [all Codacy analysis information on pull requests](https://docs.codacy.com/v3.0/repositories-configure/integrations/github-integration/#configuring-the-github-integration) will show up under the **Checks** tab on the GitHub pull request pages. For private repositories, the annotations will appear as authored by Codacy instead of the user who configured the integration. (CY-46) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.6.2 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkstyle 8.34 +- Clang-Tidy 10.0.1 +- CodeNarc 1.6 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- detekt 1.10.0 +- Flawfinder 2.0.11 +- Gosec v2.3.0 +- **Hadolint 1.18.2 (updated from 1.17.5)** +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- **PHP_CodeSniffer 3.5.8 (updated from 3.5.6)** +- PHP Mess Detector 2.8.1 +- PMD (Legacy) 5.8.1 +- **PMD 6.28.0 (updated from 6.27.0)** +- Prospector 1.2.0 +- PSScriptAnalyzer 1.18.3 +- Pylint (Python 3) 2.6.0 +- Pylint 1.9.5 +- remark-lint 7.0.1 +- Revive 1.0.2 +- RuboCop 0.82.0 +- Scalastyle 1.0.0 +- ShellCheck 0.7.1 +- **SonarC# 8.14 (updated from 8.13)** +- **SonarVB 8.14 (updated from 8.13)** +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2017.2.2 +- Stylelint 13.7.2 +- SwiftLint 0.39.2 +- Tailor 0.12.0 +- TSLint 5.14.0 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v3.1.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v3.1.0-self-hosted.md new file mode 100644 index 0000000000..224a5eb9f3 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v3.1.0-self-hosted.md @@ -0,0 +1,78 @@ +--- +title: Self-hosted v3.1.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v3.1.0. +slug: /release-notes/self-hosted/self-hosted-v3.1.0 +--- + + +These release notes are for [Codacy Self-hosted v3.1.0](https://github.com/codacy/chart/releases/tag/3.1.0), released on December 10, 2020. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Product enhancements + +- Now, Codacy stores the date when users are removed so that this information is available when using [`codacy-usage-report`](https://github.com/codacy/codacy-usage-report). (CY-3194) +- Improvements to the [supported languages and tools](../../getting-started/supported-languages-and-tools.md): + - Added static analysis support for **Objective-C** with the tool Faux Pas. + - Expanded static analysis support for **Go** with the [client-side tools](../../repositories-configure/local-analysis/client-side-tools.md) aligncheck, deadcode, and Staticcheck. + - Added duplication and complexity support for **Kotlin** with the tools jscpd and detekt. (CY-3003) + +## Bug fixes + +- Fixed onboarding error message while adding a repository on an organization where the GitHub App isn't installed. (CY-3317) +- Fixed a broken link in the commit page to the corresponding GitLab Enterprise commit. (CY-3285) +- Now, Codacy blocks GitLab merge requests until the analysis is complete by displaying a pending pipeline. (CY-3235) +- Fixed an issue that could cause users to receive emails about the analysis of repositories in organizations they don't belong to. (CY-3228) +- Fixed building the URLs for the Codacy Self-hosted documentation. (CY-3018) +- Now, Codacy displays an error message if the command `git diff` fails to obtain the deltas for a commit because of [incompatible line endings](https://docs.codacy.com/faq/code-analysis/error-line-endings/). (CY-2799) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- **aligncheck (new)** +- Ameba 0.13.1 +- Bandit 1.6.2 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- **Checkstyle 8.37 (updated from 8.34)** +- Clang-Tidy 10.0.1 +- CodeNarc 1.6 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- **deadcode (new)** +- **detekt 1.14.2 (updated from 1.10.0)** +- **ESLint 7.14.0 (updated from 7.11.0)** +- **Faux Pas 1.7.2 (new)** +- Flawfinder 2.0.11 +- Gosec v2.3.0 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- PHP_CodeSniffer 3.5.8 +- PHP Mess Detector 2.8.1 +- PMD 6.28.0 +- PMD (Legacy) 5.8.1 +- Prospector 1.2.0 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.6.0 +- remark-lint 7.0.1 +- Revive 1.0.2 +- RuboCop 0.82.0 +- Scalastyle 1.0.0 +- ShellCheck 0.7.1 +- **SonarC# 8.15 (updated from 8.14)** +- **SonarVB 8.15 (updated from 8.14)** +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- **Staticcheck 2020.1.6 (new)** +- **Stylelint 13.8.0 (updated from 13.7.2)** +- SwiftLint 0.39.2 +- Tailor 0.12.0 +- TSLint 5.14.0 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v3.2.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v3.2.0-self-hosted.md new file mode 100644 index 0000000000..831ddc3f41 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v3.2.0-self-hosted.md @@ -0,0 +1,64 @@ +--- +title: Self-hosted v3.2.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v3.2.0. +slug: /release-notes/self-hosted/self-hosted-v3.2.0 +--- + + +These release notes are for [Codacy Self-hosted v3.2.0](https://github.com/codacy/chart/releases/tag/3.2.0), released on December 17, 2020. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Product enhancements + +- To overcome timeouts when loading the repositories list page on Codacy Self-hosted, it's now possible to configure how many repositories to load at a time. To do this, set a value lower than the default of 100 by configuring `codacy-spa.config.codacy.pagination.repositoriesLimit` on your `values-production.yml` configuration file. (CY-3352) +- Now, Codacy has an improved user experience to add and manage organizations that supports displaying an indefinite number of organizations per Git provider. (CY-1938) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.6.2 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkstyle 8.37 +- Clang-Tidy 10.0.1 +- CodeNarc 1.6 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- detekt 1.14.2 +- **ESLint 7.15.0 (updated from 7.14.0)** +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec v2.3.0 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- PHP_CodeSniffer 3.5.8 +- PHP Mess Detector 2.8.1 +- PMD 6.28.0 +- PMD (Legacy) 5.8.1 +- Prospector 1.2.0 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.6.0 +- remark-lint 7.0.1 +- Revive 1.0.2 +- RuboCop 0.82.0 +- Scalastyle 1.0.0 +- ShellCheck 0.7.1 +- SonarC# 8.15 +- SonarVB 8.15 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- Stylelint 13.8.0 +- SwiftLint 0.39.2 +- Tailor 0.12.0 +- TSLint 5.14.0 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v3.3.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v3.3.0-self-hosted.md new file mode 100644 index 0000000000..d88b3f1212 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v3.3.0-self-hosted.md @@ -0,0 +1,70 @@ +--- +title: Self-hosted v3.3.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v3.3.0. +slug: /release-notes/self-hosted/self-hosted-v3.3.0 +--- + + +These release notes are for [Codacy Self-hosted v3.3.0](https://github.com/codacy/chart/releases/tag/3.3.0), released on February 12, 2021. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Product enhancements + +- The Codacy top navigation bar now includes a link to the recently launched [Codacy Community](https://community.codacy.com/). Join us there! (CY-3462) +- It's now possible to [import tool and pattern configurations](https://docs.codacy.com/v3.3/repositories-configure/code-patterns/#import-patterns) from another repository to make it easier to set up new repositories and have consistent rules across repositories. (CY-3162) +- Codacy Self-hosted now [supports Kubernetes version 1.20.\*](https://docs.codacy.com/v3.3/chart/requirements/#kubernetes-or-microk8s-cluster-setup). + +## Bug fixes + +- Fixed an issue while fetching groups from GitLab if the user owned more than 100 groups with similar names. (CY-3506) +- The Codacy API endpoint getUserPermissionOnOrganization now correctly returns the permission `author` for people who have been invited to an organization. (CY-3471) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- **Bandit 1.7.0 (updated from 1.6.2)** +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkstyle 8.37 +- Clang-Tidy 10.0.1 +- CodeNarc 1.6 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- detekt 1.14.2 +- **ESLint 7.18.0 (updated from 7.15.0)** +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.3.0 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- PHP_CodeSniffer 3.5.8 +- PHP Mess Detector 2.8.1 +- PMD 6.28.0 +- PMD (Legacy) 5.8.1 +- Prospector 1.2.0 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.6.0 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.9.1 (updated from 0.82.0)** +- Scalastyle 1.0.0 +- ShellCheck 0.7.1 +- SonarC# 8.15 +- SonarVB 8.15 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- Stylelint 13.8.0 +- SwiftLint 0.39.2 +- Tailor 0.12.0 +- **TSLint 6.1.3 (updated from 5.14.0)** +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v3.4.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v3.4.0-self-hosted.md new file mode 100644 index 0000000000..7ea9301587 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v3.4.0-self-hosted.md @@ -0,0 +1,82 @@ +--- +title: Self-hosted v3.4.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v3.4.0. +slug: /release-notes/self-hosted/self-hosted-v3.4.0 +--- + + +These release notes are for [Codacy Self-hosted v3.4.0](https://github.com/codacy/chart/releases/tag/3.4.0), released on March 12, 2021. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Product enhancements + +- It's now possible to [see the current Codacy Self-hosted version](https://docs.codacy.com/v3.4/chart/troubleshoot/troubleshoot/) under the avatar menu. (CY-3767) +- Now, Codacy allows [configuring who is allowed to ignore issues](https://docs.codacy.com/v3.4/organizations/roles-and-permissions-for-synced-organizations/#configure-ignore-issues) on all supported Git providers. (CY-3581) +- Now, the **Code patterns** page allows you to [enable or disable all code patterns in a category](https://docs.codacy.com/v3.4/repositories-configure/code-patterns/#pattern-filters) with a single click. (CY-3527) +- Added the following Codacy API endpoints: + - **[listFiles](https://api.codacy.com/api/api-docs#listfiles)** returns the most recent analysis information for the files in a repository as available on the [Files page](https://docs.codacy.com/v3.4/repositories/files-view/). (CY-3540) + - **[searchRepositoryIssues](https://api.codacy.com/api/api-docs#searchrepositoryissues)** returns information about the issues that Codacy found in a repository as available on the [Issues page](https://docs.codacy.com/repositories/issues-view/). (CY-3468) + - **[searchRepositoryIgnoredIssues](https://api.codacy.com/api/api-docs#searchrepositoryignoredissues)** returns information about the issues that Codacy found in a repository and were [ignored on the Codacy UI](https://docs.codacy.com/v3.4/repositories/issues/#restoring-ignored-issues). (CY-3498) +- You can now activate automatic [GitHub fix suggestions](https://docs.codacy.com/repositories-configure/integrations/github-integration/#suggest-fixes) to issues identified by ESLint. This way, instead of having to do most fixes by themselves, your team members can save time by approving the suggestion to have the code automatically updated and merged. (CY-3439) +- Improved the [onboarding flow for new users](https://docs.codacy.com/v3.4/getting-started/getting-started-with-codacy/) to simplify adding organizations and repositories and help troubleshoot common issues. (CY-3405) +- Now, the [Repository Dashboard](https://docs.codacy.com/v3.4/repositories/repository-dashboard/) and [Issues page](https://docs.codacy.com/v3.4/repositories/issues/) include links to the corresponding documentation to help you make the most from the code quality information provided by Codacy and to assist you in configuring your repository settings. (CY-3303) +- Now, Codacy has an improved user experience to manage people in organizations. (CY-2954) +- Now, the Repositories list automatically suggests repositories that you haven't added to Codacy yet when you [search for a repository](https://docs.codacy.com/v3.4/organizations/managing-repositories/#adding-a-repository). (CY-2363) +- Codacy Self-hosted now [supports MicroK8s version 1.19.\*](https://docs.codacy.com/v3.4/chart/requirements/#kubernetes-or-microk8s-cluster-setup). + +## Bug fixes + +- Fixed wrong message when disabling patterns on the Issues page. (CY-3745) +- Fixed an issue that caused the configuration value containing the username of the metrics database to be used as the username for jobsdb. (CY-3697) +- Fixed an issue that caused the security dashboard to allow enabling patterns for tools using a configuration file. (CY-3684) +- Fixed an issue that caused SonarC# to detect issues related to patterns not enabled in the configuration. (CY-3607) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkstyle 8.37 +- Clang-Tidy 10.0.1 +- CodeNarc 1.6 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- detekt 1.14.2 +- ESLint 7.18.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.3.0 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- PHP_CodeSniffer 3.5.8 +- PHP Mess Detector 2.8.1 +- PMD 6.28.0 +- PMD (Legacy) 5.8.1 +- **Prospector 1.3.1 (updated from 1.2.0)** +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.6.0 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.11.0 (updated from 1.9.1)** +- **Scalastyle 1.5.0 (updated from 1.0.0, adds support for Scala 2.13)** +- ShellCheck 0.7.1 +- **SonarC# 8.13 (updated from 8.15)** +- SonarVB 8.15 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- **Stylelint 13.11.0 (updated from 13.8.0)** +- SwiftLint 0.39.2 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v3.5.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v3.5.0-self-hosted.md new file mode 100644 index 0000000000..5c636eba4a --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v3.5.0-self-hosted.md @@ -0,0 +1,75 @@ +--- +title: Self-hosted v3.5.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v3.5.0. +slug: /release-notes/self-hosted/self-hosted-v3.5.0 +--- + + +These release notes are for [Codacy Self-hosted v3.5.0](https://github.com/codacy/chart/releases/tag/3.5.0), released on March 31, 2021. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Product enhancements + +- Now, Codacy allows [configuring who is allowed to manage patterns and ignore files](https://docs.codacy.com/v3.5/organizations/roles-and-permissions-for-synced-organizations/#change-analysis-configuration) on all supported Git providers. (CY-3883) +- Codacy now runs [Checkov](https://github.com/bridgecrewio/checkov), extending the analysis support for infrastructure-as-code: Terraform, Terraform Plan, AWS CloudFormation, Kubernetes, Serverless framework, and ARM Templates. This new type of analysis contains more than 500 rules, covering compliance and security best practices for AWS, Azure, and Google Cloud. (CY-3830) +- Improved visibility of the tool that reports each issue, bringing that information to the top of the issue details. (CY-3768) +- Added the following Codacy API endpoints: + - **[getCommitDeltaStatistics](https://api.codacy.com/api/api-docs#getcommitdeltastatistics)** returns the quality metric deltas introduced by a commit. (CY-3560) + - **[listCommitDeltaIssues](https://api.codacy.com/api/api-docs#listcommitdeltaissues)** returns the list of issues that were introduced or fixed by a commit. (CY-3560) +- Continuous improvements on the [Codacy API documentation](https://docs.codacy.com/v3.5/codacy-api/using-the-codacy-api/). (DOCS-42) + +## Bug fixes + +- Fixed an issue that caused the default page size to be 10 instead of 100 when calling the [listOrganizationRepositories](https://api.codacy.com/api/api-docs#listorganizationrepositories) API endpoint for a Bitbucket organization. (CY-3976) +- Fixed an issue where Cppcheck wasn't respecting the minimum timeout provided by the Codacy application. (CY-3790) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- **Checkov 1.0.838 (new)** +- Checkstyle 8.37 +- Clang-Tidy 10.0.1 +- CodeNarc 1.6 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- detekt 1.14.2 +- ESLint 7.18.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.3.0 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- PHP_CodeSniffer 3.5.8 +- PHP Mess Detector 2.8.1 +- PMD 6.28.0 +- PMD (Legacy) 5.8.1 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- **Pylint (Python 3) 2.7.2 (updated from 2.6.0)** +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.12.0 (updated from 1.11.0)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.1 +- **SonarC# 8.15 (updated from 8.13)** +- SonarVB 8.15 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- **Stylelint 13.12.0 (updated from 13.11.0)** +- SwiftLint 0.39.2 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v3.5.1-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v3.5.1-self-hosted.md new file mode 100644 index 0000000000..3e18078aa8 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v3.5.1-self-hosted.md @@ -0,0 +1,16 @@ +--- +title: Self-hosted v3.5.1 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v3.5.1. +slug: /release-notes/self-hosted/self-hosted-v3.5.1 +--- + + +These release notes are for [Codacy Self-hosted v3.5.1](https://github.com/codacy/chart/releases/tag/3.5.1), released on June 1, 2021. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Bug fixes + +- Fixed an issue that could allow reading information on Codacy related to unauthorized public repositories hosted on GitHub Enterprise Server. CVSS v3.1 score: 4.4 (Medium). (CY-4416) diff --git a/docusaurus/docs/release-notes/self-hosted/v4.0.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v4.0.0-self-hosted.md new file mode 100644 index 0000000000..1716b043f5 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v4.0.0-self-hosted.md @@ -0,0 +1,85 @@ +--- +title: Self-hosted v4.0.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v4.0.0. +slug: /release-notes/self-hosted/self-hosted-v4.0.0 +--- + + +These release notes are for [Codacy Self-hosted v4.0.0](https://github.com/codacy/chart/releases/tag/4.0.0), released on May 18, 2021. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Breaking changes + +This version of Codacy Self-hosted requires [PostgreSQL version 10.15](https://docs.codacy.com/v4.0/chart/requirements/#postgresql-server-setup) since the previous major version [will reach end-of-life (EOL) later this year](https://www.postgresql.org/support/versioning/). + +To upgrade PostgreSQL: + +1. Follow the instructions on [how to upgrade a PostgreSQL cluster](https://www.postgresql.org/docs/10/upgrading.html). + +1. After the upgrade, clean the Codacy databases with [vacuumdb](https://www.postgresql.org/docs/10/app-vacuumdb.html) to prevent the autovacuum feature from momentarily affecting the performance of the databases at a later time. + +## Product enhancements + +- Improved the loading time of the [repositories list](https://docs.codacy.com/v4.0/organizations/managing-repositories/) page when an organization has many repositories. (CY-4084) +- Now, Codacy allows [configuring who is allowed to manage file extensions and branches](https://docs.codacy.com/v4.0/organizations/roles-and-permissions-for-synced-organizations/#change-analysis-configuration). (CY-3886, CY-3887) + +## Bug fixes + +- Fixed wrong feedback message that mentioned disabling tools when toggling between the UI settings and configuration file for a tool on the Code patterns page. (CY-4276) +- Fixed an issue where Codacy could fail to show repositories for organizations with more than 1000 repositories on GitHub. (CY-4193) +- Fixed an issue that prevented users from ignoring issues even if they had the correct permissions. (CY-4161) +- Now, you can use `.eslintrc.cjs` files to configure ESLint in your project. (CY-4146) +- Fixed an issue that caused some cookies to be transmitted in plaintext when accessing `app.codacy.com` via HTTP with Firefox. (CY-4143) +- Fixed an issue where repositories added to Codacy would have the GitHub status turned off. Now it's turned on by default for newly added repositories. (CY-4110) +- Now, Codacy automatically ignores `*.Designer.cs` files from the analysis. (CY-4102) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 1.0.838 +- Checkstyle 8.37 +- Clang-Tidy 10.0.1 +- CodeNarc 1.6 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- detekt 1.14.2 +- **ESLint 7.25.0 (updated from 7.18.0)** +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.3.0 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- **PHP_CodeSniffer 3.6.0 (updated from 3.5.8)** +- PHP Mess Detector 2.8.1 +- **PMD 6.33.0 (updated from 6.28.0)** +- PMD (Legacy) 5.8.1 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- **Pylint (Python 3) 2.7.4 (updated from 2.7.2)** +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.14.0 (updated from 1.12.0)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.1 +- **SonarC# 8.22 (updated from 8.15)** +- SonarVB 8.15 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- **Stylelint 13.13.0 (updated from 13.12.0)** +- **SwiftLint 0.40.0 (updated from 0.39.2)** +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v4.0.1-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v4.0.1-self-hosted.md new file mode 100644 index 0000000000..f2fecd9911 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v4.0.1-self-hosted.md @@ -0,0 +1,16 @@ +--- +title: Self-hosted v4.0.1 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v4.0.1. +slug: /release-notes/self-hosted/self-hosted-v4.0.1 +--- + + +These release notes are for [Codacy Self-hosted v4.0.1](https://github.com/codacy/chart/releases/tag/4.0.1), released on June 2, 2021. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Bug fixes + +- Fixed an issue that could allow reading information on Codacy related to unauthorized public repositories hosted on GitHub Enterprise Server. CVSS v3.1 score: 4.4 (Medium). (CY-4416) diff --git a/docusaurus/docs/release-notes/self-hosted/v4.1.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v4.1.0-self-hosted.md new file mode 100644 index 0000000000..4c8c194e6f --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v4.1.0-self-hosted.md @@ -0,0 +1,75 @@ +--- +title: Self-hosted v4.1.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v4.1.0. +slug: /release-notes/self-hosted/self-hosted-v4.1.0 +--- + + +These release notes are for [Codacy Self-hosted v4.1.0](https://github.com/codacy/chart/releases/tag/4.1.0), released on July 6, 2021. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Product enhancements + +- The GitLab integration now supports [merge request summaries](https://docs.codacy.com/v4.1/repositories-configure/integrations/gitlab-integration/#enabling) for both GitLab Cloud and GitLab Enterprise. (CY-4310) +- You can now use markdownlint to provide [suggested fixes](https://docs.codacy.com/v4.1/repositories-configure/integrations/github-integration/#suggest-fixes) for Markdown issues. (CY-3717) + +## Bug fixes + +- Fixed an issue that prevented Codacy from listing all available GitLab groups on the **Organizations** page. (CY-4529) +- Fixed an issue that caused Codacy to suggest and allow people with an empty email address to join organizations. (CY-4454) +- Fixed an issue that could allow malicious websites to read sensitive information or perform privileged actions on Codacy. CVSS v3.1 score: 3.3 (Low). (CY-4396) +- Fixed an issue where Codacy would show "Enable/Disable all" for non-configurable client-side tools on the **Code patterns** page. (CY-4323) +- Now, Codacy shows the **New Issues** tab by default when opening a commit or pull request page. (CY-4170) +- The total time to fix all issues in a file is now correctly calculated as the sum of the time to fix all individual issues in that file. (CY-4142) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 1.0.838 +- Checkstyle 8.37 +- Clang-Tidy 10.0.1 +- CodeNarc 1.6 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- **detekt 1.17.1 (updated from 1.14.2)** +- **ESLint 7.29.0 (updated from 7.25.0)** +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.3.0 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- **markdownlint 0.23.1 (new)** +- PHP_CodeSniffer 3.6.0 +- PHP Mess Detector 2.8.1 +- PMD 6.33.0 +- PMD (Legacy) 5.8.1 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.16.0 (updated from 1.14.0)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.1 +- **SonarC# 8.24 (updated from 8.22)** +- SonarVB 8.15 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- **Stylelint 13.13.1 (updated from 13.13.0)** +- SwiftLint 0.40.0 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v4.2.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v4.2.0-self-hosted.md new file mode 100644 index 0000000000..a99755a092 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v4.2.0-self-hosted.md @@ -0,0 +1,93 @@ +--- +title: Self-hosted v4.2.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v4.2.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/3.2.1 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/3.6.0 +slug: /release-notes/self-hosted/self-hosted-v4.2.0 +--- + + +These release notes are for [Codacy Self-hosted v4.2.0](https://github.com/codacy/chart/releases/tag/4.2.0), released on August 31, 2021. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +## Product enhancements + +- It's now possible to [configure the Codacy quality settings](https://docs.codacy.com/v4.2/repositories-configure/adjusting-quality-settings/) with the minimum severity level of new issues and a maximum number of new security issues, giving you more control over the pull requests that Codacy blocks from being merged. Besides this, the status reported by Codacy on pull requests now includes more information on why the quality checks failed. (CY-4216) + + ![Improved flexibility of quality settings](../images/cy-4216.png) + +- You can now [copy tool and pattern configurations in bulk](https://docs.codacy.com/v4.2/organizations/copying-code-patterns-between-repositories/) between your repositories to help you bootstrap and standardize the coding standards in your organization. (CY-4196) + + :::caution + On September 10, 2021 we noticed that the feature flag for this feature was turned off in Codacy Self-hosted v4.2.0 by mistake. + + If you're using this version of Codacy Self-hosted and want to use this feature, we ask that you please activate the feature manually by adding the following configuration to your `values.yml` file and then [performing a Helm upgrade](https://docs.codacy.com/v4.2/chart/#helm-upgrade): + + ```yml + global: + features: + bulkCopyPatterns: true + ``` + + We apologize for the trouble. [Codacy Self-hosted 4.3.0](/release-notes/self-hosted/self-hosted-v4.3.0) already includes this feature activated by default, and we've added tests to validate all feature flags during the release process to avoid future issues. + ::: + + ![Copying code patterns in bulk across repositories](../images/cy-4196.png) + +## Bug fixes + +- Fixed an issue that prevented administrators from removing users from Bitbucket Server organizations on Codacy. Besides this, Codacy Self-hosted administrators can now remove users from Codacy even if they're the last administrator in an organization. (CY-4724) +- Fixed an issue that could allow an attacker to enable/disable analysis of branches on repositories that they didn't have permissions to access. CVSS v3.1 score: 2.9 (Low) (CY-4618) +- Fixed an issue that caused the API endpoint `listOrganizationRepositories` to fail if it received both a cursor and an empty search string. (CY-4359) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- **Checkov 2.0.283 (updated from 1.0.838)** +- **Checkstyle 8.44 (updated from 8.37)** +- Clang-Tidy 10.0.1 +- CodeNarc 1.6 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- detekt 1.17.1 +- **ESLint 7.30.0 (updated from 7.29.0)** +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.3.0 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP_CodeSniffer 3.6.0 +- PHP Mess Detector 2.8.1 +- **PMD 6.36.0 (updated from 6.33.0)** +- PMD (Legacy) 5.8.1 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.18.4 (updated from 1.16.0)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.1 +- **SonarC# 8.25 (updated from 8.24)** +- SonarVB 8.15 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- Stylelint 13.13.1 +- SwiftLint 0.40.0 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v4.3.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v4.3.0-self-hosted.md new file mode 100644 index 0000000000..95648bf04e --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v4.3.0-self-hosted.md @@ -0,0 +1,78 @@ +--- +title: Self-hosted v4.3.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v4.3.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/3.6.0 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/3.8.3 +slug: /release-notes/self-hosted/self-hosted-v4.3.0 +--- + + +These release notes are for [Codacy Self-hosted v4.3.0](https://github.com/codacy/chart/releases/tag/4.3.0), released on September 16, 2021. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- The previously released feature to [copy tool and pattern configurations in bulk](https://docs.codacy.com/v4.3/organizations/copying-code-patterns-between-repositories/) between your repositories is now available by default. +- Now, Codacy also supports analyzing Objective-C using Clang-Tidy as a [client-side tool](https://docs.codacy.com/v4.3/related-tools/local-analysis/client-side-tools/). (CY-4795) + +## Bug fixes + +- Added support to configure the values of timeouts used in internal operations to list branches and pull requests. (CY-4914) +- Improved the code pattern names for Cppcheck. (CY-4887) +- Fixed an issue where the repository list in the Admin panel may become misformatted. (CY-4862) +- Fixed an issue where inline exclusions for Bandit weren't being correctly applied. (CY-4843) +- Fixed Checkov failing the analysis with some Terraform files. (CY-4744) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- **Checkov 2.0.399 (updated from 2.0.283)** +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 1.6 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- detekt 1.17.1 +- **ESLint 7.32.0 (updated from 7.30.0)** +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.3.0 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- **PHP Mess Detector 2.10.1 (updated from 2.8.1)** +- PHP_CodeSniffer 3.6.0 +- PMD 6.36.0 +- PMD (Legacy) 5.8.1 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.20.0 (updated from 1.18.4)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.1 +- SonarC# 8.25 +- SonarVB 8.15 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- Stylelint 13.13.1 +- SwiftLint 0.40.0 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v4.4.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v4.4.0-self-hosted.md new file mode 100644 index 0000000000..85429cbefb --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v4.4.0-self-hosted.md @@ -0,0 +1,77 @@ +--- +title: Self-hosted v4.4.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v4.4.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/3.8.3 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/3.9.16 +slug: /release-notes/self-hosted/self-hosted-v4.4.0 +--- + + +These release notes are for [Codacy Self-hosted v4.4.0](https://github.com/codacy/chart/releases/tag/4.4.0), released on October 12, 2021. + +To upgrade Codacy, follow [these instructions](../../chart/maintenance/upgrade.md). + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Product enhancements + +- Added the following plugins to [codacy-eslint](https://github.com/codacy/codacy-eslint): + - [@next/eslint-plugin-next](https://www.npmjs.com/package/@next/eslint-plugin-next) (CY-5071) + - [eslint-plugin-i18n-json](https://www.npmjs.com/package/eslint-plugin-i18n-json) (CY-5029) + +## Bug fixes + +- Fixed an issue that caused a redirect to different repository settings when enabling the GitHub integration for a repository. (CY-5056) +- Fixed an issue that blocked re-analyzing commits made by non-authors on Codacy Self-hosted. (CY-5012, CY-4336) +- Fixed an issue that caused the error `Failed to analyze file` when CodeNarc identified issues using code patterns that had no associated message. (CY-4974) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- **CodeNarc 2.2.0 (updated from 1.6)** +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- **detekt 1.18.1 (updated from 1.17.1)** +- ESLint 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- **Gosec 2.8.1 (updated from 2.3.0)** +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.0 +- PMD 6.36.0 +- PMD (Legacy) 5.8.1 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.21.0 (updated from 1.20.0)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.1 +- SonarC# 8.25 +- SonarVB 8.15 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- Stylelint 13.13.1 +- SwiftLint 0.40.0 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v5.0.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v5.0.0-self-hosted.md new file mode 100644 index 0000000000..1e216715bd --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v5.0.0-self-hosted.md @@ -0,0 +1,135 @@ +--- +title: Self-hosted v5.0.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v5.0.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/3.9.16 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/4.0.28 +slug: /release-notes/self-hosted/self-hosted-v5.0.0 +--- + + +These release notes are for [Codacy Self-hosted v5.0.0](https://github.com/codacy/chart/releases/tag/5.0.0), released on December 17, 2021. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Upgrading Codacy Self-hosted + +Follow the steps below to upgrade to Codacy Self-hosted v5.0.0: + +1. [Check the release notes](../index.md#self-hosted) for all Codacy Self-hosted versions between your current version and the most recent version for breaking changes and follow the instructions provided carefully. + + :::warning + **This version drops the support for legacy manual organizations.** Please be sure to [review the breaking changes](#breaking-changes) introduced in this version before upgrading. + ::: + +1. Follow the instructions to [upgrade your Codacy Self-hosted instance](../../chart/maintenance/upgrade.md). + +1. Update your Codacy command-line tools to the versions with the Git tag `self-hosted-5.0.0`: + + - [Codacy Analysis CLI](https://github.com/codacy/codacy-analysis-cli/releases/tag/self-hosted-5.0.0) + - [Codacy Coverage Reporter](https://github.com/codacy/codacy-coverage-reporter/releases/tag/self-hosted-5.0.0) + +## Breaking changes + +This version of Codacy Self-hosted introduces the following breaking changes: + +- Dropped support for legacy manual organizations. + + :::caution + **If you're using legacy manual organizations** please contact [support@codacy.com](mailto:support@codacy.com) before upgrading to Codacy Self-hosted 5.0.0 or above so that we can assist you with migrating your legacy organizations. + ::: + +- The Codacy components `codacy-activities`, `hotspots-api`, and `hotspots-worker` are no longer needed and were removed. + + Although the update process handles this change automatically by deleting the redundant pods from your cluster, it's recommended that after updating Codacy you manually delete: + + - The databases `codacy-activities` and `hotspots` since they're no longer used. + + - The following configuration file keys related to these components and their databases: + + ```text + activities.* + hotspots-api.* + hotspots-worker.* + global.activitiesdb.* + global.hotspotsdb.* + ``` + +## Product enhancements + +- Now, Codacy supports linting OpenAPI and AsyncAPI descriptions in either YAML or JSON files using [Spectral](https://stoplight.io/open-source/spectral/). (CY-5088) + +- You can now [use an organization coding standard](https://docs.codacy.com/v5.0/organizations/using-a-coding-standard/) to apply the same coding best practices, conventions, or security rules to a group of repositories. (CY-4654) + + ![Organization coding standard](../images/cy-4654.png) + +## Bug fixes + +- Fixed an issue that could sometimes cause repository quality settings to be saved only partially. (CY-5380) +- Fixed an issue that could cause SonarVB to time out independently of how many files are analyzed. (CY-5204) +- Improved the visual feedback for the Jira integration status. (CY-5190) +- Fixed an issue that prevented the message "Refresh the page to see the results" from being displayed on the commit and pull request pages after a re-analysis was completed. (CY-5187) +- Fixed some default regular expressions on [codacy-checkstyle](https://github.com/codacy/codacy-checkstyle) that could cause the code pattern PackageName to report false positives when configured using the Codacy UI. (CY-5185) +- Fixed an issue that caused ESLint to report false positive issues regarding import statement organization if prettier was enabled. (CY-5143) +- Fixed an issue that could allow triggering requests from the Codacy instance servers by injecting a URL into the cursor parameter of the API endpoint to list organization repositories. (CY-5139) +- Added protection against CSRF attacks targeting the Codacy API v3. In the case of phishing, even if the victim opens a malicious link, the attack won't work. CVSS v3.1 score: 6.4 (Medium) (CY-5131) +- Fixed an issue that prevented Codacy from displaying secondary email addresses from GitLab accounts. (CY-5130) +- Fixed the issue cards in the context of a file to display the issue category. (CY-5125) +- Fixed an issue that was causing organizations using a legacy plan to get wrong messages about missing members and to not be able to reanalyze commits and PRs. (CY-5112) +- Added support for the JavaScript extension `.mjs`. (CY-5086) +- [codacy-clang-tidy](https://github.com/codacy/codacy-clang-tidy) is now also published as a macOS binary. (CY-5053) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- **detekt 1.19.0 (updated from 1.18.1)** +- ESLint 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- **PHP_CodeSniffer 3.6.1 (updated from 3.6.0)** +- PMD 6.36.0 +- PMD (Legacy) 5.8.1 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.23.0 (updated from 1.21.0)** +- Scalastyle 1.5.0 +- **ShellCheck 0.7.2 (updated from 0.7.1)** +- **SonarC# 8.30 (updated from 8.25)** +- SonarVB 8.15 +- **Spectral (new)** +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- Stylelint 13.13.1 +- **SwiftLint 0.43.1 (updated from 0.40.0)** +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 + +## See also + +- Announcement for the [end of support for legacy manual organizations on Codacy Cloud](../cloud/cloud-2021-11-02-legacy-organizations.md) diff --git a/docusaurus/docs/release-notes/self-hosted/v5.1.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v5.1.0-self-hosted.md new file mode 100644 index 0000000000..63b383eb13 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v5.1.0-self-hosted.md @@ -0,0 +1,94 @@ +--- +title: Self-hosted v5.1.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v5.1.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/4.0.28 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/4.0.40 +slug: /release-notes/self-hosted/self-hosted-v5.1.0 +--- + + +These release notes are for [Codacy Self-hosted v5.1.0](https://github.com/codacy/chart/releases/tag/5.1.0), released on January 06, 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Upgrading Codacy Self-hosted + +Follow the steps below to upgrade to Codacy Self-hosted v5.1.0: + +1. [Check the release notes](../index.md#self-hosted) for all Codacy Self-hosted versions between your current version and the most recent version for breaking changes and follow the instructions provided carefully. + + :::warning + **Codacy Self-hosted v5.0.0 dropped the support for legacy manual organizations.** Please be sure to [review the breaking changes](/release-notes/self-hosted/self-hosted-v5.0.0#breaking-changes) introduced in that version before upgrading. + ::: + +1. Follow the instructions to [upgrade your Codacy Self-hosted instance](../../chart/maintenance/upgrade.md). + +1. Update your Codacy command-line tools to the versions with the Git tag `self-hosted-5.1.0`: + + - [Codacy Analysis CLI](https://github.com/codacy/codacy-analysis-cli/releases/tag/self-hosted-5.1.0) + - [Codacy Coverage Reporter](https://github.com/codacy/codacy-coverage-reporter/releases/tag/self-hosted-5.1.0) + +## Product enhancements + +- When connecting to email servers over SMTPS, Codacy now prefers to rely on TLSv1.2 over the deprecated TLSv1 or TLSv1.1 if the SMTP server allows it. (CY-5394) +- It's now possible to [assign a coding standard automatically to new repositories](https://docs.codacy.com/v5.1/organizations/using-a-coding-standard/#set-default). (CY-5263) +- The Codacy API now includes endpoints that allow you to [create and manage project API tokens programmatically](https://docs.codacy.com/v5.1/codacy-api/examples/creating-project-api-tokens-programmatically). This feature can be used to automate setting up coverage for either new repositories or for all your existing repositories. (CY-5090) +- Now, all configurable Stylelint code patterns have [default values set to the recommended settings](https://github.com/codacy/codacy-stylelint/pull/240/files), ensuring that they're ready to be used as soon as you enable them. (CY-3275) + +## Bug fixes + +- Fixed an issue that prevented merge commits from displaying any information regarding files, duplication, and complexity. (CY-5364) +- Fixed a scenario where the number of applied repositories on a coding standard didn't update when deleting a repository. (CY-5363) +- Fixed a popup that overlapped the list on the People page. (CY-5282) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- detekt 1.19.0 +- ESLint 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- **PHP_CodeSniffer 3.6.2 (updated from 3.6.1)** +- PMD 6.36.0 +- PMD (Legacy) 5.8.1 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- RuboCop 1.23.0 +- Scalastyle 1.5.0 +- ShellCheck 0.7.2 +- SonarC# 8.30 +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.1.2 +- SQLint 0.1.9 +- Staticcheck 2020.1.6 +- **Stylelint 14.1.0 (updated from 13.13.1)** +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v6.0.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v6.0.0-self-hosted.md new file mode 100644 index 0000000000..d9a8808706 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v6.0.0-self-hosted.md @@ -0,0 +1,134 @@ +--- +title: Self-hosted v6.0.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v6.0.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/4.0.40 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/5.2.1 +slug: /release-notes/self-hosted/self-hosted-v6.0.0 +--- + + +These release notes are for [Codacy Self-hosted v6.0.0](https://github.com/codacy/chart/releases/tag/6.0.0), released on March 2, 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Upgrading Codacy Self-hosted + +Follow the steps below to upgrade to Codacy Self-hosted v6.0.0: + +1. Check the [release notes for all Codacy Self-hosted versions](../index.md#self-hosted) **between your current version and the most recent version** for breaking changes and follow the instructions provided carefully. + +1. Follow the instructions to [upgrade your Codacy Self-hosted instance](https://docs.codacy.com/v6.0/chart/maintenance/upgrade/). + +1. Update your Codacy command-line tools to the versions with the Git tag `self-hosted-6.0.0`: + + - [Codacy Analysis CLI](https://github.com/codacy/codacy-analysis-cli/releases/tag/self-hosted-6.0.0) + - [Codacy Coverage Reporter](https://github.com/codacy/codacy-coverage-reporter/releases/tag/self-hosted-6.0.0) + +## Breaking changes + +This version of Codacy Self-hosted introduces the following breaking changes: + +- Dropped support for Kubernetes 1.14 and MicroK8s 1.14 + + Kubernetes 1.14 is an old version [first released in 2019](https://kubernetes.io/blog/2019/03/25/kubernetes-1-14-release-announcement/) that's no longer being maintained. + + If you're using Kubernetes 1.14 or MicroK8s 1.14, make sure that you upgrade your cluster before upgrading Codacy. For the current supported versions, see the [chart requirements page](https://docs.codacy.com/v6.0/chart/requirements/#kubernetes-or-microk8s-cluster-setup). + +- Removed the tool **PMD (Legacy)** + + For more details, see the [announcement for Codacy Cloud](../cloud/cloud-2022-02-16-pmd-legacy-removal.md). + + If you're currently using this tool to analyze your repositories and want to start using **PMD** instead, we recommend that you follow the next steps **before upgrading to this Codacy Self-hosted version**: + + 1. Take note of the code patterns that you have enabled on **PMD (Legacy)** and enable the corresponding code patterns on the new tool **PMD**. + + The new version of the tool includes different code patterns, so it's possible that not all code patterns will have a direct match on the new tool. + + 1. Disable **PMD (Legacy)** and enable **PMD**. + +## Product enhancements + +- Now, Codacy calculates the new metric [diff coverage for pull requests](https://docs.codacy.com/v6.0/repositories/pull-requests/#pull-request-quality-overview). (CY-5533) + + It's also possible to [set up a quality gate rule](https://docs.codacy.com/v6.0/repositories-configure/adjusting-quality-settings/#gates) for diff coverage. (CY-5534) + + ![Diff coverage for a pull request](../images/cy-5533.png) + + ![Quality gate rule for diff coverage](../images/cy-5534.png) + +- Updated the [codacy-rubocop](https://github.com/codacy/codacy-rubocop) plugins listed below. (CY-5550) + + - [rubocop-shopify 2.4.0](https://rubygems.org/gems/rubocop-shopify/versions/2.4.0) + - [rubocop-sorbet 0.6.5](https://rubygems.org/gems/rubocop-sorbet/versions/0.6.5) + - [rubocop-rails 2.13.2](https://rubygems.org/gems/rubocop-rails/versions/2.13.2) + - [rubocop-performance 1.13.2](https://rubygems.org/gems/rubocop-performance/versions/1.13.2) + - [rubocop-graphql 0.12.3](https://rubygems.org/gems/rubocop-graphql/versions/0.12.3) + - [rubocop-ast 1.15.1](https://rubygems.org/gems/rubocop-ast/versions/1.15.1) + +- Now, the [**Issues breakdown** area on the Repository Dashboard](https://docs.codacy.com/v6.0/repositories/repository-dashboard/#issues-breakdown) displays all issue categories, including **Code complexity**. (CY-5463) + +- You can now use the Codacy configuration file to [adjust how PMD CPD detects duplicated code](https://docs.codacy.com/v6.0/repositories-configure/codacy-configuration-file/#pmd-cpd-duplication), giving you more flexibility to eliminate false positives. (CY-5184) + +- Now, Codacy supports static code analysis for Dart/Flutter projects using [dartanalyzer](https://github.com/dart-lang/sdk/tree/main/pkg/analyzer_cli). The new tool checks your code for errors and warnings that are specified in the [Dart language specification](https://dart.dev/guides/language/spec). (CY-4314) + +- Added documentation on [how to configure the log level and log retention period](https://docs.codacy.com/v6.0/chart/configuration/logging/) of the Codacy components running on your Kubernetes or MicroK8s cluster. (CY-2768) + +## Bug fixes + +- Now, the **Coverage** column always appears on the Files page even when there's no coverage data, avoiding a jump in the view. (CY-5518) +- Updated the Git URL used to clone public repositories to comply with the recent [GitHub protocol changes](https://github.blog/2021-09-01-improving-git-protocol-security-github/). (CY-5436) +- Fixed an issue that could prevent users from using the Codacy app website temporarily if they were exposed to a phishing attack. CVSS v3.1 score: 3.1 (Low) (CY-5420) +- Fixed a security issue that, under rare circumstances, could allow an attacker to run arbitrary code on the **Ignored files** settings page. CVSS v3.1 score: 3.8 (Low) (CY-5419) +- Added the plugin [eslint-plugin-storybook](https://www.npmjs.com/package/eslint-plugin-storybook) to [codacy-eslint](https://github.com/codacy/codacy-eslint). (CY-5406) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- **dartanalyzer 2.15.1 (new)** +- detekt 1.19.0 +- ESLint 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.36.0 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **RuboCop 1.25.1 (updated from 1.23.0)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.2 +- SonarC# 8.30 +- SonarVB 8.15 +- Spectral 1.2.7 +- **SpotBugs 4.5.3 (updated from 4.1.2)** +- **SQLint 0.2.1 (updated from 0.1.9)** +- Staticcheck 2020.1.6 +- **Stylelint 14.2.0 (updated from 14.1.0)** +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v7.0.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v7.0.0-self-hosted.md new file mode 100644 index 0000000000..a0f68257fd --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v7.0.0-self-hosted.md @@ -0,0 +1,138 @@ +--- +title: Self-hosted v7.0.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v7.0.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/5.2.1 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/5.5.6 +slug: /release-notes/self-hosted/self-hosted-v7.0.0 +--- + + +These release notes are for [Codacy Self-hosted v7.0.0](https://github.com/codacy/chart/releases/tag/7.0.0), released on April 4, 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Upgrading Codacy Self-hosted + +Follow the steps below to upgrade to Codacy Self-hosted v7.0.0: + +1. Check the [release notes for all Codacy Self-hosted versions](../index.md#self-hosted) **between your current version and the most recent version** for breaking changes and follow the instructions provided carefully. + +1. Follow the instructions to [upgrade your Codacy Self-hosted instance](https://docs.codacy.com/v7.0/chart/maintenance/upgrade/). + +1. Update your Codacy command-line tools to the versions with the Git tag `self-hosted-7.0.0`: + + - [Codacy Analysis CLI](https://github.com/codacy/codacy-analysis-cli/releases/tag/self-hosted-7.0.0) + - [Codacy Coverage Reporter](https://github.com/codacy/codacy-coverage-reporter/releases/tag/self-hosted-7.0.0) + +## Breaking changes + +**If you're using GitLab** please review the roles of your team on GitLab [considering the new permissions for project Maintainers](http://docs.codacy.com/v7.0/organizations/roles-and-permissions-for-synced-organizations/#permissions-for-gitlab). + +GitLab defines Maintainers as [super-developers](https://about.gitlab.com/handbook/product/gitlab-the-product/#permissions-in-gitlab): + +> They're able to push to master, deploy to production. This role is often held by maintainers and engineering managers. + +However, until now the Codacy permissions for this role were limited to the same as a Developer. This change addresses customer feedback towards having a more seamless integration between Codacy and GitLab. + +:::note +After upgrading Codacy, we recommend that you clean your browser cache and refresh the list of repositories on the **Repositories list** page to make sure that you're using the updated permissions: + +![Refreshing the list of repositories on Codacy](../images/cy-5876.png) + +::: + +## Product enhancements + +- GitLab project members with the Maintainer role can now perform the following operations on Codacy: + + - Adding the project + - Configuring the project + - Changing the following analysis settings: ignoring issues and files, configuring code patterns, configuring file extensions, and managing branches + + [See the updated permissions](https://docs.codacy.com/v7.0/organizations/roles-and-permissions-for-synced-organizations/) for all GitLab roles. (CY-5876) + +- Included ESLint 8 as a new supported tool and deprecated ESLint 7. + + New repositories will use ESLint 7 by default, but **Codacy won't provide more updates for ESLint 7 and will remove ESLint 7 on April 4, 2023**. (CY-5848) + + :::note + Please [follow these troubleshooting instructions](https://docs.codacy.com/v7.0/chart/troubleshoot/troubleshoot/#missing-new-tools) if the new tool ESLint 8 doesn't appear on the **Code patterns** page of your repositories after upgrading to this Codacy Self-hosted version. + ::: + +- The [**Repositories list** page](https://docs.codacy.com/v7.0/organizations/managing-repositories/) now displays a warning icon to improve the visibility of warnings and errors affecting the repositories. (CY-5797) + + ![Repositories with warnings on the Repositories list page](../images/cy-5797.png) + +- The [**Open pull requests** area](https://docs.codacy.com/v7.0/repositories/repository-dashboard/#open-pull-requests) on the Repository Dashboard now displays more details about the open pull requests. (CY-5796) + + ![Open pull requests area on the Repository Dashboard](../images/cy-5796.png) + +- The [**Access management** page](https://docs.codacy.com/v7.0/getting-started/which-permissions-does-codacy-need-from-my-account/#revoking-access-to-integrations) under your account settings now also allows adding new Git providers. (CY-5795) + +- The **Organization Overview** and **Repositories list** pages have improved loading times using a short-lived cache in the user's browser. (CY-5793) + +- The [**Repositories list** page](https://docs.codacy.com/v7.0/organizations/managing-repositories/) now allows sorting the list of repositories using the available columns in organizations with less than 100 repositories. (CY-5695) + +- The [**Overall quality** chart](https://docs.codacy.com/v7.0/organizations/organization-overview/#overall-quality-chart) now allows drilling down on the information to understand which repositories require attention to improve the organization's code quality. (CY-5580) + + ![Drilling down on the Overall quality chart](../images/cy-5580.png) + +## Bug fixes + +- Fixed an issue that caused inconsistencies on the last updated date when listing GitHub repositories. Now, the last updated date is the [date of the last push to the repositories](https://docs.codacy.com/v7.0/organizations/organization-overview/#last-updated-repositories). (CY-5784) +- dartanalyzer now supports including the packages [lints](https://pub.dev/packages/lints) and [flutter_lints](https://pub.dev/packages/flutter_lints) in the `analysis_option.yaml` configuration file. (CY-5626) +- Fixed an issue that blocked re-analyzing commits made by non-authors on Codacy Self-hosted. (CY-5012) +- The re-analyze button is now hidden on repositories that are running analysis through a build server. (CY-4205) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- **[dartanalyzer 2.16.1](https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md#2161---2022-02-09) (updated from 2.15.1)** +- detekt 1.19.0 +- **[ESLint 8.10.0](https://github.com/eslint/eslint/releases/tag/v8.10.0) (new)** +- ESLint 7.32.0 (**deprecated**) +- Faux-Pas 1.7.2 +- Flawfinder 2.0.11 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.36.0 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **[RuboCop 1.26.1](https://github.com/rubocop/rubocop/releases/tag/v1.26.1) (updated from 1.25.1)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.2 +- SonarC# 8.30 +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.5.3 +- SQLint 0.2.1 +- Staticcheck 2020.1.6 +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v8.0.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v8.0.0-self-hosted.md new file mode 100644 index 0000000000..f06dd87df3 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v8.0.0-self-hosted.md @@ -0,0 +1,100 @@ +--- +title: Self-hosted v8.0.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v8.0.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/5.5.6 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/5.7.38 +slug: /release-notes/self-hosted/self-hosted-v8.0.0 +--- + + +These release notes are for [Codacy Self-hosted v8.0.0](https://github.com/codacy/chart/releases/tag/8.0.0), released on May 12, 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Upgrading Codacy Self-hosted + +Follow the steps below to upgrade to Codacy Self-hosted v8.0.0: + +1. Check the [release notes for all Codacy Self-hosted versions](../index.md#self-hosted) **between your current version and the most recent version** for breaking changes and follow the instructions provided carefully. + +1. Follow the instructions to [upgrade your Codacy Self-hosted instance](https://docs.codacy.com/v8.0/chart/maintenance/upgrade/). + +1. Update your Codacy command-line tools to the versions with the Git tag `self-hosted-8.0.0`: + + - [Codacy Analysis CLI](https://github.com/codacy/codacy-analysis-cli/releases/tag/self-hosted-8.0.0) + - [Codacy Coverage Reporter](https://github.com/codacy/codacy-coverage-reporter/releases/tag/self-hosted-8.0.0) + +## Breaking changes + +ESLint 8 will be **enabled by default on new repositories** starting on this version of Codacy Self-hosted. + +The previous Codacy Self-hosted version [already included ESLint 8 as a new supported tool and deprecated ESLint 7](/release-notes/self-hosted/self-hosted-v7.0.0#product-enhancements), and Codacy recommends that you migrate to the new version of the tool to benefit from the new features and fixes of ESLint. + +See [how to migrate your configuration files to use ESLint 8](../cloud/cloud-2022-03-31-adding-eslint8.md#migrating-your-configuration-files-to-use-eslint-8). (CY-5848) + +## Product enhancements + +- Updated the design of the **Code patterns** page to make the currently selected tool more noticeable. (CY-6021) +- Added support for the ESLint plugin [eslint-plugin-es](https://github.com/mysticatea/eslint-plugin-es) to disallow the syntax of specific ECMAScript versions. (CY-5968) +- Moved the code coverage setup page under the repository **Settings**, tab **Coverage**. The new page includes a list of the most recent coverage reports uploaded to Codacy to [help you troubleshoot your coverage setup](http://docs.codacy.com/v8.0/coverage-reporter/#uploading-coverage). (CY-5399) + +## Bug fixes + +- Fixed an issue that could be used by an attacker to redirect Codacy users to a malicious URL. CVSS v3.1 score: 6.5 (Medium) (CY-6052) +- Fixed a broken link in the notification emails sent to organization admins when new members ask to join an organization. (CY-5979) +- Fixed an issue that prevented Codacy from listing GitHub repositories on the Repositories list. (CY-5935) +- Fixed an issue that could cause the **Organization Overview** page to display pull requests with the wrong status under the **Most problematic** open pull requests tab. (CY-5872) +- Now, the **Files** page always displays the **Coverage** column on repositories that have coverage set up, even if there's no coverage data for any of the displayed files. (CY-5555) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- **[dartanalyzer 2.16.2](https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md#2162---2022-03-24) (updated from 2.16.1)** +- detekt 1.19.0 +- **[ESLint 8.14.0](https://github.com/eslint/eslint/releases/tag/v8.14.0) (updated from 8.10.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- **[Flawfinder 2.0.19](https://github.com/david-a-wheeler/flawfinder/blob/master/ChangeLog) (updated from 2.0.11)** +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.36.0 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- Revive 1.0.2 +- **[RuboCop 1.28.2](https://github.com/rubocop/rubocop/releases/tag/v1.28.2) (updated from 1.26.1)** +- Scalastyle 1.5.0 +- ShellCheck 0.7.2 +- **[SonarC# 8.33](https://github.com/SonarSource/sonar-dotnet/releases/tag/8.33.0.40503) (updated from 8.30)** +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.5.3 +- SQLint 0.2.1 +- Staticcheck 2020.1.6 +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v8.1.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v8.1.0-self-hosted.md new file mode 100644 index 0000000000..93eca502e6 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v8.1.0-self-hosted.md @@ -0,0 +1,97 @@ +--- +title: Self-hosted v8.1.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v8.1.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/5.7.38 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/6.1.25 +slug: /release-notes/self-hosted/self-hosted-v8.1.0 +--- + + +These release notes are for [Codacy Self-hosted v8.1.0](https://github.com/codacy/chart/releases/tag/8.1.0), released on June 17, 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Upgrading Codacy Self-hosted + +Follow the steps below to upgrade to Codacy Self-hosted v8.1.0: + +1. Check the [release notes for all Codacy Self-hosted versions](../index.md#self-hosted) **between your current version and the most recent version** for breaking changes and follow the instructions provided carefully. + +1. Follow the instructions to [upgrade your Codacy Self-hosted instance](https://docs.codacy.com/v8.1/chart/maintenance/upgrade/). + +1. Update your Codacy command-line tools to the versions with the Git tag `self-hosted-8.1.0`: + + - [Codacy Analysis CLI](https://github.com/codacy/codacy-analysis-cli/releases/tag/self-hosted-8.1.0) + - [Codacy Coverage Reporter](https://github.com/codacy/codacy-coverage-reporter/releases/tag/self-hosted-8.1.0) + +## Product enhancements + +- Codacy now supports using [expiring access tokens](https://docs.gitlab.com/ee/integration/oauth_provider.html#expiring-access-tokens) to integrate with GitLab. Users affected by issues connecting to GitLab should re-login on the Codacy UI **using their GitLab accounts**, or [revoke the GitLab integration on Codacy](https://docs.codacy.com/v8.1/getting-started/which-permissions-does-codacy-need-from-my-account/#revoking-access-to-integrations) if the issues persist. (CY-6117) +- The Codacy Coverage Reporter now prints a more explicit error message when using an account API token from a user that [doesn't have permission to upload coverage data](https://docs.codacy.com/v8.1/organizations/roles-and-permissions-for-synced-organizations/). (CY-6084) +- Codacy now [displays diff coverage as not applicable](https://docs.codacy.com/v8.1/repositories/pull-requests/#pull-request-quality-overview) (represented by `∅`) when there are no coverable lines included in a pull request, and correctly reports the pull request status on your Git provider in this scenario. (CY-5960) + + ![Not applicable diff coverage](../images/cy-5960.png) + +- [Pull request notification emails](https://docs.codacy.com/v8.1/account/emails/#managing-your-email-notifications) now display the diff coverage metric. (CY-5700) + +## Bug fixes + +- Fixed an issue to allow saving coverage data for the first commit in a repository. (CY-6196) +- Fixed an issue that could allow an attacker with an account on both the Codacy Self-hosted instance and on the Git provider to do destructive actions on **Codacy personal organizations**, such as removing members from Codacy or deleting the personal organization on Codacy. The issue didn't allow the attacker to see or change any information on the Git provider organization or repositories. CVSS v3.1 score: 7.3 (High) (CY-6184, CY-6187, CY-6188) +- Fixed an issue that could allow an attacker with an account on both the Codacy Self-hosted instance and on the Git provider to join a **public Codacy organization** and know the email addresses of the organization members on Codacy. The issue didn't allow the attacker to see or change any information on the Git provider organization or repositories. CVSS v3.1 score: 3.1 (Low) (CY-6174) +- Removed the username field from the Codacy UI and relevant API endpoints since it's no longer used and could be exploited to leak email addresses that are already in use on Codacy. (CY-6173) +- Fixed an issue that caused commits to be in the "Analyzing" state indefinitely if the setting **Run the repository analysis on your build server** was off and a client-side result was uploaded to the repository. (CY-6136) +- Fixed the parsing of dartanalyzer results containing many issues. (CY-6067) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- Checkov 2.0.399 +- Checkstyle 8.44 +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- **[dartanalyzer 2.17.0](https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md#2170---2022-05-11) (updated from 2.16.2)** +- detekt 1.19.0 +- **[ESLint 8.15.0](https://github.com/eslint/eslint/releases/tag/v8.15.0) (updated from 8.14.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- PMD 6.36.0 +- Prospector 1.3.1 +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- Pylint (Python 3) 2.7.4 +- remark-lint 7.0.1 +- **[Revive 1.2.1](https://github.com/mgechev/revive/releases/tag/v1.2.1) (updated from 1.0.2)** +- RuboCop 1.28.2 +- Scalastyle 1.5.0 +- ShellCheck 0.7.2 +- **[SonarC# 8.39](https://github.com/SonarSource/sonar-dotnet/releases/tag/8.39.0.47922) (updated from 8.33)** +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.5.3 +- SQLint 0.2.1 +- Staticcheck 2020.1.6 +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/release-notes/self-hosted/v9.0.0-self-hosted.md b/docusaurus/docs/release-notes/self-hosted/v9.0.0-self-hosted.md new file mode 100644 index 0000000000..6d3de05ba8 --- /dev/null +++ b/docusaurus/docs/release-notes/self-hosted/v9.0.0-self-hosted.md @@ -0,0 +1,147 @@ +--- +title: Self-hosted v9.0.0 +rss_title: Codacy release notes RSS feed +rss_href: /feed_rss_created.xml +description: Release notes for Codacy Self-hosted v9.0.0. +codacy_tools_version_old: https://github.com/codacy/codacy-tools/releases/tag/6.1.25 +codacy_tools_version_new: https://github.com/codacy/codacy-tools/releases/tag/6.3.0 +slug: /release-notes/self-hosted/self-hosted-v9.0.0 +--- + + +These release notes are for [Codacy Self-hosted v9.0.0](https://github.com/codacy/chart/releases/tag/9.0.0), released on September 23, 2022. + +📢 [Visit the Codacy roadmap](https://roadmap.codacy.com) and let us know your feedback on both new and planned product updates! + +## Upgrading Codacy Self-hosted + +Follow the steps below to upgrade to Codacy Self-hosted v9.0.0: + +1. Check the [release notes for all Codacy Self-hosted versions](../index.md#self-hosted) **between your current version and the most recent version** for breaking changes and follow the instructions provided carefully. + +1. Follow the instructions to [upgrade your Codacy Self-hosted instance](https://docs.codacy.com/v9.0/chart/maintenance/upgrade/). + +1. Update your Codacy command-line tools to the following versions: + + - [Codacy Analysis CLI 7.6.6](https://github.com/codacy/codacy-analysis-cli/releases/tag/7.6.6) + - [Codacy Coverage Reporter 13.12.3](https://github.com/codacy/codacy-coverage-reporter/releases/tag/13.12.3) + +## Breaking changes + +This version of Codacy Self-hosted requires [PostgreSQL version 10.20](https://docs.codacy.com/v9.0/chart/requirements/#postgresql-server-setup) since the previous major version [will reach end-of-life (EOL) later this year](https://www.postgresql.org/support/versioning/). + +To upgrade PostgreSQL: + +1. Follow the instructions on [how to upgrade a PostgreSQL cluster](https://www.postgresql.org/docs/10/upgrading.html). + +1. After the upgrade, clean the Codacy databases with [vacuumdb](https://www.postgresql.org/docs/10/app-vacuumdb.html) to prevent the autovacuum feature from momentarily affecting the performance of the databases at a later time. + +:::caution +If you download and use an updated `values-production.yaml` file while upgrading to Codacy Self-hosted 9.0.0, the upgrade will fail because the MinIO PVC can't be resized. + +[Please see the troubleshooting instructions](https://docs.codacy.com/chart/troubleshoot/troubleshoot/#upgrade-failed-cannot-patch-codacy-minio) for a workaround. + +::: + +## Product enhancements + +- The [integration with GitHub Cloud and GitHub Enterprise](https://docs.codacy.com/v9.0/repositories-configure/integrations/github-integration/) now uses a GitHub Apps token instead of a personal one so that the following features continue working even if the person who created the integration leaves the organization on GitHub: + + - Analyzing new commits and pull requests + - Updating the status check of pull requests + - Suggesting changes + - Creating comments and issues on GitHub for issues detected by Codacy + + Additionally, all activity related to the GitHub integration features now appear as having been performed by Codacy instead of the person who created the integration. (PLUTO-36, PLUTO-77) + + ![Suggested fix created by the Codacy GitHub integration](../images/pluto-77.png) + +- Added the new API endpoint [searchOrganizationRepositoriesWithAnalysis](https://api.codacy.com/api/api-docs#searchorganizationrepositorieswithanalysis) to allow searching for repositories in more advanced use cases. For now, it's possible to search for repositories filtered by a list of names. (PLUTO-45) + +- Codacy now displays the coverage variation metric with a precision of two decimal places on the [Pull request](https://docs.codacy.com/v9.0/repositories/pull-requests/), [Commit](https://docs.codacy.com/v9.0/repositories/commits/), and [Files](https://docs.codacy.com/v9.0/repositories/files/) page, and you can [define quality gates](https://docs.codacy.com/v9.0/repositories-configure/adjusting-quality-settings/#gates) with a coverage variation threshold using the same precision. + + The increased precision of the metric reflects the code coverage changes better by reducing issues with rounding errors. (IO-54, IO-92, IO-93) + + ![Coverage variation on the Pull request quality overview](../images/io-92.png) + +- Improved the Codacy Analysis CLI output to provide better feedback when tools fail to run. (IO-47) + +- Improved the error handling for the [Stylelint exit codes](https://stylelint.io/user-guide/usage/cli/#exit-codes). (IO-47) + +- Now, the **Files** tab on [Pull request](https://docs.codacy.com/v9.0/repositories/pull-requests/#files-tab) and [Commit](https://docs.codacy.com/v9.0/repositories/commits/#files-tab) pages displays only files with a variation of their code quality metrics, to make it more convenient to analyze the impact of your changes on the code quality of the files. + + You can still list all files that the pull request updated, even if their code quality metrics didn't change, by toggling the new option **Show files without code quality changes**. (CY-6455) + + ![Updated Files tab focusing only on files that have a variation in the code quality metrics](../images/cy-6455.png) + +- Added support for the ESLint plugin [@shopify/eslint-plugin](https://www.npmjs.com/package/@shopify/eslint-plugin). (CY-6425) + +- Codacy Self-hosted now supports [integrating with Bitbucket Server instances](https://docs.codacy.com/v9.0/chart/configuration/integrations/bitbucket-server/) that have been configured with [custom context paths](https://confluence.atlassian.com/bitbucketserver/change-bitbucket-s-context-path-776640153.html). (CY-6251) + +- After [enabling the analysis for a branch](https://docs.codacy.com/v9.0/repositories-configure/managing-branches/), Codacy now provides improved feedback about the progress of the first analysis of that branch. (CY-6166) + +- The [Organization Overview](https://docs.codacy.com/v9.0/organizations/organization-overview/) now allows filtering repositories to help you see and focus on the information for the repositories that matter most to your team. (CY-5573) + + ![Repository filter on the Organization Overview](../images/cy-5573.png) + +## Bug fixes + +- Codacy now supports user accounts with email addresses containing the special characters specified in [RFC 5322](https://www.rfc-editor.org/rfc/rfc5322#section-3.4.1). (PLUTO-73) +- Fixed an issue that prevented changing code pattern configurations in a coding standard if Codacy added the code patterns only after the coding standard had been created. (PLUTO-37) +- Fixed an issue in the Codacy Analysis CLI and the cloc metrics tool that made the tools fail when running for an empty set of files. (IO-47) +- Fixed an issue that caused PMD to fail when called in some modes. (IO-47) +- Fixed a UI issue that caused the metrics displayed on the **Files** tab of pull request and commit pages to overlap the file names on smaller browser windows. (CY-6459) +- It's now possible to **Command+click** files on [Pull request](https://docs.codacy.com/v9.0/repositories/pull-requests/#files-tab) and [Commit](https://docs.codacy.com/v9.0/repositories/commits/#files-tab) pages to open the file details on new browser windows. (CY-6410) +- Fixed a UI issue that caused the metrics displayed on the **Commits** page to overlap on smaller browser windows. (CY-6191) +- Now, all links to documentation pages on the Codacy UI navigate to the corresponding Codacy Self-hosted documentation version. (CY-3958) + +## Tool versions + +This version of Codacy Self-hosted includes the tool versions below. The tools that were updated on this version are highlighted in bold: + +- Ameba 0.13.1 +- Bandit 1.7.0 +- Brakeman 4.3.1 +- bundler-audit 0.6.1 +- **[Checkov 2.1.188](https://github.com/bridgecrewio/checkov/releases/tag/2.1.188) (updated from 2.0.399)** +- **[Checkstyle 10.3.1](https://checkstyle.sourceforge.io/releasenotes.html#Release_10.3.1) (updated from 8.44)** +- Clang-Tidy 10.0.1 +- CodeNarc 2.2.0 +- CoffeeLint 2.1.0 +- Cppcheck 2.2 +- Credo 1.4.0 +- CSSLint 1.0.5 +- dartanalyzer 2.17.0 +- detekt 1.19.0 +- **[ESLint 8.23.1](https://github.com/eslint/eslint/releases/tag/v8.23.1) (updated from 8.15.0)** +- ESLint (deprecated) 7.32.0 +- Faux-Pas 1.7.2 +- Flawfinder 2.0.19 +- Gosec 2.8.1 +- Hadolint 1.18.2 +- Jackson Linter 2.10.2 +- JSHint 2.12.0 +- markdownlint 0.23.1 +- PHP Mess Detector 2.10.1 +- PHP_CodeSniffer 3.6.2 +- **[PMD 6.48.0](https://pmd.sourceforge.io/pmd-6.48.0/pmd_release_notes.html) (updated from 6.36.0)** +- **[Prospector 1.7.7](https://github.com/landscapeio/prospector/releases/tag/1.7.7) (updated from 1.3.1)** +- PSScriptAnalyzer 1.18.3 +- Pylint 1.9.5 +- **[Pylint (Python 3) 2.14.5](https://github.com/pylint-dev/pylint/releases/tag/v2.14.5) (updated from 2.7.4)** +- remark-lint 7.0.1 +- **[Revive 1.2.3](https://github.com/mgechev/revive/releases/tag/v1.2.3) (updated from 1.2.1)** +- **[RuboCop 1.32.0](https://github.com/rubocop/rubocop/releases/tag/v1.32.0) (updated from 1.28.2)** +- Scalastyle 1.5.0 +- **[ShellCheck 0.8.0](https://github.com/koalaman/shellcheck/blob/master/CHANGELOG.md#v080---2021-11-06) (updated from v0.7.2)** +- SonarC# 8.39 +- SonarVB 8.15 +- Spectral 1.2.7 +- SpotBugs 4.5.3 +- SQLint 0.2.1 +- **[Staticcheck 2022.1.3](https://staticcheck.io/changes/2022.1/#2022.1.3) (updated from 2020.1.6)** +- Stylelint 14.2.0 +- SwiftLint 0.43.1 +- Tailor 0.12.0 +- TSLint 6.1.3 +- TSQLLint 1.11.1 diff --git a/docusaurus/docs/repositories-configure/_order.ts b/docusaurus/docs/repositories-configure/_order.ts new file mode 100644 index 0000000000..7f85232390 --- /dev/null +++ b/docusaurus/docs/repositories-configure/_order.ts @@ -0,0 +1,44 @@ +export const repositoriesConfigureOrder = [ + 'repositories-configure/configuring-code-patterns', + 'repositories-configure/managing-branches', + { + type: 'category' as const, + label: 'Managing integrations', + items: [ + 'repositories-configure/integrations/github-integration', + 'repositories-configure/integrations/gitlab-integration', + 'repositories-configure/integrations/bitbucket-integration', + 'repositories-configure/integrations/post-commit-hooks', + ], + }, + 'repositories-configure/ignoring-files', + 'repositories-configure/languages', + 'repositories-configure/adjusting-quality-gates', + 'repositories-configure/adjusting-quality-goals', + { + type: 'category' as const, + label: 'Setting up code coverage', + items: [ + 'coverage-reporter/index', + 'coverage-reporter/alternative-ways-of-running-coverage-reporter', + 'coverage-reporter/uploading-coverage-in-advanced-scenarios', + 'coverage-reporter/troubleshooting-coverage-cli-issues', + ], + }, + { + type: 'category' as const, + label: 'Local analysis', + items: [ + 'repositories-configure/local-analysis/client-side-tools', + 'repositories-configure/local-analysis/running-aligncheck', + 'repositories-configure/local-analysis/running-dartanalyzer', + 'repositories-configure/local-analysis/running-deadcode', + 'repositories-configure/local-analysis/running-spotbugs', + 'repositories-configure/local-analysis/running-eslint', + ], + }, + 'repositories-configure/using-submodules', + 'repositories-configure/codacy-configuration-file', + 'repositories-configure/removing-your-repository', +]; + diff --git a/docusaurus/docs/repositories-configure/adjusting-quality-gates.md b/docusaurus/docs/repositories-configure/adjusting-quality-gates.md new file mode 100644 index 0000000000..8296679dd5 --- /dev/null +++ b/docusaurus/docs/repositories-configure/adjusting-quality-gates.md @@ -0,0 +1,42 @@ +--- +title: Adjusting quality gates +--- + + +The **quality gates** of your repository configure when Codacy reports your pull requests and commits as not up to standards. + +When you add your repository to Codacy, it automatically follows the [default gate policy for your organization](../organizations/using-gate-policies.md). If you want to set different quality gates for the repository, [create a new organization gate policy](../organizations/using-gate-policies.md#creating) to apply to the repository. + +:::note +Although you can define custom quality gate settings for specific repositories, we recommend that you always [use a gate policy](../organizations/using-gate-policies.md) defined by your organization to enforce consistent rules across multiple repositories. +::: + +Depending on the result of applying the quality gate rules, Codacy updates the color of the metrics on the [pull request or commit quality overview](../repositories/pull-requests.mdx#quality-overview) and reports the corresponding pull request status on your Git provider, if enabled. + +:::tip +[Integrate Codacy with your Git workflow](../getting-started/integrating-codacy-with-your-git-workflow.md) to report the pull request status to your Git provider and optionally block merging pull requests that aren't up to standards. +::: + +To access the quality gates, open your repository **Settings**, tab **Gates**. + +![Gates](images/quality-settings-gates.png) + +- **New issues are over:** Pull requests or commits are marked not up to standards if the number of issues introduced that have at least the specified severity level is higher than the set value. +- **New security issues are over:** Pull requests or commits are marked not up to standards if the number of security issues introduced that have at least the specified severity level is higher than the set value. +- **Complexity is over:** Pull requests or commits are marked not up to standards if the introduced complexity is higher than the set value. +- **Duplication is over:** Pull requests or commits are marked not up to standards if the number of clones introduced is higher than the set value. +- **Coverage variation is under:** Pull requests or commits are marked not up to standards if they introduce a variation to coverage lower than the set value. + + :::tip + **Set this gate to -0.10% or lower.** This will ensure that developers have a coverage drop margin so they aren't blocked [while performing some types of code refactors](../faq/code-analysis/why-does-codacy-show-unexpected-coverage-changes.md#example-pull-request-coverage-variation-is-negative-but-no-files-have-coverage-variation) + + To ensure that the changes in each pull request have a minimum level of coverage, use the gate **Diff coverage is under** instead. + ::: + +- **Diff coverage is under:** Pull requests are marked not up to standards if the diff coverage of the pull request is lower than the set value or `∅` ([not applicable](../faq/code-analysis/which-metrics-does-codacy-calculate.md#code-coverage)). This rule is only available for pull requests. + +## See also + +- [Which metrics does Codacy calculate?](../faq/code-analysis/which-metrics-does-codacy-calculate.md) +- [Why does Codacy show unexpected coverage changes?](../faq/code-analysis/why-does-codacy-show-unexpected-coverage-changes.md) +- [Integrating Codacy with your Git workflow](../getting-started/integrating-codacy-with-your-git-workflow.md) diff --git a/docusaurus/docs/repositories-configure/adjusting-quality-goals.md b/docusaurus/docs/repositories-configure/adjusting-quality-goals.md new file mode 100644 index 0000000000..1f7eae4894 --- /dev/null +++ b/docusaurus/docs/repositories-configure/adjusting-quality-goals.md @@ -0,0 +1,23 @@ +--- +title: Adjusting quality goals +--- + + +Adjust the **quality goals** to help you monitor the progress of the code quality in your repository dashboard, and configure which files Codacy considers complex or duplicated. + +Codacy displays the quality goals as dashed lines on the [quality evolution chart](../repositories/repository-dashboard.md#evolution-chart) to help you monitor the progress and overall quality status of your repository. + +To access the quality goals, open your repository **Settings**, tab **Goals**. The following screenshot displays the default configuration values: + +![Goals](images/quality-settings-goals.png) + +- **Issues are over:** Defines the threshold displayed on the tab **Issues** of the quality evolution chart. +- **Complexity is over:** Defines the threshold displayed on the tab **Complexity** of the quality evolution chart. +- **File is complex when over:** A file is considered complex when its complexity is over this value. +- **Duplication is over:** Defines the threshold displayed on the tab **Duplication** of the quality evolution chart. +- **File is duplicate when over:** A file is considered duplicated when it has more clones than this value. +- **Coverage is under:** Defines the threshold displayed on the tab **Coverage** of the quality evolution chart. + +## See also + +- [Which metrics does Codacy calculate?](../faq/code-analysis/which-metrics-does-codacy-calculate.md) diff --git a/docusaurus/docs/repositories-configure/codacy-configuration-file.mdx b/docusaurus/docs/repositories-configure/codacy-configuration-file.mdx new file mode 100644 index 0000000000..252cf813ee --- /dev/null +++ b/docusaurus/docs/repositories-configure/codacy-configuration-file.mdx @@ -0,0 +1,354 @@ +--- +title: Codacy configuration file +description: Use the Codacy configuration file to configure advanced features on Codacy with more control such as ignoring files for duplication or a specific tool, configuring the root directory to start the analysis, and adding custom file extensions to languages. +--- +import CoverageIgnore from './../_includes/CoverageIgnore.mdx' + + +Codacy supports configuring certain advanced features through a configuration file, such as: + +- [Ignoring files](#ignore-files) globally, for duplication, for cyclomatic complexity, or a specific tool + +- [Including specific ignored files](#include-files) in the analysis + +- Adjusting [tool-specific configurations](#tool-conf) + +- Configuring a specific repository directory on which to start the analysis + +- [Configuring the languages](#languages) that Codacy analyzes in your repository: + + - [Adding custom file extensions](#file-extensions) to languages + - [Disabling the analysis](#disable-language) of a specific language + +## Using a Codacy configuration file + +:::caution +- If your repository has a Codacy configuration file, the [Ignored files settings](ignoring-files.md) defined on the Codacy UI don't apply and you must [ignore files using the configuration file](#syntax-for-ignoring-files) instead. +- Codacy always uses the configuration file **in the default branch**. New settings added to the Codacy configuration file by a pull request are also considered for the pull request analysis, but the existing configuration in the default branch takes precedence. + + For example, if a pull request removes an ignored path from the Codacy configuration file, any matching files will stay ignored until that pull request is merged into the default branch. + +::: + +To use a Codacy configuration file: + +1. Create a text file with the name `.codacy.yml` or `.codacy.yaml` on the root of your repository. + + The file must start with a line containing a triple dash (`---`). + +1. Add your settings to the configuration file based on the example template below. + + If you defined any [Ignored files settings](ignoring-files.md) for the repository, make sure you [add those settings](#syntax-for-ignoring-files) to the Codacy configuration file. + + ```yaml + --- + engines: + rubocop: + exclude_paths: + - "config/test.yml" + base_sub_dir: "test/baseDir" + duplication: + exclude_paths: + - "config/test.yml" + config: + languages: + - "ruby" + metric: + exclude_paths: + - "src/test.ts" + config: + languages: + - "typescript" + languages: + css: + extensions: + - ".scss" + python: + enabled: false + exclude_paths: + - ".bundle/**" + - "spec/**/*" + - "benchmarks/**/*" + - "**.min.js" + - "**/tests/**" + include_paths: + - "**/tests/integration/**" + ``` + +1. Optionally, validate the syntax of your configuration file with the [Codacy Analysis CLI](https://github.com/codacy/codacy-analysis-cli#install) by running the following command in the same folder as the Codacy configuration file: + + ```bash + codacy-analysis-cli validate-configuration --directory `pwd` + ``` + +## Ignoring files using a Codacy configuration file \{#ignore-files\} +The Codacy configuration file gives you more flexibility in [ignoring or excluding files](ignoring-files.md) from the Codacy analysis. + +:::note + +::: + +### Syntax for ignoring files + +To ignore files using a Codacy configuration file, you must define one or more patterns under `exclude_paths` using the [Java glob syntax](https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29): + +| Example pattern | Ignored files | +| ------------------ | ------------------------------------------------------------ | +| `test/README.md` | The file `test/README.md` | +| `test/*` | All files in the root of test | +| `test/**` | All files and directories inside test | +| `test/**/*` | All files inside sub-directories of test | +| `**.resource` | All `.resource` files across all your repository | +| `**/*.resource` | All `.resource` files in all directories and sub-directories | + +For example: + +```yaml +--- +exclude_paths: + - "test/README.md" + - "**/*.resource" +``` + +### Syntax for configuring cyclomatic complexity + +Cyclomatic complexity can be disabled or partially ignored for certain paths, files or languages. + +:::note +Cyclomatic complexity is referred as `metric` in the configuration file. + +```yaml +--- +engines: + metric: + exclude_paths: + - "src/test.ts" + config: + languages: + - "typescript" +``` +::: + +## Including specific files using a Codacy configuration file \{#include-files\} +The Codacy configuration file allows you to explicitly specify files or directories to include in the analysis. This is particularly useful for [bypassing files or directories that are ignored by default](./ignoring-files.md#default-ignored-files) or specified in `exclude_paths`. + +:::note +If both `exclude_paths` and `include_paths` are defined, `include_paths` will specify exceptions to the exclusions defined in `exclude_paths`. +::: + +### Syntax for including files + +To include specific files using a Codacy configuration file, you must define one or more patterns under `include_paths` [using the same syntax as `exclude_paths`](#syntax-for-ignoring-files). + +For example: + +```yaml +--- +exclude_paths: + - "lib*/**" +include_paths: + - "lib-a/**" + - "libs/**" +``` + +In this example, while all directories matching `lib*` are excluded, `lib-a` is specifically included for analysis, as well as any files within `libs`. + +## Adjusting tool configurations \{#tool-conf\} +:::note +The Codacy configuration file lets you [configure tools](#tool-specific-configurations), but you can't enable or disable them. A tool can only be enabled or disabled on the [Code patterns page](configuring-code-patterns.md) by users with the [necessary permissions](../organizations/roles-and-permissions-for-organizations.md). +::: + +### Which tools can be configured and which name should I use? + +{/**/} + +You can use the Codacy configuration file to configure all tools supported by Codacy except the [client-side tools](local-analysis/client-side-tools.md). + +The following are the tool names that must be used in the Codacy configuration file: + +```text +ameba +bandit +brakeman +checkov +checkstyle +codacy-scalameta-pro +codenarc +coffeelint +cppcheck +credo +dartanalyzer +detekt +eslint-8 +eslint-9 +flawfinder +hadolint +jacksonlinter +lizard +markdownlint +phpcs +phpmd +pmd +pmd-7 +prospector +psscriptanalyzer +pylintpython3 +remark-lint +revive +roslyn +rubocop +ruff +scalastyle +semgrep +shellcheck +sonarcsharp +sonarvb +spectral +SQLint +stylelint +swiftlint +trivy +tsqllint +``` + +The following names are **deprecated** and shouldn't be used, although they're still accepted in the Codacy configuration file: + +- `bundleraudit` - The tool **bundler-audit** [is deprecated](../release-notes/cloud/cloud-2023-10-13-bundler-audit-deprecation.md). If you are using **Semprep** or **Trivy** instead, use the names `trivy` or `semgrep`. +- `csslint` - The tool **CSSLint** [is deprecated](../release-notes/cloud/cloud-2023-10-25-csslint-jshint-fauxpas-tailor-tslint-deprecation.md). If you are using **Stylelint** instead, use the name `stylelint`. +- `eslint` - Use the name `eslint-8` for **ESLint**. +- `jshint`, `tslint` - The tools **JSHint** and **TSLint** [are deprecated](../release-notes/cloud/cloud-2023-10-25-csslint-jshint-fauxpas-tailor-tslint-deprecation.md). If you are using **ESLint** instead, use the name `eslint-8`. +- `pylint` - Use the name `pylintpython3` for **Pylint**. +- `tailor` - The tool **Tailor** [is deprecated](../release-notes/cloud/cloud-2023-10-25-csslint-jshint-fauxpas-tailor-tslint-deprecation.md). If you are using **SwiftLint** instead, use the name `swiftlint`. + +### Tool-specific configurations + +By default, Codacy tries to detect which language is used on each source code file, and uses a set of default options for identifying duplicate blocks of code. However, some false positives may occur. + +The tools below support specifying the language or language version used in the source code files that you're analyzing, or tuning the duplication detection. + +#### Cppcheck + +If you're using Cppcheck to analyze C or C++ source code files, add the following configuration to your Codacy configuration file to define the programming language you're using. The supported languages are `c` and `c++`: + +```yaml +--- +engines: + cppcheck: + language: c++ +``` + +#### PHP_CodeSniffer + +If you're using the [PHP Compatibility](https://github.com/PHPCompatibility/PHPCompatibility) coding standard for PHP_CodeSniffer, add the following configuration to your Codacy configuration file to [define the PHP version](https://github.com/PHPCompatibility/PHPCompatibility#sniffing-your-code-for-compatibility-with-specific-php-versions) you're using: + +```yaml +--- +engines: + phpcs: + php_version: 5.5 +``` + +#### Legacy Pylint 1.9.* + +If you're using the legacy Pylint 1.9.* to analyze Python source code files, add the following configuration to your Codacy configuration file to define the Python language version you're using. The supported versions are `2` and `3`: + +```yaml +--- +engines: + pylint: + python_version: 2 +``` + +:::tip +If you're using Python 3.4.\* or later as your programming language, disable the tool **Pylint (legacy)** and enable the tool **Pylint** on your repository [Code patterns page](configuring-code-patterns.md) instead. For more information, see [What's New in Pylint 2.0](https://pylint.pycqa.org/en/latest/whatsnew/2/2.0/index.html). +::: + +#### PMD CPD (Duplication) + +{/**/} + +Codacy uses [PMD's Copy/Paste Detector (CPD)](https://docs.pmd-code.org/latest/) to identify duplicated blocks of code [on the supported languages](../getting-started/supported-languages-and-tools.md). + +By default, Codacy only reports duplicate code blocks that have the following minimum token length, depending on the language: + +| Language | Default minimum token length | +| ---------- | ---------------------------- | +| C# | 50 | +| C/C++ | 50 | +| Go | 40 | +| Java | 100 | +| JavaScript | 40 | +| Python | 50 | +| Ruby | 50 | +| SQL | 100 | +| Scala | 50 | +| Swift | 50 | + +Besides this, Codacy runs PMD CPD with the following options enabled by default: + +- **Skip lexical errors:** Skip files which can't be tokenized due to invalid characters instead of aborting CPD +- **Ignore literals:** Ignore number values and string contents when comparing text +- **Ignore annotations:** Ignore language annotations when comparing text +- **Ignore usings:** Ignore `using` directives in C# when comparing text + +To use a different minimum token length or change any of the default options, add your settings to the Codacy configuration file based on the example template below. + +:::caution +If you configure `minTokenMatch` on the Codacy configuration file, Codacy will use that value for all languages. +::: + +```yaml +--- +engines: + duplication: + minTokenMatch: 20 + skipLexicalErrors: false + ignoreLiterals: false + ignoreIdentifiers: true + ignoreAnnotations: false + ignoreUsings: false +``` + +## Configuring languages using a Codacy configuration file \{#languages\} +You can use a Codacy configuration file to manage the languages that Codacy analyzes in your repository. + +:::note +Codacy applies the language settings from the Codacy configuration file as well as any settings defined [in the Codacy UI](languages.md). +::: + +### Adding custom file extensions \{#file-extensions\} +To [add custom file extensions to languages](languages.md#configuring-file-extensions) using a Codacy configuration file, you must define one or more extensions under `languages..extensions`. Keep in mind that some tools might not work out of the box with those extensions. + +For example: + +```yaml +--- +languages: + css: + extensions: + - ".scss" +``` + +### Disabling analysis of a language \{#disable-language\} +To [disable the analysis of a specific language](languages.md#disable-language) using a Codacy configuration file, set `languages..enabled` to `false`. The analysis is enabled by default for all languages. + +For example: + +```yaml +--- +languages: + css: + enabled: false +``` diff --git a/docusaurus/docs/repositories-configure/configuring-code-patterns.mdx b/docusaurus/docs/repositories-configure/configuring-code-patterns.mdx new file mode 100644 index 0000000000..e15cbfa3a4 --- /dev/null +++ b/docusaurus/docs/repositories-configure/configuring-code-patterns.mdx @@ -0,0 +1,328 @@ +--- +title: Configuring code patterns +description: Configure the static analysis tools and code patterns that Codacy uses to analyze your repositories to ensure that the analysis results fit your needs. +--- +import AdminAccessControlInfo from './../_includes/AdminAccessControlInfo.mdx' + + + + +By default, Codacy analyzes your repositories using a subset of the supported analysis tools and code patterns. These defaults are based on current best practices and community feedback, and you can adapt them to your needs as follows: + +- [Configuring tools and code patterns using the Codacy UI](#configuring-tools-and-code-patterns-using-the-codacy-ui) +- [Discover code patterns across all tools](#discover-code-patterns-across-all-tools) +- [Customizing applied coding standards](#using-your-own-tool-configuration-files) +- [Customizing patterns when following coding standards](#customizing-patterns-following-standards) +- [Using tool configuration files](#using-your-own-tool-configuration-files) + +## Configuring tools and code patterns using the Codacy UI + +To configure the tools and code patterns for a repository using the Codacy UI: + +1. Open your repository **Code patterns** page. + + ![Code patterns page](images/code-patterns.png) + +1. Enable or disable the tools that Codacy will use to analyze the repository. + + ![Toggling tools](images/code-patterns-toggle-tools.png) + +1. Select a tool to enable or disable its code patterns. To make it easier to find relevant patterns, use the filters above the pattern list. You can filter by [issue category](../faq/code-analysis/which-metrics-does-codacy-calculate.md#issues), status, severity level, or display only recommended code patterns. + + To see an explanation of the issues that a pattern detects and how to fix them, click the respective dropdown arrow. + + :::tip + - To enable a group of code patterns, use the filter to select the relevant group of patterns and click the checkbox in the header of the patterns list. + + - Codacy displays the tag **New** for one month next to the name of newly added code patterns. + ::: + + ![Configuring code patterns](images/code-patterns-configure.png) + +1. Optionally, to take the changes into account immediately, [reanalyze the repository manually](../faq/repositories/how-do-i-reanalyze-my-repository.md). Otherwise, Codacy will use the updated configuration when analyzing new commits and pull requests. + +## Discover code patterns across all tools \{#discover-code-patterns-across-all-tools\} +To discover code patterns across all tools, click **Discover patterns** at the top of the **Tools** list. + +Use the input field to search for patterns by name or description. You can also filter by severity level, issue category, recommended or disabled patterns. + +You can also expand your search to include patterns from all tools, even if the tool is not enabled for the repository. + +## Customizing applied coding standards \{#customizing-applied-coding-standards\} +To apply or edit a repository's [coding standards](../organizations/using-coding-standards.md), click **Customize** in the **Following ...** section at the top of the **Code patterns** page. + +![Customize applied coding standards](images/code-patterns-cs-customize.png) + +Select the coding standards that you want to follow or stop following and click **Apply**. + +![Customize applied coding standards](images/code-patterns-cs-customize-modal.png) + + +## Customizing patterns when following coding standards \{#customizing-patterns-following-standards\} +Tools and patterns enabled by a coding standard are enforced and cannot be disabled. +You can add extra tools and patterns, if these are not enabled by any applied coding standard. + +## Using tool configuration files \{#using-your-own-tool-configuration-files\} +{/**/} + +:::note +- After activating a configuration file for a tool, Codacy uses that configuration file even if you [exclude it from Codacy analysis](ignoring-files.md). + +- When [using a tool configuration file alongside a coding standard](../organizations/using-coding-standards.md#using-with-tool-configuration), the configuration file controls the code patterns, while the coding standard controls whether the tool is enabled or disabled. + +::: + +Codacy supports configuration files for several static analysis tools to help you streamline your setup. + +To use a configuration file for a static analysis tool: + +1. Push the configuration file to the root of the [default Codacy branch](managing-branches.mdx). + +1. Open the repository **Code patterns** page, select the tool of interest, and activate the toggle to use a configuration file. + + :::note + - Codacy uses the version of the configuration file **in the branch being analyzed**. For example, if you open a pull request that includes changes to the configuration file, the analysis results take those changes into account. + + - If Codacy analyzes a branch that doesn't include the configuration file, Codacy reverts to using the code patterns configured for the tool before you selected the option **Configuration file** on the Code patterns page. + + - For performance reasons, when you update pattern settings using a configuration file, Codacy may display outdated messages for issues identified previously by those patterns. + ::: + + ![Using a configuration file](images/code-patterns-config-file.png) + +The table below lists the configuration file names that Codacy detects and supports for each tool: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Tool nameLanguagesFiles detectedOther info
    AmebaCrystal.ameba.yml
    BanditPythonbandit.yml, bandit.yaml, .bandit, bandit.toml, bandit.iniTo solve flagged valid Python "assert" statements, create a bandit.yml on the root of the repository containing: skips: \['B101'\]
    BrakemanRubyconfig/brakeman.yml
    CheckstyleJavacheckstyle.xmlSupports configuration file in directories other than root and can search up to 5 directories into the repository.
    CodeNarcGroovy.codenarcrc
    CredoElixir.credo.exs, config/.credo.exs
    dartanalyzerDartanalysis_options.ymlCustomizing static analysis
    detektKotlindefault-detekt-config.yml, detekt.ymlSupports configuration file in directories other than root and can search up to 5 directories into the repository.
    ESLint v8JavaScript, TypeScript.eslintrc.js, .eslintrc.cjs, .eslintrc.yaml, .eslintrc.yml, .eslintrc.json
    ESLint v9JavaScript, TypeScripteslint.config.js, eslint.config.mjs, eslint.config.cjs
    HadolintDockerfile.hadolint.yaml
    markdownlintMarkdown.markdownlint.yml, .markdownlint.yaml, .markdownlint.jsonc, .markdownlint.json
    PHP_CodeSnifferPHPphpcs.xml, phpcs.xml.dist
    PHP Mess DetectorPHPcodesize.xml, phpmd.xml, phpmd.xml.dist
    PMDApex, Java, JavaScript, JSP, PL/SQL, XML, Velocity and Visualforceruleset.xml, apex-ruleset.xmlSupports configuration file in directories other than root and can search up to 5 directories into the repository.
    ProspectorPython.prospector.yml, .prospector.yaml, prospector.yml, prospector.yaml, .landscape.yml, .landscape.yaml, landscape.yml, landscape.yaml
    PylintPythonpylintrc, .pylintrcPlugins
    remark-lintMarkdown.remarkrc, .remarkrc.json, .remarkrc.yaml, .remarkrc.yml, .remarkrc.js
    ReviveGorevive.toml
    RuboCopRuby.rubocop.yml, .rubocop-codacy.ymlSupports alternative configuration file .rubocop-codacy.yml for Codacy analysis, allowing exclusion of private gems. This prevents analysis issues caused by private gem references, ensuring proper validation by Codacy.
    RuffPythonpyproject.toml, ruff.toml, .ruff.toml
    ScalastyleScalascalastyle-config.xml, scalastyle_config.xml
    SemgrepApex, C++, C#, Dockerfile, Elixir, GitHub Actions, Go, Java, JavaScript, Kotlin, PHP, Python, Ruby, Rust, Scala, Shell, Swift, Terraform, TypeScript.semgrep.yaml
    SonarC#C#SonarLint.xml
    SonarVBVisual BasicSonarLint.xml
    SpectralAsyncAPI, OpenAPI.spectral.yaml, .spectral.yml, .spectral.json
    SpotBugsJava, Scalafindbugs.xml, findbugs-includes.xml, findbugs-excludes.xml, spotbugs.xml, spotbugs-includes.xml, spotbugs-excludes.xmlSupports configuration file in directories other than root and can search up to 5 directories into the repository.
    SQLFluffSQLsetup.cfg, tox.ini, pep8.ini, .sqlfluff, pyproject.tomlSupports configuration file in directories other than root
    StylelintCSS, LESS, SASS.stylelintrc, stylelint.config.js, .stylelintrc.json, .stylelintrc.yaml, .stylelintrc.yml, .stylelintrc.jsSupports configuration file in directories other than root and can search up to 5 directories into the repository.
    SwiftLintSwift.swiftlint.yml
    TSQLLintTransact-SQL.tsqllintrc
    + +:::note +Codacy doesn't support configuration files for the following tools: + +- Aligncheck +- Checkov +- Clang-Tidy +- Codacy Scalameta Pro +- CoffeeLint +- Cppcheck +- deadcode +- Flawfinder +- Gosec +- Jackson Linter +- Lizard +- PSScriptAnalyzer +- ShellCheck +- SQLint +- Staticcheck +- Trivy +- Unity Roslyn Analyzers + +::: + +## See also + +- [Applying a coding standard across multiple repositories](../organizations/using-coding-standards.md) +- [How to implement Google JavaScript style guide with Codacy](https://blog.codacy.com/implement-google-javascript-style-guide-with-codacy/) diff --git a/docusaurus/docs/repositories-configure/ignoring-files.mdx b/docusaurus/docs/repositories-configure/ignoring-files.mdx new file mode 100644 index 0000000000..de30f0af33 --- /dev/null +++ b/docusaurus/docs/repositories-configure/ignoring-files.mdx @@ -0,0 +1,68 @@ +--- +title: Ignoring files +description: Ignore or exclude files from the Codacy analysis and see the list of files that Codacy already ignores by default. +--- +import AdminAccessControlInfo from './../_includes/AdminAccessControlInfo.mdx' +import CoverageIgnore from './../_includes/CoverageIgnore.mdx' + + + + +In some situations, you may want to ignore or exclude files from the Codacy analysis. + +To exclude files from your repository analysis open your repository **Settings**, tab **Ignored Files**, and select the files you want to ignore. This view only shows the files on your main branch. + +![Ignored files](images/ignored-files.png) + +:::note +- See below the files that Codacy [ignores by default](#default-ignored-files). + +- You can also ignore files using your own [tool configuration files](configuring-code-patterns.md#using-your-own-tool-configuration-files), although this depends on the option being supported by each tool. + +- + +- When excluding files from **Duplication** analysis, you must state the **entire path** to the files. Unlike quality analysis, wildcards will not work, resulting in files not being excluded. +::: + +If you need more flexibility in ignoring files, use a Codacy configuration file to [define a custom list of file paths to exclude](codacy-configuration-file.md#syntax-for-ignoring-files). + +:::caution +If your repository has a [Codacy configuration file](codacy-configuration-file.md), the **Ignored files** settings defined on the Codacy UI don't apply and you must [ignore files using the configuration file](codacy-configuration-file.md#ignore-files) instead. +::: + +![Ignored files](images/ignored-files-configuration-file.png) + +## Default ignored files + +By default, Codacy ignores all the files that match the regular expressions below. If you need to analyze files that match these regular expressions, use a Codacy configuration file to [define a custom list of file paths to include](./codacy-configuration-file.md#include-files). + +```text +.*[\.-]min\.css +.*[\.-]min\.js +.*node_modules/.* +.*bower_components/.* +.*vendor/.* +.*third[_-]?[Pp]arty/.* +.*samples?/.* +.*releases?/.* +.*builds?/.* +.*dist/.* +.*external/.* +.*libs/.* +.*d3\.js +.*angular(-resource|)?\.js +.*select2(-resource|)?\.js +.*-ace\.js +.*typeahead\.js +.*jquery-ui\.js +.*reveal\.js +.*three\.js +.*chart\.js +.*jquery\.js +.*underscore\.js +.*lodash\.js +.*bootstrap\.js +.*bootstrap\.css +.*font-awesome\.css +.*\.[Dd]esigner\.cs +``` diff --git a/docusaurus/docs/repositories-configure/images/code-patterns-config-file.png b/docusaurus/docs/repositories-configure/images/code-patterns-config-file.png new file mode 100644 index 0000000000..7eeafbde72 Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/code-patterns-config-file.png differ diff --git a/docusaurus/docs/repositories-configure/images/code-patterns-configure.png b/docusaurus/docs/repositories-configure/images/code-patterns-configure.png new file mode 100644 index 0000000000..d48de41253 Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/code-patterns-configure.png differ diff --git a/docusaurus/docs/repositories-configure/images/code-patterns-cs-customize-modal.png b/docusaurus/docs/repositories-configure/images/code-patterns-cs-customize-modal.png new file mode 100644 index 0000000000..cde8b55352 Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/code-patterns-cs-customize-modal.png differ diff --git a/docusaurus/docs/repositories-configure/images/code-patterns-cs-customize.png b/docusaurus/docs/repositories-configure/images/code-patterns-cs-customize.png new file mode 100644 index 0000000000..b0906d0abf Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/code-patterns-cs-customize.png differ diff --git a/docusaurus/docs/repositories-configure/images/code-patterns-toggle-tools.png b/docusaurus/docs/repositories-configure/images/code-patterns-toggle-tools.png new file mode 100644 index 0000000000..4f80db4d8d Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/code-patterns-toggle-tools.png differ diff --git a/docusaurus/docs/repositories-configure/images/code-patterns.png b/docusaurus/docs/repositories-configure/images/code-patterns.png new file mode 100644 index 0000000000..881c82d3ea Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/code-patterns.png differ diff --git a/docusaurus/docs/repositories-configure/images/disable-language.png b/docusaurus/docs/repositories-configure/images/disable-language.png new file mode 100644 index 0000000000..47675e3aaa Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/disable-language.png differ diff --git a/docusaurus/docs/repositories-configure/images/file-extensions.png b/docusaurus/docs/repositories-configure/images/file-extensions.png new file mode 100644 index 0000000000..ee2a83eebb Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/file-extensions.png differ diff --git a/docusaurus/docs/repositories-configure/images/ignored-files-configuration-file.png b/docusaurus/docs/repositories-configure/images/ignored-files-configuration-file.png new file mode 100644 index 0000000000..ed1754ace4 Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/ignored-files-configuration-file.png differ diff --git a/docusaurus/docs/repositories-configure/images/ignored-files.png b/docusaurus/docs/repositories-configure/images/ignored-files.png new file mode 100644 index 0000000000..f6fd3baa47 Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/ignored-files.png differ diff --git a/docusaurus/docs/repositories-configure/images/managing-branches-auto-enable.png b/docusaurus/docs/repositories-configure/images/managing-branches-auto-enable.png new file mode 100644 index 0000000000..2269529a58 Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/managing-branches-auto-enable.png differ diff --git a/docusaurus/docs/repositories-configure/images/managing-branches-sh.png b/docusaurus/docs/repositories-configure/images/managing-branches-sh.png new file mode 100644 index 0000000000..ab3ebb9d9e Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/managing-branches-sh.png differ diff --git a/docusaurus/docs/repositories-configure/images/managing-branches.png b/docusaurus/docs/repositories-configure/images/managing-branches.png new file mode 100644 index 0000000000..07304591fb Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/managing-branches.png differ diff --git a/docusaurus/docs/repositories-configure/images/quality-settings-gates.png b/docusaurus/docs/repositories-configure/images/quality-settings-gates.png new file mode 100644 index 0000000000..db1f6728cf Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/quality-settings-gates.png differ diff --git a/docusaurus/docs/repositories-configure/images/quality-settings-goals.png b/docusaurus/docs/repositories-configure/images/quality-settings-goals.png new file mode 100644 index 0000000000..96f457c4ae Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/quality-settings-goals.png differ diff --git a/docusaurus/docs/repositories-configure/images/repository-remove.png b/docusaurus/docs/repositories-configure/images/repository-remove.png new file mode 100644 index 0000000000..ceceb220be Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/repository-remove.png differ diff --git a/docusaurus/docs/repositories-configure/images/using-submodules-default-add-user-key.png b/docusaurus/docs/repositories-configure/images/using-submodules-default-add-user-key.png new file mode 100644 index 0000000000..5242187151 Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/using-submodules-default-add-user-key.png differ diff --git a/docusaurus/docs/repositories-configure/images/using-submodules-generate-new-user-key.png b/docusaurus/docs/repositories-configure/images/using-submodules-generate-new-user-key.png new file mode 100644 index 0000000000..c5964b53c3 Binary files /dev/null and b/docusaurus/docs/repositories-configure/images/using-submodules-generate-new-user-key.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/bitbucket-integration.mdx b/docusaurus/docs/repositories-configure/integrations/bitbucket-integration.mdx new file mode 100644 index 0000000000..d812d8ebf2 --- /dev/null +++ b/docusaurus/docs/repositories-configure/integrations/bitbucket-integration.mdx @@ -0,0 +1,73 @@ +--- +title: Bitbucket integration +description: Enable the Bitbucket integration to have pull request status, comments, and analysis summaries from Codacy directly on pull requests. +--- +import DefaultGitProviderSettingsTip from '../../_includes/DefaultGitProviderSettingsTip.mdx' +import StatusChecksImportant from '../../_includes/StatusChecksImportant.mdx' +import AiInfo from '../../_includes/AiInfo.mdx' +import ServiceAccountIntegration from '../../_includes/ServiceAccountIntegration.mdx' + + +The Bitbucket integration incorporates Codacy on your existing Git provider workflows by reporting issues and the analysis status directly on your pull requests. + +When you add a new repository, Codacy sets the Bitbucket integration using the [default settings for your organization](../../organizations/integrations/default-git-provider-integration-settings.md). You can then [customize the settings](#configuring) for the repository. + +![Bitbucket integration](images/bitbucket-integration.png) + +:::caution +Codacy uses the Bitbucket user who added the repository to create comments on pull requests. If that user loses access to the repository, a repository admin must [refresh the Bitbucket integration](#refreshing). +::: + +## Configuring the Bitbucket integration \{#configuring\} +To configure the Bitbucket integration, open your repository **Settings**, tab **Integrations**. + +Depending on the options that you enable, Codacy will automatically update pull requests on Bitbucket with extra information when accepting pull requests. + + + +### Status checks \{#pull-request-status\} +Adds a report to your pull requests showing whether your pull requests and coverage are up to standards or not as configured on the [quality gate rules](../../repositories-configure/adjusting-quality-gates.md) for your repository. You can then optionally [block merging pull requests that aren't up to standards](../../getting-started/integrating-codacy-with-your-git-workflow.md#blocking-pull-requests). + + + +![Pull request status on Bitbucket](images/bitbucket-integration-pr-status.png) + +### Issue annotations \{#pull-request-comment\} +Adds comments on the lines of the pull request where Codacy finds new issues. Click on the links to open Codacy and see more details about the issues and how to fix them. To enable this option, you must enable **Status checks** first. + +![Pull request comment on Bitbucket](images/bitbucket-integration-pr-comment.png) + +### Issue summaries \{#pull-request-summary\} +:::note[This feature isn't available for Bitbucket Server] +::: + +Shows an overall view of the changes in the pull request, including new issues and metrics such as complexity and duplication. To enable this option, you must enable **Status checks** first. + +![Pull request summary on Bitbucket](images/bitbucket-integration-pr-summary.png) + +### AI-Enhanced Comments + +Adds AI-enhanced comments with insights to help you fix identified issues. + + + +![AI-enhanced comment on GitLab](images/bitbucket-integration-ai-comment.png) + +## Refreshing the Bitbucket integration \{#refreshing\} +If the user who added the repository to Codacy loses access to the repository, which may happen when the user leaves the team or the organization, Codacy won't be able to create comments on pull requests. + +In this situation, another user with [administrator access to the repository](../../organizations/roles-and-permissions-for-organizations.md#permissions-for-bitbucket) needs to refresh the Bitbucket integration: + + + +1. Open the repository **Settings**, tab **Integrations**. + +1. On the Bitbucket integration area, click the link **Refresh connection**. + + ![Refresh Bitbucket integration](images/bitbucket-integration-refresh.png) + +After refreshing the integration, Codacy will use the logged in Bitbucket user to create comments on new pull requests. + +## See also + +- [Integrating Codacy with your Git workflow](../../getting-started/integrating-codacy-with-your-git-workflow.md) diff --git a/docusaurus/docs/repositories-configure/integrations/github-integration.mdx b/docusaurus/docs/repositories-configure/integrations/github-integration.mdx new file mode 100644 index 0000000000..477b6e71a2 --- /dev/null +++ b/docusaurus/docs/repositories-configure/integrations/github-integration.mdx @@ -0,0 +1,100 @@ +--- +title: GitHub integration +description: Enable the GitHub integration to have status checks, annotations, issue and coverage summaries, and suggested fixes from Codacy directly on pull requests. +--- +import DefaultGitProviderSettingsTip from '../../_includes/DefaultGitProviderSettingsTip.mdx' +import StatusChecksImportant from '../../_includes/StatusChecksImportant.mdx' +import AiInfo from '../../_includes/AiInfo.mdx' +import Paid from '../../_includes/Paid.mdx' + + +The GitHub integration incorporates Codacy on your existing Git provider workflows by reporting issues and the analysis status directly on your pull requests. + +When you add a new repository, Codacy sets the GitHub integration using the [default settings for your organization](../../organizations/integrations/default-git-provider-integration-settings.md). You can then [customize the settings](#configuring) for the repository. + +![GitHub integration](images/github-integration.png) + +## Configuring the GitHub integration \{#configuring\} +To configure the GitHub integration, open your repository **Settings**, tab **Integrations**. + +Depending on the options that you enable, Codacy will automatically update pull requests on GitHub with extra information when accepting pull requests. + + + +### Status checks + +Adds a report to your pull requests showing whether your pull requests and coverage are up to standards or not as configured on the [quality gate rules](../../repositories-configure/adjusting-quality-gates.md) for your repository. You can then optionally [block merging pull requests that aren't up to standards](../../getting-started/integrating-codacy-with-your-git-workflow.md#blocking-pull-requests). + + + +![Pull request status check on GitHub](images/github-integration-pr-status.png) + +### AI Reviewer + +:::note +This feature is only supported on GitHub. + +If you choose to enable the AI Reviewer, consider disabling the AI-enhanced comments, as it may duplicate any comments on Codacy issues you receive. + +::: + +The AI Reviewer combines the reliability of deterministic, rule-based static code analysis with the power of AI. It draws in the necessary context from source code and PR metadata to ensure the business intent matches the technical outcome, and can catch logic gaps that conventional scanners (and human reviewers) often miss. + +It provides feedback on missing or weak tests, complex or duplicated code, and keeps security concerns up to date. Beyond that, it adds contextual insights about whether the changes follow the requirements, business rules, and logic used in the project. + +This setting can be enabled at a repository or organization level. Once enabled, Codacy will start adding a Summary to your pull requests based on the AI-enriched reviews. To request a PR Review from Codacy, add a **`codacy-review`** label to your Pull Request. Codacy listens to the event and will publish the review as soon as it's ready. + + +![AI Reviewer on Github](images/github-integration-ai-reviewer.png) + + +### Issue annotations + +Adds annotations on the lines of the pull request where Codacy finds new issues. Codacy maps the severity of the issues reported by the tools to the severity levels of the annotations. To enable this option, you must enable **Status checks** first. + +![Issue annotation on GitHub](images/github-integration-pr-annotation.png) + +### Issue summaries + +Shows an overall view of the changes in the pull request, including new issues and metrics such as complexity and duplication. To enable this option, you must enable **Status checks** first. + +![Issue summary on GitHub](images/github-integration-pr-summary.png) + +### Coverage summaries + +Adds a pull request comment showing an overall view of the coverage metrics for the pull request, including details about the data that Codacy used to calculate the coverage variation and diff coverage metrics. + +When there are new coverage results, Codacy updates the last coverage summary comment if it's included in the last 5 comments of the pull request. Otherwise, Codacy creates a new comment. + +:::caution +**To get coverage summaries** you must also [add coverage to your repository](../../coverage-reporter/index.md). +::: + +![Coverage summary on GitHub](images/github-integration-coverage-summary.png) + +:::note +This feature is only supported on GitHub and GitLab Cloud. +::: + +### Suggested fixes \{#suggest-fixes\} + + +Adds comments on the lines of the pull request where Codacy finds new issues with suggestions on how to fix the issues. Codacy doesn't apply any changes automatically. To apply the changes, [manually review and accept the suggestions](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request#applying-suggested-changes). + +:::tip +Enable also **AI-enhanced comments** to get ready-to-commit AI-generated fixes. +::: + +![Comment suggesting a fix on GitHub](images/github-integration-suggest-fixes.png) + +### AI-enhanced comments + +Adds AI-enhanced comments, providing insights and ready-to-commit AI-generated fixes for identified issues in cases where tool-suggested fixes are not supported. To enable this option, you must enable **Suggested fixes** first. + + + +![AI-enhanced comment on GitHub](images/github-integration-ai-comment.png) + +## See also + +- [Integrating Codacy with your Git workflow](../../getting-started/integrating-codacy-with-your-git-workflow.md) diff --git a/docusaurus/docs/repositories-configure/integrations/gitlab-integration.mdx b/docusaurus/docs/repositories-configure/integrations/gitlab-integration.mdx new file mode 100644 index 0000000000..acec4c5c7e --- /dev/null +++ b/docusaurus/docs/repositories-configure/integrations/gitlab-integration.mdx @@ -0,0 +1,86 @@ +--- +title: GitLab integration +description: Enable the GitLab integration to have merge request status, comments, and analysis summaries from Codacy directly on merge requests. +--- +import DefaultGitProviderSettingsTip from '../../_includes/DefaultGitProviderSettingsTip.mdx' +import StatusChecksImportant from '../../_includes/StatusChecksImportant.mdx' +import AiInfo from '../../_includes/AiInfo.mdx' +import ServiceAccountIntegration from '../../_includes/ServiceAccountIntegration.mdx' + + +The GitLab integration incorporates Codacy on your existing Git provider workflows by reporting issues and the analysis status directly on your merge requests. + +When you add a new repository, Codacy sets the GitLab integration using the [default settings for your organization](../../organizations/integrations/default-git-provider-integration-settings.md). You can then [customize the settings](#configuring) for the repository. + +![GitLab integration](images/gitlab-integration.png) + +:::caution +Codacy uses the GitLab user who added the repository to create comments on merge requests. If that user loses access to the repository, a repository admin must [refresh the GitLab integration](#refreshing). +::: + +## Configuring the GitLab integration \{#configuring\} +To configure the GitLab integration, open your repository **Settings**, tab **Integrations**. + +Depending on the options that you enable, Codacy will automatically update merge requests on GitLab with extra information when accepting merge requests. + + + +### Status checks \{#pull-request-status\} +Adds a report to your merge requests showing whether your merge requests and coverage are up to standards or not as configured on the [quality gate rules](../../repositories-configure/adjusting-quality-gates.md) for your project. You can then optionally [block merging merge requests that aren't up to standards](../../getting-started/integrating-codacy-with-your-git-workflow.md#blocking-pull-requests). + + + +![Merge request status on GitLab](images/gitlab-integration-pr-status.png) + +### Issue annotations \{#pull-request-comment\} +Adds comments on the lines of the merge request where Codacy finds new issues. Click on the links to open Codacy and see more details about the issues and how to fix them. To enable this option, you must enable **Status checks** first. + +![Merge request comment on GitLab](images/gitlab-integration-pr-comment.png) + +### Issue summaries \{#pull-request-summary\} +Shows an overall view of the changes in the merge request, including new issues and metrics such as complexity and duplication. To enable this option, you must enable **Status checks** first. + +### Coverage summaries + +Adds a pull request comment showing an overall view of the coverage metrics for the pull request, including details about the data that Codacy used to calculate the coverage variation and diff coverage metrics. + +When there are new coverage results, Codacy updates the last coverage summary comment if it's included in the last 5 comments of the pull request. Otherwise, Codacy creates a new comment. + +:::caution +**To get coverage summaries** you must also [add coverage to your repository](../../coverage-reporter/index.md). +::: + +![Coverage summary on GitLab](images/gitlab-integration-coverage-summary.png) + +:::note +This feature is only supported on GitHub and GitLab Cloud. +::: + +![Merge request summary on GitLab](images/gitlab-integration-pr-summary.png) + +### AI-Enhanced Comments + +Adds AI-enhanced comments with insights to help you fix identified issues. + + + +![AI-enhanced comment on GitLab](images/gitlab-integration-ai-comment.png) + +## Refreshing the GitLab integration \{#refreshing\} +If the user who added the repository to Codacy loses access to the repository, which may happen when the user leaves the team or the organization, Codacy won't be able to create comments on merge requests. + +In this situation, another user with [administrator access to the repository](../../organizations/roles-and-permissions-for-organizations.md#permissions-for-gitlab) needs to refresh the GitLab integration: + + + +1. Open the repository **Settings**, tab **Integrations**. + +1. On the GitLab integration area, click the link **Refresh connection**. + + ![Refresh GitLab integration](images/gitlab-integration-refresh.png) + +After refreshing the integration, Codacy will use the logged in GitLab user to create comments on new merge requests. + +## See also + +- [Integrating Codacy with your Git workflow](../../getting-started/integrating-codacy-with-your-git-workflow.md) diff --git a/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration-ai-comment.png b/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration-ai-comment.png new file mode 100644 index 0000000000..ecfaf84f54 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration-ai-comment.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration-pr-comment.png b/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration-pr-comment.png new file mode 100644 index 0000000000..4389a7cb5b Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration-pr-comment.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration-pr-status.png b/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration-pr-status.png new file mode 100644 index 0000000000..a559d29c55 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration-pr-status.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration-pr-summary.png b/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration-pr-summary.png new file mode 100644 index 0000000000..1620c4c633 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration-pr-summary.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration-refresh.png b/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration-refresh.png new file mode 100644 index 0000000000..6600dd36dc Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration-refresh.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration.png b/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration.png new file mode 100644 index 0000000000..5ba629b7a8 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/bitbucket-integration.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/github-integration-ai-comment.png b/docusaurus/docs/repositories-configure/integrations/images/github-integration-ai-comment.png new file mode 100644 index 0000000000..97ab3d4057 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/github-integration-ai-comment.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/github-integration-ai-reviewer.png b/docusaurus/docs/repositories-configure/integrations/images/github-integration-ai-reviewer.png new file mode 100644 index 0000000000..4d65c1628e Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/github-integration-ai-reviewer.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/github-integration-coverage-summary.png b/docusaurus/docs/repositories-configure/integrations/images/github-integration-coverage-summary.png new file mode 100644 index 0000000000..7a8d8a47a4 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/github-integration-coverage-summary.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/github-integration-pr-annotation.png b/docusaurus/docs/repositories-configure/integrations/images/github-integration-pr-annotation.png new file mode 100644 index 0000000000..def2eff610 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/github-integration-pr-annotation.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/github-integration-pr-status.png b/docusaurus/docs/repositories-configure/integrations/images/github-integration-pr-status.png new file mode 100644 index 0000000000..24d6cce495 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/github-integration-pr-status.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/github-integration-pr-summary.png b/docusaurus/docs/repositories-configure/integrations/images/github-integration-pr-summary.png new file mode 100644 index 0000000000..3e3dedeaa0 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/github-integration-pr-summary.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/github-integration-suggest-fixes.png b/docusaurus/docs/repositories-configure/integrations/images/github-integration-suggest-fixes.png new file mode 100644 index 0000000000..7f0dcb1fe6 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/github-integration-suggest-fixes.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/github-integration.png b/docusaurus/docs/repositories-configure/integrations/images/github-integration.png new file mode 100644 index 0000000000..ca31243779 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/github-integration.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-ai-comment.png b/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-ai-comment.png new file mode 100644 index 0000000000..bc89c38040 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-ai-comment.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-coverage-summary.png b/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-coverage-summary.png new file mode 100644 index 0000000000..ecc557e799 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-coverage-summary.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-pr-comment.png b/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-pr-comment.png new file mode 100644 index 0000000000..218a54aa02 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-pr-comment.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-pr-status.png b/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-pr-status.png new file mode 100644 index 0000000000..098eeba592 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-pr-status.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-pr-summary.png b/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-pr-summary.png new file mode 100644 index 0000000000..ab65c3256f Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-pr-summary.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-refresh.png b/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-refresh.png new file mode 100644 index 0000000000..5a4acc34bd Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration-refresh.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration.png b/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration.png new file mode 100644 index 0000000000..a4432d99d1 Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/gitlab-integration.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/images/post-commit-hook-create.png b/docusaurus/docs/repositories-configure/integrations/images/post-commit-hook-create.png new file mode 100644 index 0000000000..63dbe6990e Binary files /dev/null and b/docusaurus/docs/repositories-configure/integrations/images/post-commit-hook-create.png differ diff --git a/docusaurus/docs/repositories-configure/integrations/post-commit-hooks.md b/docusaurus/docs/repositories-configure/integrations/post-commit-hooks.md new file mode 100644 index 0000000000..db8e35facc --- /dev/null +++ b/docusaurus/docs/repositories-configure/integrations/post-commit-hooks.md @@ -0,0 +1,19 @@ +--- +title: Post-commit hooks +--- + + +When you add a new repository to Codacy, Codacy automatically creates a repository hook on your Git provider to check for new commits and pull requests. This post-commit hook enables Codacy to trigger an analysis to run immediately after you push code to your repository. + +:::caution +Don't change the configuration of the hooks created by Codacy on your Git provider, as it might cause service failure. +::: + +## Creating a new post-commit hook + +In case your repository’s hook is missing from your Git provider, you can create a new one: + +1. Open your repository **Settings**, tab **Integrations**. +1. On the **Post-commit hook** area, click the button **Create new hook**. + +![Create post-commit hook](images/post-commit-hook-create.png) diff --git a/docusaurus/docs/repositories-configure/languages.mdx b/docusaurus/docs/repositories-configure/languages.mdx new file mode 100644 index 0000000000..554c78e04e --- /dev/null +++ b/docusaurus/docs/repositories-configure/languages.mdx @@ -0,0 +1,50 @@ +--- +title: Configuring languages +description: Configure the languages that Codacy analyzes in your repository. You can configure Codacy to include unrecognized file extensions, or disable the analysis of specific languages. +--- +import AdminAccessControlInfo from './../_includes/AdminAccessControlInfo.mdx' +import UpdateFileExtensionsReanalyze from './../_includes/UpdateFileExtensionsReanalyze.mdx' + + + +Codacy automatically detects and analyzes languages in your repository based on a list of supported file extensions. On the repository **Settings**, tab **Languages**, you can see the list of languages that Codacy detected and will include in the next analysis. + +By default, the analysis is enabled for all languages that Codacy detects in you repository. You can adapt this configuration to your needs as follows: + +- [Configure Codacy to include unrecognized extensions](#configuring-file-extensions) +- [Disable the analysis of specific languages](#disable-language) + +:::note +Codacy applies the language settings defined in the Codacy UI as well as any settings defined using a [Codacy configuration file](codacy-configuration-file.md#languages). +::: + +## Configuring file extensions + +If your repository contains source files with extensions not supported by Codacy, associate these extensions with their respective languages to ensure Codacy analyzes them in the next analysis: + +1. Go to your repository's **Settings**, **Languages**. + +1. Add the extensions you want to be recognized for each language. + +1. Click **Save changes** to update your file extension settings. + + ![Configuring file extensions](images/file-extensions.png) + + + +:::note +Currently, the [Semgrep](https://github.com/codacy/codacy-semgrep) static analysis tool doesn't support custom file extensions. +::: + +## Disabling analysis of a language \{#disable-language\} +By default, Codacy analyzes all languages detected in your repository. To disable the analysis of a specific language, do the following: + +1. Go to your repository's **Settings**, **Languages**. + +1. Use the toggle next to the language to disable its analysis. + +1. Click **Save changes** to update your settings. + + ![Disabling language](images/disable-language.png) + + diff --git a/docusaurus/docs/repositories-configure/local-analysis/client-side-tools.md b/docusaurus/docs/repositories-configure/local-analysis/client-side-tools.md new file mode 100644 index 0000000000..0335834a37 --- /dev/null +++ b/docusaurus/docs/repositories-configure/local-analysis/client-side-tools.md @@ -0,0 +1,111 @@ +--- +title: Client-side tools +--- + + +Client-side tools enable you to run an analysis locally or as part of your build process and upload the results to Codacy. This way, Codacy presents the analysis information reported by your local tools on the Codacy dashboards, in addition to the default code quality information. + +The following diagram presents a high-level overview of the local analysis flow. + +![Client-side analysis flow](images/client-side-analysis-flow.png) + +Codacy supports client-side tools in two ways: + +- **Containerized tools:** Codacy provides Docker images to run analysis tools locally. To fetch code pattern configurations from Codacy, run the images, print out analysis results, and upload them to Codacy, use the [Codacy Analysis CLI](https://github.com/codacy/codacy-analysis-cli). + + The Codacy Analysis CLI automatically fetches the code pattern settings that you define on the Codacy UI and applies them when running the tools. + +- **Standalone tools:** Codacy provides auxiliary converters that parse the output of third-party tools and convert to a format that you then upload to Codacy. You must download, configure, and run the third-party tools yourself. + + You can't configure these tools on the Codacy UI, since you manage their configuration locally. + +:::tip +In order to receive results from local analysis, the flag "Run analysis on your build server" **must be enabled**. +::: + +![Client-side analysis flow](images/run-analysis-through-build-server.png) + + +The table below describes the supported client-side tools and includes links to specific instructions on how to run each tool. + +:::tip +**If you're using GitHub** we recommend that you use the [Codacy Analysis CLI GitHub Action](https://github.com/codacy/codacy-analysis-cli-action#integration-with-codacy-for-client-side-tools) to run the **containerized** client-side tools and upload the results to Codacy. +::: + + + + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    LanguageClient-side toolDescriptionUsage instructions
    C, C++Clang-TidyClang-tidy is a clang-based C++ “linter” tool. Its purpose is to provide an extensible framework for diagnosing and fixing typical programming errors, like style violations, interface misuse, or bugs that can be deduced via static analysis. Clang-tidy is modular and provides a convenient interface for writing new checks.Running Clang-Tidy (standalone)
    Goaligncheckaligncheck is a utility for finding unused struct fields in Go source files.Running aligncheck (containerized)
    deadcodedeadcode is a very simple utility which detects unused declarations in Go packages.Running deadcode (containerized)
    GosecGosec inspects source code for security problems by scanning the Go AST.Running Gosec (standalone)
    StaticcheckStaticcheck is a state of the art linter for the Go programming language. Using static analysis, it finds bugs and performance issues, offers simplifications, and enforces style rules.Running Staticcheck (standalone)
    Java, ScalaSpotBugsSpotBugs is a program which uses static analysis to look for bugs in Java code. Together with the Find Security Bugs plugin it provides security audits. It has support for Maven, sbt, and Gradle in Java projects.Running SpotBugs (containerized)
    Objective-CClang-TidyClang-tidy is a clang-based C++ "linter" tool. Its purpose is to provide an extensible framework for diagnosing and fixing typical programming errors, like style violations, interface misuse, or bugs that can be deduced via static analysis. Clang-tidy is modular and provides a convenient interface for writing new checks.Running Clang-Tidy (standalone)
    UnityUnity Roslyn AnalyzersUnity-specific diagnostics for CSharp Unity projects.Running Unity Roslyn Analyzers (standalone)
    + +## See also + +- [Supported languages and tools](../../getting-started/supported-languages-and-tools.md) diff --git a/docusaurus/docs/repositories-configure/local-analysis/images/client-side-analysis-flow.png b/docusaurus/docs/repositories-configure/local-analysis/images/client-side-analysis-flow.png new file mode 100644 index 0000000000..9d3f8a119b Binary files /dev/null and b/docusaurus/docs/repositories-configure/local-analysis/images/client-side-analysis-flow.png differ diff --git a/docusaurus/docs/repositories-configure/local-analysis/images/client-side-analysis-flow.svg b/docusaurus/docs/repositories-configure/local-analysis/images/client-side-analysis-flow.svg new file mode 100644 index 0000000000..4bb88acd87 --- /dev/null +++ b/docusaurus/docs/repositories-configure/local-analysis/images/client-side-analysis-flow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docusaurus/docs/repositories-configure/local-analysis/images/run-analysis-through-build-server.png b/docusaurus/docs/repositories-configure/local-analysis/images/run-analysis-through-build-server.png new file mode 100644 index 0000000000..a4687351eb Binary files /dev/null and b/docusaurus/docs/repositories-configure/local-analysis/images/run-analysis-through-build-server.png differ diff --git a/docusaurus/docs/repositories-configure/local-analysis/running-aligncheck.mdx b/docusaurus/docs/repositories-configure/local-analysis/running-aligncheck.mdx new file mode 100644 index 0000000000..f949929ee2 --- /dev/null +++ b/docusaurus/docs/repositories-configure/local-analysis/running-aligncheck.mdx @@ -0,0 +1,49 @@ +--- +title: Running aligncheck +description: Instructions on how to run aligncheck as a client-side tool on Codacy. +tool_name: aligncheck +--- + +import ClientSideToolAdvanced from '../../_includes/ClientSideToolAdvanced.mdx'; +import ClientSideToolInstructionsItems from '../../_includes/ClientSideToolInstructionsItems.mdx'; + +To run aligncheck as a [client-side tool](client-side-tools.md): + +
      + +
    1. + Download and run the{' '} + + Codacy Analysis CLI + {' '} + on the root of the repository, specifying the tool aligncheck. + + ```bash + codacy-analysis-cli analyze --tool aligncheck \ + --allow-network \ + --upload \ + --verbose + ``` + +

      + If you're using an account API token, you must also + provide the flags --provider, --username, + and --project. You can obtain the values for these + flags from the URL of your repository dashboard on Codacy: +

      + + ```bash + codacy-analysis-cli analyze --provider \ + --username \ + --project \ + --tool aligncheck \ + --allow-network \ + --upload \ + --verbose + ``` +
    2. +
    + +The Codacy Analysis CLI runs aligncheck on your repository and uploads the results to Codacy so you can use them in your workflow. + + diff --git a/docusaurus/docs/repositories-configure/local-analysis/running-dartanalyzer.mdx b/docusaurus/docs/repositories-configure/local-analysis/running-dartanalyzer.mdx new file mode 100644 index 0000000000..46405f35e7 --- /dev/null +++ b/docusaurus/docs/repositories-configure/local-analysis/running-dartanalyzer.mdx @@ -0,0 +1,80 @@ +--- +title: Running Dart Analyzer +description: Instructions on how to run Dart Analyzer as a client-side tool on Codacy. +tool_name: Dart Analyzer +--- + +import ClientSideToolInstructionsItems from '../../_includes/ClientSideToolInstructionsItems.mdx'; + +To run Dart Analyzer as a [client-side tool](client-side-tools.md): + + +
      + +
    + +## Important Concepts + +- **`.codacy/codacy.yaml`**: Configuration file to specify `dart`, or `flutter`, and `dartanalyzer` versions for the CLI. + +```yaml +runtimes: + - dart@3.7.2 +tools: + - dartanalyzer@3.7.20 +``` + +or + +```yaml +runtimes: + - flutter@3.29.3 +tools: + - dartanalyzer@3.7.20 +``` + +## Manual configuration + +```bash +codacy-cli install +codacy-cli analyze -t dartanalyzer -o dartanalyzer.sarif +codacy-cli upload -s dartanalyzer.sarif -c $COMMIT_SHA -t CODACY_PROJECT_TOKEN +``` + + **If you're using an account API token**, you must also provide the flags `-p`, `-o`, and `-r`. You can obtain the values for these flags from the URL of your repository dashboard on Codacy: + +```bash +codacy-cli install +codacy-cli analyze -t dartanalyzer -o dartanalyzer.sarif +codacy-cli analyze -t dartanalyzer -o dartanalyzer.sarif -c $COMMIT_SHA -a CODACY_API_TOKEN -p provider (gh|gl|bb) -o ORGANIZATION -r REPOSITORY +``` + +## GitHub Action + + +### Using a project token +```yml +- name: Run Codacy CLI + uses: codacy/codacy-cli-v2-action@main + with: + project-token: CODACY_PROJECT_TOKEN + tool: dartanalyzer + upload_report: true +``` + +### Using an account API token + +```yml +- name: Run Codacy CLI + uses: codacy/codacy-cli-v2-action@main + with: + api_token: CODACY_API_TOKEN + tool: dartanalyzer + upload_report: true + provider: gh + owner: codacy-acme + repository: sample-dart-project +``` + +:::caution[Tokens should be stored in the repository secrets.] +::: diff --git a/docusaurus/docs/repositories-configure/local-analysis/running-deadcode.mdx b/docusaurus/docs/repositories-configure/local-analysis/running-deadcode.mdx new file mode 100644 index 0000000000..75f9b3d32f --- /dev/null +++ b/docusaurus/docs/repositories-configure/local-analysis/running-deadcode.mdx @@ -0,0 +1,49 @@ +--- +title: Running deadcode +description: Instructions on how to run deadcode as a client-side tool on Codacy. +tool_name: deadcode +--- + +import ClientSideToolAdvanced from '../../_includes/ClientSideToolAdvanced.mdx'; +import ClientSideToolInstructionsItems from '../../_includes/ClientSideToolInstructionsItems.mdx'; + +To run deadcode as a [client-side tool](client-side-tools.md): + +
      + +
    1. + Download and run the{' '} + + Codacy Analysis CLI + {' '} + on the root of the repository, specifying the tool deadcode. + + ```bash + codacy-analysis-cli analyze --tool deadcode \ + --allow-network \ + --upload \ + --verbose + ``` + +

      + If you're using an account API token, you must also + provide the flags --provider, --username, + and --project. You can obtain the values for these + flags from the URL of your repository dashboard on Codacy: +

      + + ```bash + codacy-analysis-cli analyze --provider \ + --username \ + --project \ + --tool deadcode \ + --allow-network \ + --upload \ + --verbose + ``` +
    2. +
    + +The Codacy Analysis CLI runs deadcode on your repository and uploads the results to Codacy so you can use them in your workflow. + + diff --git a/docusaurus/docs/repositories-configure/local-analysis/running-eslint.mdx b/docusaurus/docs/repositories-configure/local-analysis/running-eslint.mdx new file mode 100644 index 0000000000..806697b395 --- /dev/null +++ b/docusaurus/docs/repositories-configure/local-analysis/running-eslint.mdx @@ -0,0 +1,70 @@ +--- +title: Running ESLint +description: Instructions on how to run ESLint as a client-side tool on Codacy. +tool_name: ESLint +--- + +import ClientSideToolInstructionsItems from '../../_includes/ClientSideToolInstructionsItems.mdx'; + +To run ESLint as a [client-side tool](client-side-tools.md): + + +
      + +
    + +## Important Concepts + +- **`.codacy/codacy.yaml`**: Configuration file to specify `node` and `eslint` versions for the CLI. + +```yaml +runtimes: + - node@22.2.0 +tools: + - eslint@9.3.0 +``` +## Manual configuration + +```bash +codacy-cli install +codacy-cli analyze -t eslint -o eslint.sarif +codacy-cli upload -s eslint.sarif -c $COMMIT_SHA -t CODACY_PROJECT_TOKEN +``` + + **If you're using an account API token**, you must also provide the flags `-p`, `-o`, and `-r`. You can obtain the values for these flags from the URL of your repository dashboard on Codacy: + +```bash +codacy-cli install +codacy-cli analyze -t eslint -o eslint.sarif +codacy-cli analyze -t eslint -o eslint.sarif -c $COMMIT_SHA -a CODACY_API_TOKEN -p provider (gh|gl|bb) -o ORGANIZATION -r REPOSITORY +``` + +## GitHub Action + + +### Using a project token +```yml +- name: Run Codacy CLI + uses: codacy/codacy-cli-v2-action@main + with: + project-token: CODACY_PROJECT_TOKEN + tool: eslint + upload_report: true +``` + +### Using an account API token + +```yml +- name: Run Codacy CLI + uses: codacy/codacy-cli-v2-action@main + with: + api_token: CODACY_API_TOKEN + tool: eslint + upload_report: true + provider: gh + owner: codacy-acme + repository: sample-javascript-project +``` + +:::caution[Tokens should be stored in the repository secrets.] +::: diff --git a/docusaurus/docs/repositories-configure/local-analysis/running-spotbugs.mdx b/docusaurus/docs/repositories-configure/local-analysis/running-spotbugs.mdx new file mode 100644 index 0000000000..103fe4f06b --- /dev/null +++ b/docusaurus/docs/repositories-configure/local-analysis/running-spotbugs.mdx @@ -0,0 +1,73 @@ +--- +title: Running SpotBugs +description: Instructions on how to run SpotBugs as a client-side tool on Codacy. +tool_name: SpotBugs +--- + +import ClientSideToolAdvanced from '../../_includes/ClientSideToolAdvanced.mdx'; +import ClientSideToolInstructionsItems from '../../_includes/ClientSideToolInstructionsItems.mdx'; + +To run SpotBugs as a [client-side tool](client-side-tools.md): + +
      + +
    1. Compile your Java or Scala repository on your build server, as you would normally do.
    2. +
    3. + Download and run the{' '} + + Codacy Analysis CLI + {' '} + on the root of the repository, specifying the tool SpotBugs. + + ```bash + codacy-analysis-cli analyze --tool spotbugs \ + --allow-network \ + --upload \ + --verbose + ``` + +

      + If you're using an account API token, you must also + provide the flags --provider, --username, + and --project. You can obtain the values for these + flags from the URL of your repository dashboard on Codacy: +

      + + ```bash + codacy-analysis-cli analyze --provider \ + --username \ + --project \ + --tool spotbugs \ + --allow-network \ + --upload \ + --verbose + ``` +
    4. +
    + +The Codacy Analysis CLI runs SpotBugs on the compiled classes of your repository and uploads the results to Codacy so you can use them in your workflow. + +## Detecting sources and compiled classes + +The Codacy Analysis CLI tries to find the compiled classes and map results to the source files automatically. If you use Maven, Gradle, or sbt the Codacy Analysis CLI also detects the default layouts automatically. + +If there is an issue with detection, you can configure these paths manually by adding a `.codacy.yml` [Codacy configuration file](../codacy-configuration-file.md) to the root of the repository: + +```yml +--- +engines: + spotbugs: + modules: + - classesDirectories: [ "core/target/classes" ] + sourceDirectories: [ "core/src/main" ] + - classesDirectories: [ "api/target/classes" ] + sourceDirectories: [ "api/src/main" ] +``` + +## Increasing the timeout to run SpotBugs + +When running SpotBugs on the compiled classes of larger projects, the [default execution timeout of 15 minutes](https://github.com/codacy/codacy-analysis-cli#commands-and-configuration) may not be enough for SpotBugs to complete the analysis. + +To increase the timeout that SpotBugs has to execute, use the option `--tool-timeout` when running the Codacy Analysis CLI. For example, use `--tool-timeout 1hour` to set the timeout to one hour. + + diff --git a/docusaurus/docs/repositories-configure/managing-branches.mdx b/docusaurus/docs/repositories-configure/managing-branches.mdx new file mode 100644 index 0000000000..7bbff146a7 --- /dev/null +++ b/docusaurus/docs/repositories-configure/managing-branches.mdx @@ -0,0 +1,58 @@ +--- +title: Managing branches +--- + +import AdminAccessControlInfo from '../_includes/AdminAccessControlInfo.mdx'; + + + +## Codacy Cloud + +Codacy automatically analyzes the default branch of your repository (typically `master` or `main` as configured on your Git provider) and loads its data first on dashboards. Codacy also supports analyzing multiple branches. + +:::note +Codacy doesn't support and skips the analysis of branches named [`HEAD`]() or matching the pattern [`refs/heads/*`](), as these are Git reserved terms. +::: + +To change the default branch of your repository or start analyzing other branches: + +1. Open your repository **Settings**, tab **Branches**. + + ![Managing branches](images/managing-branches.png) + +1. To enable analysis for a new branch, toggle the corresponding switch in the column **Analyze**. + + Enabling a new branch triggers an initial analysis of that branch and the analysis results and information for that branch will become available after the analysis is complete. + +1. To change the default branch on Codacy, click the corresponding **Make default** link that appears when you hover the column **Default**. + + Changing the default branch on Codacy doesn't change the default branch on your Git provider. Likewise, changing the default branch on your Git provider doesn't change the default branch on Codacy. + + :::note + You can only set as default branch an already enabled branch. + ::: +## Codacy Self-hosted + +Codacy automatically triggers analysis on the main branch of your repository (typically `master` or `main` as configured on your Git provider), and also supports analyzing multiple branches. + +To change the main branch of your repository or enable analysis on other branches, open your repository **Settings**, tab **Branches**. Enabling a new branch triggers an initial analysis of that branch and the analysis results and information for that branch will become available after the analysis is complete. + +This page also displays the [code quality grade](../faq/code-analysis/which-metrics-does-codacy-calculate.md) for each enabled branch. + +![Managing branches](images/managing-branches-sh.png) + +:::note +**If you're using Codacy Self-hosted** you can also configure Codacy to automatically enable all new branches that are pushed to the repository. + +![Auto-enable new branches](images/managing-branches-auto-enable.png) +::: + +Codacy manages pull request branches and inactive branches as follows: + +- **Pull request branches** + + Codacy automatically analyzes branches corresponding to new pull requests and also enables the target branches if they're disabled. + +- **Inactive branches** + + Codacy automatically disables analysis for branches that don't have any commits for more than 2 weeks, except for the main branch and pull request branches that are analyzed automatically. diff --git a/docusaurus/docs/repositories-configure/removing-your-repository.md b/docusaurus/docs/repositories-configure/removing-your-repository.md new file mode 100644 index 0000000000..80f511c398 --- /dev/null +++ b/docusaurus/docs/repositories-configure/removing-your-repository.md @@ -0,0 +1,26 @@ +--- +title: Removing your repository +--- + + +To stop Codacy from analyzing your repository, you must remove the repository from Codacy. + +Removing a repository from Codacy completely removes the configurations and all data related to your repository from Codacy. This operation doesn't make any changes on your Git provider. + +:::caution +To remove a repository from Codacy you must have [administrator permissions](../organizations/roles-and-permissions-for-organizations.md) for that repository on your Git provider. +::: + +To delete your repository from Codacy: + +1. Open your repository **Settings**, tab **General**. + +1. Click the button **Remove repository** and confirm that you want to remove the repository. + + ![Removing your repository](images/repository-remove.png) + + :::note + For added security, after you remove the repository from Codacy you can delete from your Git provider the Codacy resources related to that repository to prevent their reuse: + + - Webhooks + - SSH keys (GitLab and Bitbucket only) diff --git a/docusaurus/docs/repositories-configure/using-submodules.md b/docusaurus/docs/repositories-configure/using-submodules.md new file mode 100644 index 0000000000..082bfb014a --- /dev/null +++ b/docusaurus/docs/repositories-configure/using-submodules.md @@ -0,0 +1,73 @@ +--- +title: Using submodules +--- + + +[Git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) allow you to keep a Git repository as a subdirectory within another Git repository. Git submodules are helpful in maintaining a shared configuration file for your team, and then applying it to multiple Git repositories. + +By default, Codacy does normal Git clones that **don't include submodules** to ensure that we only clone necessary repositories. If your organization needs to use submodules, you can request Codacy to enable this feature for you. + +:::caution +**GitHub only:** Your repository and the repositories that you add as submodules must belong to the same GitHub organization. +::: + +## Prerequisites for using submodules + +1. Contact us at [support@codacy.com](mailto:support@codacy.com) asking to enable submodules on Codacy. + +1. **If you're using Codacy Self-hosted**, [update your license](../chart/maintenance/license.md). + +1. Make sure that your **Git URL** uses the correct protocol: + - **GitHub:** HTTPS protocol + - **GitLab and Bitbucket:** + - HTTPS protocol, if your submodules are **public repositories** + - SSH protocol, if your submodules are **private repositories** + +## Enabling submodules on a repository + +When using submodules, you must do the following for all your existing and new repositories: + +1. **GitLab and Bitbucket only:** [Update the public SSH key](#update-key) that Codacy uses to access your repository. + +1. If you're using submodules to share an analysis tool configuration file across your repositories, check if your tool recursively searches the subdirectories of your repositories for configuration files. + + If your tool doesn't detect the configuration files in the submodule directories, you must include a configuration file directly in the root of your repositories referencing the configuration files in the submodule directories. + +## Updating the public SSH key to access the repository {#update-key} +:::note[This section applies only to GitLab and Bitbucket] +::: + +On GitLab and Bitbucket organizations, Codacy generates a repository key when you add a repository to Codacy and uses it to clone that repository. When you're using submodules, Codacy needs to clone additional repositories it may not have access to. To overcome this, Codacy must use an SSH key of your user account to have access to the same repositories as your user. + +To update your GitLab or Bitbucket public SSH key that Codacy uses to access your repository, do the following: + +1. Open the repository **Settings**, tab **General**. In the **Danger zone** area, you have the **SSH Key** generated by Codacy to access your repository. + +1. Depending on your Git provider, do the following to update the key: + + - For GitLab, click the button **Generate New User Key**. Codacy removes the existing repository key and creates the new SSH key on your user account automatically. + + - For Bitbucket: + 1. Remove the existing Codacy key from the repository settings on your Git provider. + 1. Click the link **Add new user key**. This takes you to the Git provider page where you can manage your user account SSH keys. + 1. Add a new SSH key to your Git provider account. + + ![Generate new user key](images/using-submodules-generate-new-user-key.png) + +## Automating user keys for new repositories + +:::note[This section applies only to Codacy Self-hosted] +::: + +You can set Codacy to automatically add the new SSH key to your Git provider account for all new repositories by enabling **Add project key to the user, by default** on the **Administration** console, page **Settings**. + +:::caution +**If you're using Bitbucket Cloud** this setting must be turned off since automatically adding the user keys isn't supported. +::: + +![Add project key to the user by default](images/using-submodules-default-add-user-key.png) + +## See also + +- [Configure repository settings in Bitbucket](https://support.atlassian.com/bitbucket-cloud/docs/configure-repository-settings/) +- [Add an SSH key to your Bitbucket account](https://support.atlassian.com/bitbucket-cloud/docs/configure-ssh-and-two-step-verification/) diff --git a/docusaurus/docs/repositories/_order.ts b/docusaurus/docs/repositories/_order.ts new file mode 100644 index 0000000000..9e1b091b04 --- /dev/null +++ b/docusaurus/docs/repositories/_order.ts @@ -0,0 +1,9 @@ +export const repositoriesOrder = [ + 'repositories/repository-dashboard', + 'repositories/commits', + 'repositories/files', + 'repositories/issues', + 'repositories/coverage', + 'repositories/pull-requests', +]; + diff --git a/docusaurus/docs/repositories/commits.mdx b/docusaurus/docs/repositories/commits.mdx new file mode 100644 index 0000000000..2ece82b864 --- /dev/null +++ b/docusaurus/docs/repositories/commits.mdx @@ -0,0 +1,175 @@ +--- +title: Commits page +page_name: "commit" +file_name: "commits" +--- + +import IssueDetails from '../_includes/IssueDetails.mdx'; + + +The **Commits page** displays an overview of the commits in your repository, such as the analysis status and the code quality metrics for each commit. This allows you to monitor the evolution of the code quality per commit in your repository. + +By default, the page lists the commits on the main branch of your repository, but if you have [more than one branch enabled](../repositories-configure/managing-branches.mdx) you can use the drop-down list at the top of the page to display commits on other branches. + +![Commits page](images/commits.png) + +Click a specific commit to see detailed information about the code quality changes introduced by that commit. + +![Commit detail](images/commits-detail.png) + +The next sections describe each area of the commit detail page. + +## Commit status {#status} +![Commit status](images/commits-detail-status.png) + +This area displays the information that identifies the commit (commit message, committer, SHA hash, and last updated date), as well as: + +- A link to the commit on your Git provider +- A [link to reanalyze the commit](../faq/repositories/how-do-i-reanalyze-my-repository.md), present when the committer [is part of your organization](../organizations/managing-people.md) +- A link to [view analysis logs](#viewing-analysis-logs) + + +## Commit quality overview {#quality-overview} + +![Commit quality overview](images/commits-detail-quality-overview.png) + + +This area displays the quality gate status for the commit and the code quality metrics [with a gate set up](../repositories-configure/adjusting-quality-gates.md): + +- The quality gate status is either **Up to quality standards** or **Not up to quality standards** depending on the [quality gate rules](../repositories-configure/adjusting-quality-gates.md) for your repository. + + If there are no gate rules enabled for commits, the status is always **Up to quality standards**. + +- The variation introduced by the commit is displayed either as a **positive or negative variation**, or **no variation** (represented by `=`) for code quality metrics [with a gate set up](../repositories-configure/adjusting-quality-gates.md): + + - **Issues:** Number of new issues + - **Duplication:** Changes in the number of duplicated code blocks + - **Complexity:** Changes in code complexity + - **Coverage variation:** Changes in code coverage percentage compared with the parent commit + + Depending on the languages being analyzed or if you haven't [set up coverage for your repository](../coverage-reporter/index.md), some metrics **may not be calculated** (represented by `-`). + + :::note + Learn how Codacy calculates the code quality metrics in more detail: + + - [Which code quality metrics does Codacy calculate?](../faq/code-analysis/which-metrics-does-codacy-calculate.md) + - [Why does Codacy show unexpected coverage changes?](../faq/code-analysis/why-does-codacy-show-unexpected-coverage-changes.md) + ::: + +- The **colors** depend on the [quality gate rules](../repositories-configure/adjusting-quality-gates.md) for your repository: + + - **Green:** The metric passes the quality gate + - **Red:** The metric fails the quality gate + - **Gray:** The metric has no value + + :::note + If you change the quality gate rules you must reanalyze the commit to update the metrics and optionally re-upload the Coverage report if you also changed the coverage gate rules. + ::: + + + +## Issues tab {#issues-tabs} +The **Issues** tab displays the lists of issues that the commit creates or fixes. Use the sidebar filters to filter the list by new issues (including issues of specific severity or category), issues within a specific file, fixed issues, [potential new issues, or potential fixed issues](#possible-issues). + + + +To [ignore or manage an issue](issues.md#ignoring-and-managing-issues), click the associated options in the menu. + +![Issues tab](images/commits-tab-issues.png) + +### Potential issues {#possible-issues} +Codacy may label some issues as **potential**, which means that the code analysis detected these issues in lines of code that weren't changed by the analyzed commit. This highlights potential consequences in other parts of your codebase. + +The following are example situations that can lead to potential issues: + +- The issue was either created or fixed in the current commit, but the static code analysis tools reported the issue on a line that didn't change in the commit. For example, if you remove the line containing the declaration of a variable you may get an "undeclared variable" issue in other lines that use that variable. + +- If a file had [more than 50 issues reported by the same tool](../faq/code-analysis/does-codacy-place-limits-on-the-code-analysis.md) and you push a new commit that fixes some of these issues, Codacy will report more issues until the limit of 50 issues. These issues will be potential issues if they're outside the lines of code changed in the new commit. + +:::note +**If you're using GitHub** you may see [annotations](../repositories-configure/integrations/github-integration.md#issue-annotations) for potential issues reported under **Unchanged files with check annotations** on the **Files changed** tab of your pull requests. + +This happens when Codacy reports potential issues in files that weren't changed in your pull request. [Read more about this GitHub feature](https://developer.github.com/changes/2019-09-06-more-check-annotations-shown-in-files-changed-tab/). + +::: + +### False positive issues + +:::note +The False Positive detection is a business tier feature. If you are a Codacy Pro customer interested in upgrading to gain access to this feature, reach out to our customer success team. +::: + +If your commit includes issues detected as false positives, an **Ignore all false positives** option will appear above the first issue in the list. This allows you to bulk ignore all detected false positives at once. + +For more details on managing false positives, see [Managing system-detected false positives](issues.md#managing-system-detected-false-positives). + +![Detected false positives](images/pull-requests-false-positives.png) + +During a pull request analysis, if Codacy identifies issues that appear to be false positives, +it will automatically add a comment listing all the detected false positives. + +![Detected false positives comment](images/pull-requests-false-positives-comment.png) + +:::note +Pull Request comments for False Positives are currently supported on GitHub only. +::: + +## Duplication tab {#duplication-tabs} +The **Duplication** tab displays the lists of clones (duplicated code blocks) that the commit adds or fixes. You can click a clone to expand it and inspect the code. + +![Duplication tabs](./images/commits-tab-duplication.png) + +## Complexity tab + +The **Complexity** tab displays the complexity changes introduced by the commit. Use the sidebar filters to filter the list by high increase (4 or more), low increase (1 to 3), or improvement (less than 0). + +:::note +For more information, see [how Codacy calculates cyclomatic complexity](../faq/code-analysis/which-metrics-does-codacy-calculate.md#complexity). +::: + +![Complexity tab](./images/commits-tab-complexity.png) + +## Diff tab + +The **Diff** tab displays the code changes and issues introduced by the commit. It includes the following areas: + +- A **list of files** modified by the commit, with additional information for each file: + + - A **green plus icon** if the file is added or a **yellow dot icon** if it's modified by the commit + - The **number of new issues** introduced by the commit + +- A **diff viewer** showing for each modified file the diff coverage and a comparison of the old and new file content. + + Lines with issues are highlighted according to issue severity and include a pill label with the issue type and count. Hover over the pill label to view more details or navigate to the issues. + + +![Diff tab](images/commits-tab-diff.png) + + +## Files tab + +The **Files** tab displays the variation of the following [code quality metrics](../faq/code-analysis/which-metrics-does-codacy-calculate.md) that the commit introduces to the files in your repository, displayed either as a **positive or negative variation**, or **no variation** (represented by `=`): + +- **New issues:** Number of new issues +- **Duplication:** Changes in the number of duplicated code blocks +- **Complexity:** Changes in code complexity +- **Coverage variation:** Changes in code coverage percentage compared with the parent commit + +Depending on the languages being analyzed or if you haven't [set up coverage for your repository](../coverage-reporter/index.md), some metrics **may not be calculated** (represented by `-`). + + +![Files tab](images/commits-tab-files.png) + + + +## Viewing analysis logs + +Analysis logs can help you identify the duration of each analysis phase and any potential issues. + +To access the analysis logs, click the **View logs** link in the [commit status](#status) area. This opens a modal displaying execution times and outcomes for the tools used to analyze the commit. + +![View logs modal](images/commits-view-logs-modal.png) + +## See also + +- [Which metrics does Codacy calculate?](../faq/code-analysis/which-metrics-does-codacy-calculate.md) diff --git a/docusaurus/docs/repositories/coverage.md b/docusaurus/docs/repositories/coverage.md new file mode 100644 index 0000000000..7bc6e543cc --- /dev/null +++ b/docusaurus/docs/repositories/coverage.md @@ -0,0 +1,52 @@ +--- +title: Coverage page +--- + + +The **Coverage page** displays the current code coverage information in your [enabled repository branches](../repositories-configure/managing-branches.mdx). + +If your repository doesn't have coverage set up, you can learn more on how to [add coverage to your repository](../coverage-reporter/index.md). + +By default, the page displays the coverage information on the main branch of your repository. However, if you have [more than one branch enabled](../repositories-configure/managing-branches.mdx), you can select other branches using the drop-down list at the top of the page. + +## Code coverage metrics + +Codacy displays the following [code coverage metrics](../faq/code-analysis/which-metrics-does-codacy-calculate.md#code-coverage), if available: + +- **Coverage percentage:** Percentage of code covered +- **Covered / Coverable lines:** Number of covered and coverable lines +- **Files above coverage goal:** Number of files that contain a coverage percentage above the repository's goal +- **Files below coverage goal:** Number of files that contain a coverage percentage below the repository's goal + +If the repository doesn't have a coverage goal set, the code coverage metrics won't show values for Files above and below coverage goals. + +:::note +You can set a Coverage goal for the repository [inside repository settings, on the Goals tab](../repositories-configure/adjusting-quality-goals.md). +::: + +![Code coverage metrics](images/coverage-metrics.png) + +## Open pull requests + +The **Open pull requests** area displays the last updated pull requests and the split between the status of all open pull requests in your repository: + +- **Up to standards:** Pull requests that meet the minimum quality levels +- **Not up to standards:** Pull requests that failed to meet at least one of the [quality gate rules defined for the repository](../repositories-configure/adjusting-quality-gates.md) +- **Analyzing:** Pull requests currently being analyzed by Codacy + +Click a bar segment to display only pull requests with the corresponding status. + +To see the details of pull requests, click a pull request from the list or click **See all pull requests** to open the [list of pull requests](pull-requests.mdx) in the repository. + +![Open pull requests](images/open-pull-requests-widget.png) + +## Files with low coverage, issues and/or high complexity + +For a better understanding of how repository files are performing in terms of issues, high complexity and coverage simultaneously, Codacy displays two files tables where it's possible to check which files contain a low coverage percentage, along with a high number of issues and/or a high complexity rate. + +![Low covered files with issues and high complexity](images/low-covered-files-tables.png) + +## See also + +- [Which metrics does Codacy calculate?](../faq/code-analysis/which-metrics-does-codacy-calculate.md) +- [Using the Codacy API to obtain code quality metrics for files](../codacy-api/examples/obtaining-code-quality-metrics-for-files.md) diff --git a/docusaurus/docs/repositories/files.md b/docusaurus/docs/repositories/files.md new file mode 100644 index 0000000000..1bf2a2ef6e --- /dev/null +++ b/docusaurus/docs/repositories/files.md @@ -0,0 +1,77 @@ +--- +title: Files page +--- + + +The **Files page** displays the current code quality information for each analyzed file in your [enabled repository branches](../repositories-configure/managing-branches.mdx). + +By default, the page lists the files on the main branch of your repository. However, if you have [more than one branch enabled](../repositories-configure/managing-branches.mdx), you can select other branches using the drop-down list at the top of the page. + +Codacy displays the following [code quality metrics](../faq/code-analysis/which-metrics-does-codacy-calculate.md) for each file, if available: + +- **Grade:** Overall grade of the file +- **Issues:** Number of issues in the file +- **Complexity:** Cyclomatic complexity of the file +- **Duplication:** Number of duplicated code blocks in the file +- **Coverage:** Percentage of coverable source lines of code that are covered by tests + +Codacy displays the files in alphabetical order by default, but you can sort the list by each column to help you identify which files you should improve or refactor next. + +:::note +You can [use the Codacy API to generate reports or obtain code quality metrics](../codacy-api/examples/obtaining-code-quality-metrics-for-files.md) for the files in your repositories in a more flexible way. +::: + +![Files list](images/files.png) + +Use the search box to filter the list and find specific files: + +![Finding specific files](images/files-search.png) + +## File details + +Click a specific file to see more detailed analysis information for that file. + +The header of the file detail page displays the same code quality metrics as the Files page, as well as: + +- An **Ignore file** link to [ignore the selected file](../repositories-configure/ignoring-files.md) on future Codacy analysis +- A link to view the file on your Git provider + +![File detail](images/files-details.png) + +Depending on the available analysis information for the file, Codacy displays one or more of the following tabs: + +- **Issues:** Shows the annotated source code on the left-hand side and the matching list of issues and issue distribution by severity on the right-hand side. Each listed issue includes the same information and options available on the [Issues page](issues.md). + + ![Issues for a file](images/files-issues.png) + +- **Duplication:** Shows the annotated source code on the left-hand side and the matching list of duplicated code blocks and counts on the right-hand side. Each listed duplicate includes the number of clones and their locations. + + ![Duplicated blocks for a file](images/files-duplication.png) + +- **Coverage:** Shows which lines of code are covered by tests (green background labeled with test hit count) or not covered (red background), along with the counts of coverable and covered lines and the file status with respect to the [coverage goal](../repositories-configure/adjusting-quality-goals.md). + + ![Coverage information for a file](images/files-coverage.png) + +## Why are some files missing? {#missing-files} +The Files page only displays files in your repository that were analyzed by Codacy. This means that some of your files may be missing from the list, for example: + +- **You're viewing the incorrect branch** + + Not all files may exist in all branches of your repositories. Make sure that you're displaying files for the correct branch. + +- **The file might be ignored** + + The Files page doesn't display [ignored files](../repositories-configure/ignoring-files.md) that aren't meant to be analyzed, including the [files that Codacy ignores by default](../repositories-configure/ignoring-files.md#default-ignored-files). + +- **The file has an extension that is not on the list of supported extensions** + + Codacy supports a [list of file extensions](../repositories-configure/languages.md#configuring-file-extensions) associated with each language. Codacy doesn't analyze or display files with extensions that aren't associated with a language. + +- **The file might be too big** + + Codacy doesn't analyze or display files that are over a certain size. [Read more details](../faq/troubleshooting/why-is-my-file-over-150-kb-missing.md) for information on how to overcome this limit. + +## See also + +- [Which metrics does Codacy calculate?](../faq/code-analysis/which-metrics-does-codacy-calculate.md) +- [Using the Codacy API to obtain code quality metrics for files](../codacy-api/examples/obtaining-code-quality-metrics-for-files.md) diff --git a/docusaurus/docs/repositories/images/commits-detail-quality-overview.png b/docusaurus/docs/repositories/images/commits-detail-quality-overview.png new file mode 100644 index 0000000000..a2284478a5 Binary files /dev/null and b/docusaurus/docs/repositories/images/commits-detail-quality-overview.png differ diff --git a/docusaurus/docs/repositories/images/commits-detail-status.png b/docusaurus/docs/repositories/images/commits-detail-status.png new file mode 100644 index 0000000000..81373e1715 Binary files /dev/null and b/docusaurus/docs/repositories/images/commits-detail-status.png differ diff --git a/docusaurus/docs/repositories/images/commits-detail.png b/docusaurus/docs/repositories/images/commits-detail.png new file mode 100644 index 0000000000..326bc2872e Binary files /dev/null and b/docusaurus/docs/repositories/images/commits-detail.png differ diff --git a/docusaurus/docs/repositories/images/commits-tab-complexity.png b/docusaurus/docs/repositories/images/commits-tab-complexity.png new file mode 100644 index 0000000000..71b13eb2dc Binary files /dev/null and b/docusaurus/docs/repositories/images/commits-tab-complexity.png differ diff --git a/docusaurus/docs/repositories/images/commits-tab-coverage.png b/docusaurus/docs/repositories/images/commits-tab-coverage.png new file mode 100644 index 0000000000..3f6d913d48 Binary files /dev/null and b/docusaurus/docs/repositories/images/commits-tab-coverage.png differ diff --git a/docusaurus/docs/repositories/images/commits-tab-diff.png b/docusaurus/docs/repositories/images/commits-tab-diff.png new file mode 100644 index 0000000000..f0061b86ac Binary files /dev/null and b/docusaurus/docs/repositories/images/commits-tab-diff.png differ diff --git a/docusaurus/docs/repositories/images/commits-tab-duplication.png b/docusaurus/docs/repositories/images/commits-tab-duplication.png new file mode 100644 index 0000000000..d0496d6f53 Binary files /dev/null and b/docusaurus/docs/repositories/images/commits-tab-duplication.png differ diff --git a/docusaurus/docs/repositories/images/commits-tab-files.png b/docusaurus/docs/repositories/images/commits-tab-files.png new file mode 100644 index 0000000000..2fe963cfc4 Binary files /dev/null and b/docusaurus/docs/repositories/images/commits-tab-files.png differ diff --git a/docusaurus/docs/repositories/images/commits-tab-issues.png b/docusaurus/docs/repositories/images/commits-tab-issues.png new file mode 100644 index 0000000000..185bf9c623 Binary files /dev/null and b/docusaurus/docs/repositories/images/commits-tab-issues.png differ diff --git a/docusaurus/docs/repositories/images/commits-view-logs-modal.png b/docusaurus/docs/repositories/images/commits-view-logs-modal.png new file mode 100644 index 0000000000..9f7e89bd51 Binary files /dev/null and b/docusaurus/docs/repositories/images/commits-view-logs-modal.png differ diff --git a/docusaurus/docs/repositories/images/commits.png b/docusaurus/docs/repositories/images/commits.png new file mode 100644 index 0000000000..da6993ce76 Binary files /dev/null and b/docusaurus/docs/repositories/images/commits.png differ diff --git a/docusaurus/docs/repositories/images/coverage-metrics.png b/docusaurus/docs/repositories/images/coverage-metrics.png new file mode 100644 index 0000000000..d6f0fc2461 Binary files /dev/null and b/docusaurus/docs/repositories/images/coverage-metrics.png differ diff --git a/docusaurus/docs/repositories/images/files-coverage.png b/docusaurus/docs/repositories/images/files-coverage.png new file mode 100644 index 0000000000..a2ad176925 Binary files /dev/null and b/docusaurus/docs/repositories/images/files-coverage.png differ diff --git a/docusaurus/docs/repositories/images/files-details.png b/docusaurus/docs/repositories/images/files-details.png new file mode 100644 index 0000000000..2e7e1737df Binary files /dev/null and b/docusaurus/docs/repositories/images/files-details.png differ diff --git a/docusaurus/docs/repositories/images/files-duplication.png b/docusaurus/docs/repositories/images/files-duplication.png new file mode 100644 index 0000000000..fa237578fe Binary files /dev/null and b/docusaurus/docs/repositories/images/files-duplication.png differ diff --git a/docusaurus/docs/repositories/images/files-issues.png b/docusaurus/docs/repositories/images/files-issues.png new file mode 100644 index 0000000000..ec72e81ee2 Binary files /dev/null and b/docusaurus/docs/repositories/images/files-issues.png differ diff --git a/docusaurus/docs/repositories/images/files-search.png b/docusaurus/docs/repositories/images/files-search.png new file mode 100644 index 0000000000..532dec6f11 Binary files /dev/null and b/docusaurus/docs/repositories/images/files-search.png differ diff --git a/docusaurus/docs/repositories/images/files.png b/docusaurus/docs/repositories/images/files.png new file mode 100644 index 0000000000..9ded2c71d0 Binary files /dev/null and b/docusaurus/docs/repositories/images/files.png differ diff --git a/docusaurus/docs/repositories/images/issues-detail.png b/docusaurus/docs/repositories/images/issues-detail.png new file mode 100644 index 0000000000..96830660cf Binary files /dev/null and b/docusaurus/docs/repositories/images/issues-detail.png differ diff --git a/docusaurus/docs/repositories/images/issues-false-positive-context.png b/docusaurus/docs/repositories/images/issues-false-positive-context.png new file mode 100644 index 0000000000..55edb62216 Binary files /dev/null and b/docusaurus/docs/repositories/images/issues-false-positive-context.png differ diff --git a/docusaurus/docs/repositories/images/issues-false-positive-menu.png b/docusaurus/docs/repositories/images/issues-false-positive-menu.png new file mode 100644 index 0000000000..3710911a33 Binary files /dev/null and b/docusaurus/docs/repositories/images/issues-false-positive-menu.png differ diff --git a/docusaurus/docs/repositories/images/issues-filter.png b/docusaurus/docs/repositories/images/issues-filter.png new file mode 100644 index 0000000000..b97707d66e Binary files /dev/null and b/docusaurus/docs/repositories/images/issues-filter.png differ diff --git a/docusaurus/docs/repositories/images/issues-fix-issues-button.png b/docusaurus/docs/repositories/images/issues-fix-issues-button.png new file mode 100644 index 0000000000..39d4f1c6b9 Binary files /dev/null and b/docusaurus/docs/repositories/images/issues-fix-issues-button.png differ diff --git a/docusaurus/docs/repositories/images/issues-fix-issues-modal.png b/docusaurus/docs/repositories/images/issues-fix-issues-modal.png new file mode 100644 index 0000000000..d08ca25d49 Binary files /dev/null and b/docusaurus/docs/repositories/images/issues-fix-issues-modal.png differ diff --git a/docusaurus/docs/repositories/images/issues-menu.png b/docusaurus/docs/repositories/images/issues-menu.png new file mode 100644 index 0000000000..8fa4e4fb09 Binary files /dev/null and b/docusaurus/docs/repositories/images/issues-menu.png differ diff --git a/docusaurus/docs/repositories/images/issues-reason-menu.png b/docusaurus/docs/repositories/images/issues-reason-menu.png new file mode 100644 index 0000000000..57a9b01439 Binary files /dev/null and b/docusaurus/docs/repositories/images/issues-reason-menu.png differ diff --git a/docusaurus/docs/repositories/images/issues-reason-options.png b/docusaurus/docs/repositories/images/issues-reason-options.png new file mode 100644 index 0000000000..0a1ab26efd Binary files /dev/null and b/docusaurus/docs/repositories/images/issues-reason-options.png differ diff --git a/docusaurus/docs/repositories/images/issues-reason-result.png b/docusaurus/docs/repositories/images/issues-reason-result.png new file mode 100644 index 0000000000..4259da55af Binary files /dev/null and b/docusaurus/docs/repositories/images/issues-reason-result.png differ diff --git a/docusaurus/docs/repositories/images/issues-unignore.png b/docusaurus/docs/repositories/images/issues-unignore.png new file mode 100644 index 0000000000..d39b4e27ea Binary files /dev/null and b/docusaurus/docs/repositories/images/issues-unignore.png differ diff --git a/docusaurus/docs/repositories/images/issues.png b/docusaurus/docs/repositories/images/issues.png new file mode 100644 index 0000000000..6bc261f7e6 Binary files /dev/null and b/docusaurus/docs/repositories/images/issues.png differ diff --git a/docusaurus/docs/repositories/images/low-covered-files-tables.png b/docusaurus/docs/repositories/images/low-covered-files-tables.png new file mode 100644 index 0000000000..77b4474825 Binary files /dev/null and b/docusaurus/docs/repositories/images/low-covered-files-tables.png differ diff --git a/docusaurus/docs/repositories/images/open-pull-requests-widget.png b/docusaurus/docs/repositories/images/open-pull-requests-widget.png new file mode 100644 index 0000000000..0b95ca552c Binary files /dev/null and b/docusaurus/docs/repositories/images/open-pull-requests-widget.png differ diff --git a/docusaurus/docs/repositories/images/pull-requests-detail-quality-overview.png b/docusaurus/docs/repositories/images/pull-requests-detail-quality-overview.png new file mode 100644 index 0000000000..14e39ce4f0 Binary files /dev/null and b/docusaurus/docs/repositories/images/pull-requests-detail-quality-overview.png differ diff --git a/docusaurus/docs/repositories/images/pull-requests-detail-status.png b/docusaurus/docs/repositories/images/pull-requests-detail-status.png new file mode 100644 index 0000000000..052996c1e4 Binary files /dev/null and b/docusaurus/docs/repositories/images/pull-requests-detail-status.png differ diff --git a/docusaurus/docs/repositories/images/pull-requests-detail.png b/docusaurus/docs/repositories/images/pull-requests-detail.png new file mode 100644 index 0000000000..06316c35da Binary files /dev/null and b/docusaurus/docs/repositories/images/pull-requests-detail.png differ diff --git a/docusaurus/docs/repositories/images/pull-requests-false-positives-comment.png b/docusaurus/docs/repositories/images/pull-requests-false-positives-comment.png new file mode 100644 index 0000000000..c7db2079f2 Binary files /dev/null and b/docusaurus/docs/repositories/images/pull-requests-false-positives-comment.png differ diff --git a/docusaurus/docs/repositories/images/pull-requests-false-positives.png b/docusaurus/docs/repositories/images/pull-requests-false-positives.png new file mode 100644 index 0000000000..481f123f32 Binary files /dev/null and b/docusaurus/docs/repositories/images/pull-requests-false-positives.png differ diff --git a/docusaurus/docs/repositories/images/pull-requests-tab-commits.png b/docusaurus/docs/repositories/images/pull-requests-tab-commits.png new file mode 100644 index 0000000000..79462fa834 Binary files /dev/null and b/docusaurus/docs/repositories/images/pull-requests-tab-commits.png differ diff --git a/docusaurus/docs/repositories/images/pull-requests-tab-complexity.png b/docusaurus/docs/repositories/images/pull-requests-tab-complexity.png new file mode 100644 index 0000000000..9060d022de Binary files /dev/null and b/docusaurus/docs/repositories/images/pull-requests-tab-complexity.png differ diff --git a/docusaurus/docs/repositories/images/pull-requests-tab-coverage.png b/docusaurus/docs/repositories/images/pull-requests-tab-coverage.png new file mode 100644 index 0000000000..897ccc95df Binary files /dev/null and b/docusaurus/docs/repositories/images/pull-requests-tab-coverage.png differ diff --git a/docusaurus/docs/repositories/images/pull-requests-tab-diff.png b/docusaurus/docs/repositories/images/pull-requests-tab-diff.png new file mode 100644 index 0000000000..82975b22e9 Binary files /dev/null and b/docusaurus/docs/repositories/images/pull-requests-tab-diff.png differ diff --git a/docusaurus/docs/repositories/images/pull-requests-tab-duplication.png b/docusaurus/docs/repositories/images/pull-requests-tab-duplication.png new file mode 100644 index 0000000000..cf82b6f9e5 Binary files /dev/null and b/docusaurus/docs/repositories/images/pull-requests-tab-duplication.png differ diff --git a/docusaurus/docs/repositories/images/pull-requests-tab-files.png b/docusaurus/docs/repositories/images/pull-requests-tab-files.png new file mode 100644 index 0000000000..b7e3278056 Binary files /dev/null and b/docusaurus/docs/repositories/images/pull-requests-tab-files.png differ diff --git a/docusaurus/docs/repositories/images/pull-requests-tab-issues.png b/docusaurus/docs/repositories/images/pull-requests-tab-issues.png new file mode 100644 index 0000000000..a015bc5d17 Binary files /dev/null and b/docusaurus/docs/repositories/images/pull-requests-tab-issues.png differ diff --git a/docusaurus/docs/repositories/images/pull-requests-view-logs-modal.png b/docusaurus/docs/repositories/images/pull-requests-view-logs-modal.png new file mode 100644 index 0000000000..8f310d1f43 Binary files /dev/null and b/docusaurus/docs/repositories/images/pull-requests-view-logs-modal.png differ diff --git a/docusaurus/docs/repositories/images/pull-requests.png b/docusaurus/docs/repositories/images/pull-requests.png new file mode 100644 index 0000000000..8db7ff7863 Binary files /dev/null and b/docusaurus/docs/repositories/images/pull-requests.png differ diff --git a/docusaurus/docs/repositories/images/repository-dashboard-coverage.png b/docusaurus/docs/repositories/images/repository-dashboard-coverage.png new file mode 100644 index 0000000000..68746f4bf7 Binary files /dev/null and b/docusaurus/docs/repositories/images/repository-dashboard-coverage.png differ diff --git a/docusaurus/docs/repositories/images/repository-dashboard-issues-breakdown.png b/docusaurus/docs/repositories/images/repository-dashboard-issues-breakdown.png new file mode 100644 index 0000000000..9e86c88afd Binary files /dev/null and b/docusaurus/docs/repositories/images/repository-dashboard-issues-breakdown.png differ diff --git a/docusaurus/docs/repositories/images/repository-dashboard-open-pull-requests.png b/docusaurus/docs/repositories/images/repository-dashboard-open-pull-requests.png new file mode 100644 index 0000000000..d80d881637 Binary files /dev/null and b/docusaurus/docs/repositories/images/repository-dashboard-open-pull-requests.png differ diff --git a/docusaurus/docs/repositories/images/repository-dashboard-quality-evolution.png b/docusaurus/docs/repositories/images/repository-dashboard-quality-evolution.png new file mode 100644 index 0000000000..d3b6e95602 Binary files /dev/null and b/docusaurus/docs/repositories/images/repository-dashboard-quality-evolution.png differ diff --git a/docusaurus/docs/repositories/images/repository-dashboard.png b/docusaurus/docs/repositories/images/repository-dashboard.png new file mode 100644 index 0000000000..db09958a17 Binary files /dev/null and b/docusaurus/docs/repositories/images/repository-dashboard.png differ diff --git a/docusaurus/docs/repositories/issues.mdx b/docusaurus/docs/repositories/issues.mdx new file mode 100644 index 0000000000..bccd9354f6 --- /dev/null +++ b/docusaurus/docs/repositories/issues.mdx @@ -0,0 +1,158 @@ +--- +title: Issues page +--- +import AdminAccessControlInfo from './../_includes/AdminAccessControlInfo.mdx' +import IssueDetails from './../_includes/IssueDetails.mdx' + + +The **Issues page** lists all the issues that Codacy detected in your repository, including the severity level and category of each issue. + +By default, the page lists the issues on the main branch of your repository but if you have [more than one branch enabled](../repositories-configure/managing-branches.mdx) you can use the drop-down list at the top of the page to display issues on other branches. + +:::note +[You can use the Codacy API](../codacy-api/examples/obtaining-current-issues-in-repositories.md) to generate reports or obtain information about the current issues in your repositories in a more flexible way. +::: + +![Issues page](images/issues.png) + + + +![Issue details](images/issues-detail.png) + +## Filtering issues + +Filter the list of issues to find specific issues, such as the issues with the highest severity or security issues. + +The list of code patterns with issues is always visible on the left side of the page. Click a [code pattern](../repositories-configure/configuring-code-patterns.md) to filter the list of issues by that pattern. + +![Filtering issues](images/issues-filter.png) + +You can moreover define one or more of the following filters: + +- **Language:** Programming language of the file where the issues were detected + +- **Severity level:** Potential impact of the issues: + + - **Critical (red):** The most dangerous issues that you should prioritize fixing since they identify code that's susceptible to serious problems regarding security and compatibility + - **Medium (yellow):** You should check out these issues, as they're based on coding standards and conventions + - **Minor (blue):** The least critical issues, such as most code style issues + +- **Issue category:** One of the following types of issue: + - **Code style:** Code formatting and syntax problems, such as variable names style and enforcing the use of brackets and quotation marks + - **Error prone:** Code that may hide bugs and language keywords that should be used with caution, such as the operator `==` in JavaScript or `Option.get` in Scala + - **Code complexity:** High complexity files that should be refactored + - **Performance:** Code that can have performance problems + - **Compatibility:** Mainly for frontend code, compatibility problems across different browser versions + - **Unused code:** Unused variables and methods, code that can't be reached + - **Security:** Potential security vulnerabilities, including hard-coded passwords and keys (secret scanning), vulnerable dependencies (software composition analysis or SCA), and insecure code patterns (static application security testing or SAST). For more information, see the complete [list of security issue categories](../organizations/managing-security-and-risk.md#supported-security-categories) + - **Documentation:** Methods and classes that don't have the correct comment annotations + - **Best practice:** Code that doesn't follow the recommended coding standards and best practices + - **Comprehensibility:** Code that can be difficult to understand and modify + +- **Author:** Commit author that introduced the issue on the code + +:::note +Each code pattern has a pre-defined severity level and at the moment Codacy doesn't support customizing that information. +::: + +## Ignoring and managing issues + + + +Use the options in the menu of each issue to: + +- **Ignore the issue** and hide it from the list. You can select one of the predefined reasons and give an optional comment to provide more context. + + Codacy will no longer report the issue after the next analysis of your repository. For example, you can ignore issues that you disagree with because: + + - Your team won't tackle the issues in the immediate future + - The issue isn't relevant in the specific context of your code + - The issue is a false positive + - The issue is test code + + + See [how to restore ignored issues](#restoring-ignored-issues). + + :::tip + Organization admins can [configure who is allowed to ignore issues](../organizations/roles-and-permissions-for-organizations.md#change-analysis-configuration). + ::: + +- **Disable the code pattern** that detected the issue. + + Codacy will stop using that pattern after the next analysis of your repository, so be sure that you're no longer interested in identifying similar issues. To re-enable patterns use the [Code patterns page](../repositories-configure/configuring-code-patterns.md). + + :::note + - If you're using a [custom configuration file](../repositories-configure/configuring-code-patterns.md#using-your-own-tool-configuration-files), you must manage patterns manually on your configuration file. + - If your repository is following an [organization coding standard](../organizations/using-coding-standards.md), disabling the code pattern causes the repository to stop following the coding standard. In this case, Codacy asks for your confirmation before accepting the changes and then copies the coding standard configurations to your repository, so you can customize them. + ::: + +- **View the file** where the issue was detected. + +- **Ignore the file** where the issue was detected. + + Codacy will no longer analyze that file on your repository, so be sure that you're no longer interested in identifying any type of issues on that file. To remove an ignored file use the [Ignored Files tab](../repositories-configure/ignoring-files.md) in your repository settings. + + + + + + +
    Issue reason menuIssue reason options
    + +![Issue reason result](images/issues-reason-result.png) + +## Managing system-detected false positives + +:::note +The False Positive detection is a business tier feature. If you are a Codacy Pro customer interested in upgrading to gain access to this feature, reach out to our customer success team. +::: + +Codacy can automatically detect issues that may be false positives. If the system indicates that an issue is a **False Positive**, you have two options: + +- **Ignore false positive** will ignore the issue and hide it from the list, as with other ignored issues. +- **Not a false positive** removes the False Positive label from the issue. + +![Managing system-detected false positives](images/issues-false-positive-menu.png) + +Expanding the issue will also display an explanation as to why this issue was deemed to be a false positive: + +![False positive issue context](images/issues-false-positive-context.png) + +## Restoring ignored issues + +To see the list of ignored issues, click the **Ignored** tab. + +To restore an ignored issue, select **Unignore issue** from the options menu: + +![Restoring an ignored issue](images/issues-unignore.png) + +## Fixing issues automatically + +:::note[This section applies to GitHub repositories only] +::: + +If Codacy detects code patterns with suggested fixes, a **Fix issues** button appears above the issue list. + +![Fix issues button](images/issues-fix-issues-button.png) + +In this case, Codacy generates a patch that enables you to solve all resolvable issues. To apply this patch to the default branch, do the following: + +1. Click the button **Fix issues** to open a modal with a patch that addresses all resolvable issues. + + ![Fix issues modal](images/issues-fix-issues-modal.png) + +1. Copy the patch content to the clipboard. +1. Create a new branch from the default branch. +1. Apply the patch from the repository's root directory, for example with the `pbpaste | patch` command. + + :::note + These changes are automatically generated. Review them to make sure they're correct. + ::: + +1. Push the new branch to the repository. +1. On GitHub, create a pull request from the new branch to the default branch. + +## See also + +- [Which metrics does Codacy calculate?](../faq/code-analysis/which-metrics-does-codacy-calculate.md) +- [Using the Codacy API to obtain current issues in repositories](../codacy-api/examples/obtaining-current-issues-in-repositories.md) diff --git a/docusaurus/docs/repositories/pull-requests.mdx b/docusaurus/docs/repositories/pull-requests.mdx new file mode 100644 index 0000000000..57e8870b07 --- /dev/null +++ b/docusaurus/docs/repositories/pull-requests.mdx @@ -0,0 +1,187 @@ +--- +title: Pull Requests page +page_name: "pull request" +file_name: "pull-requests" +--- + +import IssueDetails from '../_includes/IssueDetails.mdx'; + + +The **Pull Requests page** displays an overview of the pull requests in your repository, such as the analysis status and the code quality metrics for each pull request. This allows you to monitor the code quality of the work in progress in your repository. + +By default, the page lists open pull requests, but you can click the **Closed** tab at the top of the list to display the closed pull requests. + +![Pull Requests page](images/pull-requests.png) + +Click a specific pull request to see detailed information about the code quality changes introduced by that pull request. + +![Pull request detail](images/pull-requests-detail.png) + +The next sections describe each area of the pull request detail page. + +## Pull request status {#status} +This area displays the information that identifies the pull request (name, author, head and base branches, and last updated date), as well as: + +- A link to the pull request on your Git provider +- A [link to reanalyze the latest pull request commit](../faq/repositories/how-do-i-reanalyze-my-repository.md), present when the committer [is part of your organization](../organizations/managing-people.md) +- A link to [view analysis logs](#viewing-analysis-logs) + +![Pull request status](images/pull-requests-detail-status.png) + +## Pull request quality overview {#quality-overview} + +![Pull request quality overview](images/pull-requests-detail-quality-overview.png) + + +This area displays the quality gate status for the pull request and the code quality metrics [with a gate set up](../repositories-configure/adjusting-quality-gates.md): + +- The quality gate status is either **Up to quality standards** or **Not up to quality standards** depending on the [quality gate rules](../repositories-configure/adjusting-quality-gates.md) for your repository. + + If there are no gate rules enabled for pull requests, the status is always **Up to quality standards**. + +- The variation introduced by the pull request is displayed either as a **positive or negative variation**, **no variation** (represented by `=`), **not applicable** (represented by `∅`), for code quality metrics [with a gate set up](../repositories-configure/adjusting-quality-gates.md): + + - **Issues:** Number of new issues + - **Duplication:** Changes in the number of duplicated code blocks + - **Complexity:** Changes in code complexity + - **Diff coverage:** Code coverage of the coverable lines affected by the pull request, or `∅` (not applicable) if there are no coverable lines + - **Coverage variation:** Changes in code coverage percentage compared with the target branch + + Depending on the languages being analyzed or if you haven't [set up coverage for your repository](../coverage-reporter/index.md), some metrics **may not be calculated** (represented by `-`). + + :::note + Learn how Codacy calculates the code quality metrics in more detail: + + - [Which code quality metrics does Codacy calculate?](../faq/code-analysis/which-metrics-does-codacy-calculate.md) + - [Why does Codacy show unexpected coverage changes?](../faq/code-analysis/why-does-codacy-show-unexpected-coverage-changes.md) + ::: + +- The **colors** depend on the [quality gate rules](../repositories-configure/adjusting-quality-gates.md) for your repository: + + - **Green:** The metric passes the quality gate + - **Red:** The metric fails the quality gate + - **Gray:** The metric has no value + + :::note + If you change the quality gate rules you must reanalyze the pull request to update the metrics and optionally re-upload the Coverage report if you also changed the coverage gate rules. + ::: + +## Issues tab {#issues-tabs} +The **Issues** tab displays the lists of issues that the pull request creates or fixes. Use the sidebar filters to filter the list by new issues (including issues of specific severity or category), issues within a specific file, fixed issues, [potential new issues, or potential fixed issues](#possible-issues). + + + +To [ignore or manage an issue](issues.md#ignoring-and-managing-issues), click the associated options in the menu. + +![Issues tab](images/pull-requests-tab-issues.png) + +### Potential issues {#possible-issues} +Codacy may label some issues as **potential**, which means that the code analysis detected these issues in lines of code that weren't changed by the analyzed pull request. This highlights potential consequences in other parts of your codebase. + +The following are example situations that can lead to potential issues: + +- The issue was either created or fixed in the current pull request, but the static code analysis tools reported the issue on a line that didn't change in the pull request. For example, if you remove the line containing the declaration of a variable you may get an "undeclared variable" issue in other lines that use that variable. + +- If a file had [more than 50 issues reported by the same tool](../faq/code-analysis/does-codacy-place-limits-on-the-code-analysis.md) and you push a new commit that fixes some of these issues, Codacy will report more issues until the limit of 50 issues. These issues will be potential issues if they're outside the lines of code changed in the new commit. + +:::note +**If you're using GitHub** you may see [annotations](../repositories-configure/integrations/github-integration.mdx#issue-annotations) for potential issues reported under **Unchanged files with check annotations** on the **Files changed** tab of your pull requests. + +This happens when Codacy reports potential issues in files that weren't changed in your pull request. [Read more about this GitHub feature](https://developer.github.com/changes/2019-09-06-more-check-annotations-shown-in-files-changed-tab/). + +::: + +## Duplication tab {#duplication-tabs} +The **Duplication** tab displays the lists of clones (duplicated code blocks) that the pull request adds or fixes. You can click a clone to expand it and inspect the code. + +![Duplication tabs](./images/pull-requests-tab-duplication.png) + +## Complexity tab + +The **Complexity** tab displays the complexity changes introduced by the pull request. Use the sidebar filters to filter the list by high increase (4 or more), low increase (1 to 3), or improvement (less than 0). + +:::note +For more information, see [how Codacy calculates cyclomatic complexity](../faq/code-analysis/which-metrics-does-codacy-calculate.md#complexity). +::: + +![Complexity tab](./images/pull-requests-tab-complexity.png) + +## Diff tab + +The **Diff** tab displays the code changes and issues introduced by the pull request. It includes the following areas: + +- A **list of files** modified by the pull request, with additional information for each file: + + - A **green plus icon** if the file is added or a **yellow dot icon** if it's modified by the pull request + - The **number of new issues** introduced by the pull request + +- A **diff viewer** showing for each modified file the diff coverage and a comparison of the old and new file content. + + Lines with issues are highlighted according to issue severity and include a pill label with the issue type and count. Hover over the pill label to view more details or navigate to the issues. + + +![Diff tab](images/pull-requests-tab-diff.png) + + +## Files tab + +The **Files** tab displays the variation of the following [code quality metrics](../faq/code-analysis/which-metrics-does-codacy-calculate.md) that the pull request introduces to the files in your repository, displayed either as a **positive or negative variation**, or **no variation** (represented by `=`): + +- **New issues:** Number of new issues +- **Duplication:** Changes in the number of duplicated code blocks +- **Complexity:** Changes in code complexity +- **Coverage variation:** Changes in code coverage percentage compared with the target branch + +Depending on the languages being analyzed or if you haven't [set up coverage for your repository](../coverage-reporter/index.md), some metrics **may not be calculated** (represented by `-`). + + +![Files tab](images/pull-requests-tab-files.png) + + +## Commits tab + +The **Commits** tab displays an overview of each commit included in the pull request, such as the analysis status and the number of issues introduced. + +Click a specific commit to see [detailed information about that commit](commits.mdx#status). + +![Commits tab](images/pull-requests-tab-commits.png) + +## Viewing analysis logs + +Analysis logs can help you track and understand the performance of the tools and the timing of analyses on your pull requests. + +To access these logs, click the **View logs** link in the [pull request status](#status) area. This opens a modal with two tabs: + +- The **Quality** tab displays execution times and outcomes for the tools used to analyze the latest commit of the pull request. It helps identify the duration of each analysis phase and any potential issues. +- The **Coverage** tab lists reports received for the common ancestor commit and the head commit of the pull request. It helps you spot any issues with the coverage analysis, such as missing coverage reports. + +![View logs modal](images/pull-requests-view-logs-modal.png) + +## Fixing issues automatically + +:::note[This section applies to GitHub repositories only] +::: + +If Codacy detects code patterns with suggested fixes, a **Fix issues** button appears above the issue list. + +![Fix issues button](images/issues-fix-issues-button.png) + +In this case, Codacy generates a patch that enables you to solve all resolvable issues. To apply this patch to the pull request, do the following: + +1. Click the button **Fix issues** to open a modal with a patch that addresses all resolvable issues. + + ![Fix issues modal](images/issues-fix-issues-modal.png) + +1. Copy the patch content to the clipboard. +1. Check out the relevant branch in the local repository. +1. Apply the patch from the repository's root directory, for example with the `pbpaste | patch` command. + + :::note + These changes are automatically generated. Review them to make sure they're correct. + ::: + +1. Push the changes to the repository. + +## See also + +- [Which metrics does Codacy calculate?](../faq/code-analysis/which-metrics-does-codacy-calculate.md) diff --git a/docusaurus/docs/repositories/repository-dashboard.mdx b/docusaurus/docs/repositories/repository-dashboard.mdx new file mode 100644 index 0000000000..a755e503af --- /dev/null +++ b/docusaurus/docs/repositories/repository-dashboard.mdx @@ -0,0 +1,95 @@ +--- +title: Repository Dashboard +--- +import DashboardApiReportNote from './../_includes/DashboardApiReportNote.mdx' + + +The **Repository Dashboard** provides an overview of the repository code quality and items that require your attention. + +To access your Repository Dashboard, select a repository from the [Repositories list](../organizations/managing-repositories.md) and select **Dashboard** on the left navigation sidebar. + +:::tip +You can share the URL of the Repository Dashboard for your **public repositories** to allow other people to see your repository code quality metrics, even if they aren't registered on Codacy. +::: + +![Repository Dashboard](images/repository-dashboard.png) + +The top of the Repository Dashboard displays: + +- The name and [code quality grade](../faq/code-analysis/which-metrics-does-codacy-calculate.md#grade) of the repository +- A drop-down list that selects which branch of your repository to display on the dashboard + +On the Repository Dashboard you have the following areas to help you monitor your repository: + +- [Evolution chart](#evolution-chart) +- [Issues breakdown](#issues-breakdown) +- [Coverage](#coverage) +- [Open pull requests](#open-pull-requests) + +The following sections provide a detailed overview of each dashboard area. + + + +## Evolution chart + +The **Evolution** chart displays the evolution of the repository code quality regarding [issues](../faq/code-analysis/which-metrics-does-codacy-calculate.md#issues), [complex files](../faq/code-analysis/which-metrics-does-codacy-calculate.md#complexity), [duplication](../faq/code-analysis/which-metrics-does-codacy-calculate.md#duplication), and [code coverage](../faq/code-analysis/which-metrics-does-codacy-calculate.md#code-coverage). Click on **Last 3 months**, **Last 31 days**, or **Last 7 days** to select the time interval of the historical data to display on the chart. + +Each tab displays the following information for the corresponding metric: + +- A green or red indicator depending if the metric is within the acceptable quality level or not +- The current value +- The variation of the value introduced by the last commit + +:::note +The coverage tab only displays a value if Codacy received coverage data for the most recent commit. This is because one commit can easily change the size or number of files on the repository, or even remove some files that had coverage information. +::: + +The chart also displays the **trendline** based on the past behavior and the [quality goals](../repositories-configure/adjusting-quality-goals.md) defined for the repository. + +![Evolution chart](images/repository-dashboard-quality-evolution.png) + +## Issues breakdown + +The **Issues breakdown** area displays the total number of issues found on the selected branch, as well as the distribution of issues across each code quality issue category. + +Click **See all issues** to see the full [list of issues](issues.md) found, or click a category to see the issues in that category. + +If Codacy detects code patterns that have suggested fixes, a **Fix issues** button appears below the total issue count. Click this button to open a modal with a patch that addresses all resolvable issues, and follow the [same procedure outlined on the Issues page](./issues.md#fixing-issues-automatically). + +![Issues breakdown](images/repository-dashboard-issues-breakdown.png) + +## Coverage + +The **Coverage** area displays the percentage of lines of code on the selected branch that are covered by tests versus the [coverage goal](../repositories-configure/adjusting-quality-goals.md) defined in the quality settings of the repository, as well as the number of files: + +- Without coverage +- With coverage not up to standards (based on the coverage goal) +- With coverage up to standards (based on the coverage goal) + +Click **See all files** to open the [list of files](files.md) in the repository. + +:::tip +If you don't have coverage set up for your repository yet, the Coverage area provides you with instructions on [how to add coverage for your repository](../coverage-reporter/index.md). +::: + +![Coverage](images/repository-dashboard-coverage.png) + +## Open pull requests + +The **Open pull requests** area displays the last updated pull requests and the split between the status of all open pull requests in your repository: + +- **Up to standards:** Pull requests that meet the minimum quality levels +- **Not up to standards:** Pull requests that failed to meet at least one of the [quality gate rules defined for the repository](../repositories-configure/adjusting-quality-gates.md) +- **Analyzing:** Pull requests currently being analyzed by Codacy + +Click a bar segment to display only pull requests with the corresponding status. + +To see the details of pull requests, click a pull request from the list or click **See all pull requests** to open the [list of pull requests](pull-requests.mdx) in the repository. + +![Open pull requests](images/repository-dashboard-open-pull-requests.png) + +## See also + +- [Which metrics does Codacy calculate?](../faq/code-analysis/which-metrics-does-codacy-calculate.md) +- [Using the Codacy API to obtain current issues in repositories](../codacy-api/examples/obtaining-current-issues-in-repositories.md) +- [Using the Codacy API to obtain code quality metrics for files](../codacy-api/examples/obtaining-code-quality-metrics-for-files.md) diff --git a/docusaurus/docs/special-thanks.md b/docusaurus/docs/special-thanks.md new file mode 100644 index 0000000000..8879ba638e --- /dev/null +++ b/docusaurus/docs/special-thanks.md @@ -0,0 +1,149 @@ +--- +title: Special thanks +--- + + +We would like to thank everyone who helped us greatly. The names on these lists contributed immensely to what Codacy is today. + +## Open source tools + +In addition to in-house built rules, we use open source tools for many of our static analysis. We want to express our gratitude to everyone who contributed to those tools. + + ++++++ + + + + + + + + +
    + + + + + + + +
    + +## Language support contributions + +These are the tools integrated on Codacy by our own users! Without them, we wouldn't have support for these languages. + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
    LanguageWho made it possible
    +CoffeeScript + +Ryan Delaney +
    +Elixir + +Grant McLendon +
    +PowerShell + +Aditya Patwardhan +
    +Crystal + +Vitalii Elenhaupt +
    + +## Collaborators + +For all the people who helped us so much, we want to give a big shout out and thanks! + + +++++ + + + + + + + +
    + + + + + +
    diff --git a/docusaurus/docusaurus.config.ts b/docusaurus/docusaurus.config.ts new file mode 100644 index 0000000000..15c732fe82 --- /dev/null +++ b/docusaurus/docusaurus.config.ts @@ -0,0 +1,111 @@ +import {themes as prismThemes} from 'prism-react-renderer'; +import type {Config} from '@docusaurus/types'; +import type * as Preset from '@docusaurus/preset-classic'; +// Sidebar sorting is handled via explicit `_order.ts` files in `docs/`. + +// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...) + +const config: Config = { + title: 'My Site', + tagline: 'Dinosaurs are cool', + favicon: 'img/codacy-favicon.ico', + + // Future flags, see https://docusaurus.io/docs/api/docusaurus-config#future + future: { + v4: true, // Improve compatibility with the upcoming Docusaurus v4 + }, + + // Set the production url of your site here + url: 'https://docs.codacy.com', + // Set the // pathname under which your site is served + // For GitHub pages deployment, it is often '//' + baseUrl: '/', + + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. + organizationName: 'Codacy', // Usually your GitHub org/user name. + projectName: 'docs', // Usually your repo name. + + onBrokenLinks: 'warn', + markdown: { + hooks: { + onBrokenMarkdownLinks: 'warn', + }, + }, + + // Even if you don't use internationalization, you can use this field to set + // useful metadata like html lang. For example, if your site is Chinese, you + // may want to replace "en" with "zh-Hans". + i18n: { + defaultLocale: 'en', + locales: ['en'], + }, + + presets: [ + [ + 'classic', + { + docs: { + routeBasePath: '/', + sidebarPath: './sidebars.ts', + breadcrumbs: false, + }, + theme: { + customCss: './src/css/custom.css', + }, + } satisfies Preset.Options, + ], + ], + plugins: [ + [ + require.resolve('@easyops-cn/docusaurus-search-local'), + { + docsRouteBasePath: '/', + indexBlog: false, + hashed: true, + language: ['en'], + fuzzyMatchingDistance: 0, + searchResultLimits: 8, + searchResultContextMaxLength: 40, + }, + ], + ], + themeConfig: { + // Replace with your project's social card + image: 'img/docusaurus-social-card.jpg', + colorMode: { + respectPrefersColorScheme: true, + }, + navbar: { + logo: { + alt: 'Codacy Docs', + src: 'img/codacy-logo.svg', + srcDark: 'img/codacy-logo-white.svg', + }, + items: [ + { + type: 'docSidebar', + sidebarId: 'documentationSidebar', + position: 'left', + label: 'Docs', + }, + { + type: 'docSidebar', + sidebarId: 'releaseNotesSidebar', + position: 'left', + label: 'Release notes', + }, + { + type: 'search', + position: 'right', + }, + ], + }, + prism: { + theme: prismThemes.github, + darkTheme: prismThemes.dracula, + }, + } satisfies Preset.ThemeConfig, +}; + +export default config; diff --git a/docusaurus/package-lock.json b/docusaurus/package-lock.json new file mode 100644 index 0000000000..d95d69eea6 --- /dev/null +++ b/docusaurus/package-lock.json @@ -0,0 +1,18567 @@ +{ + "name": "docusaurus", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "docusaurus", + "version": "0.0.0", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/preset-classic": "3.9.2", + "@easyops-cn/docusaurus-search-local": "^0.52.2", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "prism-react-renderer": "^2.3.0", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/tsconfig": "3.9.2", + "@docusaurus/types": "3.9.2", + "typescript": "~5.6.2" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@ai-sdk/gateway": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-2.0.21.tgz", + "integrity": "sha512-BwV7DU/lAm3Xn6iyyvZdWgVxgLu3SNXzl5y57gMvkW4nGhAOV5269IrJzQwGt03bb107sa6H6uJwWxc77zXoGA==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.19", + "@vercel/oidc": "3.0.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/provider": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-2.0.0.tgz", + "integrity": "sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==", + "license": "Apache-2.0", + "dependencies": { + "json-schema": "^0.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ai-sdk/provider-utils": { + "version": "3.0.19", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-3.0.19.tgz", + "integrity": "sha512-W41Wc9/jbUVXVwCN/7bWa4IKe8MtxO3EyA0Hfhx6grnmiYlCvpI8neSYWFE0zScXJkgA/YK3BRybzgyiXuu6JA==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "2.0.0", + "@standard-schema/spec": "^1.0.0", + "eventsource-parser": "^3.0.6" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/react": { + "version": "2.0.116", + "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-2.0.116.tgz", + "integrity": "sha512-kWe7ViRUHiQIEbslrLc8D0Zjafl/QwpBpeZ9xyryVDV4DlocbhFmTD7CeyWUWpVSLA+oJKndExcdbiK7T0zEWA==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider-utils": "3.0.19", + "ai": "5.0.114", + "swr": "^2.2.5", + "throttleit": "2.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^18 || ~19.0.1 || ~19.1.2 || ^19.2.1", + "zod": "^3.25.76 || ^4.1.8" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/@algolia/abtesting": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.12.0.tgz", + "integrity": "sha512-EfW0bfxjPs+C7ANkJDw2TATntfBKsFiy7APh+KO0pQ8A6HYa5I0NjFuCGCXWfzzzLXNZta3QUl3n5Kmm6aJo9Q==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.0", + "@algolia/requester-browser-xhr": "5.46.0", + "@algolia/requester-fetch": "5.46.0", + "@algolia/requester-node-http": "5.46.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz", + "integrity": "sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.19.2", + "@algolia/autocomplete-shared": "1.19.2" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz", + "integrity": "sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==", + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.19.2" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz", + "integrity": "sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==", + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.46.0.tgz", + "integrity": "sha512-eG5xV8rujK4ZIHXrRshvv9O13NmU/k42Rnd3w43iKH5RaQ2zWuZO6Q7XjaoJjAFVCsJWqRbXzbYyPGrbF3wGNg==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.0", + "@algolia/requester-browser-xhr": "5.46.0", + "@algolia/requester-fetch": "5.46.0", + "@algolia/requester-node-http": "5.46.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.46.0.tgz", + "integrity": "sha512-AYh2uL8IUW9eZrbbT+wZElyb7QkkeV3US2NEKY7doqMlyPWE8lErNfkVN1NvZdVcY4/SVic5GDbeDz2ft8YIiQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.0", + "@algolia/requester-browser-xhr": "5.46.0", + "@algolia/requester-fetch": "5.46.0", + "@algolia/requester-node-http": "5.46.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.46.0.tgz", + "integrity": "sha512-0emZTaYOeI9WzJi0TcNd2k3SxiN6DZfdWc2x2gHt855Jl9jPUOzfVTL6gTvCCrOlT4McvpDGg5nGO+9doEjjig==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.46.0.tgz", + "integrity": "sha512-wrBJ8fE+M0TDG1As4DDmwPn2TXajrvmvAN72Qwpuv8e2JOKNohF7+JxBoF70ZLlvP1A1EiH8DBu+JpfhBbNphQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.0", + "@algolia/requester-browser-xhr": "5.46.0", + "@algolia/requester-fetch": "5.46.0", + "@algolia/requester-node-http": "5.46.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.46.0.tgz", + "integrity": "sha512-LnkeX4p0ENt0DoftDJJDzQQJig/sFQmD1eQifl/iSjhUOGUIKC/7VTeXRcKtQB78naS8njUAwpzFvxy1CDDXDQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.0", + "@algolia/requester-browser-xhr": "5.46.0", + "@algolia/requester-fetch": "5.46.0", + "@algolia/requester-node-http": "5.46.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.46.0.tgz", + "integrity": "sha512-aF9tc4ex/smypXw+W3lBPB1jjKoaGHpZezTqofvDOI/oK1dR2sdTpFpK2Ru+7IRzYgwtRqHF3znmTlyoNs9dpA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.0", + "@algolia/requester-browser-xhr": "5.46.0", + "@algolia/requester-fetch": "5.46.0", + "@algolia/requester-node-http": "5.46.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.46.0.tgz", + "integrity": "sha512-22SHEEVNjZfFWkFks3P6HilkR3rS7a6GjnCIqR22Zz4HNxdfT0FG+RE7efTcFVfLUkTTMQQybvaUcwMrHXYa7Q==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.0", + "@algolia/requester-browser-xhr": "5.46.0", + "@algolia/requester-fetch": "5.46.0", + "@algolia/requester-node-http": "5.46.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/events": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", + "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==", + "license": "MIT" + }, + "node_modules/@algolia/ingestion": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.46.0.tgz", + "integrity": "sha512-2LT0/Z+/sFwEpZLH6V17WSZ81JX2uPjgvv5eNlxgU7rPyup4NXXfuMbtCJ+6uc4RO/LQpEJd3Li59ke3wtyAsA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.0", + "@algolia/requester-browser-xhr": "5.46.0", + "@algolia/requester-fetch": "5.46.0", + "@algolia/requester-node-http": "5.46.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.46.0.tgz", + "integrity": "sha512-uivZ9wSWZ8mz2ZU0dgDvQwvVZV8XBv6lYBXf8UtkQF3u7WeTqBPeU8ZoeTyLpf0jAXCYOvc1mAVmK0xPLuEwOQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.0", + "@algolia/requester-browser-xhr": "5.46.0", + "@algolia/requester-fetch": "5.46.0", + "@algolia/requester-node-http": "5.46.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.46.0.tgz", + "integrity": "sha512-O2BB8DuySuddgOAbhyH4jsGbL+KyDGpzJRtkDZkv091OMomqIA78emhhMhX9d/nIRrzS1wNLWB/ix7Hb2eV5rg==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.0", + "@algolia/requester-browser-xhr": "5.46.0", + "@algolia/requester-fetch": "5.46.0", + "@algolia/requester-node-http": "5.46.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.46.0.tgz", + "integrity": "sha512-eW6xyHCyYrJD0Kjk9Mz33gQ40LfWiEA51JJTVfJy3yeoRSw/NXhAL81Pljpa0qslTs6+LO/5DYPZddct6HvISQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.46.0.tgz", + "integrity": "sha512-Vn2+TukMGHy4PIxmdvP667tN/MhS7MPT8EEvEhS6JyFLPx3weLcxSa1F9gVvrfHWCUJhLWoMVJVB2PT8YfRGcw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.46.0.tgz", + "integrity": "sha512-xaqXyna5yBZ+r1SJ9my/DM6vfTqJg9FJgVydRJ0lnO+D5NhqGW/qaRG/iBGKr/d4fho34el6WakV7BqJvrl/HQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.46.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz", + "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.10" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", + "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz", + "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz", + "integrity": "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", + "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", + "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz", + "integrity": "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz", + "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", + "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", + "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz", + "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz", + "integrity": "sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", + "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz", + "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz", + "integrity": "sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz", + "integrity": "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.5.tgz", + "integrity": "sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.5", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.28.3", + "@babel/plugin-transform-classes": "^7.28.4", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", + "@babel/plugin-transform-exponentiation-operator": "^7.28.5", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.5", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.28.5", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.28.4", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.4", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.28.0", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.28.4.tgz", + "integrity": "sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==", + "license": "MIT", + "dependencies": { + "core-js-pure": "^3.43.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@csstools/cascade-layer-name-parser": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz", + "integrity": "sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/postcss-alpha-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz", + "integrity": "sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz", + "integrity": "sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-cascade-layers/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz", + "integrity": "sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-function-display-p3-linear": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz", + "integrity": "sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-function": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz", + "integrity": "sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz", + "integrity": "sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-content-alt-text": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz", + "integrity": "sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-contrast-color-function": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz", + "integrity": "sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-exponential-functions": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz", + "integrity": "sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz", + "integrity": "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gamut-mapping": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz", + "integrity": "sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gradients-interpolation-method": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz", + "integrity": "sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz", + "integrity": "sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz", + "integrity": "sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-initial": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz", + "integrity": "sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz", + "integrity": "sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-light-dark-function": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz", + "integrity": "sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-float-and-clear": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz", + "integrity": "sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overflow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz", + "integrity": "sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overscroll-behavior": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz", + "integrity": "sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-resize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz", + "integrity": "sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-viewport-units": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz", + "integrity": "sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-minmax": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz", + "integrity": "sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz", + "integrity": "sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz", + "integrity": "sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz", + "integrity": "sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz", + "integrity": "sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-position-area-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-position-area-property/-/postcss-position-area-property-1.0.0.tgz", + "integrity": "sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", + "integrity": "sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-random-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz", + "integrity": "sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-relative-color-syntax": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz", + "integrity": "sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz", + "integrity": "sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-sign-functions": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz", + "integrity": "sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz", + "integrity": "sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-system-ui-font-family": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-system-ui-font-family/-/postcss-system-ui-font-family-1.0.0.tgz", + "integrity": "sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz", + "integrity": "sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz", + "integrity": "sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz", + "integrity": "sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/utilities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz", + "integrity": "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docsearch/core": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@docsearch/core/-/core-4.3.1.tgz", + "integrity": "sha512-ktVbkePE+2h9RwqCUMbWXOoebFyDOxHqImAqfs+lC8yOU+XwEW4jgvHGJK079deTeHtdhUNj0PXHSnhJINvHzQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": ">= 16.8.0 < 20.0.0", + "react": ">= 16.8.0 < 20.0.0", + "react-dom": ">= 16.8.0 < 20.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@docsearch/css": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.3.2.tgz", + "integrity": "sha512-K3Yhay9MgkBjJJ0WEL5MxnACModX9xuNt3UlQQkDEDZJZ0+aeWKtOkxHNndMRkMBnHdYvQjxkm6mdlneOtU1IQ==", + "license": "MIT" + }, + "node_modules/@docsearch/react": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.3.2.tgz", + "integrity": "sha512-74SFD6WluwvgsOPqifYOviEEVwDxslxfhakTlra+JviaNcs7KK/rjsPj89kVEoQc9FUxRkAofaJnHIR7pb4TSQ==", + "license": "MIT", + "dependencies": { + "@ai-sdk/react": "^2.0.30", + "@algolia/autocomplete-core": "1.19.2", + "@docsearch/core": "4.3.1", + "@docsearch/css": "4.3.2", + "ai": "^5.0.30", + "algoliasearch": "^5.28.0", + "marked": "^16.3.0", + "zod": "^4.1.8" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 20.0.0", + "react": ">= 16.8.0 < 20.0.0", + "react-dom": ">= 16.8.0 < 20.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@docusaurus/babel": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.9.2.tgz", + "integrity": "sha512-GEANdi/SgER+L7Japs25YiGil/AUDnFFHaCGPBbundxoWtCkA2lmy7/tFmgED4y1htAy6Oi4wkJEQdGssnw9MA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.25.9", + "@babel/preset-env": "^7.25.9", + "@babel/preset-react": "^7.25.9", + "@babel/preset-typescript": "^7.25.9", + "@babel/runtime": "^7.25.9", + "@babel/runtime-corejs3": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "fs-extra": "^11.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/bundler": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.9.2.tgz", + "integrity": "sha512-ZOVi6GYgTcsZcUzjblpzk3wH1Fya2VNpd5jtHoCCFcJlMQ1EYXZetfAnRHLcyiFeBABaI1ltTYbOBtH/gahGVA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.9", + "@docusaurus/babel": "3.9.2", + "@docusaurus/cssnano-preset": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "babel-loader": "^9.2.1", + "clean-css": "^5.3.3", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.11.0", + "css-minimizer-webpack-plugin": "^5.0.1", + "cssnano": "^6.1.2", + "file-loader": "^6.2.0", + "html-minifier-terser": "^7.2.0", + "mini-css-extract-plugin": "^2.9.2", + "null-loader": "^4.0.1", + "postcss": "^8.5.4", + "postcss-loader": "^7.3.4", + "postcss-preset-env": "^10.2.1", + "terser-webpack-plugin": "^5.3.9", + "tslib": "^2.6.0", + "url-loader": "^4.1.1", + "webpack": "^5.95.0", + "webpackbar": "^6.0.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/faster": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/faster": { + "optional": true + } + } + }, + "node_modules/@docusaurus/core": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.9.2.tgz", + "integrity": "sha512-HbjwKeC+pHUFBfLMNzuSjqFE/58+rLVKmOU3lxQrpsxLBOGosYco/Q0GduBb0/jEMRiyEqjNT/01rRdOMWq5pw==", + "license": "MIT", + "dependencies": { + "@docusaurus/babel": "3.9.2", + "@docusaurus/bundler": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "boxen": "^6.2.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cli-table3": "^0.6.3", + "combine-promises": "^1.1.0", + "commander": "^5.1.0", + "core-js": "^3.31.1", + "detect-port": "^1.5.1", + "escape-html": "^1.0.3", + "eta": "^2.2.0", + "eval": "^0.1.8", + "execa": "5.1.1", + "fs-extra": "^11.1.1", + "html-tags": "^3.3.1", + "html-webpack-plugin": "^5.6.0", + "leven": "^3.1.0", + "lodash": "^4.17.21", + "open": "^8.4.0", + "p-map": "^4.0.0", + "prompts": "^2.4.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", + "react-loadable-ssr-addon-v5-slorber": "^1.0.1", + "react-router": "^5.3.4", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.3.4", + "semver": "^7.5.4", + "serve-handler": "^6.1.6", + "tinypool": "^1.0.2", + "tslib": "^2.6.0", + "update-notifier": "^6.0.2", + "webpack": "^5.95.0", + "webpack-bundle-analyzer": "^4.10.2", + "webpack-dev-server": "^5.2.2", + "webpack-merge": "^6.0.1" + }, + "bin": { + "docusaurus": "bin/docusaurus.mjs" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@mdx-js/react": "^3.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/cssnano-preset": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.9.2.tgz", + "integrity": "sha512-8gBKup94aGttRduABsj7bpPFTX7kbwu+xh3K9NMCF5K4bWBqTFYW+REKHF6iBVDHRJ4grZdIPbvkiHd/XNKRMQ==", + "license": "MIT", + "dependencies": { + "cssnano-preset-advanced": "^6.1.2", + "postcss": "^8.5.4", + "postcss-sort-media-queries": "^5.2.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/logger": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.9.2.tgz", + "integrity": "sha512-/SVCc57ByARzGSU60c50rMyQlBuMIJCjcsJlkphxY6B0GV4UH3tcA1994N8fFfbJ9kX3jIBe/xg3XP5qBtGDbA==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/mdx-loader": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.9.2.tgz", + "integrity": "sha512-wiYoGwF9gdd6rev62xDU8AAM8JuLI/hlwOtCzMmYcspEkzecKrP8J8X+KpYnTlACBUUtXNJpSoCwFWJhLRevzQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "@mdx-js/mdx": "^3.0.0", + "@slorber/remark-comment": "^1.0.0", + "escape-html": "^1.0.3", + "estree-util-value-to-estree": "^3.0.1", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "image-size": "^2.0.2", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "rehype-raw": "^7.0.0", + "remark-directive": "^3.0.0", + "remark-emoji": "^4.0.0", + "remark-frontmatter": "^5.0.0", + "remark-gfm": "^4.0.0", + "stringify-object": "^3.3.0", + "tslib": "^2.6.0", + "unified": "^11.0.3", + "unist-util-visit": "^5.0.0", + "url-loader": "^4.1.1", + "vfile": "^6.0.1", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/module-type-aliases": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.9.2.tgz", + "integrity": "sha512-8qVe2QA9hVLzvnxP46ysuofJUIc/yYQ82tvA/rBTrnpXtCjNSFLxEZfd5U8cYZuJIVlkPxamsIgwd5tGZXfvew==", + "license": "MIT", + "dependencies": { + "@docusaurus/types": "3.9.2", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@docusaurus/plugin-content-blog": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.9.2.tgz", + "integrity": "sha512-3I2HXy3L1QcjLJLGAoTvoBnpOwa6DPUa3Q0dMK19UTY9mhPkKQg/DYhAGTiBUKcTR0f08iw7kLPqOhIgdV3eVQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "cheerio": "1.0.0-rc.12", + "feed": "^4.2.2", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "schema-dts": "^1.1.2", + "srcset": "^4.0.0", + "tslib": "^2.6.0", + "unist-util-visit": "^5.0.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/plugin-content-docs": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.2.tgz", + "integrity": "sha512-C5wZsGuKTY8jEYsqdxhhFOe1ZDjH0uIYJ9T/jebHwkyxqnr4wW0jTkB72OMqNjsoQRcb0JN3PcSeTwFlVgzCZg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "@types/react-router-config": "^5.0.7", + "combine-promises": "^1.1.0", + "fs-extra": "^11.1.1", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "schema-dts": "^1.1.2", + "tslib": "^2.6.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-pages": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.9.2.tgz", + "integrity": "sha512-s4849w/p4noXUrGpPUF0BPqIAfdAe76BLaRGAGKZ1gTDNiGxGcpsLcwJ9OTi1/V8A+AzvsmI9pkjie2zjIQZKA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "fs-extra": "^11.1.1", + "tslib": "^2.6.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-css-cascade-layers": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.9.2.tgz", + "integrity": "sha512-w1s3+Ss+eOQbscGM4cfIFBlVg/QKxyYgj26k5AnakuHkKxH6004ZtuLe5awMBotIYF2bbGDoDhpgQ4r/kcj4rQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/plugin-debug": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.9.2.tgz", + "integrity": "sha512-j7a5hWuAFxyQAkilZwhsQ/b3T7FfHZ+0dub6j/GxKNFJp2h9qk/P1Bp7vrGASnvA9KNQBBL1ZXTe7jlh4VdPdA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "fs-extra": "^11.1.1", + "react-json-view-lite": "^2.3.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-analytics": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.9.2.tgz", + "integrity": "sha512-mAwwQJ1Us9jL/lVjXtErXto4p4/iaLlweC54yDUK1a97WfkC6Z2k5/769JsFgwOwOP+n5mUQGACXOEQ0XDuVUw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-gtag": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.9.2.tgz", + "integrity": "sha512-YJ4lDCphabBtw19ooSlc1MnxtYGpjFV9rEdzjLsUnBCeis2djUyCozZaFhCg6NGEwOn7HDDyMh0yzcdRpnuIvA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "@types/gtag.js": "^0.0.12", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-tag-manager": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.9.2.tgz", + "integrity": "sha512-LJtIrkZN/tuHD8NqDAW1Tnw0ekOwRTfobWPsdO15YxcicBo2ykKF0/D6n0vVBfd3srwr9Z6rzrIWYrMzBGrvNw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-sitemap": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.9.2.tgz", + "integrity": "sha512-WLh7ymgDXjG8oPoM/T4/zUP7KcSuFYRZAUTl8vR6VzYkfc18GBM4xLhcT+AKOwun6kBivYKUJf+vlqYJkm+RHw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "fs-extra": "^11.1.1", + "sitemap": "^7.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-svgr": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.9.2.tgz", + "integrity": "sha512-n+1DE+5b3Lnf27TgVU5jM1d4x5tUh2oW5LTsBxJX4PsAPV0JGcmI6p3yLYtEY0LRVEIJh+8RsdQmRE66wSV8mw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "@svgr/core": "8.1.0", + "@svgr/webpack": "^8.1.0", + "tslib": "^2.6.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/preset-classic": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.9.2.tgz", + "integrity": "sha512-IgyYO2Gvaigi21LuDIe+nvmN/dfGXAiMcV/murFqcpjnZc7jxFAxW+9LEjdPt61uZLxG4ByW/oUmX/DDK9t/8w==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/plugin-content-blog": "3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", + "@docusaurus/plugin-content-pages": "3.9.2", + "@docusaurus/plugin-css-cascade-layers": "3.9.2", + "@docusaurus/plugin-debug": "3.9.2", + "@docusaurus/plugin-google-analytics": "3.9.2", + "@docusaurus/plugin-google-gtag": "3.9.2", + "@docusaurus/plugin-google-tag-manager": "3.9.2", + "@docusaurus/plugin-sitemap": "3.9.2", + "@docusaurus/plugin-svgr": "3.9.2", + "@docusaurus/theme-classic": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/theme-search-algolia": "3.9.2", + "@docusaurus/types": "3.9.2" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-classic": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.9.2.tgz", + "integrity": "sha512-IGUsArG5hhekXd7RDb11v94ycpJpFdJPkLnt10fFQWOVxAtq5/D7hT6lzc2fhyQKaaCE62qVajOMKL7OiAFAIA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/plugin-content-blog": "3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", + "@docusaurus/plugin-content-pages": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/theme-translations": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "infima": "0.2.0-alpha.45", + "lodash": "^4.17.21", + "nprogress": "^0.2.0", + "postcss": "^8.5.4", + "prism-react-renderer": "^2.3.0", + "prismjs": "^1.29.0", + "react-router-dom": "^5.3.4", + "rtlcss": "^4.1.0", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-common": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.9.2.tgz", + "integrity": "sha512-6c4DAbR6n6nPbnZhY2V3tzpnKnGL+6aOsLvFL26VRqhlczli9eWG0VDUNoCQEPnGwDMhPS42UhSAnz5pThm5Ag==", + "license": "MIT", + "dependencies": { + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "clsx": "^2.0.0", + "parse-numeric-range": "^1.3.0", + "prism-react-renderer": "^2.3.0", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/plugin-content-docs": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-search-algolia": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.9.2.tgz", + "integrity": "sha512-GBDSFNwjnh5/LdkxCKQHkgO2pIMX1447BxYUBG2wBiajS21uj64a+gH/qlbQjDLxmGrbrllBrtJkUHxIsiwRnw==", + "license": "MIT", + "dependencies": { + "@docsearch/react": "^3.9.0 || ^4.1.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/theme-translations": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "algoliasearch": "^5.37.0", + "algoliasearch-helper": "^3.26.0", + "clsx": "^2.0.0", + "eta": "^2.2.0", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-translations": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.9.2.tgz", + "integrity": "sha512-vIryvpP18ON9T9rjgMRFLr2xJVDpw1rtagEGf8Ccce4CkTrvM/fRB8N2nyWYOW5u3DdjkwKw5fBa+3tbn9P4PA==", + "license": "MIT", + "dependencies": { + "fs-extra": "^11.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/tsconfig": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.9.2.tgz", + "integrity": "sha512-j6/Fp4Rlpxsc632cnRnl5HpOWeb6ZKssDj6/XzzAzVGXXfm9Eptx3rxCC+fDzySn9fHTS+CWJjPineCR1bB5WQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@docusaurus/types": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.9.2.tgz", + "integrity": "sha512-Ux1JUNswg+EfUEmajJjyhIohKceitY/yzjRUpu04WXgvVz+fbhVC0p+R0JhvEu4ytw8zIAys2hrdpQPBHRIa8Q==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/types/node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docusaurus/utils": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.9.2.tgz", + "integrity": "sha512-lBSBiRruFurFKXr5Hbsl2thmGweAPmddhF3jb99U4EMDA5L+e5Y1rAkOS07Nvrup7HUMBDrCV45meaxZnt28nQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "escape-string-regexp": "^4.0.0", + "execa": "5.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "github-slugger": "^1.5.0", + "globby": "^11.1.0", + "gray-matter": "^4.0.3", + "jiti": "^1.20.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "micromatch": "^4.0.5", + "p-queue": "^6.6.2", + "prompts": "^2.4.2", + "resolve-pathname": "^3.0.0", + "tslib": "^2.6.0", + "url-loader": "^4.1.1", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/utils-common": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.9.2.tgz", + "integrity": "sha512-I53UC1QctruA6SWLvbjbhCpAw7+X7PePoe5pYcwTOEXD/PxeP8LnECAhTHHwWCblyUX5bMi4QLRkxvyZ+IT8Aw==", + "license": "MIT", + "dependencies": { + "@docusaurus/types": "3.9.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/utils-validation": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.9.2.tgz", + "integrity": "sha512-l7yk3X5VnNmATbwijJkexdhulNsQaNDwoagiwujXoxFbWLcxHQqNQ+c/IAlzrfMMOfa/8xSBZ7KEKDesE/2J7A==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "fs-extra": "^11.2.0", + "joi": "^17.9.2", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@easyops-cn/autocomplete.js": { + "version": "0.38.1", + "resolved": "https://registry.npmjs.org/@easyops-cn/autocomplete.js/-/autocomplete.js-0.38.1.tgz", + "integrity": "sha512-drg76jS6syilOUmVNkyo1c7ZEBPcPuK+aJA7AksM5ZIIbV57DMHCywiCr+uHyv8BE5jUTU98j/H7gVrkHrWW3Q==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "immediate": "^3.2.3" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local": { + "version": "0.52.2", + "resolved": "https://registry.npmjs.org/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.52.2.tgz", + "integrity": "sha512-oEHkHe/OWHFcJxOhicS5UqohDOyPieREH+oNoImL/VcdrPzDxT2LB5Scov6WMOpOyDcSMJ6QCvjj63PEhhU8Nw==", + "license": "MIT", + "dependencies": { + "@docusaurus/plugin-content-docs": "^2 || ^3", + "@docusaurus/theme-translations": "^2 || ^3", + "@docusaurus/utils": "^2 || ^3", + "@docusaurus/utils-common": "^2 || ^3", + "@docusaurus/utils-validation": "^2 || ^3", + "@easyops-cn/autocomplete.js": "^0.38.1", + "@node-rs/jieba": "^1.6.0", + "cheerio": "^1.0.0", + "clsx": "^2.1.1", + "comlink": "^4.4.2", + "debug": "^4.2.0", + "fs-extra": "^10.0.0", + "klaw-sync": "^6.0.0", + "lunr": "^2.3.9", + "lunr-languages": "^1.4.0", + "mark.js": "^8.11.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@docusaurus/theme-common": "^2 || ^3", + "react": "^16.14.0 || ^17 || ^18 || ^19", + "react-dom": "^16.14.0 || 17 || ^18 || ^19" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local/node_modules/cheerio": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz", + "integrity": "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.1", + "htmlparser2": "^10.0.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.12.0", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=20.18.1" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local/node_modules/htmlparser2": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", + "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.1", + "entities": "^6.0.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", + "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/react": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", + "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", + "license": "MIT", + "dependencies": { + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@node-rs/jieba": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba/-/jieba-1.10.4.tgz", + "integrity": "sha512-GvDgi8MnBiyWd6tksojej8anIx18244NmIOc1ovEw8WKNUejcccLfyu8vj66LWSuoZuKILVtNsOy4jvg3aoxIw==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@node-rs/jieba-android-arm-eabi": "1.10.4", + "@node-rs/jieba-android-arm64": "1.10.4", + "@node-rs/jieba-darwin-arm64": "1.10.4", + "@node-rs/jieba-darwin-x64": "1.10.4", + "@node-rs/jieba-freebsd-x64": "1.10.4", + "@node-rs/jieba-linux-arm-gnueabihf": "1.10.4", + "@node-rs/jieba-linux-arm64-gnu": "1.10.4", + "@node-rs/jieba-linux-arm64-musl": "1.10.4", + "@node-rs/jieba-linux-x64-gnu": "1.10.4", + "@node-rs/jieba-linux-x64-musl": "1.10.4", + "@node-rs/jieba-wasm32-wasi": "1.10.4", + "@node-rs/jieba-win32-arm64-msvc": "1.10.4", + "@node-rs/jieba-win32-ia32-msvc": "1.10.4", + "@node-rs/jieba-win32-x64-msvc": "1.10.4" + } + }, + "node_modules/@node-rs/jieba-android-arm-eabi": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-android-arm-eabi/-/jieba-android-arm-eabi-1.10.4.tgz", + "integrity": "sha512-MhyvW5N3Fwcp385d0rxbCWH42kqDBatQTyP8XbnYbju2+0BO/eTeCCLYj7Agws4pwxn2LtdldXRSKavT7WdzNA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-android-arm64": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-android-arm64/-/jieba-android-arm64-1.10.4.tgz", + "integrity": "sha512-XyDwq5+rQ+Tk55A+FGi6PtJbzf974oqnpyCcCPzwU3QVXJCa2Rr4Lci+fx8oOpU4plT3GuD+chXMYLsXipMgJA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-darwin-arm64": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-darwin-arm64/-/jieba-darwin-arm64-1.10.4.tgz", + "integrity": "sha512-G++RYEJ2jo0rxF9626KUy90wp06TRUjAsvY/BrIzEOX/ingQYV/HjwQzNPRR1P1o32a6/U8RGo7zEBhfdybL6w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-darwin-x64": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-darwin-x64/-/jieba-darwin-x64-1.10.4.tgz", + "integrity": "sha512-MmDNeOb2TXIZCPyWCi2upQnZpPjAxw5ZGEj6R8kNsPXVFALHIKMa6ZZ15LCOkSTsKXVC17j2t4h+hSuyYb6qfQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-freebsd-x64": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-freebsd-x64/-/jieba-freebsd-x64-1.10.4.tgz", + "integrity": "sha512-/x7aVQ8nqUWhpXU92RZqd333cq639i/olNpd9Z5hdlyyV5/B65LLy+Je2B2bfs62PVVm5QXRpeBcZqaHelp/bg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm-gnueabihf": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm-gnueabihf/-/jieba-linux-arm-gnueabihf-1.10.4.tgz", + "integrity": "sha512-crd2M35oJBRLkoESs0O6QO3BBbhpv+tqXuKsqhIG94B1d02RVxtRIvSDwO33QurxqSdvN9IeSnVpHbDGkuXm3g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm64-gnu": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm64-gnu/-/jieba-linux-arm64-gnu-1.10.4.tgz", + "integrity": "sha512-omIzNX1psUzPcsdnUhGU6oHeOaTCuCjUgOA/v/DGkvWC1jLcnfXe4vdYbtXMh4XOCuIgS1UCcvZEc8vQLXFbXQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm64-musl": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm64-musl/-/jieba-linux-arm64-musl-1.10.4.tgz", + "integrity": "sha512-Y/tiJ1+HeS5nnmLbZOE+66LbsPOHZ/PUckAYVeLlQfpygLEpLYdlh0aPpS5uiaWMjAXYZYdFkpZHhxDmSLpwpw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-x64-gnu": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-x64-gnu/-/jieba-linux-x64-gnu-1.10.4.tgz", + "integrity": "sha512-WZO8ykRJpWGE9MHuZpy1lu3nJluPoeB+fIJJn5CWZ9YTVhNDWoCF4i/7nxz1ntulINYGQ8VVuCU9LD86Mek97g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-x64-musl": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-x64-musl/-/jieba-linux-x64-musl-1.10.4.tgz", + "integrity": "sha512-uBBD4S1rGKcgCyAk6VCKatEVQb6EDD5I40v/DxODi5CuZVCANi9m5oee/MQbAoaX7RydA2f0OSCE9/tcwXEwUg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-wasm32-wasi": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-wasm32-wasi/-/jieba-wasm32-wasi-1.10.4.tgz", + "integrity": "sha512-Y2umiKHjuIJy0uulNDz9SDYHdfq5Hmy7jY5nORO99B4pySKkcrMjpeVrmWXJLIsEKLJwcCXHxz8tjwU5/uhz0A==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@node-rs/jieba-win32-arm64-msvc": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-arm64-msvc/-/jieba-win32-arm64-msvc-1.10.4.tgz", + "integrity": "sha512-nwMtViFm4hjqhz1it/juQnxpXgqlGltCuWJ02bw70YUDMDlbyTy3grCJPpQQpueeETcALUnTxda8pZuVrLRcBA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-win32-ia32-msvc": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-ia32-msvc/-/jieba-win32-ia32-msvc-1.10.4.tgz", + "integrity": "sha512-DCAvLx7Z+W4z5oKS+7vUowAJr0uw9JBw8x1Y23Xs/xMA4Em+OOSiaF5/tCJqZUCJ8uC4QeImmgDFiBqGNwxlyA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-win32-x64-msvc": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-x64-msvc/-/jieba-win32-x64-msvc-1.10.4.tgz", + "integrity": "sha512-+sqemSfS1jjb+Tt7InNbNzrRh1Ua3vProVvC4BZRPg010/leCbGFFiQHpzcPRfpxAXZrzG5Y0YBTsPzN/I4yHQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "license": "MIT", + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "license": "ISC" + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", + "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", + "license": "MIT", + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "license": "MIT" + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "license": "BSD-3-Clause" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@slorber/remark-comment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz", + "integrity": "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==", + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.1.0", + "micromark-util-symbol": "^1.0.1" + } + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "license": "MIT", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/webpack": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", + "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.3", + "@babel/plugin-transform-react-constant-elements": "^7.21.3", + "@babel/preset-env": "^7.20.2", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.21.0", + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "^1" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.7", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", + "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/gtag.js": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz", + "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==", + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", + "license": "MIT" + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "license": "MIT" + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", + "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", + "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/prismjs": { + "version": "1.26.5", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz", + "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==", + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", + "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-config": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.11.tgz", + "integrity": "sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "^5.1.0" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "license": "MIT" + }, + "node_modules/@types/sax": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", + "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@vercel/oidc": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vercel/oidc/-/oidc-3.0.5.tgz", + "integrity": "sha512-fnYhv671l+eTTp48gB4zEsTW/YtRgRPnkI2nT7x6qw5rkI1Lq2hTmQIpHPgyThI0znLK+vX2n9XxKdXZ7BUbbw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ai": { + "version": "5.0.114", + "resolved": "https://registry.npmjs.org/ai/-/ai-5.0.114.tgz", + "integrity": "sha512-q/lxcJA6avYn/TXTaE41VX6p9lN245mDU9bIGuPpfk6WxDMvmMoUKUIS0/aXAPYN3UmkUn/r9rvq/8C98RoCWw==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/gateway": "2.0.21", + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.19", + "@opentelemetry/api": "1.9.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/algoliasearch": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.46.0.tgz", + "integrity": "sha512-7ML6fa2K93FIfifG3GMWhDEwT5qQzPTmoHKCTvhzGEwdbQ4n0yYUWZlLYT75WllTGJCJtNUI0C1ybN4BCegqvg==", + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.12.0", + "@algolia/client-abtesting": "5.46.0", + "@algolia/client-analytics": "5.46.0", + "@algolia/client-common": "5.46.0", + "@algolia/client-insights": "5.46.0", + "@algolia/client-personalization": "5.46.0", + "@algolia/client-query-suggestions": "5.46.0", + "@algolia/client-search": "5.46.0", + "@algolia/ingestion": "1.46.0", + "@algolia/monitoring": "1.46.0", + "@algolia/recommend": "5.46.0", + "@algolia/requester-browser-xhr": "5.46.0", + "@algolia/requester-fetch": "5.46.0", + "@algolia/requester-node-http": "5.46.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/algoliasearch-helper": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.26.1.tgz", + "integrity": "sha512-CAlCxm4fYBXtvc5MamDzP6Svu8rW4z9me4DCBY1rQ2UDJ0u0flWmusQ8M3nOExZsLLRcUwUPoRAPMrhzOG3erw==", + "license": "MIT", + "dependencies": { + "@algolia/events": "^4.0.1" + }, + "peerDependencies": { + "algoliasearch": ">= 3.1 < 6" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.23", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz", + "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001760", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/babel-loader": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", + "license": "MIT", + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.8", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.8.tgz", + "integrity": "sha512-Y1fOuNDowLfgKOypdc9SPABfoWXuZHBOyCS4cD52IeZBhr4Md6CLLs6atcxVrzRmQ06E7hSlm5bHHApPKR/byA==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "license": "MIT" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/boxen": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", + "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^6.2.0", + "chalk": "^4.1.2", + "cli-boxes": "^3.0.0", + "string-width": "^5.0.1", + "type-fest": "^2.5.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001760", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz", + "integrity": "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/combine-promises": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz", + "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/comlink": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.2.tgz", + "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==", + "license": "Apache-2.0" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "license": "ISC" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compressible/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "license": "BSD-2-Clause", + "dependencies": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "license": "MIT" + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "license": "MIT", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.47.0.tgz", + "integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz", + "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.47.0.tgz", + "integrity": "sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "license": "MIT", + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/css-blank-pseudo": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-7.0.1.tgz", + "integrity": "sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-blank-pseudo/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-declaration-sorter": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.0.tgz", + "integrity": "sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==", + "license": "ISC", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-has-pseudo": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.3.tgz", + "integrity": "sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-has-pseudo/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-10.0.0.tgz", + "integrity": "sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssdb": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.5.2.tgz", + "integrity": "sha512-Pmoj9RmD8RIoIzA2EQWO4D4RMeDts0tgAH0VXdlNdxjuBGI3a9wMOIcUwaPNmD4r2qtIa06gqkIf7sECl+cBCg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ], + "license": "MIT-0" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", + "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^6.1.2", + "lilconfig": "^3.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-advanced": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz", + "integrity": "sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==", + "license": "MIT", + "dependencies": { + "autoprefixer": "^10.4.19", + "browserslist": "^4.23.0", + "cssnano-preset-default": "^6.1.2", + "postcss-discard-unused": "^6.0.5", + "postcss-merge-idents": "^6.0.3", + "postcss-reduce-idents": "^6.0.3", + "postcss-zindex": "^6.0.2" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-default": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", + "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.5", + "postcss-merge-rules": "^6.1.1", + "postcss-minify-font-values": "^6.1.0", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.4", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-utils": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "license": "CC0-1.0" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", + "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", + "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" + }, + "node_modules/detect-port": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", + "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "license": "MIT", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/emoticon": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.1.0.tgz", + "integrity": "sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/encoding-sniffer/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.4", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-value-to-estree": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.5.0.tgz", + "integrity": "sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eta": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", + "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "url": "https://github.com/eta-dev/eta?sponsor=1" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eval": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", + "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", + "dependencies": { + "@types/node": "*", + "require-like": ">= 0.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "node_modules/express/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "license": "MIT", + "dependencies": { + "xml-js": "^1.6.11" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/file-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/file-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "license": "MIT", + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "license": "MIT", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "license": "MIT", + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "license": "ISC" + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", + "license": "ISC" + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regex.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/got/node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-yarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "license": "MIT" + }, + "node_modules/html-minifier-terser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", + "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "~5.3.2", + "commander": "^10.0.0", + "entities": "^4.4.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.15.1" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.5", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.5.tgz", + "integrity": "sha512-4xynFbKNNk+WlzXeQQ+6YYsH2g7mpfPszQZUi3ovKlj+pDmngQ7vRXjrrmGROabmKwyQkcgcX5hqfOwHbFmK5g==", + "license": "MIT", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/html-webpack-plugin/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin/node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "license": "MIT", + "engines": { + "node": ">=10.18" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", + "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", + "license": "MIT", + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/infima": { + "version": "0.2.0-alpha.45", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.45.tgz", + "integrity": "sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "license": "MIT", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-network-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", + "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-npm": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.1.0.tgz", + "integrity": "sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-yarn-global": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/latest-version": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "license": "MIT", + "dependencies": { + "package-json": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/launch-editor": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", + "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "license": "MIT" + }, + "node_modules/lunr-languages": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.14.0.tgz", + "integrity": "sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA==", + "license": "MPL-1.1" + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "license": "MIT" + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/marked": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", + "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdast-util-directive": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", + "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mdast-util-frontmatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "escape-string-regexp": "^5.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "4.51.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.51.1.tgz", + "integrity": "sha512-Eyt3XrufitN2ZL9c/uIRMyDwXanLI88h/L3MoWqNY747ha3dMR9dWqp8cRT5ntjZ0U1TNuq4U91ZXK0sMBjYOQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-directive": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", + "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", + "license": "MIT", + "dependencies": { + "fault": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-space/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-events-to-acorn/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-normalize-identifier/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "license": "MIT", + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz", + "integrity": "sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==", + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", + "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/node-forge": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.0.tgz", + "integrity": "sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", + "license": "MIT" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/null-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-4.0.1.tgz", + "integrity": "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/null-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/null-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/null-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/null-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "license": "MIT", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", + "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", + "license": "MIT", + "dependencies": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==", + "license": "ISC" + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "license": "(WTFPL OR MIT)" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", + "license": "MIT", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "license": "MIT", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-7.0.1.tgz", + "integrity": "sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.12.tgz", + "integrity": "sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-10.0.0.tgz", + "integrity": "sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-10.0.0.tgz", + "integrity": "sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-colormin": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-convert-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-custom-media": { + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.6.tgz", + "integrity": "sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-properties": { + "version": "14.0.6", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.6.tgz", + "integrity": "sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.5.tgz", + "integrity": "sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.1.tgz", + "integrity": "sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-comments": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-empty": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-unused": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz", + "integrity": "sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.4.tgz", + "integrity": "sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-10.0.1.tgz", + "integrity": "sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-focus-within": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-9.0.1.tgz", + "integrity": "sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-6.0.0.tgz", + "integrity": "sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-image-set-function": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-7.0.0.tgz", + "integrity": "sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-lab-function": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.12.tgz", + "integrity": "sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-loader": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", + "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.3.5", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.1.0.tgz", + "integrity": "sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-merge-idents": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz", + "integrity": "sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", + "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-rules": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", + "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", + "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", + "license": "MIT", + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-params": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", + "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nesting": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz", + "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-resolve-nested": "^3.1.0", + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", + "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-string": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-3.0.0.tgz", + "integrity": "sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-ordered-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-6.0.0.tgz", + "integrity": "sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-10.0.0.tgz", + "integrity": "sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-preset-env": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.5.0.tgz", + "integrity": "sha512-xgxFQPAPxeWmsgy8cR7GM1PGAL/smA5E9qU7K//D4vucS01es3M0fDujhDJn3kY8Ip7/vVYcecbe1yY+vBo3qQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-alpha-function": "^1.0.1", + "@csstools/postcss-cascade-layers": "^5.0.2", + "@csstools/postcss-color-function": "^4.0.12", + "@csstools/postcss-color-function-display-p3-linear": "^1.0.1", + "@csstools/postcss-color-mix-function": "^3.0.12", + "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.2", + "@csstools/postcss-content-alt-text": "^2.0.8", + "@csstools/postcss-contrast-color-function": "^2.0.12", + "@csstools/postcss-exponential-functions": "^2.0.9", + "@csstools/postcss-font-format-keywords": "^4.0.0", + "@csstools/postcss-gamut-mapping": "^2.0.11", + "@csstools/postcss-gradients-interpolation-method": "^5.0.12", + "@csstools/postcss-hwb-function": "^4.0.12", + "@csstools/postcss-ic-unit": "^4.0.4", + "@csstools/postcss-initial": "^2.0.1", + "@csstools/postcss-is-pseudo-class": "^5.0.3", + "@csstools/postcss-light-dark-function": "^2.0.11", + "@csstools/postcss-logical-float-and-clear": "^3.0.0", + "@csstools/postcss-logical-overflow": "^2.0.0", + "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", + "@csstools/postcss-logical-resize": "^3.0.0", + "@csstools/postcss-logical-viewport-units": "^3.0.4", + "@csstools/postcss-media-minmax": "^2.0.9", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5", + "@csstools/postcss-nested-calc": "^4.0.0", + "@csstools/postcss-normalize-display-values": "^4.0.0", + "@csstools/postcss-oklab-function": "^4.0.12", + "@csstools/postcss-position-area-property": "^1.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/postcss-random-function": "^2.0.1", + "@csstools/postcss-relative-color-syntax": "^3.0.12", + "@csstools/postcss-scope-pseudo-class": "^4.0.1", + "@csstools/postcss-sign-functions": "^1.1.4", + "@csstools/postcss-stepped-value-functions": "^4.0.9", + "@csstools/postcss-system-ui-font-family": "^1.0.0", + "@csstools/postcss-text-decoration-shorthand": "^4.0.3", + "@csstools/postcss-trigonometric-functions": "^4.0.9", + "@csstools/postcss-unset-value": "^4.0.0", + "autoprefixer": "^10.4.22", + "browserslist": "^4.28.0", + "css-blank-pseudo": "^7.0.1", + "css-has-pseudo": "^7.0.3", + "css-prefers-color-scheme": "^10.0.0", + "cssdb": "^8.5.2", + "postcss-attribute-case-insensitive": "^7.0.1", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^7.0.12", + "postcss-color-hex-alpha": "^10.0.0", + "postcss-color-rebeccapurple": "^10.0.0", + "postcss-custom-media": "^11.0.6", + "postcss-custom-properties": "^14.0.6", + "postcss-custom-selectors": "^8.0.5", + "postcss-dir-pseudo-class": "^9.0.1", + "postcss-double-position-gradients": "^6.0.4", + "postcss-focus-visible": "^10.0.1", + "postcss-focus-within": "^9.0.1", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^6.0.0", + "postcss-image-set-function": "^7.0.0", + "postcss-lab-function": "^7.0.12", + "postcss-logical": "^8.1.0", + "postcss-nesting": "^13.0.2", + "postcss-opacity-percentage": "^3.0.0", + "postcss-overflow-shorthand": "^6.0.0", + "postcss-page-break": "^3.0.4", + "postcss-place": "^10.0.0", + "postcss-pseudo-class-any-link": "^10.0.1", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^8.0.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-10.0.1.tgz", + "integrity": "sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reduce-idents": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz", + "integrity": "sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-8.0.1.tgz", + "integrity": "sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-selector-not/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sort-media-queries": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz", + "integrity": "sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==", + "license": "MIT", + "dependencies": { + "sort-css-media-queries": "2.2.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.4.23" + } + }, + "node_modules/postcss-svgo": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.2.0" + }, + "engines": { + "node": "^14 || ^16 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", + "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/postcss-zindex": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz", + "integrity": "sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/prism-react-renderer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.1.tgz", + "integrity": "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==", + "license": "MIT", + "dependencies": { + "@types/prismjs": "^1.26.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.0.0" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "license": "ISC" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.3.0.tgz", + "integrity": "sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==", + "license": "MIT", + "dependencies": { + "escape-goat": "^4.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.3" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, + "node_modules/react-helmet-async": { + "name": "@slorber/react-helmet-async", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@slorber/react-helmet-async/-/react-helmet-async-1.3.0.tgz", + "integrity": "sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react-json-view-lite": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-2.5.0.tgz", + "integrity": "sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-loadable": { + "name": "@docusaurus/react-loadable", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz", + "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-loadable-ssr-addon-v5-slorber": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", + "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.3" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "react-loadable": "*", + "webpack": ">=4.41.1 || 5.x" + } + }, + "node_modules/react-router": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", + "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2" + }, + "peerDependencies": { + "react": ">=15", + "react-router": ">=5" + } + }, + "node_modules/react-router-dom": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", + "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.3.4", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", + "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==", + "license": "MIT", + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "license": "MIT", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark-directive": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz", + "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "micromark-extension-directive": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-emoji": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz", + "integrity": "sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.2", + "emoticon": "^4.0.1", + "mdast-util-find-and-replace": "^3.0.1", + "node-emoji": "^2.1.0", + "unified": "^11.0.4" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/remark-frontmatter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", + "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-frontmatter": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", + "engines": { + "node": "*" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", + "license": "MIT" + }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "license": "MIT", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rtlcss": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz", + "integrity": "sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==", + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0", + "postcss": "^8.4.21", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", + "license": "BlueOak-1.0.0" + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/schema-dts": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.5.tgz", + "integrity": "sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==", + "license": "Apache-2.0" + }, + "node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/search-insights": { + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", + "license": "MIT", + "peer": true + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "license": "MIT", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-handler": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz", + "integrity": "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==", + "license": "MIT", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "mime-types": "2.1.18", + "minimatch": "3.1.2", + "path-is-inside": "1.0.2", + "path-to-regexp": "3.3.0", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/path-to-regexp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", + "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", + "license": "MIT" + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "license": "ISC" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "license": "ISC" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/sitemap": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.2.tgz", + "integrity": "sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==", + "license": "MIT", + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.6.0" + } + }, + "node_modules/sitemap/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "license": "MIT" + }, + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "license": "MIT", + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sort-css-media-queries": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz", + "integrity": "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==", + "license": "MIT", + "engines": { + "node": ">= 6.3.0" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/srcset": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", + "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/stylehacks": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", + "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "license": "MIT" + }, + "node_modules/svgo": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/swr": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.8.tgz", + "integrity": "sha512-gaCPRVoMq8WGDcWj9p4YWzCMPHzE0WNl6W8ADIx9c3JBEIdMkJGMzW+uzXvxHMltwcYACr9jP+32H8/hgwMR7w==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3", + "use-sync-external-store": "^1.6.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser": { + "version": "5.44.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.16", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", + "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/thingies": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", + "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", + "license": "MIT", + "engines": { + "node": ">=10.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/throttleit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz", + "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "license": "MIT" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "license": "MIT" + }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tree-dump": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz", + "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "license": "BSD-2-Clause", + "dependencies": { + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/url-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/url-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/url-loader/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "license": "MIT" + }, + "node_modules/utility-types": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/watchpack": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webpack": { + "version": "5.104.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.0.tgz", + "integrity": "sha512-5DeICTX8BVgNp6afSPYXAFjskIgWGlygQH58bcozPOXgo2r/6xx39Y1+cULZ3gTxUYQP88jmwLj2anu4Xaq84g==", + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.4", + "es-module-lexer": "^2.0.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.3.1", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.16", + "watchpack": "^2.4.4", + "webpack-sources": "^3.3.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/webpack-dev-middleware/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-server": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", + "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "express": "^4.21.2", + "graceful-fs": "^4.2.6", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "license": "MIT", + "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 + } + } + }, + "node_modules/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpackbar": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-6.0.1.tgz", + "integrity": "sha512-TnErZpmuKdwWBdMoexjio3KKX6ZtoKHRVvLIU0A47R0VVBDtx3ZyOJDktgYixhoJokZTYTt1Z37OkO9pnGJa9Q==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "consola": "^3.2.3", + "figures": "^3.2.0", + "markdown-table": "^2.0.0", + "pretty-time": "^1.1.0", + "std-env": "^3.7.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "webpack": "3 || 4 || 5" + } + }, + "node_modules/webpackbar/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/webpackbar/node_modules/markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "license": "MIT", + "dependencies": { + "repeat-string": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webpackbar/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpackbar/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "license": "MIT", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "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 + } + } + }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "license": "MIT", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.2.1.tgz", + "integrity": "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/docusaurus/package.json b/docusaurus/package.json new file mode 100644 index 0000000000..89a7cd7c0f --- /dev/null +++ b/docusaurus/package.json @@ -0,0 +1,48 @@ +{ + "name": "docusaurus", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids", + "typecheck": "tsc" + }, + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/preset-classic": "3.9.2", + "@easyops-cn/docusaurus-search-local": "^0.52.2", + "@mdx-js/react": "^3.0.0", + "clsx": "^2.0.0", + "prism-react-renderer": "^2.3.0", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/tsconfig": "3.9.2", + "@docusaurus/types": "3.9.2", + "typescript": "~5.6.2" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 3 chrome version", + "last 3 firefox version", + "last 5 safari version" + ] + }, + "engines": { + "node": ">=20.0" + } +} diff --git a/docusaurus/sidebars.ts b/docusaurus/sidebars.ts new file mode 100644 index 0000000000..a57cbeabeb --- /dev/null +++ b/docusaurus/sidebars.ts @@ -0,0 +1,102 @@ +import type {SidebarsConfig} from '@docusaurus/plugin-content-docs'; + +import {gettingStartedOrder} from './docs/getting-started/_order'; +import {accountOrder} from './docs/account/_order'; +import {codacyApiOrder} from './docs/codacy-api/_order'; +import {codacyGuardrailsOrder} from './docs/codacy-guardrails/_order'; +import {coverageReporterOrder} from './docs/coverage-reporter/_order'; +import {faqOrder} from './docs/faq/_order'; +import {organizationsOrder} from './docs/organizations/_order'; +import {repositoriesOrder} from './docs/repositories/_order'; +import {repositoriesConfigureOrder} from './docs/repositories-configure/_order'; +import {releaseNotesSidebarOrder} from './docs/release-notes/_order'; + +// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...) + +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + */ +const sidebars: SidebarsConfig = { + documentationSidebar: [ + {type: 'doc', id: 'index', label: 'Documentation home'}, + { + type: 'category', + label: 'Getting started', + items: gettingStartedOrder, + }, + { + type: 'category', + label: 'Codacy Guardrails (IDE Extension)', + items: codacyGuardrailsOrder, + }, + { + type: 'category', + label: 'Codacy AI', + items: [{type: 'autogenerated', dirName: 'codacy-ai'}], + }, + { + type: 'category', + label: 'Repositories on Codacy', + items: repositoriesOrder, + }, + { + type: 'category', + label: 'Configuring your repositories', + items: repositoriesConfigureOrder, + }, + { + type: 'category', + label: 'Organizations', + items: organizationsOrder, + }, + { + type: 'category', + label: 'Enterprise cloud', + items: [{type: 'autogenerated', dirName: 'enterprise-cloud'}], + }, + { + type: 'category', + label: 'Your account', + items: accountOrder, + }, + { + type: 'category', + label: 'Codacy API', + items: codacyApiOrder, + }, + { + type: 'category', + label: 'Coverage reporter', + items: coverageReporterOrder, + }, + { + type: 'category', + label: 'FAQ', + items: faqOrder, + }, + 'special-thanks', + ], + releaseNotesSidebar: releaseNotesSidebarOrder, + + // But you can create a sidebar manually + /* + tutorialSidebar: [ + 'intro', + 'hello', + { + type: 'category', + label: 'Tutorial', + items: ['tutorial-basics/create-a-document'], + }, + ], + */ +}; + +export default sidebars; diff --git a/docusaurus/src/components/ContentFooter/index.tsx b/docusaurus/src/components/ContentFooter/index.tsx new file mode 100644 index 0000000000..e4f2724c8a --- /dev/null +++ b/docusaurus/src/components/ContentFooter/index.tsx @@ -0,0 +1,15 @@ +import React from 'react'; + +import styles from './styles.module.css'; + +export default function ContentFooter(): React.JSX.Element { + return ( +
    +
    +
    + Copyright © {new Date().getFullYear()} Codacy. +
    +
    +
    + ); +} diff --git a/docusaurus/src/components/ContentFooter/styles.module.css b/docusaurus/src/components/ContentFooter/styles.module.css new file mode 100644 index 0000000000..4e78c8849f --- /dev/null +++ b/docusaurus/src/components/ContentFooter/styles.module.css @@ -0,0 +1,34 @@ +.contentFooter { + margin-top: 2.5rem; + padding-top: 1.5rem; + border-top: 1px solid var(--ifm-toc-border-color); +} + +.inner { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + gap: 1rem; +} + +.links { + display: flex; + flex-wrap: wrap; + gap: 1rem; +} + +.links a { + color: var(--ifm-font-color-base); + text-decoration: none; +} + +.links a:hover { + text-decoration: underline; +} + +.meta { + color: var(--ifm-color-emphasis-600); + font-size: 0.875rem; +} + diff --git a/docusaurus/src/css/custom.css b/docusaurus/src/css/custom.css new file mode 100644 index 0000000000..44df343e44 --- /dev/null +++ b/docusaurus/src/css/custom.css @@ -0,0 +1,59 @@ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ +@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap'); + +@import './imports/codacy-variables.css'; +@import './imports/ifm-overrides.css'; +@import './imports/search.css'; + +/* You can override the default Infima variables here. */ +:root { + --ifm-font-size-base: 87.5%; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); + --ifm-font-family-base: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + + --ifm-toc-border-color: var(--ifm-color-emphasis-200); + + /* overriding the arrow in the sidebar */ + --ifm-menu-link-sublist-icon: url("data:image/svg+xml;utf8,"); +} + +/* For readability concerns, you should choose a lighter palette in dark mode. */ +[data-theme='dark'] { + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); + --ifm-toc-border-color: var(--ifm-color-empaphis-200); +} + +.table-of-contents__left-border { + border: none; +} + +.menu__link--sublist-caret::after { + background: var(--ifm-menu-link-sublist-icon) 50% / 1rem 1rem; + background-repeat: no-repeat; +} + +.navbar { + box-shadow: none; + border-bottom: 1px solid var(--ifm-toc-border-color); +} + +.menu { + padding: 0.5rem +} + +.theme-layout-main .container { + padding: 0 4rem; + margin: 4rem auto; +} + +@media (max-width: 1200px){ + .theme-layout-main .container { + padding: 1.5rem; + margin: 0; + } +} + diff --git a/docusaurus/src/css/imports/codacy-variables.css b/docusaurus/src/css/imports/codacy-variables.css new file mode 100644 index 0000000000..18569d4f4c --- /dev/null +++ b/docusaurus/src/css/imports/codacy-variables.css @@ -0,0 +1,80 @@ +:root { + /* Blue */ + --codacy-blue-00: #050b1a; + --codacy-blue-10: #091e4e; + --codacy-blue-20: #073683; + --codacy-blue-30: #0048bd; + --codacy-blue-40: #005df0; + --codacy-blue-50: #276bfc; + --codacy-blue-60: #5784ff; + --codacy-blue-70: #8ab7ff; + --codacy-blue-80: #bdd6ff; + --codacy-blue-90: #cce0ff; + --codacy-blue-95: #e5efff; + --codacy-blue-98: #f5f9ff; + + /* Green */ + --codacy-green-00: #0a1e10; + --codacy-green-10: #12351c; + --codacy-green-20: #1a4b28; + --codacy-green-30: #26733c; + --codacy-green-40: #339950; + --codacy-green-50: #40bf64; + --codacy-green-60: #66cc83; + --codacy-green-70: #8cd9a2; + --codacy-green-80: #b3e5c1; + --codacy-green-90: #d9f2e0; + --codacy-green-95: #ecf9ef; + --codacy-green-98: #f7fcf9; + + /* Grey */ + --codacy-grey-00: #0b0e13; + --codacy-grey-05: #11151d; + --codacy-grey-10: #171d26; + --codacy-grey-15: #1d2430; + --codacy-grey-20: #344056; + --codacy-grey-30: #475776; + --codacy-grey-40: #5a6f96; + --codacy-grey-50: #7689ad; + --codacy-grey-60: #96a4c0; + --codacy-grey-70: #b6c0d3; + --codacy-grey-80: #d6dbe6; + --codacy-grey-90: #dfe4ec; + --codacy-grey-95: #eff1f5; + --codacy-grey-98: #f9fafb; + --codacy-grey-100: #ffffff; + + /* Red */ + --codacy-red-00: #290002; + --codacy-red-10: #3d0003; + --codacy-red-20: #8a000b; + --codacy-red-30: #b90415; + --codacy-red-40: #c8282a; + --codacy-red-50: #db4b48; + --codacy-red-60: #fb615a; + --codacy-red-70: #ff928a; + --codacy-red-80: #ffc2bd; + --codacy-red-90: #ffd1cc; + --codacy-red-95: #ffe8e5; + --codacy-red-98: #fff6f5; + + /* Yellow */ + --codacy-yellow-00: #291a00; + --codacy-yellow-10: #472d00; + --codacy-yellow-20: #8a5600; + --codacy-yellow-30: #bd7600; + --codacy-yellow-40: #f09700; + --codacy-yellow-50: #ffae24; + --codacy-yellow-60: #ffc157; + --codacy-yellow-70: #ffd38a; + --codacy-yellow-80: #ffe6bd; + --codacy-yellow-90: #ffeecc; + --codacy-yellow-95: #fff6e5; + --codacy-yellow-98: #fffbf5; + + /* Semantic tokens (optional) */ + --codacy-primary: var(--codacy-blue-40); + --codacy-success: var(--codacy-green-40); + --codacy-warning: var(--codacy-yellow-40); + --codacy-danger: var(--codacy-red-40); +} diff --git a/docusaurus/src/css/imports/ifm-overrides.css b/docusaurus/src/css/imports/ifm-overrides.css new file mode 100644 index 0000000000..ec44e64652 --- /dev/null +++ b/docusaurus/src/css/imports/ifm-overrides.css @@ -0,0 +1,47 @@ +:root { + /* Brand */ + --ifm-color-primary: var(--codacy-primary); + --ifm-color-primary-dark: var(--codacy-blue-30); + --ifm-color-primary-darker: var(--codacy-blue-30); + --ifm-color-primary-darkest: var(--codacy-blue-20); + --ifm-color-primary-light: var(--codacy-blue-60); + --ifm-color-primary-lighter: var(--codacy-blue-70); + --ifm-color-primary-lightest: var(--codacy-blue-80); + + /* Status */ + --ifm-color-success: var(--codacy-success); + --ifm-color-warning: var(--codacy-warning); + --ifm-color-danger: var(--codacy-danger); + + --ifm-color-white: var(--codacy-grey-100); + --ifm-color-black: var(--codacy-grey-00); + + /* Greys (Codacy scale) */ + --ifm-color-gray-0: var(--codacy-grey-100); + --ifm-color-gray-100: var(--codacy-grey-98); + --ifm-color-gray-200: var(--codacy-grey-95); + --ifm-color-gray-300: var(--codacy-grey-90); + --ifm-color-gray-400: var(--codacy-grey-80); + --ifm-color-gray-500: var(--codacy-grey-70); + --ifm-color-gray-600: var(--codacy-grey-60); + --ifm-color-gray-700: var(--codacy-grey-50); + --ifm-color-gray-800: var(--codacy-grey-40); + --ifm-color-gray-900: var(--codacy-grey-15); + --ifm-color-gray-1000: var(--codacy-grey-00); +} + +[data-theme='dark'] { + /* Brand: shift lighter for contrast on dark backgrounds */ + --ifm-color-primary: var(--codacy-blue-60); + --ifm-color-primary-dark: var(--codacy-blue-50); + --ifm-color-primary-darker: var(--codacy-blue-40); + --ifm-color-primary-darkest: var(--codacy-blue-30); + --ifm-color-primary-light: var(--codacy-blue-70); + --ifm-color-primary-lighter: var(--codacy-blue-80); + --ifm-color-primary-lightest: var(--codacy-blue-90); + + /* Status */ + --ifm-color-success: var(--codacy-green-60); + --ifm-color-warning: var(--codacy-yellow-60); + --ifm-color-danger: var(--codacy-red-60); +} diff --git a/docusaurus/src/css/imports/nav-multistep.css b/docusaurus/src/css/imports/nav-multistep.css new file mode 100644 index 0000000000..877979e9a8 --- /dev/null +++ b/docusaurus/src/css/imports/nav-multistep.css @@ -0,0 +1,32 @@ + +.nav-multistep { + margin: 1rem 0 1.25rem; + padding: 1rem; + border: 1px solid var(--ifm-color-emphasis-300); + border-radius: 0.75rem; + background: var(--ifm-background-surface-color); + } + + .nav-multistep__label { + margin: 0 0 0.75rem; + color: var(--ifm-color-emphasis-700); + font-size: 0.875rem; + } + + .nav-multistep__list { + margin: 0; + padding-left: 1.25rem; + } + + .nav-multistep__step { + margin: 0.25rem 0; + } + + .nav-multistep__step--active { + font-weight: 600; + } + + .nav-multistep__current { + color: var(--ifm-font-color-base); + } + \ No newline at end of file diff --git a/docusaurus/src/css/imports/search.css b/docusaurus/src/css/imports/search.css new file mode 100644 index 0000000000..bc9a601480 --- /dev/null +++ b/docusaurus/src/css/imports/search.css @@ -0,0 +1,27 @@ + +/* Local search (navbar) sizing: keep input and dropdown consistent */ +:root { + --codacy-search-width: min(36rem, 60vw); + --codacy-search-width-collapsed: 14rem; + --search-local-modal-width: var(--codacy-search-width); + } + + .navbar .navbar__search { + min-width: var(--codacy-search-width-collapsed); + } + + .navbar .navbar__search-input { + width: var(--codacy-search-width-collapsed); + transition: width 160ms ease; + } + + .navbar .navbar__search-input:focus { + width: var(--codacy-search-width); + } + + @media (max-width: 576px) { + :root { + --codacy-search-width: min(22rem, calc(100vw - var(--ifm-navbar-padding-horizontal) * 2)); + --codacy-search-width-collapsed: 10rem; + } + } \ No newline at end of file diff --git a/docusaurus/src/pages/index.module.css b/docusaurus/src/pages/index.module.css new file mode 100644 index 0000000000..9f71a5da77 --- /dev/null +++ b/docusaurus/src/pages/index.module.css @@ -0,0 +1,23 @@ +/** + * CSS files with the .module.css suffix will be treated as CSS modules + * and scoped locally. + */ + +.heroBanner { + padding: 4rem 0; + text-align: center; + position: relative; + overflow: hidden; +} + +@media screen and (max-width: 996px) { + .heroBanner { + padding: 2rem; + } +} + +.buttons { + display: flex; + align-items: center; + justify-content: center; +} diff --git a/docusaurus/src/pages/markdown-page.md b/docusaurus/src/pages/markdown-page.md new file mode 100644 index 0000000000..9756c5b668 --- /dev/null +++ b/docusaurus/src/pages/markdown-page.md @@ -0,0 +1,7 @@ +--- +title: Markdown page example +--- + +# Markdown page example + +You don't need React to write simple standalone pages. diff --git a/docusaurus/src/theme/DocItem/Layout/index.tsx b/docusaurus/src/theme/DocItem/Layout/index.tsx new file mode 100644 index 0000000000..c119456e52 --- /dev/null +++ b/docusaurus/src/theme/DocItem/Layout/index.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import DocItemLayout from '@theme-original/DocItem/Layout'; +import type {Props} from '@theme/DocItem/Layout'; + +import ContentFooter from '@site/src/components/ContentFooter'; + +export default function DocItemLayoutWrapper( + props: Props, +): React.JSX.Element { + return ( + <> + + + + ); +} diff --git a/docusaurus/static/.nojekyll b/docusaurus/static/.nojekyll new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docusaurus/static/img/codacy-favicon.ico b/docusaurus/static/img/codacy-favicon.ico new file mode 100644 index 0000000000..a771293ece Binary files /dev/null and b/docusaurus/static/img/codacy-favicon.ico differ diff --git a/docusaurus/static/img/codacy-favicon.svg b/docusaurus/static/img/codacy-favicon.svg new file mode 100644 index 0000000000..f46d757349 --- /dev/null +++ b/docusaurus/static/img/codacy-favicon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docusaurus/static/img/codacy-logo-white.svg b/docusaurus/static/img/codacy-logo-white.svg new file mode 100644 index 0000000000..c79ff3326f --- /dev/null +++ b/docusaurus/static/img/codacy-logo-white.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/docusaurus/static/img/codacy-logo.svg b/docusaurus/static/img/codacy-logo.svg new file mode 100644 index 0000000000..5a39ee8e54 --- /dev/null +++ b/docusaurus/static/img/codacy-logo.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docusaurus/tsconfig.json b/docusaurus/tsconfig.json new file mode 100644 index 0000000000..920d7a6523 --- /dev/null +++ b/docusaurus/tsconfig.json @@ -0,0 +1,8 @@ +{ + // This file is not used in compilation. It is here just for a nice editor experience. + "extends": "@docusaurus/tsconfig", + "compilerOptions": { + "baseUrl": "." + }, + "exclude": [".docusaurus", "build"] +}