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

replace with z and remove z when optimal #1822

Merged
merged 11 commits into from Nov 12, 2023
Merged

replace with z and remove z when optimal #1822

merged 11 commits into from Nov 12, 2023

Conversation

KTibow
Copy link
Contributor

@KTibow KTibow commented Nov 5, 2023

What

closes #1821 by adding a mechanism that tries to prefer z over other methods of going home and removes z when it's redundant.

how svg handles z is complicated but i think i added enough safeguards. the tests pass so hopefully it doesn't break anything.

  • the line-z pattern can always be converted to z. this is accounted for by checking if the next command is z.
  • when we detect either no stroke or completely round strokes, line is the same as z. this lets us convert line to z, and if you disabled converttoz we can still convert line-z to line.
  • when we detect a stroke that isn't round, the optimizations are limited, as i observed with the svg test suite. if you convert ITEM-z to ITEM, it'll change a closed shape to a non-closed shape. if you convert LINE to z, it'll change a non-closed shape to a closed shape. but i added safeguards so it shouldn't do that.
  • closes feat: remove useless closing path segments #1751

Results

Material Design Icons: 98% current svgo 2,651kb -> this 2,601kb
some random vector 95% current svgo 12.2kb -> this 11.7kb

@KTibow KTibow marked this pull request as draft November 5, 2023 17:28
@KTibow KTibow marked this pull request as ready for review November 5, 2023 17:28
@SethFalco
Copy link
Member

Hey, thanks for opening the issue and submitting a pull request. This is a pretty nice optimization.

Also, thanks for being on top of this PR, especially regarding documentation. 👍🏽
Just wanted to apologize for keeping you waiting. I'm going to release v3.0.3 soon, and then I'll review this in the upcoming days.

For now, can you just confirm, this would close #1751 and #1755 in theory, right? If this is the case, would you mind adding their example in #1751 as a test case in your PR?

@KTibow
Copy link
Contributor Author

KTibow commented Nov 8, 2023

For now, can you just confirm, this would close #1751 and #1755 in theory, right?

Definitely closes #1751. I think 1755 can still stay open.

If this is the case, would you mind adding their example in #1751 as a test case in your PR?

Just to confirm, you mean as in adding it to the automated tests?
If so, I'll probably do a more detailed case (eg having the shape as both filled, stroked, and roundly stroked, and testing each case)

@SethFalco
Copy link
Member

Definitely closes #1751. I think 1755 can still stay open.

Sure, for now, I'll go with that. Once this is merged, I'll check the other PR to see whether it's resolved or not, and hit up the contributor.

Just to confirm, you mean as in adding it to the automated tests?

Yeah! So, creating a convertPathData.xx.svg with that scenario. Doesn't have to the same path, just the same optimization that was being demonstrated there.

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.

This looks great, thanks for opening the issue and working on this. I've left 3 minor comments, once addressed I'd be happy to merge.

docs/03-plugins/convert-path-data.mdx Outdated Show resolved Hide resolved
docs/03-plugins/convert-path-data.mdx Outdated Show resolved Hide resolved
plugins/convertPathData.js Outdated Show resolved Hide resolved
@SethFalco SethFalco merged commit 14bdacc into svg:main Nov 12, 2023
6 checks passed
@SethFalco
Copy link
Member

Awesome, thanks again for working on this. 👍🏽
This will be released in v3.0.4.

@KTibow KTibow mentioned this pull request Nov 12, 2023
nono added a commit to cozy/cozy-stack that referenced this pull request Nov 20, 2023
[![Mend Renovate logo
banner](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.0.3` -> `3.0.4`](https://renovatebot.com/diffs/npm/svgo/3.0.3/3.0.4)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/svgo/3.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/svgo/3.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/svgo/3.0.3/3.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/svgo/3.0.3/3.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

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

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

Includes various bug fixes for existing plugins and a new optimization.
Also splits `removeXMLNS`, which removed XLink, into two separate
plugins, `removeXMLNS` and `removeXlink`.

#### What's Changed

##### Default Behavior

- **Remove XML Namespace**, no longer removes the XLink (`xmlns:xlink`)
namespace. If that is desirable, you should enable the new [Remove
XLink](https://svgo.dev/docs/plugins/remove-xlink/) (`removeXlink`)
plugin, which does more while being safer. By
[@&#8203;TrySound](https://togithub.com/TrySound) and
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1535

##### Bug Fixes

- **Convert Path Commands**, ignore instances where transform applied
via style tag. By [@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1830
- **Inline Styles**, inline properties with the same specificity in the
order that they appear in the stylesheet. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1831
- **Inline Styles**, don't remove class or id from node if it's
traversed in another CSS selector. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1832
and
[svg/svgo#1836
- Don't trim
[`pre`](https://developer.mozilla.org/docs/Web/HTML/Element/pre)
elements in
[`foreignObject`](https://developer.mozilla.org/docs/Web/SVG/Element/foreignObject).
By [@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1796
- Don't crash when encountering
[`@-webkit-keyframes`](https://webkit.org/blog/324/css-animation-2/) in
`<style>` node. By [@&#8203;SethFalco](https://togithub.com/SethFalco)
in
[svg/svgo#1826

##### SVG Optimization

- **Convert Path Commands**, convert to `z` command if going back to
initial position, or drop `z` if redundant. By
[@&#8203;KTibow](https://togithub.com/KTibow) in
[svg/svgo#1822
- **Inline Styles**, when inlining a CSS property that's already
declared in a presentation attribute of the node, drop the attribute. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1829
- **Remove XLink**, new plugin that removes the XLink (`xmlns:xlink`)
namespace and migrates from XLink attributes to the SVG 2 equivalent.
Disabled by default. By
[@&#8203;TrySound](https://togithub.com/TrySound) and
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1535

#### Metrics

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

| SVG | Original | v3.0.3 | v3.0.4 | Delta |
|---|---|---|---|---|
| [Arch Linux Logo](https://archlinux.org/art/) | 9.529 KiB | 4.738 KiB
| 4.735 KiB | ⬇️ 0.003 KiB |
|
[Blobs](https://gitlab.gnome.org/GNOME/gnome-backgrounds/-/blob/main/backgrounds/blobs-d.svg)
| 50.45 KiB | 42.949 KiB | 42.949 KiB | |
| [Isometric
Madness](https://inkscape.org/~Denis_Kuznetsky/%E2%98%85isometric-madness)
| 869.034 KiB | 550.699 KiB | 550.593 KiB | ⬇️ 0.106 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.552 KiB | 118.441 KiB | 117.152 KiB | ⬇️ 1.289 KiB |

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

| | v3.0.3 | v3.0.4 | Delta |
|---|---|---|---|
| svgo.browser.js | 651.7 kB | 656.9 kB | ⬆️  5.2 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:eyJjcmVhdGVkSW5WZXIiOiIzNy41OS44IiwidXBkYXRlZEluVmVyIjoiMzcuNTkuOCIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->
gfellerph added a commit to swisspost/design-system that referenced this pull request Nov 20, 2023
[![Mend Renovate logo
banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@changesets/parse](https://togithub.com/changesets/changesets/tree/main#readme)
([source](https://togithub.com/changesets/changesets)) | [`0.1.0` ->
`0.3.16`](https://renovatebot.com/diffs/npm/@changesets%2fparse/0.1.0/0.3.16)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@changesets%2fparse/0.3.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@changesets%2fparse/0.3.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@changesets%2fparse/0.1.0/0.3.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@changesets%2fparse/0.1.0/0.3.16?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)) |
[`18.18.9` ->
`18.18.10`](https://renovatebot.com/diffs/npm/@types%2fnode/18.18.9/18.18.10)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/18.18.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/18.18.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/18.18.9/18.18.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/18.18.9/18.18.10?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)) |
[`18.17.19` ->
`18.18.10`](https://renovatebot.com/diffs/npm/@types%2fnode/18.17.19/18.18.10)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/18.18.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/18.18.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/18.17.19/18.18.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/18.17.19/18.18.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/typescript-eslint)
| [`6.11.0` ->
`6.12.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/6.11.0/6.12.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2feslint-plugin/6.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2feslint-plugin/6.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2feslint-plugin/6.11.0/6.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2feslint-plugin/6.11.0/6.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@typescript-eslint/parser](https://togithub.com/typescript-eslint/typescript-eslint)
| [`6.11.0` ->
`6.12.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/6.11.0/6.12.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/6.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fparser/6.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fparser/6.11.0/6.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/6.11.0/6.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [core-js](https://togithub.com/zloirock/core-js) | [`3.33.2` ->
`3.33.3`](https://renovatebot.com/diffs/npm/core-js/3.33.2/3.33.3) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/core-js/3.33.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/core-js/3.33.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/core-js/3.33.2/3.33.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/core-js/3.33.2/3.33.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [eslint](https://eslint.org)
([source](https://togithub.com/eslint/eslint)) | [`8.53.0` ->
`8.54.0`](https://renovatebot.com/diffs/npm/eslint/8.53.0/8.54.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/8.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint/8.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint/8.53.0/8.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/8.53.0/8.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[start-server-and-test](https://togithub.com/bahmutov/start-server-and-test)
| [`2.0.2` ->
`2.0.3`](https://renovatebot.com/diffs/npm/start-server-and-test/2.0.2/2.0.3)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/start-server-and-test/2.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/start-server-and-test/2.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/start-server-and-test/2.0.2/2.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/start-server-and-test/2.0.2/2.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [svgo](https://svgo.dev) ([source](https://togithub.com/svg/svgo)) |
[`3.0.3` -> `3.0.4`](https://renovatebot.com/diffs/npm/svgo/3.0.3/3.0.4)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/svgo/3.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/svgo/3.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/svgo/3.0.3/3.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/svgo/3.0.3/3.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

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

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/parse@0.3.15...@changesets/parse@0.3.16)

##### 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/parse@0.3.14...@changesets/parse@0.3.15)

##### 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/parse@0.3.13...@changesets/parse@0.3.14)

##### 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/parse@0.3.12...@changesets/parse@0.3.13)

##### 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/parse@0.3.11...@changesets/parse@0.3.12)

##### 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/parse@0.3.10...@changesets/parse@0.3.11)

##### 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/parse@0.3.9...@changesets/parse@0.3.10)

##### 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/parse@0.3.8...@changesets/parse@0.3.9)

##### 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/parse@0.3.7...@changesets/parse@0.3.8)

##### 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/parse@0.3.6...@changesets/parse@0.3.7)

##### 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/parse@0.3.5...@changesets/parse@0.3.6)

##### 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/parse@0.3.4...@changesets/parse@0.3.5)

##### 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/parse@0.3.3...@changesets/parse@0.3.4)

##### 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/parse@0.3.2...@changesets/parse@0.3.3)

##### 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/compare/@changesets/parse@0.2.1...@changesets/parse@0.3.0)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/parse@0.2.1...@changesets/parse@0.3.0)

###
[`v0.2.1`](https://togithub.com/changesets/changesets/compare/@changesets/parse@0.2.0...@changesets/parse@0.2.1)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/parse@0.2.0...@changesets/parse@0.2.1)

###
[`v0.2.0`](https://togithub.com/changesets/changesets/compare/@changesets/parse@0.1.2...@changesets/parse@0.2.0)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/parse@0.1.2...@changesets/parse@0.2.0)

###
[`v0.1.2`](https://togithub.com/changesets/changesets/compare/@changesets/parse@0.1.0...@changesets/parse@0.1.2)

[Compare
Source](https://togithub.com/changesets/changesets/compare/@changesets/parse@0.1.0...@changesets/parse@0.1.2)

</details>

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

###
[`v6.12.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6120-2023-11-20)

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

##### Bug Fixes

- **eslint-plugin:** \[class-methods-use-this] detect a problematic case
for private/protected members if `ignoreClassesThatImplementAnInterface`
is set
([#&#8203;7705](https://togithub.com/typescript-eslint/typescript-eslint/issues/7705))
([155aa1f](https://togithub.com/typescript-eslint/typescript-eslint/commit/155aa1f533d1fe23da3c66f9832343faf4866d85))
- **eslint-plugin:** \[no-unnecessary-condition] fix false positive with
computed member access and branded key type
([#&#8203;7706](https://togithub.com/typescript-eslint/typescript-eslint/issues/7706))
([f151b26](https://togithub.com/typescript-eslint/typescript-eslint/commit/f151b26d2178a617e82ad6a0279e3145e303f4f8))
- **eslint-plugin:** \[switch-exhaustiveness-check] enum members with
new line or single quotes are not being fixed correctly
([#&#8203;7806](https://togithub.com/typescript-eslint/typescript-eslint/issues/7806))
([a034d0a](https://togithub.com/typescript-eslint/typescript-eslint/commit/a034d0a3856aa07bd2d52b557fa33c7a88e9e511)),
closes
[#&#8203;7768](https://togithub.com/typescript-eslint/typescript-eslint/issues/7768)

##### Features

- \[member-ordering] add accessor support for member-ordering
([#&#8203;7927](https://togithub.com/typescript-eslint/typescript-eslint/issues/7927))
([3c8312d](https://togithub.com/typescript-eslint/typescript-eslint/commit/3c8312d1e135dc65fa41f629993cd03ed82e3255))
- **eslint-plugin:** \[switch-exhaustiveness-check] add
requireDefaultForNonUnion option
([#&#8203;7880](https://togithub.com/typescript-eslint/typescript-eslint/issues/7880))
([4cfcd45](https://togithub.com/typescript-eslint/typescript-eslint/commit/4cfcd451efb2563130896e42b45252909932c679))

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.12.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6120-2023-11-20)

[Compare
Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.11.0...v6.12.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.33.3`](https://togithub.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3333---20231120)

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

- Fixed an issue getting the global object on Duktape,
[#&#8203;1303](https://togithub.com/zloirock/core-js/issues/1303)
- Avoid sharing internal `[[DedentMap]]` from [`String.dedent`
proposal](https://togithub.com/tc39/proposal-string-dedent) between
`core-js` instances before stabilization of the proposal
-   Some internal untangling
-   Compat data improvements:
- Added [Deno 1.38](https://deno.com/blog/v1.38) compat data mapping
-
[`Array.fromAsync`](https://togithub.com/tc39/proposal-array-from-async)
marked as [supported from Deno
1.38](https://togithub.com/denoland/deno/pull/21048)
- [`Symbol.{ dispose, asyncDispose
}`](https://togithub.com/tc39/proposal-explicit-resource-management)
marked as [supported from Deno
1.38](https://togithub.com/denoland/deno/pull/20845)
    -   Added Opera Android 79 compat data mapping
    -   Added Oculus Quest Browser 30 compat data mapping
    -   Updated Electron 28 and 29 compat data mapping

</details>

<details>
<summary>eslint/eslint (eslint)</summary>

### [`v8.54.0`](https://togithub.com/eslint/eslint/releases/tag/v8.54.0)

[Compare
Source](https://togithub.com/eslint/eslint/compare/v8.53.0...v8.54.0)

#### Features

-
[`a7a883b`](https://togithub.com/eslint/eslint/commit/a7a883bd6ba4f140b60cbbb2be5b53d750f6c8db)
feat: for-direction rule add check for condition in reverse order
([#&#8203;17755](https://togithub.com/eslint/eslint/issues/17755))
(Angelo Annunziata)
-
[`1452dc9`](https://togithub.com/eslint/eslint/commit/1452dc9f12c45c05d7c569f737221f0d988ecef1)
feat: Add suggestions to no-console
([#&#8203;17680](https://togithub.com/eslint/eslint/issues/17680)) (Joel
Mathew Koshy)
-
[`21ebf8a`](https://togithub.com/eslint/eslint/commit/21ebf8a811be9f4b009cf70a10be5062d4fdc736)
feat: update `no-array-constructor` rule
([#&#8203;17711](https://togithub.com/eslint/eslint/issues/17711))
(Francesco Trotta)

#### Bug Fixes

-
[`98926e6`](https://togithub.com/eslint/eslint/commit/98926e6e7323e5dd12a9f016cb558144296665af)
fix: Ensure that extra data is not accidentally stored in the cache file
([#&#8203;17760](https://togithub.com/eslint/eslint/issues/17760))
(Milos Djermanovic)
-
[`e8cf9f6`](https://togithub.com/eslint/eslint/commit/e8cf9f6a524332293f8b2c90a2db4a532e47d919)
fix: Make dark scroll bar in dark theme
([#&#8203;17753](https://togithub.com/eslint/eslint/issues/17753))
(Pavel)
-
[`3cbeaad`](https://togithub.com/eslint/eslint/commit/3cbeaad7b943c153937ce34365cec2c406f2b98b)
fix: Use `cwd` constructor option as config `basePath` in Linter
([#&#8203;17705](https://togithub.com/eslint/eslint/issues/17705))
(Milos Djermanovic)

#### Documentation

-
[`becfdd3`](https://togithub.com/eslint/eslint/commit/becfdd39b25d795e56c9a13eb3e77af6b9c86e8a)
docs: Make clear when rules are removed
([#&#8203;17728](https://togithub.com/eslint/eslint/issues/17728))
(Nicholas C. Zakas)
-
[`05d6e99`](https://togithub.com/eslint/eslint/commit/05d6e99153ed6d94eb30f46c57609371918a41f3)
docs: update "Submit a Pull Request" page
([#&#8203;17712](https://togithub.com/eslint/eslint/issues/17712))
(Francesco Trotta)
-
[`eb2279e`](https://togithub.com/eslint/eslint/commit/eb2279e5148cee8fdea7dae614f4f8af7a2d06c3)
docs: display info about deprecated rules
([#&#8203;17749](https://togithub.com/eslint/eslint/issues/17749))
(Percy Ma)
-
[`d245326`](https://togithub.com/eslint/eslint/commit/d24532601e64714ac5d08507e05aa5c14ecd1d5a)
docs: Correct working in migrating plugin docs
([#&#8203;17722](https://togithub.com/eslint/eslint/issues/17722))
(Filip Tammergård)

#### Chores

-
[`d644de9`](https://togithub.com/eslint/eslint/commit/d644de9a4b593b565617303a095bc9aa69e7b768)
chore: upgrade
[@&#8203;eslint/js](https://togithub.com/eslint/js)[@&#8203;8](https://togithub.com/8).54.0
([#&#8203;17773](https://togithub.com/eslint/eslint/issues/17773))
(Milos Djermanovic)
-
[`1e6e314`](https://togithub.com/eslint/eslint/commit/1e6e31415cc429a3a9fc64b2ec03df0e0ec0c91b)
chore: package.json update for
[@&#8203;eslint/js](https://togithub.com/eslint/js) release (Jenkins)
-
[`6fb8805`](https://togithub.com/eslint/eslint/commit/6fb8805310afe7476d6c404f172177a6d15fcf11)
chore: Fixed grammar in issue_templates/rule_change
([#&#8203;17770](https://togithub.com/eslint/eslint/issues/17770)) (Joel
Mathew Koshy)
-
[`85db724`](https://togithub.com/eslint/eslint/commit/85db7243ddb8706ed60ab64a7ddf604d0d7de493)
chore: upgrade `markdownlint` to 0.31.1
([#&#8203;17754](https://togithub.com/eslint/eslint/issues/17754))
(Nitin Kumar)
-
[`6d470d2`](https://togithub.com/eslint/eslint/commit/6d470d2e74535761bd56dcb1c021b463ef9e8a9c)
chore: update dependency recast to ^0.23.0
([#&#8203;17736](https://togithub.com/eslint/eslint/issues/17736))
(renovate\[bot])
-
[`b7121b5`](https://togithub.com/eslint/eslint/commit/b7121b590d578c9c9b38ee481313317f30e54817)
chore: update dependency markdownlint-cli to ^0.37.0
([#&#8203;17735](https://togithub.com/eslint/eslint/issues/17735))
(renovate\[bot])
-
[`633b9a1`](https://togithub.com/eslint/eslint/commit/633b9a19752b6a22ab4d6c824f27a75ac0e4151b)
chore: update dependency regenerator-runtime to ^0.14.0
([#&#8203;17739](https://togithub.com/eslint/eslint/issues/17739))
(renovate\[bot])
-
[`acac16f`](https://togithub.com/eslint/eslint/commit/acac16fdf8540f7ba86cf637e3c1b253bd35a268)
chore: update dependency vite-plugin-commonjs to ^0.10.0
([#&#8203;17740](https://togithub.com/eslint/eslint/issues/17740))
(renovate\[bot])
-
[`ba8ca7e`](https://togithub.com/eslint/eslint/commit/ba8ca7e3debcba68ee7015b9221cf5acd7870206)
chore: add .github/renovate.json5
([#&#8203;17567](https://togithub.com/eslint/eslint/issues/17567)) (Josh
Goldberg ✨)

</details>

<details>
<summary>bahmutov/start-server-and-test
(start-server-and-test)</summary>

###
[`v2.0.3`](https://togithub.com/bahmutov/start-server-and-test/releases/tag/v2.0.3)

[Compare
Source](https://togithub.com/bahmutov/start-server-and-test/compare/v2.0.2...v2.0.3)

##### Bug Fixes

- **deps:** update dependency wait-on to v7.2.0
([#&#8203;374](https://togithub.com/bahmutov/start-server-and-test/issues/374))
([ad35c2e](https://togithub.com/bahmutov/start-server-and-test/commit/ad35c2e4128615d7bc6e84d09761ae5d1fbc8da2))

</details>

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

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

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

Includes various bug fixes for existing plugins and a new optimization.
Also splits `removeXMLNS`, which removed XLink, into two separate
plugins, `removeXMLNS` and `removeXlink`.

#### What's Changed

##### Default Behavior

- **Remove XML Namespace**, no longer removes the XLink (`xmlns:xlink`)
namespace. If that is desirable, you should enable the new [Remove
XLink](https://svgo.dev/docs/plugins/remove-xlink/) (`removeXlink`)
plugin, which does more while being safer. By
[@&#8203;TrySound](https://togithub.com/TrySound) and
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1535

##### Bug Fixes

- **Convert Path Commands**, ignore instances where transform applied
via style tag. By [@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1830
- **Inline Styles**, inline properties with the same specificity in the
order that they appear in the stylesheet. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1831
- **Inline Styles**, don't remove class or id from node if it's
traversed in another CSS selector. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1832
and
[svg/svgo#1836
- Don't trim
[`pre`](https://developer.mozilla.org/docs/Web/HTML/Element/pre)
elements in
[`foreignObject`](https://developer.mozilla.org/docs/Web/SVG/Element/foreignObject).
By [@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1796
- Don't crash when encountering
[`@-webkit-keyframes`](https://webkit.org/blog/324/css-animation-2/) in
`<style>` node. By [@&#8203;SethFalco](https://togithub.com/SethFalco)
in
[svg/svgo#1826

##### SVG Optimization

- **Convert Path Commands**, convert to `z` command if going back to
initial position, or drop `z` if redundant. By
[@&#8203;KTibow](https://togithub.com/KTibow) in
[svg/svgo#1822
- **Inline Styles**, when inlining a CSS property that's already
declared in a presentation attribute of the node, drop the attribute. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1829
- **Remove XLink**, new plugin that removes the XLink (`xmlns:xlink`)
namespace and migrates from XLink attributes to the SVG 2 equivalent.
Disabled by default. By
[@&#8203;TrySound](https://togithub.com/TrySound) and
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1535

#### Metrics

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

| SVG | Original | v3.0.3 | v3.0.4 | Delta |
|---|---|---|---|---|
| [Arch Linux Logo](https://archlinux.org/art/) | 9.529 KiB | 4.738 KiB
| 4.735 KiB | ⬇️ 0.003 KiB |
|
[Blobs](https://gitlab.gnome.org/GNOME/gnome-backgrounds/-/blob/main/backgrounds/blobs-d.svg)
| 50.45 KiB | 42.949 KiB | 42.949 KiB | |
| [Isometric
Madness](https://inkscape.org/~Denis_Kuznetsky/%E2%98%85isometric-madness)
| 869.034 KiB | 550.699 KiB | 550.593 KiB | ⬇️ 0.106 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.552 KiB | 118.441 KiB | 117.152 KiB | ⬇️ 1.289 KiB |

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

| | v3.0.3 | v3.0.4 | Delta |
|---|---|---|---|
| svgo.browser.js | 651.7 kB | 656.9 kB | ⬆️  5.2 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:eyJjcmVhdGVkSW5WZXIiOiIzNy41OS44IiwidXBkYXRlZEluVmVyIjoiMzcuNTkuOCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Philipp Gfeller <philipp.gfeller@post.ch>
sungik-choi added a commit to channel-io/bezier-react that referenced this pull request Nov 22, 2023
[![Mend Renovate logo
banner](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.0.3` -> `3.0.4`](https://renovatebot.com/diffs/npm/svgo/3.0.3/3.0.4)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/svgo/3.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/svgo/3.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/svgo/3.0.3/3.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/svgo/3.0.3/3.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

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

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

Includes various bug fixes for existing plugins and a new optimization.
Also splits `removeXMLNS`, which removed XLink, into two separate
plugins, `removeXMLNS` and `removeXlink`.

#### What's Changed

##### Default Behavior

- **Remove XML Namespace**, no longer removes the XLink (`xmlns:xlink`)
namespace. If that is desirable, you should enable the new [Remove
XLink](https://svgo.dev/docs/plugins/remove-xlink/) (`removeXlink`)
plugin, which does more while being safer. By
[@&#8203;TrySound](https://togithub.com/TrySound) and
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1535

##### Bug Fixes

- **Convert Path Commands**, ignore instances where transform applied
via style tag. By [@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1830
- **Inline Styles**, inline properties with the same specificity in the
order that they appear in the stylesheet. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1831
- **Inline Styles**, don't remove class or id from node if it's
traversed in another CSS selector. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1832
and
[svg/svgo#1836
- Don't trim
[`pre`](https://developer.mozilla.org/docs/Web/HTML/Element/pre)
elements in
[`foreignObject`](https://developer.mozilla.org/docs/Web/SVG/Element/foreignObject).
By [@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1796
- Don't crash when encountering
[`@-webkit-keyframes`](https://webkit.org/blog/324/css-animation-2/) in
`<style>` node. By [@&#8203;SethFalco](https://togithub.com/SethFalco)
in
[svg/svgo#1826

##### SVG Optimization

- **Convert Path Commands**, convert to `z` command if going back to
initial position, or drop `z` if redundant. By
[@&#8203;KTibow](https://togithub.com/KTibow) in
[svg/svgo#1822
- **Inline Styles**, when inlining a CSS property that's already
declared in a presentation attribute of the node, drop the attribute. By
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1829
- **Remove XLink**, new plugin that removes the XLink (`xmlns:xlink`)
namespace and migrates from XLink attributes to the SVG 2 equivalent.
Disabled by default. By
[@&#8203;TrySound](https://togithub.com/TrySound) and
[@&#8203;SethFalco](https://togithub.com/SethFalco) in
[svg/svgo#1535

#### Metrics

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

| SVG | Original | v3.0.3 | v3.0.4 | Delta |
|---|---|---|---|---|
| [Arch Linux Logo](https://archlinux.org/art/) | 9.529 KiB | 4.738 KiB
| 4.735 KiB | ⬇️ 0.003 KiB |
|
[Blobs](https://gitlab.gnome.org/GNOME/gnome-backgrounds/-/blob/main/backgrounds/blobs-d.svg)
| 50.45 KiB | 42.949 KiB | 42.949 KiB | |
| [Isometric
Madness](https://inkscape.org/~Denis_Kuznetsky/%E2%98%85isometric-madness)
| 869.034 KiB | 550.699 KiB | 550.593 KiB | ⬇️ 0.106 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.552 KiB | 118.441 KiB | 117.152 KiB | ⬇️ 1.289 KiB |

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

| | v3.0.3 | v3.0.4 | Delta |
|---|---|---|---|
| svgo.browser.js | 651.7 kB | 656.9 kB | ⬆️  5.2 kB |

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on Monday after 10am before 7pm" in
timezone Asia/Seoul, 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/channel-io/bezier-react).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy41OS44IiwidXBkYXRlZEluVmVyIjoiMzcuNTkuOCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ed Sungik Choi <sungik.dev@gmail.com>
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.

Convert lines home to z
2 participants