Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(convertPathData): fix some weird behavior #1867

Merged
merged 5 commits into from
Dec 24, 2023

Conversation

KTibow
Copy link
Contributor

@KTibow KTibow commented Dec 2, 2023

  • Move converting to z to the end of the loop. This makes sure the removing useless paths thing runs before it tries to convert to z, preventing extra zs from being added.
  • Round relative data before using it to get a length estimate. This fixes some cases where absolute was used instead of relative, leading to possible size increasing and data loss.
  • Use error when checking if curves are convertible or not. This fixes some false negatives caused by 0.1 + 0.2-esque situations.

See tests for examples of expected behavior

Results

This PR is just fixing some unexpected behavior that might be already resolved with other methods. However, with Isometric Madness it subtracts 927b without multipass and 915b with.

@KTibow KTibow changed the title Fix some odd convertPathData behavior fix(convertPathData): fix some weird behavior Dec 3, 2023
@KTibow
Copy link
Contributor Author

KTibow commented Dec 17, 2023

@SethFalco would you mind leaving a review?

Copy link
Member

@SethFalco SethFalco left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@KTibow Yeah sure, sorry to keep you waiting.

All the changes make sense, but the reason I wanted more time with this is because of a test like this, which is visually different with default settings:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0.05 0.05">
    <path d="M 0 0 h 0.0005" stroke="black"/>
</svg>

@@@

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0.05 0.05">
    <path d="M0 0" stroke="black"/>
</svg>

This PR does not cause this behavior, it's always been there, even in v3.0.2. I was just thinking about it after seeing one of the tests you added. So I was thinking it could be worth improving our regression testing first, which may catch this kind of thing as well as improve our QA overall.

But we can come back to that later, we have a ticket for it already too.

However, with Isometric Madness it subtracts 927b without multipass and 915b with.

Plugins should execute all optimizations it would want upfront without the need of multipass.

In other words, a pipeline with a single plugin should not benefit from consequent executions.

However, I can see that this was already doing this prior to this PR, so this should be addressed separately. For now, happy to approve. 👍🏽

@KTibow
Copy link
Contributor Author

KTibow commented Dec 17, 2023

Plugins should execute all optimizations it would want upfront without the need of multipass.

Not as in additional, I was comparing previous SVGO to current SVGO - how much better is this normally than previous normally? how much better is this with multipass than previous with multipass?

@KTibow
Copy link
Contributor Author

KTibow commented Dec 17, 2023

This PR does not cause this behavior, it's always been there, even in v3.0.2.

Actually the default behavior wouldn't do that, it's always been checking for stroke. If this sounds good, could you a. tell me what "ticket we have already" you were referring to b. consider merging?

@SethFalco
Copy link
Member

SethFalco commented Dec 17, 2023

Actually the default behavior wouldn't do that, it's always been checking for stroke.

The default behavior does remove it, I tested manually. I didn't check which optimization within convertPathData did it, though.

ticket we have already

#1363

consider merging

It will be merged soon, similarly your other pull requests I've reviewed.

I was just saving the merge for next time I'm actively working on SVGO and reviewing pull requests. Just leaves more time for others to chime or spot potential issues.

In general, we'll get around to reviewing/merging/triaging when we can. Keep in mind that none of the maintainers work on SVGO full-time, so the pace just varies. The occasional nudge is fine, but I'd appreciate it if you'd be more patient between interactions.

@KTibow
Copy link
Contributor Author

KTibow commented Dec 17, 2023

The default behavior does remove it, I tested manually. I didn't check which optimization within convertPathData did it, though.

I just realized that maybeHasStrokeAndLinecap also required the linecap - excuse my brain fart.

In general, we'll get around to reviewing/merging/triaging when we can. Keep in mind that none of the maintainers work on SVGO full-time, so the pace just varies. The occasional nudge is fine, but I'd appreciate it if you'd be more patient between interactions.

Right, I understand that. The motivation for "could you leave a review" was "it had been more than a week since this PR was last updated and nothing acknowledged that you had seen this at all", and the motivation for "could you merge" was a bit of confusion as there were some opposing signals (while it was an approval, it wasn't merged and it was talking about some blockers), but I'll take this into account in the future.

@KTibow
Copy link
Contributor Author

KTibow commented Dec 17, 2023

On the problem with the test you sent, I think a better approach would be to change the method for calculating the default floatPrecision. eg, if this SVG was upscaled to [size], what's the minimum precision needed so that any change is less than [real error]? This lets us fix bugs with small viewboxes and get better reductions on large viewboxes.

A precision of 3 (error of 0.001) on a 48x48 SVG shows up as an error as only 0.038px if you upscaled the SVG to fill the height of my laptop. This lets us to reduce the precision to 2, while still staying under 0.5px error.
A precision of 3 (error of 0.001) on a 0.05x0.05 SVG shows up as an error of 36px on my screen (upscaled to fill the height). This means we should increase the precision to 5 to get it down to 0.36px error.

(my laptop's display is 2736 x 1824 (267 PPI), which means pixels are pretty small.)

Thoughts on this idea? Should I open a issue/PR for it?

@SethFalco
Copy link
Member

I just realized that maybeHasStrokeAndLinecap also required the linecap

No worries, we'll figure all of it out later. SVGO has done that since <=v3.0.2, so while it'd be nice to address, there's no rush compared to the myriad of other long-standing issues.

as there were some opposing signals (while it was an approval, it wasn't merged and it was talking about some blockers), but I'll take this into account in the future.

Ahh, I see! I'll be clearer in future, sorry for the confusion. And for explicitness, I'm happy to merge this.

I was just making notes on issues I noticed while reviewing this PR that and wanted to be mindful of later.

  • The issue is an actual problem, but not caused by this PR. It's likely related to how the default value for floatPrecision is calculated.
  • The second issue is just a misunderstanding, which you've cleared up already.

Just to be clear, I had no qualms with a nudge when this went unreviewed for two weeks. While it does add pressure, I can appreciate it's frustrating when you invest your time to open a PR, and it doesn't get reviewed. I was just busy, so I kept to simpler tasks the past 1–2 weeks.

My message namely applied to the follow-up requesting a merge.


I think a better approach would be to change the method for calculating the default floatPrecision

Agreed, though I'm not sure what the best approach for this is yet. We have a similar issue with other numbers in SVGO too:

I'd like if the default value was determined based on the SVG content rather than something we arbitrarily set, for example, maybe something like the highest between:

  • 3
  • The number of decimal places or significant digits in the viewBox, or if it's not present, the height and width of the closest parent.
  • The number of decimal places or significant digits in the transform applied, if applicable.

That definition probably has flaws, so it needs more thought. It's why I was thinking that maybe it was worth improving our regression tests first.

Should I open a issue/PR for it?

If you have an idea, contributions are welcome!

@SethFalco
Copy link
Member

The code looks good, and I ran regression tests with the larger dataset locally with no impact on mismatches. Happy to merge, and thanks for being patient!

@SethFalco SethFalco merged commit a7859eb into svg:main Dec 24, 2023
10 checks passed
gfellerph referenced this pull request in swisspost/design-system Jan 4, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@babel/core](https://babel.dev/docs/en/next/babel-core)
([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-core))
| [`7.23.6` ->
`7.23.7`](https://renovatebot.com/diffs/npm/@babel%2fcore/7.23.6/7.23.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fcore/7.23.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fcore/7.23.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fcore/7.23.6/7.23.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fcore/7.23.6/7.23.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@changesets/parse](https://togithub.com/changesets/changesets/tree/main#readme)
([source](https://togithub.com/changesets/changesets)) | [`0.1.0` ->
`0.4.0`](https://renovatebot.com/diffs/npm/@changesets%2fparse/0.1.0/0.4.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@changesets%2fparse/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@changesets%2fparse/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@changesets%2fparse/0.1.0/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@changesets%2fparse/0.1.0/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@percy/cli](https://togithub.com/percy/cli)
([source](https://togithub.com/percy/cli/tree/HEAD/packages/cli)) |
[`1.27.4` ->
`1.27.6`](https://renovatebot.com/diffs/npm/@percy%2fcli/1.27.4/1.27.6)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@percy%2fcli/1.27.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@percy%2fcli/1.27.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@percy%2fcli/1.27.4/1.27.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@percy%2fcli/1.27.4/1.27.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/addon-essentials](https://togithub.com/storybookjs/storybook/tree/next/code/addons/essentials)
([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/addons/essentials))
| [`7.6.6` ->
`7.6.7`](https://renovatebot.com/diffs/npm/@storybook%2faddon-essentials/7.6.6/7.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-essentials/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-essentials/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-essentials/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-essentials/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/addon-links](https://togithub.com/storybookjs/storybook/tree/next/code/addons/links)
([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/addons/links))
| [`7.6.6` ->
`7.6.7`](https://renovatebot.com/diffs/npm/@storybook%2faddon-links/7.6.6/7.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-links/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-links/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-links/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-links/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/addons](https://togithub.com/storybookjs/storybook/tree/next/code/deprecated/addons)
([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/deprecated/addons))
| [`7.6.6` ->
`7.6.7`](https://renovatebot.com/diffs/npm/@storybook%2faddons/7.6.6/7.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddons/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddons/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddons/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddons/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/blocks](https://togithub.com/storybookjs/storybook/tree/next/code/ui/blocks)
([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/ui/blocks))
| [`7.6.6` ->
`7.6.7`](https://renovatebot.com/diffs/npm/@storybook%2fblocks/7.6.6/7.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2fblocks/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2fblocks/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2fblocks/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2fblocks/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/components](https://togithub.com/storybookjs/storybook/tree/next/code/ui/components)
([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/ui/components))
| [`7.6.6` ->
`7.6.7`](https://renovatebot.com/diffs/npm/@storybook%2fcomponents/7.6.6/7.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2fcomponents/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2fcomponents/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2fcomponents/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2fcomponents/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/core-events](https://togithub.com/storybookjs/storybook/tree/next/code/lib/core-events)
([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/lib/core-events))
| [`7.6.6` ->
`7.6.7`](https://renovatebot.com/diffs/npm/@storybook%2fcore-events/7.6.6/7.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2fcore-events/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2fcore-events/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2fcore-events/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2fcore-events/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/manager-api](https://togithub.com/storybookjs/storybook/tree/next/code/lib/manager-api)
([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/lib/manager-api))
| [`7.6.6` ->
`7.6.7`](https://renovatebot.com/diffs/npm/@storybook%2fmanager-api/7.6.6/7.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2fmanager-api/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2fmanager-api/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2fmanager-api/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2fmanager-api/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/preview-api](https://togithub.com/storybookjs/storybook/tree/next/code/lib/preview-api)
([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/lib/preview-api))
| [`7.6.6` ->
`7.6.7`](https://renovatebot.com/diffs/npm/@storybook%2fpreview-api/7.6.6/7.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2fpreview-api/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2fpreview-api/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2fpreview-api/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2fpreview-api/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/theming](https://togithub.com/storybookjs/storybook/tree/next/code/lib/theming)
([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/lib/theming))
| [`7.6.6` ->
`7.6.7`](https://renovatebot.com/diffs/npm/@storybook%2ftheming/7.6.6/7.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2ftheming/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2ftheming/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2ftheming/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2ftheming/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/web-components](https://togithub.com/storybookjs/storybook/tree/next/code/renderers/web-components)
([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/renderers/web-components))
| [`7.6.6` ->
`7.6.7`](https://renovatebot.com/diffs/npm/@storybook%2fweb-components/7.6.6/7.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2fweb-components/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2fweb-components/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2fweb-components/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2fweb-components/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/web-components-vite](https://togithub.com/storybookjs/storybook/tree/next/code/frameworks/web-components-vite)
([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/frameworks/web-components-vite))
| [`7.6.6` ->
`7.6.7`](https://renovatebot.com/diffs/npm/@storybook%2fweb-components-vite/7.6.6/7.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2fweb-components-vite/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2fweb-components-vite/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2fweb-components-vite/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2fweb-components-vite/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node))
| [`18.19.3` ->
`18.19.4`](https://renovatebot.com/diffs/npm/@types%2fnode/18.19.3/18.19.4)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/18.19.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/18.19.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/18.19.3/18.19.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/18.19.3/18.19.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node))
| [`16.18.68` ->
`16.18.69`](https://renovatebot.com/diffs/npm/@types%2fnode/16.18.68/16.18.69)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/16.18.69?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/16.18.69?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/16.18.68/16.18.69?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/16.18.68/16.18.69?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@types/node-fetch](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node-fetch)
([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node-fetch))
| [`2.6.9` ->
`2.6.10`](https://renovatebot.com/diffs/npm/@types%2fnode-fetch/2.6.9/2.6.10)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode-fetch/2.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode-fetch/2.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode-fetch/2.6.9/2.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode-fetch/2.6.9/2.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@types/react](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react)
([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react))
| [`18.2.45` ->
`18.2.46`](https://renovatebot.com/diffs/npm/@types%2freact/18.2.45/18.2.46)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2freact/18.2.46?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2freact/18.2.46?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2freact/18.2.45/18.2.46?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2freact/18.2.45/18.2.46?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/typescript-eslint)
([source](https://togithub.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin))
| [`6.15.0` ->
`6.17.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/6.15.0/6.17.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2feslint-plugin/6.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2feslint-plugin/6.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2feslint-plugin/6.15.0/6.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2feslint-plugin/6.15.0/6.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@typescript-eslint/parser](https://togithub.com/typescript-eslint/typescript-eslint)
([source](https://togithub.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser))
| [`6.15.0` ->
`6.17.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/6.15.0/6.17.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/6.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fparser/6.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fparser/6.15.0/6.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/6.15.0/6.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [core-js](https://togithub.com/zloirock/core-js)
([source](https://togithub.com/zloirock/core-js/tree/HEAD/packages/core-js))
| [`3.34.0` ->
`3.35.0`](https://renovatebot.com/diffs/npm/core-js/3.34.0/3.35.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/core-js/3.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/core-js/3.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/core-js/3.34.0/3.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/core-js/3.34.0/3.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [cypress](https://cypress.io)
([source](https://togithub.com/cypress-io/cypress)) | [`13.6.1` ->
`13.6.2`](https://renovatebot.com/diffs/npm/cypress/13.6.1/13.6.2) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/cypress/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/cypress/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/cypress/13.6.1/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/cypress/13.6.1/13.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[eslint-plugin-n](https://togithub.com/eslint-community/eslint-plugin-n)
| [`16.5.0` ->
`16.6.1`](https://renovatebot.com/diffs/npm/eslint-plugin-n/16.5.0/16.6.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-n/16.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-n/16.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-n/16.5.0/16.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-n/16.5.0/16.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[rollup-plugin-visualizer](https://togithub.com/btd/rollup-plugin-visualizer)
| [`5.11.0` ->
`5.12.0`](https://renovatebot.com/diffs/npm/rollup-plugin-visualizer/5.11.0/5.12.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/rollup-plugin-visualizer/5.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/rollup-plugin-visualizer/5.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/rollup-plugin-visualizer/5.11.0/5.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/rollup-plugin-visualizer/5.11.0/5.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [sass](https://togithub.com/sass/dart-sass) | [`1.69.5` ->
`1.69.7`](https://renovatebot.com/diffs/npm/sass/1.69.5/1.69.7) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/sass/1.69.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/sass/1.69.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/sass/1.69.5/1.69.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/sass/1.69.5/1.69.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[storybook](https://togithub.com/storybookjs/storybook/tree/next/code/lib/cli)
([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/lib/cli))
| [`7.6.6` ->
`7.6.7`](https://renovatebot.com/diffs/npm/storybook/7.6.6/7.6.7) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/storybook/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/storybook/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/storybook/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/storybook/7.6.6/7.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [svgo](https://svgo.dev) ([source](https://togithub.com/svg/svgo)) |
[`3.1.0` -> `3.2.0`](https://renovatebot.com/diffs/npm/svgo/3.1.0/3.2.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/svgo/3.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/svgo/3.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/svgo/3.1.0/3.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/svgo/3.1.0/3.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>babel/babel (@&#8203;babel/core)</summary>

###
[`v7.23.7`](https://togithub.com/babel/babel/blob/HEAD/CHANGELOG.md#v7237-2023-12-29)

[Compare
Source](https://togithub.com/babel/babel/compare/v7.23.6...v7.23.7)

##### :bug: Bug Fix

-   `babel-traverse`
- [#&#8203;16191](https://togithub.com/babel/babel/pull/16191) fix:
Crash when removing without `Program`
([@&#8203;liuxingbaoyu](https://togithub.com/liuxingbaoyu))
-   `babel-helpers`, `babel-plugin-proposal-decorators`
- [#&#8203;16180](https://togithub.com/babel/babel/pull/16180) fix:
Class decorator `ctx.kind` is wrong
([@&#8203;liuxingbaoyu](https://togithub.com/liuxingbaoyu))
-   `babel-plugin-proposal-decorators`
- [#&#8203;16170](https://togithub.com/babel/babel/pull/16170) Fix
decorator initProto usage in derived classes
([@&#8203;JLHwung](https://togithub.com/JLHwung))
-   `babel-core`
- [#&#8203;16167](https://togithub.com/babel/babel/pull/16167) Avoid
unpreventable `unhandledRejection` events
([@&#8203;nicolo-ribaudo](https://togithub.com/nicolo-ribaudo))

##### :house: Internal

-   `babel-helper-create-class-features-plugin`
- [#&#8203;16186](https://togithub.com/babel/babel/pull/16186) chore:
Update deps ([@&#8203;liuxingbaoyu](https://togithub.com/liuxingbaoyu))
- `babel-helper-create-class-features-plugin`,
`babel-plugin-proposal-decorators`
- [#&#8203;16177](https://togithub.com/babel/babel/pull/16177) Merge
decorators into class features
([@&#8203;JLHwung](https://togithub.com/JLHwung))

</details>

<details>
<summary>changesets/changesets (@&#8203;changesets/parse)</summary>

###
[`v0.4.0`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/changelog-github%400.4.0)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Minor Changes

- [#&#8203;564](https://togithub.com/atlassian/changesets/pull/564)
[`707002d`](https://togithub.com/atlassian/changesets/commit/707002dec9332a2c1322522a23861e747a6bff6f)
Thanks [@&#8203;Andarist](https://togithub.com/Andarist)! - It's now
possible to specify multiple authors of a change by using multiple
`author: @&#8203;someuser` lines.

##### Patch Changes

- Updated dependencies
\[[`de2b4a5`](https://togithub.com/atlassian/changesets/commit/de2b4a5a7b244a37d94625bcb70ecde9dde5b612)]:
-
[@&#8203;changesets/types](https://togithub.com/changesets/types)[@&#8203;4](https://togithub.com/4).0.0

###
[`v0.3.16`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/parse%400.3.16)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Patch Changes

- Updated dependencies
\[[`521205d`](https://togithub.com/changesets/changesets/commit/521205dc8c70fe71b181bd3c4bb7c9c6d2e721d2)]:
-
[@&#8203;changesets/types](https://togithub.com/changesets/types)[@&#8203;5](https://togithub.com/5).2.1

###
[`v0.3.15`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/parse%400.3.15)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Patch Changes

- Updated dependencies
\[[`8c08469`](https://togithub.com/changesets/changesets/commit/8c0846977597ddaf51aaeb35f1f0f9428bf8ba14)]:
-
[@&#8203;changesets/types](https://togithub.com/changesets/types)[@&#8203;5](https://togithub.com/5).2.0

###
[`v0.3.14`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/parse%400.3.14)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Patch Changes

- Updated dependencies
\[[`dd9b76f`](https://togithub.com/changesets/changesets/commit/dd9b76f162a546ae8b412e0cb10277f971f3585e)]:
-
[@&#8203;changesets/types](https://togithub.com/changesets/types)[@&#8203;5](https://togithub.com/5).1.0

###
[`v0.3.13`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/parse%400.3.13)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Patch Changes

- Updated dependencies
\[[`c87eba6`](https://togithub.com/changesets/changesets/commit/c87eba6f80a34563b7382f87472c29f6dafb546c)]:
-
[@&#8203;changesets/types](https://togithub.com/changesets/types)[@&#8203;5](https://togithub.com/5).0.0

###
[`v0.3.12`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/parse%400.3.12)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Patch Changes

- Updated dependencies
\[[`27a5a82`](https://togithub.com/changesets/changesets/commit/27a5a82188914570d192162f9d045dfd082a3c15)]:
-
[@&#8203;changesets/types](https://togithub.com/changesets/types)[@&#8203;4](https://togithub.com/4).1.0

###
[`v0.3.11`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/parse%400.3.11)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Patch Changes

- [#&#8203;740](https://togithub.com/changesets/changesets/pull/740)
[`957e39c`](https://togithub.com/changesets/changesets/commit/957e39c21549dd91e03faa5cd30e44e4c3d7331f)
Thanks [@&#8203;akphi](https://togithub.com/akphi)! - Fixed an issue
with failing to parse changesets containing a completely empty summary.

###
[`v0.3.10`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/parse%400.3.10)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Patch Changes

- Updated dependencies
\[[`9a993ba`](https://togithub.com/atlassian/changesets/commit/9a993ba09629c1620d749432520470cec49d3a96)]:
-
[@&#8203;changesets/types](https://togithub.com/changesets/types)[@&#8203;4](https://togithub.com/4).0.2

###
[`v0.3.9`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/parse%400.3.9)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Patch Changes

- Updated dependencies
\[[`e89e28a`](https://togithub.com/atlassian/changesets/commit/e89e28a05f5fa43307db73812a6bcd269b62ddee)]:
-
[@&#8203;changesets/types](https://togithub.com/changesets/types)[@&#8203;4](https://togithub.com/4).0.1

###
[`v0.3.8`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/parse%400.3.8)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Patch Changes

- Updated dependencies
\[[`de2b4a5`](https://togithub.com/atlassian/changesets/commit/de2b4a5a7b244a37d94625bcb70ecde9dde5b612)]:
-
[@&#8203;changesets/types](https://togithub.com/changesets/types)[@&#8203;4](https://togithub.com/4).0.0

###
[`v0.3.7`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/parse%400.3.7)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Patch Changes

-
[`5b6005e`](https://togithub.com/atlassian/changesets/commit/5b6005e0349a105b3d138fccdb22d13de8949862)
[#&#8203;462](https://togithub.com/atlassian/changesets/pull/462) Thanks
[@&#8203;Andarist](https://togithub.com/Andarist)! - Fixed an issue with
failing to parse changesets containing Windows newlines.

###
[`v0.3.6`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/parse%400.3.6)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Patch Changes

- Updated dependencies
\[[`2b49d66`](https://togithub.com/atlassian/changesets/commit/2b49d668ecaa1333bc5c7c5be4648dda1b11528d)]:
-
[@&#8203;changesets/types](https://togithub.com/changesets/types)[@&#8203;3](https://togithub.com/3).0.0

###
[`v0.3.5`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/parse%400.3.5)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Patch Changes

-
[`1706fb7`](https://togithub.com/atlassian/changesets/commit/1706fb751ecc2f5a792c42f467b2063078d58716)
[#&#8203;321](https://togithub.com/atlassian/changesets/pull/321) Thanks
[@&#8203;mitchellhamilton](https://togithub.com/mitchellhamilton)! - Fix
TypeScript declarations

- Updated dependencies
\[[`1706fb7`](https://togithub.com/atlassian/changesets/commit/1706fb751ecc2f5a792c42f467b2063078d58716)]:
-
[@&#8203;changesets/types](https://togithub.com/changesets/types)[@&#8203;2](https://togithub.com/2).0.1

###
[`v0.3.4`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/parse%400.3.4)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Patch Changes

- Updated dependencies
\[[`011d57f`](https://togithub.com/atlassian/changesets/commit/011d57f1edf9e37f75a8bef4f918e72166af096e)]:
-
[@&#8203;changesets/types](https://togithub.com/changesets/types)[@&#8203;2](https://togithub.com/2).0.0

###
[`v0.3.3`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/parse%400.3.3)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Patch Changes

-
[`04ddfd7`](https://togithub.com/atlassian/changesets/commit/04ddfd7c3acbfb84ef9c92873fe7f9dea1f5145c)
[#&#8203;305](https://togithub.com/atlassian/changesets/pull/305) Thanks
[@&#8203;Noviny](https://togithub.com/Noviny)! - Add link to changelog
in readme

- Updated dependencies
\[[`04ddfd7`](https://togithub.com/atlassian/changesets/commit/04ddfd7c3acbfb84ef9c92873fe7f9dea1f5145c),
[`e56928b`](https://togithub.com/atlassian/changesets/commit/e56928bbd6f9096def06ac37487bdbf28efec9d1)]:
-
[@&#8203;changesets/types](https://togithub.com/changesets/types)[@&#8203;1](https://togithub.com/1).0.1

###
[`v0.3.2`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/parse%400.3.2)

##### Patch Changes

-
[`41e2e3d`](https://togithub.com/atlassian/changesets/commit/41e2e3dd1053ff2f35a1a07e60793c9099f26997)
[#&#8203;292](https://togithub.com/atlassian/changesets/pull/292) Thanks
[@&#8203;acheronfail](https://togithub.com/acheronfail)! - Fix
`repository` field in package.json

- Updated dependencies
\[[`41e2e3d`](https://togithub.com/atlassian/changesets/commit/41e2e3dd1053ff2f35a1a07e60793c9099f26997),
[`cc8c921`](https://togithub.com/atlassian/changesets/commit/cc8c92143d4c4b7cca8b9917dfc830a40b5cda20),
[`cc8c921`](https://togithub.com/atlassian/changesets/commit/cc8c92143d4c4b7cca8b9917dfc830a40b5cda20),
[`2363366`](https://togithub.com/atlassian/changesets/commit/2363366756d1b15bddf6d803911baccfca03cbdf)]:
-
[@&#8203;changesets/types](https://togithub.com/changesets/types)[@&#8203;1](https://togithub.com/1).0.0

###
[`v0.3.0`](https://togithub.com/changesets/changesets/releases/tag/%40changesets/write%400.3.0)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

##### Minor Changes

- [#&#8203;1185](https://togithub.com/changesets/changesets/pull/1185)
[`a971652`](https://togithub.com/changesets/changesets/commit/a971652ec1403aab3fb89eb2f1640bd5012b895a)
Thanks [@&#8203;Andarist](https://togithub.com/Andarist)! -
`package.json#exports` have been added to limit what (and how) code
might be imported from the package.

##### Patch Changes

- Updated dependencies
\[[`a971652`](https://togithub.com/changesets/changesets/commit/a971652ec1403aab3fb89eb2f1640bd5012b895a)]:
-
[@&#8203;changesets/types](https://togithub.com/changesets/types)[@&#8203;6](https://togithub.com/6).0.0

###
[`v0.2.1`](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

###
[`v0.2.0`](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

###
[`v0.1.2`](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/[email protected]...@changesets/[email protected])

</details>

<details>
<summary>percy/cli (@&#8203;percy/cli)</summary>

### [`v1.27.6`](https://togithub.com/percy/cli/releases/tag/v1.27.6)

[Compare
Source](https://togithub.com/percy/cli/compare/v1.27.5...v1.27.6)

<!-- Release notes generated using configuration in .github/release.yml
at master -->

#### What's Changed

##### ✨ Enhancements

- Add support for Scrollable single element screenshot by
[@&#8203;chinmay-browserstack](https://togithub.com/chinmay-browserstack)
in
[https://github.com/percy/cli/pull/1458](https://togithub.com/percy/cli/pull/1458)
- Percy on Automate: Adding FullPage Support by
[@&#8203;Amit3200](https://togithub.com/Amit3200)
[@&#8203;rishigupta1599](https://togithub.com/rishigupta1599) in
[https://github.com/percy/cli/pull/1431](https://togithub.com/percy/cli/pull/1431)
- Percy on Automate: Add FullPage in global config by
[@&#8203;Amit3200](https://togithub.com/Amit3200) in
[https://github.com/percy/cli/pull/1477](https://togithub.com/percy/cli/pull/1477)

##### 🐛 Bug Fixes

- 🐛 Fix connection refused for `ipv6` by
[@&#8203;itsjwala](https://togithub.com/itsjwala) in
[https://github.com/percy/cli/pull/1463](https://togithub.com/percy/cli/pull/1463)

##### 🏗 Maintenance

- 🏗️ test fix: dom package test failing in chrome 120+ by
[@&#8203;itsjwala](https://togithub.com/itsjwala) in
[https://github.com/percy/cli/pull/1476](https://togithub.com/percy/cli/pull/1476)

**Full Changelog**:
https://github.com/percy/cli/compare/v1.27.5...v1.27.6

### [`v1.27.5`](https://togithub.com/percy/cli/releases/tag/v1.27.5)

[Compare
Source](https://togithub.com/percy/cli/compare/v1.27.4...v1.27.5)

<!-- Release notes generated using configuration in .github/release.yml
at master -->

Note: We have received some reports where percy cli randomly stops
working after this release, so we are currently tagging 1.27.4 as latest
version on npm to fix for users using `latest` tag. 1.27.5 will still be
available if used explicitly. We are investigating the issue.

#### What's Changed

##### ✨ Enhancements

- ✨ Implement Warning + Disable Percy for unsupported combinations by
[@&#8203;this-is-shivamsingh](https://togithub.com/this-is-shivamsingh)
in
[https://github.com/percy/cli/pull/1411](https://togithub.com/percy/cli/pull/1411)
- ✨ Added support to set network interface to bind by
[@&#8203;ninadbstack](https://togithub.com/ninadbstack) in
[https://github.com/percy/cli/pull/1447](https://togithub.com/percy/cli/pull/1447)

##### 🐛 Bug Fixes

- Fixing FindRegion + Refactor by
[@&#8203;Amit3200](https://togithub.com/Amit3200) in
[https://github.com/percy/cli/pull/1408](https://togithub.com/percy/cli/pull/1408)
- Resolving race condition in snapshots flush by
[@&#8203;rishigupta1599](https://togithub.com/rishigupta1599) in
[https://github.com/percy/cli/pull/1440](https://togithub.com/percy/cli/pull/1440)

##### 🏗 Maintenance

- ♻️ Refactor: added defaultmap + locking mechanism for intercepts queue
by [@&#8203;nilshah98](https://togithub.com/nilshah98) in
[https://github.com/percy/cli/pull/1441](https://togithub.com/percy/cli/pull/1441)

#### New Contributors

-
[@&#8203;this-is-shivamsingh](https://togithub.com/this-is-shivamsingh)
made their first contribution in
[https://github.com/percy/cli/pull/1411](https://togithub.com/percy/cli/pull/1411)

**Full Changelog**:
https://github.com/percy/cli/compare/v1.27.4...v1.27.5

</details>

<details>
<summary>storybookjs/storybook
(@&#8203;storybook/addon-essentials)</summary>

###
[`v7.6.7`](https://togithub.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#767)

[Compare
Source](https://togithub.com/storybookjs/storybook/compare/v7.6.6...v7.6.7)

- Core: Skip no-framework error when ignorePreview=true -
[#&#8203;25286](https://togithub.com/storybookjs/storybook/pull/25286),
thanks [@&#8203;ndelangen](https://togithub.com/ndelangen)!
- Dependencies: Semver dependency fixes -
[#&#8203;25283](https://togithub.com/storybookjs/storybook/pull/25283),
thanks [@&#8203;ndelangen](https://togithub.com/ndelangen)!
- Vite: Fix pre-transform error in Vite 5 -
[#&#8203;25329](https://togithub.com/storybookjs/storybook/pull/25329),
thanks [@&#8203;yannbf](https://togithub.com/yannbf)!
- Vue3: Fix pnp by making compiler-core a dependency -
[#&#8203;25311](https://togithub.com/storybookjs/storybook/pull/25311),
thanks [@&#8203;shilman](https://togithub.com/shilman)!

</details>

<details>
<summary>storybookjs/storybook (@&#8203;storybook/addon-links)</summary>

###
[`v7.6.7`](https://togithub.com/storybookjs/storybook/compare/v7.6.6...22ec27e2c6dbc6b3b7183c3c77693e4853f198a0)

[Compare
Source](https://togithub.com/storybookjs/storybook/compare/v7.6.6...v7.6.7)

</details>

<details>
<summary>typescript-eslint/typescript-eslint
(@&#8203;typescript-eslint/eslint-plugin)</summary>

###
[`v6.17.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6170-2024-01-01)

[Compare
Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.16.0...v6.17.0)

##### Bug Fixes

- **eslint-plugin:** \[no-restricted-imports] prevent crash when
`patterns` or `paths` in options are empty
([#&#8203;8108](https://togithub.com/typescript-eslint/typescript-eslint/issues/8108))
([675e987](https://togithub.com/typescript-eslint/typescript-eslint/commit/675e987ca1d13244c03d7e09d4e42c6539689d9a))

##### Features

- **eslint-plugin:** \[no-floating-promises] flag result of .map(async)
([#&#8203;7897](https://togithub.com/typescript-eslint/typescript-eslint/issues/7897))
([5857356](https://togithub.com/typescript-eslint/typescript-eslint/commit/5857356962060b19aa792bee778f9167ee54154b))
- **eslint-plugin:** \[switch-exhaustiveness-check] add an option to
warn against a `default` case on an already exhaustive `switch`
([#&#8203;7539](https://togithub.com/typescript-eslint/typescript-eslint/issues/7539))
([6a219bd](https://togithub.com/typescript-eslint/typescript-eslint/commit/6a219bdfe6fcf86aae28158e0d855f87a8bac719))

You can read about our [versioning
strategy](https://main--typescript-eslint.netlify.app/users/versioning)
and
[releases](https://main--typescript-eslint.netlify.app/users/releases)
on our website.

###
[`v6.16.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6160-2023-12-25)

[Compare
Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.15.0...v6.16.0)

##### Bug Fixes

- **eslint-plugin:** \[unbound-method] exempt all non-Promise built-in
statics
([#&#8203;8096](https://togithub.com/typescript-eslint/typescript-eslint/issues/8096))
([3182959](https://togithub.com/typescript-eslint/typescript-eslint/commit/31829591e2c5cf6bdbdd5da23b12c5782f710fa5))

##### Features

- **eslint-plugin:** deprecate formatting (meta.type: layout) rules
([#&#8203;8073](https://togithub.com/typescript-eslint/typescript-eslint/issues/8073))
([04dea84](https://togithub.com/typescript-eslint/typescript-eslint/commit/04dea84e8e934a415ec1381a90de3cde670d0dc3))
- **eslint-plugin:** deprecate no-extra-semi in favor of ESLint
Stylistic equivalent
([#&#8203;8123](https://togithub.com/typescript-eslint/typescript-eslint/issues/8123))
([9368bf3](https://togithub.com/typescript-eslint/typescript-eslint/commit/9368bf390afc58a19123782f8dff2bb5cdd3cccc))

You can read about our [versioning
strategy](https://main--typescript-eslint.netlify.app/users/versioning)
and
[releases](https://main--typescript-eslint.netlify.app/users/releases)
on our website.

</details>

<details>
<summary>typescript-eslint/typescript-eslint
(@&#8203;typescript-eslint/parser)</summary>

###
[`v6.17.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6170-2024-01-01)

[Compare
Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.16.0...v6.17.0)

**Note:** Version bump only for package
[@&#8203;typescript-eslint/parser](https://togithub.com/typescript-eslint/parser)

You can read about our [versioning
strategy](https://main--typescript-eslint.netlify.app/users/versioning)
and
[releases](https://main--typescript-eslint.netlify.app/users/releases)
on our website.

###
[`v6.16.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6160-2023-12-25)

[Compare
Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.15.0...v6.16.0)

**Note:** Version bump only for package
[@&#8203;typescript-eslint/parser](https://togithub.com/typescript-eslint/parser)

You can read about our [versioning
strategy](https://main--typescript-eslint.netlify.app/users/versioning)
and
[releases](https://main--typescript-eslint.netlify.app/users/releases)
on our website.

</details>

<details>
<summary>zloirock/core-js (core-js)</summary>

###
[`v3.35.0`](https://togithub.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3350---20231229)

[Compare
Source](https://togithub.com/zloirock/core-js/compare/v3.34.0...v3.35.0)

- [`{ Map, Set, WeakMap, WeakSet }.{ from, of
}`](https://togithub.com/tc39/proposal-setmap-offrom) became
non-generic, following
[this](https://togithub.com/tc39/proposal-setmap-offrom/issues/16#issuecomment-1843346541)
and some other notes. Now they can be invoked without `this`, but no
longer return subclass instances
- Fixed handling some cases of non-enumerable symbol keys from `Symbol`
polyfill
- Removed unneeded NodeJS domains-related logic from `queueMicrotask`
polyfill
-   Fixed subclassing of wrapped `ArrayBuffer`
-   Refactoring, many different minor optimizations
-   Compat data improvements:
-
[`Array.fromAsync`](https://togithub.com/tc39/proposal-array-from-async)
marked as [supported from V8 ~ Chrome
121](https://bugs.chromium.org/p/v8/issues/detail?id=13321#c13)
- It seems that the ancient [`Array.prototype.push`
bug](https://bugs.chromium.org/p/v8/issues/detail?id=12681) is fixed in
V8 ~ Chrome 122 (Hallelujah!)
- [`ArrayBuffer.prototype.transfer` and friends
proposal](https://togithub.com/tc39/proposal-arraybuffer-transfer)
features marked as [supported from FF
122](https://bugzilla.mozilla.org/show_bug.cgi?id=1865103#c8) and Bun
1.0.19
- [`Object.groupBy` and
`Map.groupBy`](https://togithub.com/tc39/proposal-array-grouping) marked
as supported from Bun 1.0.19
- Since [`Iterator` helpers
proposal](https://togithub.com/tc39/proposal-iterator-helpers) methods
are still not disabled in Deno, the web compatibility issue why it was
disabled in Chromium makes no sense for Deno and fixed in the spec, they
marked as supported from Deno 1.37
- Added Opera Android 80 and updated [Opera Android
79](https://forums.opera.com/topic/68490/opera-for-android-79) compat
data mapping
    -   Added Samsung Internet 24 compat data mapping

</details>

<details>
<summary>cypress-io/cypress (cypress)</summary>

###
[`v13.6.2`](https://togithub.com/cypress-io/cypress/releases/tag/v13.6.2)

[Compare
Source](https://togithub.com/cypress-io/cypress/compare/v13.6.1...v13.6.2)

Changelog: https://docs.cypress.io/guides/references/changelog#13-6-2

</details>

<details>
<summary>eslint-community/eslint-plugin-n (eslint-plugin-n)</summary>

###
[`v16.6.1`](https://togithub.com/eslint-community/eslint-plugin-n/releases/tag/16.6.1)

[Compare
Source](https://togithub.com/eslint-community/eslint-plugin-n/compare/16.6.0...16.6.1)

- fix: eslint 7.0 support
([#&#8203;156](https://togithub.com/eslint-community/eslint-plugin-n/issues/156))
([`2419888`](https://togithub.com/eslint-community/eslint-plugin-n/commit/2419888))

###
[`v16.6.0`](https://togithub.com/eslint-community/eslint-plugin-n/releases/tag/16.6.0)

[Compare
Source](https://togithub.com/eslint-community/eslint-plugin-n/compare/16.5.0...16.6.0)

- feat: supported new globals added in the new node.js versions
([#&#8203;154](https://togithub.com/eslint-community/eslint-plugin-n/issues/154))
([`7628925`](https://togithub.com/eslint-community/eslint-plugin-n/commit/7628925))

</details>

<details>
<summary>btd/rollup-plugin-visualizer
(rollup-plugin-visualizer)</summary>

###
[`v5.12.0`](https://togithub.com/btd/rollup-plugin-visualizer/blob/HEAD/CHANGELOG.md#5120)

[Compare
Source](https://togithub.com/btd/rollup-plugin-visualizer/compare/v5.11.0...v5.12.0)

-   Make unique id in generated data to be hash of data
-   Remove strict from CLI

</details>

<details>
<summary>sass/dart-sass (sass)</summary>

###
[`v1.69.7`](https://togithub.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#1697)

[Compare
Source](https://togithub.com/sass/dart-sass/compare/1.69.6...1.69.7)

##### Embedded Sass

- In the JS Embedded Host, properly install the x64 Dart Sass executable
on
    ARM64 Windows.

###
[`v1.69.6`](https://togithub.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#1696)

[Compare
Source](https://togithub.com/sass/dart-sass/compare/1.69.5...1.69.6)

- Produce better output for numbers with complex units in
`meta.inspect()` and
    debugging messages.

-   Escape U+007F DELETE when serializing strings.

- When generating CSS error messages to display in-browser, escape all
code
points that aren't in the US-ASCII region. Previously only code points
U+0100
    LATIN CAPITAL LETTER A WITH MACRON were escaped.

-   Provide official releases for musl LibC and for Android.

-   Don't crash when running `meta.apply()` in asynchronous mode.

##### JS API

- Fix a bug where certain exceptions could produce `SourceSpan`s that
didn't
    follow the documented `SourceSpan` API.

</details>

<details>
<summary>svg/svgo (svgo)</summary>

### [`v3.2.0`](https://togithub.com/svg/svgo/releases/tag/v3.2.0)

[Compare Source](https://togithub.com/svg/svgo/compare/v3.1.0...v3.2.0)

#### What's Changed

##### Bug Fixes

- [**Convert Path
Commands**](https://svgo.dev/docs/plugins/convert-path-data/), fix
instances were `q` was incorrectly converted to `t`. By
[@&#8203;KTibow](https://togithub.com/KTibow) in
[https://github.com/svg/svgo/pull/1889](https://togithub.com/svg/svgo/pull/1889)
- [**Convert
Transform**](https://svgo.dev/docs/plugins/convert-transform/), fix for
some transforms that weren't being converted correctly. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[https://github.com/svg/svgo/pull/1916](https://togithub.com/svg/svgo/pull/1916)

##### SVG Optimization

- [**Convert Path
Commands**](https://svgo.dev/docs/plugins/convert-path-data/), improves
closing paths and how we determine if to use absolute or relative
commands. By [@&#8203;KTibow](https://togithub.com/KTibow) in
[https://github.com/svg/svgo/pull/1867](https://togithub.com/svg/svgo/pull/1867)
- [**Convert Path
Commands**](https://svgo.dev/docs/plugins/convert-path-data/), round arc
or convert to lines based on the sagitta, can be disabled by setting
`smartArcRounding` to `false`. By
[@&#8203;KTibow](https://togithub.com/KTibow) in
[https://github.com/svg/svgo/pull/1873](https://togithub.com/svg/svgo/pull/1873)
- [**Convert Path
Commands**](https://svgo.dev/docs/plugins/convert-path-data/), convert
cubic Bézier curves to quadratic Bézier curves where possible, can be
disabled by setting `convertToQ` to `false`. By
[@&#8203;KTibow](https://togithub.com/KTibow) in
[https://github.com/svg/svgo/pull/1889](https://togithub.com/svg/svgo/pull/1889)

##### Performance

- [**Merge Paths**](https://svgo.dev/docs/plugins/merge-paths/),
refactor for performance with large files. By
[@&#8203;mozzie](https://togithub.com/mozzie) in
[https://github.com/svg/svgo/pull/1764](https://togithub.com/svg/svgo/pull/1764)
and
[https://github.com/svg/svgo/pull/1904](https://togithub.com/svg/svgo/pull/1904)
- [**Convert Path
Commands**](https://svgo.dev/docs/plugins/convert-path-data/), refactor
`#stringifyPathData` for performance. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[https://github.com/svg/svgo/pull/1900](https://togithub.com/svg/svgo/pull/1900)
- Use
[`Set`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Set)
instead of
[`Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)
for faster lookups. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[https://github.com/svg/svgo/pull/1899](https://togithub.com/svg/svgo/pull/1899)

#### Metrics

Before and after using vectors from various sources, with the default
preset of each respective version:

| SVG | Original | v3.1.0 | v3.2.0 | Delta |
|---|---|---|---|---|
| [Arch Linux Logo](https://archlinux.org/art/) | 9.529 KiB | 4.162 KiB
| 4.115 KiB | ⬇️ 0.047 KiB |
|
[Blobs](https://gitlab.gnome.org/GNOME/gnome-backgrounds/-/blob/main/backgrounds/blobs-d.svg)
| 50.45 KiB | 42.949 KiB | 42.623 KiB | ⬇️ 0.326 KiB |
| [Isometric
Madness](https://inkscape.org/~Denis_Kuznetsky/%E2%98%85isometric-madness)
| 869.034 KiB | 550.153 KiB | 540.582 KiB | ⬇️ 9.571 KiB |
| [tldr-pages
Banner](https://togithub.com/tldr-pages/tldr/blob/main/images/banner.svg)
| 2.071 KiB | 1.07 KiB | 1.07 KiB | |
| [Wikipedia
Logo](https://en.wikipedia.org/wiki/File:Wikipedia-logo-v2.svg) |
161.551 KiB | 116 KiB | 111.668 KiB | ⬇️ 4.332 KiB |

Before and after of the browser bundle of each respective version:

| | v3.1.0 | v3.2.0 | Delta |
|---|---|---|---|
| svgo.browser.js | 660.9 kB | 910.9 kB | ⬆️ 250 kB |

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "every weekend" in timezone
Europe/Zurich, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/swisspost/design-system).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xMDMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjEwMy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Philipp Gfeller <[email protected]>
nono referenced this pull request in cozy/cozy-stack Jan 8, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [svgo](https://svgo.dev) ([source](https://togithub.com/svg/svgo)) |
[`3.1.0` -> `3.2.0`](https://renovatebot.com/diffs/npm/svgo/3.1.0/3.2.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/svgo/3.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/svgo/3.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/svgo/3.1.0/3.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/svgo/3.1.0/3.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>svg/svgo (svgo)</summary>

### [`v3.2.0`](https://togithub.com/svg/svgo/releases/tag/v3.2.0)

[Compare Source](https://togithub.com/svg/svgo/compare/v3.1.0...v3.2.0)

#### What's Changed

##### Bug Fixes

- [**Convert Path
Commands**](https://svgo.dev/docs/plugins/convert-path-data/), fix
instances were `q` was incorrectly converted to `t`. By
[@&#8203;KTibow](https://togithub.com/KTibow) in
[https://github.com/svg/svgo/pull/1889](https://togithub.com/svg/svgo/pull/1889)
- [**Convert
Transform**](https://svgo.dev/docs/plugins/convert-transform/), fix for
some transforms that weren't being converted correctly. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[https://github.com/svg/svgo/pull/1916](https://togithub.com/svg/svgo/pull/1916)

##### SVG Optimization

- [**Convert Path
Commands**](https://svgo.dev/docs/plugins/convert-path-data/), improves
closing paths and how we determine if to use absolute or relative
commands. By [@&#8203;KTibow](https://togithub.com/KTibow) in
[https://github.com/svg/svgo/pull/1867](https://togithub.com/svg/svgo/pull/1867)
- [**Convert Path
Commands**](https://svgo.dev/docs/plugins/convert-path-data/), round arc
or convert to lines based on the sagitta, can be disabled by setting
`smartArcRounding` to `false`. By
[@&#8203;KTibow](https://togithub.com/KTibow) in
[https://github.com/svg/svgo/pull/1873](https://togithub.com/svg/svgo/pull/1873)
- [**Convert Path
Commands**](https://svgo.dev/docs/plugins/convert-path-data/), convert
cubic Bézier curves to quadratic Bézier curves where possible, can be
disabled by setting `convertToQ` to `false`. By
[@&#8203;KTibow](https://togithub.com/KTibow) in
[https://github.com/svg/svgo/pull/1889](https://togithub.com/svg/svgo/pull/1889)

##### Performance

- [**Merge Paths**](https://svgo.dev/docs/plugins/merge-paths/),
refactor for performance with large files. By
[@&#8203;mozzie](https://togithub.com/mozzie) in
[https://github.com/svg/svgo/pull/1764](https://togithub.com/svg/svgo/pull/1764)
and
[https://github.com/svg/svgo/pull/1904](https://togithub.com/svg/svgo/pull/1904)
- [**Convert Path
Commands**](https://svgo.dev/docs/plugins/convert-path-data/), refactor
`#stringifyPathData` for performance. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[https://github.com/svg/svgo/pull/1900](https://togithub.com/svg/svgo/pull/1900)
- Use
[`Set`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Set)
instead of
[`Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)
for faster lookups. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[https://github.com/svg/svgo/pull/1899](https://togithub.com/svg/svgo/pull/1899)

#### Metrics

Before and after using vectors from various sources, with the default
preset of each respective version:

| SVG | Original | v3.1.0 | v3.2.0 | Delta |
|---|---|---|---|---|
| [Arch Linux Logo](https://archlinux.org/art/) | 9.529 KiB | 4.162 KiB
| 4.115 KiB | ⬇️ 0.047 KiB |
|
[Blobs](https://gitlab.gnome.org/GNOME/gnome-backgrounds/-/blob/main/backgrounds/blobs-d.svg)
| 50.45 KiB | 42.949 KiB | 42.623 KiB | ⬇️ 0.326 KiB |
| [Isometric
Madness](https://inkscape.org/~Denis_Kuznetsky/%E2%98%85isometric-madness)
| 869.034 KiB | 550.153 KiB | 540.582 KiB | ⬇️ 9.571 KiB |
| [tldr-pages
Banner](https://togithub.com/tldr-pages/tldr/blob/main/images/banner.svg)
| 2.071 KiB | 1.07 KiB | 1.07 KiB | |
| [Wikipedia
Logo](https://en.wikipedia.org/wiki/File:Wikipedia-logo-v2.svg) |
161.551 KiB | 116 KiB | 111.668 KiB | ⬇️ 4.332 KiB |

Before and after of the browser bundle of each respective version:

| | v3.1.0 | v3.2.0 | Delta |
|---|---|---|---|
| svgo.browser.js | 660.9 kB | 910.9 kB | ⬆️ 250 kB |

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 6am on Monday" in timezone
Europe/Paris, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/cozy/cozy-stack).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xMjEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjEyMS4wIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIn0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants