Skip to content
New issue

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

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

Already on GitHub? # to your account

feat(removeUnknownAndDefaults): apply to xml declarations #1872

Merged
merged 1 commit into from
Dec 7, 2023

Conversation

SethFalco
Copy link
Member

@SethFalco SethFalco commented Dec 6, 2023

As standalone="no" is the default value in the XML declaration, it can be safely removed. I've separated this into a separate parameter of the removeUnknownsAndDefaults plugin, and is enabled by default.

See: https://www.w3.org/TR/REC-xml/#sec-rmd

Our XML parser doesn't parse the individual properties in the XML declaration, so we just get the full string of all values. Rather than parse it myself, I opted to use a regex to pull out the sole value we're interested in, since it's the only one with a default.

We can revise this in future if we switch library, for example, I know with txml we could do a much cleaner implementation:

> const txml = require('txml')
undefined
> txml.parse(`<?xml version="1.0"?><svg></svg>`)[0]
{ tagName: '?xml', attributes: { version: '1.0' }, children: [] }

The regex would do the following conversions:

<?xml version="1.0" standalone="no"?>
→
<?xml version="1.0"?>

<?xml standalone='no' version='1.0'?>
→
<?xml version='1.0'?>

<?xml encoding="utf-8" standalone="no" version="1.0"?>
→
<?xml encoding="utf-8" version="1.0"?>

Chores

  • Clarify in the docs that removing the XML declaration can mess with MIME-type checking.
  • Change some types from Array<…> to …[].

Related

@SethFalco SethFalco merged commit 8390add into svg:main Dec 7, 2023
10 checks passed
@SethFalco SethFalco deleted the fix/836 branch December 10, 2023 00:46
nono referenced this pull request in cozy/cozy-stack Dec 11, 2023
[![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://github.com/svg/svgo)) |
[`3.0.5` -> `3.1.0`](https://renovatebot.com/diffs/npm/svgo/3.0.5/3.1.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/svgo/3.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/svgo/3.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/svgo/3.0.5/3.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/svgo/3.0.5/3.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

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

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

#### What's Changed

##### Bug Fixes

- [**Prefix IDs**](https://svgo.dev/docs/plugins/prefix-ids/), correctly
prefix IDs when `<style>` tag contains XML comments. By
[@&#8203;john-neptune](https://github.com/john-neptune) in
[https://github.com/svg/svgo/pull/1736](https://github.com/svg/svgo/pull/1736)
- [**Remove Hidden
Elements**](https://svgo.dev/docs/plugins/remove-hidden-elems/), improve
handling of definitions (`<defs>`), namely when `<defs>` are defined at
the end of the document. By
[@&#8203;KTibow](https://github.com/KTibow) in
[https://github.com/svg/svgo/pull/1879](https://github.com/svg/svgo/pull/1879)
- [**Cleanup Enable
Background**](https://svgo.dev/docs/plugins/cleanup-enable-background/),
clean up inline-styles too. By
[@&#8203;SethFalco](https://github.com/SethFalco) in
[https://github.com/svg/svgo/pull/1866](https://github.com/svg/svgo/pull/1866)
- [**Cleanup IDs**](https://svgo.dev/docs/plugins/cleanup-ids/), handle
URI encoded references properly. By
[@&#8203;SethFalco](https://github.com/SethFalco) in
[https://github.com/svg/svgo/pull/1880](https://github.com/svg/svgo/pull/1880)
- [**Inline Styles**](https://svgo.dev/docs/plugins/inline-styles/), no
longer crashes on non-inlined selectors with a pseudo-class. By
[@&#8203;SethFalco](https://github.com/SethFalco) in
[https://github.com/svg/svgo/pull/1865](https://github.com/svg/svgo/pull/1865)
- Improve handling of URL references in reference attributes
(`url('#a')`) across various plugins. By
[@&#8203;SethFalco](https://github.com/SethFalco) in
[https://github.com/svg/svgo/pull/1881](https://github.com/svg/svgo/pull/1881)

##### SVG Optimization

- [**Remove Unknowns and
Defaults**](https://svgo.dev/docs/plugins/remove-unknowns-and-defaults/),
now removes defaults in XML declarations too, enabled by default and can
be toggled with `defaultMarkupDeclarations`. By
[@&#8203;SethFalco](https://github.com/SethFalco) in
[https://github.com/svg/svgo/pull/1872](https://github.com/svg/svgo/pull/1872)

#### Metrics

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

| SVG | Original | v3.0.5 | v3.1.0 | Delta |
|---|---|---|---|---|
| [Arch Linux Logo](https://archlinux.org/art/) | 9.529 KiB | 4.608 KiB
| 4.162 KiB | ⬇️ 0.446 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.153 KiB | 550.153 KiB | |
| [tldr-pages
Banner](https://github.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 | 117.146 KiB | 116 KiB | ⬇️ 1.146 KiB |

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

| | v3.0.5 | v3.1.0 | Delta |
|---|---|---|---|
| svgo.browser.js | 657.5 kB | 660.9 kB | ⬆️ 3.4 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:eyJjcmVhdGVkSW5WZXIiOiIzNy44Ny4yIiwidXBkYXRlZEluVmVyIjoiMzcuODcuMiIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Option to remove standalone="no" from XML declaration
1 participant