{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":674782591,"defaultBranch":"main","name":"hdx","ownerLogin":"keithamus","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-08-04T19:08:33.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/118266?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1718208523.0","currentOid":""},"activityList":{"items":[{"before":"1e4833a7cf889c2f5d7d937548540a453db3ae2f","after":null,"ref":"refs/heads/renovate/11ty-eleventy-plugin-rss-2.x","pushedAt":"2024-06-12T17:13:05.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"}},{"before":"b32b6204b12dd84afd0331e6624e8952242450bc","after":"c7c2ae58e702d7e6cc489ecba9da02f6dd5cae8c","ref":"refs/heads/main","pushedAt":"2024-06-12T17:13:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"},"commit":{"message":"Update dependency @11ty/eleventy-plugin-rss to v2 (#25)\n\n[![Mend\r\nRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)\r\n\r\nThis PR contains the following updates:\r\n\r\n| Package | Change | Age | Adoption | Passing | Confidence |\r\n|---|---|---|---|---|---|\r\n| [@11ty/eleventy-plugin-rss](https://www.11ty.dev/docs/plugins/rss/)\r\n([source](https://togithub.com/11ty/eleventy-plugin-rss)) | [`^1.2.0` ->\r\n`^2.0.0`](https://renovatebot.com/diffs/npm/@11ty%2feleventy-plugin-rss/1.2.0/2.0.0)\r\n|\r\n[![age](https://developer.mend.io/api/mc/badges/age/npm/@11ty%2feleventy-plugin-rss/2.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@11ty%2feleventy-plugin-rss/2.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@11ty%2feleventy-plugin-rss/1.2.0/2.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@11ty%2feleventy-plugin-rss/1.2.0/2.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n\r\n---\r\n\r\n### Release Notes\r\n\r\n
\r\n11ty/eleventy-plugin-rss\r\n(@​11ty/eleventy-plugin-rss)\r\n\r\n###\r\n[`v2.0.0`](https://togithub.com/11ty/eleventy-plugin-rss/compare/v1.2.0...v2.0.0)\r\n\r\n[Compare\r\nSource](https://togithub.com/11ty/eleventy-plugin-rss/compare/v1.2.0...v2.0.0)\r\n\r\n
\r\n\r\n---\r\n\r\n### Configuration\r\n\r\n๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined),\r\nAutomerge - At any time (no schedule defined).\r\n\r\n๐Ÿšฆ **Automerge**: Disabled by config. Please merge this manually once you\r\nare satisfied.\r\n\r\nโ™ป **Rebasing**: Whenever PR becomes conflicted, or you tick the\r\nrebase/retry checkbox.\r\n\r\n๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update\r\nagain.\r\n\r\n---\r\n\r\n- [ ] If you want to rebase/retry this PR, check\r\nthis box\r\n\r\n---\r\n\r\nThis PR has been generated by [Mend\r\nRenovate](https://www.mend.io/free-developer-tools/renovate/). View\r\nrepository job log\r\n[here](https://developer.mend.io/github/keithamus/hdx).\r\n\r\n\r\n\r\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Update dependency @11ty/eleventy-plugin-rss to v2 (#25)"}},{"before":null,"after":"1e4833a7cf889c2f5d7d937548540a453db3ae2f","ref":"refs/heads/renovate/11ty-eleventy-plugin-rss-2.x","pushedAt":"2024-06-12T16:08:43.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"renovate[bot]","name":null,"path":"/apps/renovate","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/2740?s=80&v=4"},"commit":{"message":"Update dependency @11ty/eleventy-plugin-rss to v2","shortMessageHtmlLink":"Update dependency @11ty/eleventy-plugin-rss to v2"}},{"before":"16f86e765869fc49c4f5545f84e208eb3fcd451e","after":null,"ref":"refs/heads/renovate/dependencies","pushedAt":"2024-06-10T09:02:03.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"}},{"before":"4613414bafaa1919f763be2ed4264a9ac9e6b755","after":"b32b6204b12dd84afd0331e6624e8952242450bc","ref":"refs/heads/main","pushedAt":"2024-06-10T09:02:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"},"commit":{"message":"Update Rust crate clap to v4.5.6 (#24)\n\n[![Mend\r\nRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)\r\n\r\nThis PR contains the following updates:\r\n\r\n| Package | Type | Update | Change |\r\n|---|---|---|---|\r\n| [clap](https://togithub.com/clap-rs/clap) | workspace.dependencies |\r\npatch | `4.5.4` -> `4.5.6` |\r\n\r\n---\r\n\r\n### Release Notes\r\n\r\n
\r\nclap-rs/clap (clap)\r\n\r\n###\r\n[`v4.5.6`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#456---2024-06-06)\r\n\r\n[Compare\r\nSource](https://togithub.com/clap-rs/clap/compare/v4.5.5...v4.5.6)\r\n\r\n###\r\n[`v4.5.5`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#455---2024-06-06)\r\n\r\n[Compare\r\nSource](https://togithub.com/clap-rs/clap/compare/v4.5.4...v4.5.5)\r\n\r\n##### Fixes\r\n\r\n- Allow `exclusive` to override `required_unless_present`,\r\n`required_unless_present_any`, `required_unless_present_all`\r\n\r\n
\r\n\r\n---\r\n\r\n### Configuration\r\n\r\n๐Ÿ“… **Schedule**: Branch creation - \"before 9am on monday\" (UTC),\r\nAutomerge - At any time (no schedule defined).\r\n\r\n๐Ÿšฆ **Automerge**: Disabled by config. Please merge this manually once you\r\nare satisfied.\r\n\r\nโ™ป **Rebasing**: Whenever PR becomes conflicted, or you tick the\r\nrebase/retry checkbox.\r\n\r\n๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update\r\nagain.\r\n\r\n---\r\n\r\n- [ ] If you want to rebase/retry this PR, check\r\nthis box\r\n\r\n---\r\n\r\nThis PR has been generated by [Mend\r\nRenovate](https://www.mend.io/free-developer-tools/renovate/). View\r\nrepository job log\r\n[here](https://developer.mend.io/github/keithamus/hdx).\r\n\r\n\r\n\r\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Update Rust crate clap to v4.5.6 (#24)"}},{"before":null,"after":"16f86e765869fc49c4f5545f84e208eb3fcd451e","ref":"refs/heads/renovate/dependencies","pushedAt":"2024-06-10T00:05:49.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"renovate[bot]","name":null,"path":"/apps/renovate","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/2740?s=80&v=4"},"commit":{"message":"Update Rust crate clap to v4.5.6","shortMessageHtmlLink":"Update Rust crate clap to v4.5.6"}},{"before":"514f17e8aa83398b2834a938122a0f5d61f7e2fa","after":null,"ref":"refs/heads/renovate/dependencies","pushedAt":"2024-06-03T07:49:06.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"}},{"before":"a5124ebc3789dad291b10c4d7328536a90b91c31","after":"4613414bafaa1919f763be2ed4264a9ac9e6b755","ref":"refs/heads/main","pushedAt":"2024-06-03T07:49:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"},"commit":{"message":"Update Rust crate proc-macro2 to v1.0.85 (#23)\n\n[![Mend\r\nRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)\r\n\r\nThis PR contains the following updates:\r\n\r\n| Package | Type | Update | Change |\r\n|---|---|---|---|\r\n| [proc-macro2](https://togithub.com/dtolnay/proc-macro2) |\r\nworkspace.dependencies | patch | `1.0.84` -> `1.0.85` |\r\n\r\n---\r\n\r\n### Release Notes\r\n\r\n
\r\ndtolnay/proc-macro2 (proc-macro2)\r\n\r\n###\r\n[`v1.0.85`](https://togithub.com/dtolnay/proc-macro2/releases/tag/1.0.85)\r\n\r\n[Compare\r\nSource](https://togithub.com/dtolnay/proc-macro2/compare/1.0.84...1.0.85)\r\n\r\n- Mark some tests as only for 64-bit targets\r\n([#​463](https://togithub.com/dtolnay/proc-macro2/issues/463))\r\n\r\n
\r\n\r\n---\r\n\r\n### Configuration\r\n\r\n๐Ÿ“… **Schedule**: Branch creation - \"before 9am on monday\" (UTC),\r\nAutomerge - At any time (no schedule defined).\r\n\r\n๐Ÿšฆ **Automerge**: Disabled by config. Please merge this manually once you\r\nare satisfied.\r\n\r\nโ™ป **Rebasing**: Whenever PR becomes conflicted, or you tick the\r\nrebase/retry checkbox.\r\n\r\n๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update\r\nagain.\r\n\r\n---\r\n\r\n- [ ] If you want to rebase/retry this PR, check\r\nthis box\r\n\r\n---\r\n\r\nThis PR has been generated by [Mend\r\nRenovate](https://www.mend.io/free-developer-tools/renovate/). View\r\nrepository job log\r\n[here](https://developer.mend.io/github/keithamus/hdx).\r\n\r\n\r\n\r\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Update Rust crate proc-macro2 to v1.0.85 (#23)"}},{"before":null,"after":"514f17e8aa83398b2834a938122a0f5d61f7e2fa","ref":"refs/heads/renovate/dependencies","pushedAt":"2024-06-03T04:06:50.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"renovate[bot]","name":null,"path":"/apps/renovate","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/2740?s=80&v=4"},"commit":{"message":"Update Rust crate proc-macro2 to v1.0.85","shortMessageHtmlLink":"Update Rust crate proc-macro2 to v1.0.85"}},{"before":"ca2cd96fa7d1c55efc534ad9b4bc1c85c85d769c","after":null,"ref":"refs/heads/renovate/dependencies","pushedAt":"2024-05-27T18:24:56.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"}},{"before":"089482d1012adf9d11e9ed622252d1fa98f810af","after":"a5124ebc3789dad291b10c4d7328536a90b91c31","ref":"refs/heads/main","pushedAt":"2024-05-27T18:24:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"},"commit":{"message":"Update dependencies (#22)\n\n[![Mend\r\nRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)\r\n\r\nThis PR contains the following updates:\r\n\r\n| Package | Type | Update | Change |\r\n|---|---|---|---|\r\n| [proc-macro2](https://togithub.com/dtolnay/proc-macro2) |\r\nworkspace.dependencies | patch | `1.0.83` -> `1.0.84` |\r\n| [serde](https://serde.rs)\r\n([source](https://togithub.com/serde-rs/serde)) | workspace.dependencies\r\n| patch | `1.0.202` -> `1.0.203` |\r\n| [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies |\r\npatch | `2.0.65` -> `2.0.66` |\r\n\r\n---\r\n\r\n### Release Notes\r\n\r\n
\r\ndtolnay/proc-macro2 (proc-macro2)\r\n\r\n###\r\n[`v1.0.84`](https://togithub.com/dtolnay/proc-macro2/releases/tag/1.0.84)\r\n\r\n[Compare\r\nSource](https://togithub.com/dtolnay/proc-macro2/compare/1.0.83...1.0.84)\r\n\r\n- Documentation improvements\r\n([#​455](https://togithub.com/dtolnay/proc-macro2/issues/455),\r\nthanks\r\n[@​CensoredUsername](https://togithub.com/CensoredUsername))\r\n\r\n
\r\n\r\n
\r\nserde-rs/serde (serde)\r\n\r\n###\r\n[`v1.0.203`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.203)\r\n\r\n[Compare\r\nSource](https://togithub.com/serde-rs/serde/compare/v1.0.202...v1.0.203)\r\n\r\n- Documentation improvements\r\n([#​2747](https://togithub.com/serde-rs/serde/issues/2747))\r\n\r\n
\r\n\r\n
\r\ndtolnay/syn (syn)\r\n\r\n### [`v2.0.66`](https://togithub.com/dtolnay/syn/releases/tag/2.0.66)\r\n\r\n[Compare\r\nSource](https://togithub.com/dtolnay/syn/compare/2.0.65...2.0.66)\r\n\r\n- Allow braced structs when parsing ExprLet\r\n([#​1671](https://togithub.com/dtolnay/syn/issues/1671))\r\n\r\n
\r\n\r\n---\r\n\r\n### Configuration\r\n\r\n๐Ÿ“… **Schedule**: Branch creation - \"before 9am on monday\" (UTC),\r\nAutomerge - At any time (no schedule defined).\r\n\r\n๐Ÿšฆ **Automerge**: Disabled by config. Please merge this manually once you\r\nare satisfied.\r\n\r\nโ™ป **Rebasing**: Whenever PR becomes conflicted, or you tick the\r\nrebase/retry checkbox.\r\n\r\n๐Ÿ‘ป **Immortal**: This PR will be recreated if closed unmerged. Get\r\n[config help](https://togithub.com/renovatebot/renovate/discussions) if\r\nthat's undesired.\r\n\r\n---\r\n\r\n- [ ] If you want to rebase/retry this PR, check\r\nthis box\r\n\r\n---\r\n\r\nThis PR has been generated by [Mend\r\nRenovate](https://www.mend.io/free-developer-tools/renovate/). View\r\nrepository job log\r\n[here](https://developer.mend.io/github/keithamus/hdx).\r\n\r\n\r\n\r\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Update dependencies (#22)"}},{"before":null,"after":"ca2cd96fa7d1c55efc534ad9b4bc1c85c85d769c","ref":"refs/heads/renovate/dependencies","pushedAt":"2024-05-27T01:38:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"renovate[bot]","name":null,"path":"/apps/renovate","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/2740?s=80&v=4"},"commit":{"message":"Update dependencies","shortMessageHtmlLink":"Update dependencies"}},{"before":"1d7055f91d68dd8b99ddd1e7200dca4c3f380ef4","after":null,"ref":"refs/heads/renovate/dependencies","pushedAt":"2024-05-20T09:42:54.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"}},{"before":"9c76e7d203f65d27b76c5b4e58469e2351d645a4","after":"089482d1012adf9d11e9ed622252d1fa98f810af","ref":"refs/heads/main","pushedAt":"2024-05-20T09:42:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"},"commit":{"message":"Update dependencies (#21)\n\n[![Mend\r\nRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)\r\n\r\nThis PR contains the following updates:\r\n\r\n| Package | Type | Update | Change |\r\n|---|---|---|---|\r\n| [bitmask-enum](https://togithub.com/Lukas3674/rust-bitmask-enum) |\r\nworkspace.dependencies | patch | `2.2.3` -> `2.2.4` |\r\n| [insta](https://insta.rs/)\r\n([source](https://togithub.com/mitsuhiko/insta)) |\r\nworkspace.dependencies | minor | `1.38.0` -> `1.39.0` |\r\n| [proc-macro2](https://togithub.com/dtolnay/proc-macro2) |\r\nworkspace.dependencies | patch | `1.0.82` -> `1.0.83` |\r\n| [serde](https://serde.rs)\r\n([source](https://togithub.com/serde-rs/serde)) | workspace.dependencies\r\n| patch | `1.0.201` -> `1.0.202` |\r\n| [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies |\r\npatch | `2.0.63` -> `2.0.65` |\r\n| [thiserror](https://togithub.com/dtolnay/thiserror) |\r\nworkspace.dependencies | patch | `1.0.60` -> `1.0.61` |\r\n\r\n---\r\n\r\n### Release Notes\r\n\r\n
\r\nmitsuhiko/insta (insta)\r\n\r\n###\r\n[`v1.39.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#1390)\r\n\r\n[Compare\r\nSource](https://togithub.com/mitsuhiko/insta/compare/1.38.0...1.39.0)\r\n\r\n- Fixed a bug in `require_full_match`.\r\n[#​485](https://togithub.com/mitsuhiko/insta/issues/485)\r\n\r\n- Fixed a bug that caused snapshot and module names to sometimes be\r\ninaccurate.\r\n[#​483](https://togithub.com/mitsuhiko/insta/issues/483)\r\n\r\n- Insta will no longer error when removing snapshots that were already\r\nremoved. [#​484](https://togithub.com/mitsuhiko/insta/issues/484)\r\n\r\n- Added support for trailing commas in inline snapshots.\r\n[#​472](https://togithub.com/mitsuhiko/insta/issues/472)\r\n\r\n- Don't pass `--color` in all cases to `libtest` any more to work around\r\nlimitations\r\nwith custom test harnesses.\r\n[#​491](https://togithub.com/mitsuhiko/insta/issues/491)\r\n\r\n
\r\n\r\n
\r\ndtolnay/proc-macro2 (proc-macro2)\r\n\r\n###\r\n[`v1.0.83`](https://togithub.com/dtolnay/proc-macro2/releases/tag/1.0.83)\r\n\r\n[Compare\r\nSource](https://togithub.com/dtolnay/proc-macro2/compare/1.0.82...1.0.83)\r\n\r\n- Optimize the representation of `Ident`\r\n([#​462](https://togithub.com/dtolnay/proc-macro2/issues/462))\r\n\r\n
\r\n\r\n
\r\nserde-rs/serde (serde)\r\n\r\n###\r\n[`v1.0.202`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.202)\r\n\r\n[Compare\r\nSource](https://togithub.com/serde-rs/serde/compare/v1.0.201...v1.0.202)\r\n\r\n- Provide public access to RenameAllRules in serde_derive_internals\r\n([#​2743](https://togithub.com/serde-rs/serde/issues/2743))\r\n\r\n
\r\n\r\n
\r\ndtolnay/syn (syn)\r\n\r\n### [`v2.0.65`](https://togithub.com/dtolnay/syn/releases/tag/2.0.65)\r\n\r\n[Compare\r\nSource](https://togithub.com/dtolnay/syn/compare/2.0.64...2.0.65)\r\n\r\n- Optimize the implementation of `Fold` to compile faster\r\n([#​1666](https://togithub.com/dtolnay/syn/issues/1666),\r\n[#​1667](https://togithub.com/dtolnay/syn/issues/1667),\r\n[#​1668](https://togithub.com/dtolnay/syn/issues/1668))\r\n\r\n### [`v2.0.64`](https://togithub.com/dtolnay/syn/releases/tag/2.0.64)\r\n\r\n[Compare\r\nSource](https://togithub.com/dtolnay/syn/compare/2.0.63...2.0.64)\r\n\r\n- Support using ParseBuffer across `catch_unwind`\r\n([#​1646](https://togithub.com/dtolnay/syn/issues/1646))\r\n- Validate that the expression in a let-else ends in brace as required\r\nby rustc ([#​1648](https://togithub.com/dtolnay/syn/issues/1648),\r\n[#​1649](https://togithub.com/dtolnay/syn/issues/1649))\r\n- Legalize invalid const generic arguments by wrapping in braces\r\n([#​1654](https://togithub.com/dtolnay/syn/issues/1654),\r\n[#​1655](https://togithub.com/dtolnay/syn/issues/1655))\r\n- Fix some expression precedence edge cases involving `break` and\r\n`return` in loop headers\r\n([#​1656](https://togithub.com/dtolnay/syn/issues/1656))\r\n- Always print closure bodies with a brace when the closure has an\r\nexplicit return type\r\n([#​1658](https://togithub.com/dtolnay/syn/issues/1658))\r\n- Automatically insert necessary parentheses in ToTokens for Expr when\r\nrequired by expression precedence\r\n([#​1659](https://togithub.com/dtolnay/syn/issues/1659))\r\n- Support struct literal syntax in match guard expressions\r\n([#​1662](https://togithub.com/dtolnay/syn/issues/1662))\r\n\r\n
\r\n\r\n
\r\ndtolnay/thiserror (thiserror)\r\n\r\n###\r\n[`v1.0.61`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.61)\r\n\r\n[Compare\r\nSource](https://togithub.com/dtolnay/thiserror/compare/1.0.60...1.0.61)\r\n\r\n- Use `core::fmt` and `core::panic` to facilitate `error_in_core`\r\nsupport\r\n([#​299](https://togithub.com/dtolnay/thiserror/issues/299),\r\nthanks [@​jordens](https://togithub.com/jordens))\r\n\r\n
\r\n\r\n---\r\n\r\n### Configuration\r\n\r\n๐Ÿ“… **Schedule**: Branch creation - \"before 9am on monday\" (UTC),\r\nAutomerge - At any time (no schedule defined).\r\n\r\n๐Ÿšฆ **Automerge**: Disabled by config. Please merge this manually once you\r\nare satisfied.\r\n\r\nโ™ป **Rebasing**: Whenever PR becomes conflicted, or you tick the\r\nrebase/retry checkbox.\r\n\r\n๐Ÿ‘ป **Immortal**: This PR will be recreated if closed unmerged. Get\r\n[config help](https://togithub.com/renovatebot/renovate/discussions) if\r\nthat's undesired.\r\n\r\n---\r\n\r\n- [ ] If you want to rebase/retry this PR, check\r\nthis box\r\n\r\n---\r\n\r\nThis PR has been generated by [Mend\r\nRenovate](https://www.mend.io/free-developer-tools/renovate/). View\r\nrepository job log\r\n[here](https://developer.mend.io/github/keithamus/hdx).\r\n\r\n\r\n\r\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Update dependencies (#21)"}},{"before":null,"after":"1d7055f91d68dd8b99ddd1e7200dca4c3f380ef4","ref":"refs/heads/renovate/dependencies","pushedAt":"2024-05-20T02:45:09.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"renovate[bot]","name":null,"path":"/apps/renovate","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/2740?s=80&v=4"},"commit":{"message":"Update dependencies","shortMessageHtmlLink":"Update dependencies"}},{"before":"f77600d7298ff9c0ab258b090a3520555b6799d3","after":null,"ref":"refs/heads/renovate/dependencies","pushedAt":"2024-05-13T07:12:15.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"}},{"before":"bd2837964d2e28ba62fe99b83ccc8218e5f422b4","after":"9c76e7d203f65d27b76c5b4e58469e2351d645a4","ref":"refs/heads/main","pushedAt":"2024-05-13T07:12:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"},"commit":{"message":"Update dependencies (#20)\n\n[![Mend\r\nRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)\r\n\r\nThis PR contains the following updates:\r\n\r\n| Package | Change | Age | Adoption | Passing | Confidence | Type |\r\nUpdate |\r\n|---|---|---|---|---|---|---|---|\r\n| [esbuild](https://togithub.com/evanw/esbuild) | [`^0.20.0` ->\r\n`^0.21.0`](https://renovatebot.com/diffs/npm/esbuild/0.20.2/0.21.2) |\r\n[![age](https://developer.mend.io/api/mc/badges/age/npm/esbuild/0.21.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/esbuild/0.21.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/esbuild/0.20.2/0.21.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/esbuild/0.20.2/0.21.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n| devDependencies | minor |\r\n| [proc-macro2](https://togithub.com/dtolnay/proc-macro2) | `1.0.81` ->\r\n`1.0.82` |\r\n[![age](https://developer.mend.io/api/mc/badges/age/crate/proc-macro2/1.0.82?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/proc-macro2/1.0.82?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/proc-macro2/1.0.81/1.0.82?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/proc-macro2/1.0.81/1.0.82?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n| workspace.dependencies | patch |\r\n| [serde](https://serde.rs)\r\n([source](https://togithub.com/serde-rs/serde)) | `1.0.200` -> `1.0.201`\r\n|\r\n[![age](https://developer.mend.io/api/mc/badges/age/crate/serde/1.0.201?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/serde/1.0.201?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/serde/1.0.200/1.0.201?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/serde/1.0.200/1.0.201?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n| workspace.dependencies | patch |\r\n| [serde_json](https://togithub.com/serde-rs/json) | `1.0.116` ->\r\n`1.0.117` |\r\n[![age](https://developer.mend.io/api/mc/badges/age/crate/serde_json/1.0.117?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/serde_json/1.0.117?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/serde_json/1.0.116/1.0.117?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/serde_json/1.0.116/1.0.117?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n| workspace.dependencies | patch |\r\n| [syn](https://togithub.com/dtolnay/syn) | `2.0.60` -> `2.0.63` |\r\n[![age](https://developer.mend.io/api/mc/badges/age/crate/syn/2.0.63?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/syn/2.0.63?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/syn/2.0.60/2.0.63?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/syn/2.0.60/2.0.63?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n| workspace.dependencies | patch |\r\n| [thiserror](https://togithub.com/dtolnay/thiserror) | `1.0.59` ->\r\n`1.0.60` |\r\n[![age](https://developer.mend.io/api/mc/badges/age/crate/thiserror/1.0.60?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/thiserror/1.0.60?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/thiserror/1.0.59/1.0.60?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/thiserror/1.0.59/1.0.60?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n| workspace.dependencies | patch |\r\n\r\n---\r\n\r\n### Release Notes\r\n\r\n
\r\nevanw/esbuild (esbuild)\r\n\r\n###\r\n[`v0.21.2`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0212)\r\n\r\n[Compare\r\nSource](https://togithub.com/evanw/esbuild/compare/v0.21.1...v0.21.2)\r\n\r\n- Correct `this` in field and accessor decorators\r\n([#​3761](https://togithub.com/evanw/esbuild/issues/3761))\r\n\r\nThis release changes the value of `this` in initializers for class field\r\nand accessor decorators from the module-level `this` value to the\r\nappropriate `this` value for the decorated element (either the class or\r\nthe instance). It was previously incorrect due to lack of test coverage.\r\nHere's an example of a decorator that doesn't work without this change:\r\n\r\n ```js\r\n const dec = () => function() { this.bar = true }\r\n class Foo { @​dec static foo }\r\n console.log(Foo.bar) // Should be \"true\"\r\n ```\r\n\r\n- Allow `es2023` as a target environment\r\n([#​3762](https://togithub.com/evanw/esbuild/issues/3762))\r\n\r\nTypeScript recently [added\r\n`es2023`](https://togithub.com/microsoft/TypeScript/pull/58140) as a\r\ncompilation target, so esbuild now supports this too. There is no\r\ndifference between a target of `es2022` and `es2023` as far as esbuild\r\nis concerned since the 2023 edition of JavaScript doesn't introduce any\r\nnew syntax features.\r\n\r\n###\r\n[`v0.21.1`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0211)\r\n\r\n[Compare\r\nSource](https://togithub.com/evanw/esbuild/compare/v0.21.0...v0.21.1)\r\n\r\n- Fix a regression with `--keep-names`\r\n([#​3756](https://togithub.com/evanw/esbuild/issues/3756))\r\n\r\nThe previous release introduced a regression with the `--keep-names`\r\nsetting and object literals with `get`/`set` accessor methods, in which\r\ncase the generated code contained syntax errors. This release fixes the\r\nregression:\r\n\r\n ```js\r\n // Original code\r\n x = { get y() {} }\r\n\r\n // Output from version 0.21.0 (with --keep-names)\r\n x = { get y: /* @​__PURE__ */ __name(function() {\r\n }, \"y\") };\r\n\r\n // Output from this version (with --keep-names)\r\n x = { get y() {\r\n } };\r\n ```\r\n\r\n###\r\n[`v0.21.0`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0210)\r\n\r\n[Compare\r\nSource](https://togithub.com/evanw/esbuild/compare/v0.20.2...v0.21.0)\r\n\r\nThis release doesn't contain any deliberately-breaking changes. However,\r\nit contains a very complex new feature and while all of esbuild's tests\r\npass, I would not be surprised if an important edge case turns out to be\r\nbroken. So I'm releasing this as a breaking change release to avoid\r\ncausing any trouble. As usual, make sure to test your code when you\r\nupgrade.\r\n\r\n- Implement the JavaScript decorators proposal\r\n([#​104](https://togithub.com/evanw/esbuild/issues/104))\r\n\r\nWith this release, esbuild now contains an implementation of the\r\nupcoming [JavaScript decorators\r\nproposal](https://togithub.com/tc39/proposal-decorators). This is the\r\nsame feature that shipped in [TypeScript\r\n5.0](https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/#decorators)\r\nand has been highly-requested on esbuild's issue tracker. You can read\r\nmore about them in that blog post and in this other (now slightly\r\noutdated) extensive blog post here:\r\nhttps://2ality.com/2022/10/javascript-decorators.html. Here's a quick\r\nexample:\r\n\r\n ```js\r\n const log = (fn, context) => function() {\r\n console.log(`before ${context.name}`)\r\n const it = fn.apply(this, arguments)\r\n console.log(`after ${context.name}`)\r\n return it\r\n }\r\n\r\n class Foo {\r\n @​log static foo() {\r\n console.log('in foo')\r\n }\r\n }\r\n\r\n // Logs \"before foo\", \"in foo\", \"after foo\"\r\n Foo.foo()\r\n ```\r\n\r\nNote that this feature is different than the existing \"TypeScript\r\nexperimental decorators\" feature that esbuild already implements. It\r\nuses similar syntax but behaves very differently, and the two are not\r\ncompatible (although it's sometimes possible to write decorators that\r\nwork with both). TypeScript experimental decorators will still be\r\nsupported by esbuild going forward as they have been around for a long\r\ntime, are very widely used, and let you do certain things that are not\r\npossible with JavaScript decorators (such as decorating function\r\nparameters). By default esbuild will parse and transform JavaScript\r\ndecorators, but you can tell esbuild to parse and transform TypeScript\r\nexperimental decorators instead by setting `\"experimentalDecorators\":\r\ntrue` in your `tsconfig.json` file.\r\n\r\nProbably at least half of the work for this feature went into creating a\r\ntest suite that exercises many of the proposal's edge cases:\r\nhttps://github.com/evanw/decorator-tests. It has given me a reasonable\r\nlevel of confidence that esbuild's initial implementation is acceptable.\r\nHowever, I don't have access to a significant sample of real code that\r\nuses JavaScript decorators. If you're currently using JavaScript\r\ndecorators in a real code base, please try out esbuild's implementation\r\nand let me know if anything seems off.\r\n\r\n **โš ๏ธ WARNING โš ๏ธ**\r\n\r\nThis proposal has been in the works for a very long time (work began\r\naround 10 years ago in 2014) and it is finally getting close to becoming\r\npart of the JavaScript language. However, it's still a work in progress\r\nand isn't a part of JavaScript yet, so keep in mind that any code that\r\nuses JavaScript decorators may need to be updated as the feature\r\ncontinues to evolve. The decorators proposal is pretty close to its\r\nfinal form but it can and likely will undergo some small behavioral\r\nadjustments before it ends up becoming a part of the standard. If/when\r\nthat happens, I will update esbuild's implementation to match the\r\nspecification. I will not be supporting old versions of the\r\nspecification.\r\n\r\n- Optimize the generated code for private methods\r\n\r\nPreviously when lowering private methods for old browsers, esbuild would\r\ngenerate one `WeakSet` for each private method. This mirrors similar\r\nlogic for generating one `WeakSet` for each private field. Using a\r\nseparate `WeakMap` for private fields is necessary as their assignment\r\ncan be observable:\r\n\r\n ```js\r\n let it\r\n class Bar {\r\n constructor() {\r\n it = this\r\n }\r\n }\r\n class Foo extends Bar {\r\n #x = 1\r\n #y = null.foo\r\n static check() {\r\n console.log(#x in it, #y in it)\r\n }\r\n }\r\n try { new Foo } catch {}\r\n Foo.check()\r\n ```\r\n\r\nThis prints `true false` because this partially-initialized instance has\r\n`#x` but not `#y`. In other words, it's not true that all class\r\ninstances will always have all of their private fields. However, the\r\nassignment of private methods to a class instance is not observable. In\r\nother words, it's true that all class instances will always have all of\r\ntheir private methods. This means esbuild can lower private methods into\r\ncode where all methods share a single `WeakSet`, which is smaller,\r\nfaster, and uses less memory. Other JavaScript processing tools such as\r\nthe TypeScript compiler already make this optimization. Here's what this\r\nchange looks like:\r\n\r\n ```js\r\n // Original code\r\n class Foo {\r\n #x() { return this.#x() }\r\n #y() { return this.#y() }\r\n #z() { return this.#z() }\r\n }\r\n\r\n // Old output (--supported:class-private-method=false)\r\n var _x, x_fn, _y, y_fn, _z, z_fn;\r\n class Foo {\r\n constructor() {\r\n __privateAdd(this, _x);\r\n __privateAdd(this, _y);\r\n __privateAdd(this, _z);\r\n }\r\n }\r\n _x = new WeakSet();\r\n x_fn = function() {\r\n return __privateMethod(this, _x, x_fn).call(this);\r\n };\r\n _y = new WeakSet();\r\n y_fn = function() {\r\n return __privateMethod(this, _y, y_fn).call(this);\r\n };\r\n _z = new WeakSet();\r\n z_fn = function() {\r\n return __privateMethod(this, _z, z_fn).call(this);\r\n };\r\n\r\n // New output (--supported:class-private-method=false)\r\n var _Foo_instances, x_fn, y_fn, z_fn;\r\n class Foo {\r\n constructor() {\r\n __privateAdd(this, _Foo_instances);\r\n }\r\n }\r\n _Foo_instances = new WeakSet();\r\n x_fn = function() {\r\n return __privateMethod(this, _Foo_instances, x_fn).call(this);\r\n };\r\n y_fn = function() {\r\n return __privateMethod(this, _Foo_instances, y_fn).call(this);\r\n };\r\n z_fn = function() {\r\n return __privateMethod(this, _Foo_instances, z_fn).call(this);\r\n };\r\n ```\r\n\r\n- Fix an obscure bug with lowering class members with computed property\r\nkeys\r\n\r\nWhen class members that use newer syntax features are transformed for\r\nolder target environments, they sometimes need to be relocated. However,\r\ncare must be taken to not reorder any side effects caused by computed\r\nproperty keys. For example, the following code must evaluate `a()` then\r\n`b()` then `c()`:\r\n\r\n ```js\r\n class Foo {\r\n [a()]() {}\r\n [b()];\r\n static { c() }\r\n }\r\n ```\r\n\r\nPreviously esbuild did this by shifting the computed property key\r\n*forward* to the next spot in the evaluation order. Classes evaluate all\r\ncomputed keys first and then all static class elements, so if the last\r\ncomputed key needs to be shifted, esbuild previously inserted a static\r\nblock at start of the class body, ensuring it came before all other\r\nstatic class elements:\r\n\r\n ```js\r\n var _a;\r\n class Foo {\r\n constructor() {\r\n __publicField(this, _a);\r\n }\r\n static {\r\n _a = b();\r\n }\r\n [a()]() {\r\n }\r\n static {\r\n c();\r\n }\r\n }\r\n ```\r\n\r\nHowever, this could cause esbuild to accidentally generate a syntax\r\nerror if the computed property key contains code that isn't allowed in a\r\nstatic block, such as an `await` expression. With this release, esbuild\r\nfixes this problem by shifting the computed property key *backward* to\r\nthe previous spot in the evaluation order instead, which may push it\r\ninto the `extends` clause or even before the class itself:\r\n\r\n ```js\r\n // Original code\r\n class Foo {\r\n [a()]() {}\r\n [await b()];\r\n static { c() }\r\n }\r\n\r\n // Old output (with --supported:class-field=false)\r\n var _a;\r\n class Foo {\r\n constructor() {\r\n __publicField(this, _a);\r\n }\r\n static {\r\n _a = await b();\r\n }\r\n [a()]() {\r\n }\r\n static {\r\n c();\r\n }\r\n }\r\n\r\n // New output (with --supported:class-field=false)\r\n var _a, _b;\r\n class Foo {\r\n constructor() {\r\n __publicField(this, _a);\r\n }\r\n [(_b = a(), _a = await b(), _b)]() {\r\n }\r\n static {\r\n c();\r\n }\r\n }\r\n ```\r\n\r\n- Fix some `--keep-names` edge cases\r\n\r\nThe [`NamedEvaluation` syntax-directed\r\noperation](https://tc39.es/ecma262/#sec-runtime-semantics-namedevaluation)\r\nin the JavaScript specification gives certain anonymous expressions a\r\n`name` property depending on where they are in the syntax tree. For\r\nexample, the following initializers convey a `name` value:\r\n\r\n ```js\r\n var foo = function() {}\r\n var bar = class {}\r\n console.log(foo.name, bar.name)\r\n ```\r\n\r\nWhen you enable esbuild's `--keep-names` setting, esbuild generates\r\nadditional code to represent this `NamedEvaluation` operation so that\r\nthe value of the `name` property persists even when the identifiers are\r\nrenamed (e.g. due to minification).\r\n\r\nHowever, I recently learned that esbuild's implementation of\r\n`NamedEvaluation` is missing a few cases. Specifically esbuild was\r\nmissing property definitions, class initializers, logical-assignment\r\noperators. These cases should now all be handled:\r\n\r\n ```js\r\n var obj = { foo: function() {} }\r\n class Foo0 { foo = function() {} }\r\n class Foo1 { static foo = function() {} }\r\n class Foo2 { accessor foo = function() {} }\r\n class Foo3 { static accessor foo = function() {} }\r\n foo ||= function() {}\r\n foo &&= function() {}\r\n foo ??= function() {}\r\n ```\r\n\r\n
\r\n\r\n
\r\ndtolnay/proc-macro2 (proc-macro2)\r\n\r\n###\r\n[`v1.0.82`](https://togithub.com/dtolnay/proc-macro2/releases/tag/1.0.82)\r\n\r\n[Compare\r\nSource](https://togithub.com/dtolnay/proc-macro2/compare/1.0.81...1.0.82)\r\n\r\n- Resolve unexpected_cfgs warning\r\n([#​456](https://togithub.com/dtolnay/proc-macro2/issues/456))\r\n\r\n
\r\n\r\n
\r\nserde-rs/serde (serde)\r\n\r\n###\r\n[`v1.0.201`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.201)\r\n\r\n[Compare\r\nSource](https://togithub.com/serde-rs/serde/compare/v1.0.200...v1.0.201)\r\n\r\n- Resolve unexpected_cfgs warning\r\n([#​2737](https://togithub.com/serde-rs/serde/issues/2737))\r\n\r\n
\r\n\r\n
\r\nserde-rs/json (serde_json)\r\n\r\n###\r\n[`v1.0.117`](https://togithub.com/serde-rs/json/releases/tag/v1.0.117)\r\n\r\n[Compare\r\nSource](https://togithub.com/serde-rs/json/compare/v1.0.116...v1.0.117)\r\n\r\n- Resolve unexpected_cfgs warning\r\n([#​1130](https://togithub.com/serde-rs/json/issues/1130))\r\n\r\n
\r\n\r\n
\r\ndtolnay/syn (syn)\r\n\r\n### [`v2.0.63`](https://togithub.com/dtolnay/syn/releases/tag/2.0.63)\r\n\r\n[Compare\r\nSource](https://togithub.com/dtolnay/syn/compare/2.0.62...2.0.63)\r\n\r\n- Parse and print long if-else-if chains without reliance on deep\r\nrecursion to avoid overflowing stack\r\n([#​1644](https://togithub.com/dtolnay/syn/issues/1644),\r\n[#​1645](https://togithub.com/dtolnay/syn/issues/1645))\r\n\r\n### [`v2.0.62`](https://togithub.com/dtolnay/syn/releases/tag/2.0.62)\r\n\r\n[Compare\r\nSource](https://togithub.com/dtolnay/syn/compare/2.0.61...2.0.62)\r\n\r\n- Reject invalid unparenthesized range and comparison operator\r\nexpressions\r\n([#​1642](https://togithub.com/dtolnay/syn/issues/1642),\r\n[#​1643](https://togithub.com/dtolnay/syn/issues/1643))\r\n\r\n### [`v2.0.61`](https://togithub.com/dtolnay/syn/releases/tag/2.0.61)\r\n\r\n[Compare\r\nSource](https://togithub.com/dtolnay/syn/compare/2.0.60...2.0.61)\r\n\r\n- Check for legal binding name in the ident of Pat::Ident\r\n([#​1627](https://togithub.com/dtolnay/syn/issues/1627))\r\n- Resolve unexpected_cfgs warning\r\n([#​1635](https://togithub.com/dtolnay/syn/issues/1635))\r\n\r\n
\r\n\r\n
\r\ndtolnay/thiserror (thiserror)\r\n\r\n###\r\n[`v1.0.60`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.60)\r\n\r\n[Compare\r\nSource](https://togithub.com/dtolnay/thiserror/compare/1.0.59...1.0.60)\r\n\r\n- Resolve unexpected_cfgs warning\r\n([#​298](https://togithub.com/dtolnay/thiserror/issues/298))\r\n\r\n
\r\n\r\n---\r\n\r\n### Configuration\r\n\r\n๐Ÿ“… **Schedule**: Branch creation - \"before 9am on monday\" (UTC),\r\nAutomerge - At any time (no schedule defined).\r\n\r\n๐Ÿšฆ **Automerge**: Disabled by config. Please merge this manually once you\r\nare satisfied.\r\n\r\nโ™ป **Rebasing**: Whenever PR becomes conflicted, or you tick the\r\nrebase/retry checkbox.\r\n\r\n๐Ÿ‘ป **Immortal**: This PR will be recreated if closed unmerged. Get\r\n[config help](https://togithub.com/renovatebot/renovate/discussions) if\r\nthat's undesired.\r\n\r\n---\r\n\r\n- [ ] If you want to rebase/retry this PR, check\r\nthis box\r\n\r\n---\r\n\r\nThis PR has been generated by [Mend\r\nRenovate](https://www.mend.io/free-developer-tools/renovate/). View\r\nrepository job log\r\n[here](https://developer.mend.io/github/keithamus/hdx).\r\n\r\n\r\n\r\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Update dependencies (#20)"}},{"before":null,"after":"f77600d7298ff9c0ab258b090a3520555b6799d3","ref":"refs/heads/renovate/dependencies","pushedAt":"2024-05-13T00:20:53.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"renovate[bot]","name":null,"path":"/apps/renovate","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/2740?s=80&v=4"},"commit":{"message":"Update dependencies","shortMessageHtmlLink":"Update dependencies"}},{"before":"df1847a27702dfa1cfe16f6a980672c210e31c8e","after":"f4f74715343f0cc770929ba977d73e5c62c1dbf5","ref":"refs/heads/rewrite-lexer","pushedAt":"2024-05-07T21:50:52.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"},"commit":{"message":"rewrite the parser to use new lexer tokens","shortMessageHtmlLink":"rewrite the parser to use new lexer tokens"}},{"before":"db8b4ae6f283929e86c5e6adc7de8d3e1c54f61b","after":null,"ref":"refs/heads/renovate/dependencies","pushedAt":"2024-05-06T21:32:17.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"}},{"before":"2dea75dea2d2da0f74d609247966ffe1ddfc12e1","after":"bd2837964d2e28ba62fe99b83ccc8218e5f422b4","ref":"refs/heads/main","pushedAt":"2024-05-06T21:32:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"},"commit":{"message":"Update dependencies (#19)\n\n[![Mend\r\nRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)\r\n\r\nThis PR contains the following updates:\r\n\r\n| Package | Change | Age | Adoption | Passing | Confidence | Type |\r\nUpdate |\r\n|---|---|---|---|---|---|---|---|\r\n| [esbuild](https://togithub.com/evanw/esbuild) | [`^0.18.17` ->\r\n`^0.20.0`](https://renovatebot.com/diffs/npm/esbuild/0.18.20/0.20.2) |\r\n[![age](https://developer.mend.io/api/mc/badges/age/npm/esbuild/0.20.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/esbuild/0.20.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/esbuild/0.18.20/0.20.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/esbuild/0.18.20/0.20.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n| devDependencies | minor |\r\n| [serde](https://serde.rs)\r\n([source](https://togithub.com/serde-rs/serde)) | `1.0.198` -> `1.0.200`\r\n|\r\n[![age](https://developer.mend.io/api/mc/badges/age/crate/serde/1.0.200?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/serde/1.0.200?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/serde/1.0.198/1.0.200?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/serde/1.0.198/1.0.200?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n| workspace.dependencies | patch |\r\n| [sharp](https://sharp.pixelplumbing.com)\r\n([source](https://togithub.com/lovell/sharp),\r\n[changelog](https://togithub.com/lovell/sharp/blob/main/docs/changelog.md))\r\n| [`^0.32.4` ->\r\n`^0.33.0`](https://renovatebot.com/diffs/npm/sharp/0.32.6/0.33.3) |\r\n[![age](https://developer.mend.io/api/mc/badges/age/npm/sharp/0.33.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/sharp/0.33.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/sharp/0.32.6/0.33.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/sharp/0.32.6/0.33.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n| devDependencies | minor |\r\n\r\n---\r\n\r\n### Release Notes\r\n\r\n
\r\nevanw/esbuild (esbuild)\r\n\r\n###\r\n[`v0.20.2`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0202)\r\n\r\n[Compare\r\nSource](https://togithub.com/evanw/esbuild/compare/v0.20.1...v0.20.2)\r\n\r\n- Support TypeScript experimental decorators on `abstract` class fields\r\n([#​3684](https://togithub.com/evanw/esbuild/issues/3684))\r\n\r\nWith this release, you can now use TypeScript experimental decorators on\r\n`abstract` class fields. This was silently compiled incorrectly in\r\nesbuild 0.19.7 and below, and was an error from esbuild 0.19.8 to\r\nesbuild 0.20.1. Code such as the following should now work correctly:\r\n\r\n ```ts\r\n // Original code\r\n const log = (x: any, y: string) => console.log(y)\r\n abstract class Foo { @​log abstract foo: string }\r\n new class extends Foo { foo = '' }\r\n\r\n// Old output (with --loader=ts\r\n--tsconfig-raw={\\\"compilerOptions\\\":{\\\"experimentalDecorators\\\":true}})\r\n const log = (x, y) => console.log(y);\r\n class Foo {\r\n }\r\n new class extends Foo {\r\n foo = \"\";\r\n }();\r\n\r\n// New output (with --loader=ts\r\n--tsconfig-raw={\\\"compilerOptions\\\":{\\\"experimentalDecorators\\\":true}})\r\n const log = (x, y) => console.log(y);\r\n class Foo {\r\n }\r\n __decorateClass([\r\n log\r\n ], Foo.prototype, \"foo\", 2);\r\n new class extends Foo {\r\n foo = \"\";\r\n }();\r\n ```\r\n\r\n- JSON loader now preserves `__proto__` properties\r\n([#​3700](https://togithub.com/evanw/esbuild/issues/3700))\r\n\r\nCopying JSON source code into a JavaScript file will change its meaning\r\nif a JSON object contains the `__proto__` key. A literal `__proto__`\r\nproperty in a JavaScript object literal sets the prototype of the object\r\ninstead of adding a property named `__proto__`, while a literal\r\n`__proto__` property in a JSON object literal just adds a property named\r\n`__proto__`. With this release, esbuild will now work around this\r\nproblem by converting JSON to JavaScript with a computed property key in\r\nthis case:\r\n\r\n ```js\r\n // Original code\r\n import data from 'data:application/json,{\"__proto__\":{\"fail\":true}}'\r\n if (Object.getPrototypeOf(data)?.fail) throw 'fail'\r\n\r\n // Old output (with --bundle)\r\n (() => {\r\n // \r\n var json_proto_fail_true_default = { __proto__: { fail: true } };\r\n\r\n // entry.js\r\n if (Object.getPrototypeOf(json_proto_fail_true_default)?.fail)\r\n throw \"fail\";\r\n })();\r\n\r\n // New output (with --bundle)\r\n (() => {\r\n // \r\nvar json_proto_fail_true_default = { [\"__proto__\"]: { fail: true } };\r\n\r\n // example.mjs\r\n if (Object.getPrototypeOf(json_proto_fail_true_default)?.fail)\r\n throw \"fail\";\r\n })();\r\n ```\r\n\r\n- Improve dead code removal of `switch` statements\r\n([#​3659](https://togithub.com/evanw/esbuild/issues/3659))\r\n\r\nWith this release, esbuild will now remove `switch` statements in\r\nbranches when minifying if they are known to never be evaluated:\r\n\r\n ```js\r\n // Original code\r\n if (true) foo(); else switch (bar) { case 1: baz(); break }\r\n\r\n // Old output (with --minify)\r\n if(1)foo();else switch(bar){case 1:}\r\n\r\n // New output (with --minify)\r\n foo();\r\n ```\r\n\r\n- Empty enums should behave like an object literal\r\n([#​3657](https://togithub.com/evanw/esbuild/issues/3657))\r\n\r\nTypeScript allows you to create an empty enum and add properties to it\r\nat run time. While people usually use an empty object literal for this\r\ninstead of a TypeScript enum, esbuild's enum transform didn't anticipate\r\nthis use case and generated `undefined` instead of `{}` for an empty\r\nenum. With this release, you can now use an empty enum to generate an\r\nempty object literal.\r\n\r\n ```ts\r\n // Original code\r\n enum Foo {}\r\n\r\n // Old output (with --loader=ts)\r\n var Foo = /* @​__PURE__ */ ((Foo2) => {\r\n })(Foo || {});\r\n\r\n // New output (with --loader=ts)\r\n var Foo = /* @​__PURE__ */ ((Foo2) => {\r\n return Foo2;\r\n })(Foo || {});\r\n ```\r\n\r\n- Handle Yarn Plug'n'Play edge case with `tsconfig.json`\r\n([#​3698](https://togithub.com/evanw/esbuild/issues/3698))\r\n\r\nPreviously a `tsconfig.json` file that `extends` another file in a\r\npackage with an `exports` map failed to work when Yarn's Plug'n'Play\r\nresolution was active. This edge case should work now starting with this\r\nrelease.\r\n\r\n- Work around issues with Deno 1.31+\r\n([#​3682](https://togithub.com/evanw/esbuild/issues/3682))\r\n\r\nVersion 0.20.0 of esbuild changed how the esbuild child process is run\r\nin esbuild's API for Deno. Previously it used `Deno.run` but that API is\r\nbeing removed in favor of `Deno.Command`. As part of this change,\r\nesbuild is now calling the new `unref` function on esbuild's long-lived\r\nchild process, which is supposed to allow Deno to exit when your code\r\nhas finished running even though the child process is still around\r\n(previously you had to explicitly call esbuild's `stop()` function to\r\nterminate the child process for Deno to be able to exit).\r\n\r\nHowever, this introduced a problem for Deno's testing API which now\r\nfails some tests that use esbuild with `error: Promise resolution is\r\nstill pending but the event loop has already resolved`. It's unclear to\r\nme why this is happening. The call to `unref` was recommended by someone\r\non the Deno core team, and calling Node's equivalent `unref` API has\r\nbeen working fine for esbuild in Node for a long time. It could be that\r\nI'm using it incorrectly, or that there's some reference counting and/or\r\ngarbage collection bug in Deno's internals, or that Deno's `unref` just\r\nworks differently than Node's `unref`. In any case, it's not good for\r\nDeno tests that use esbuild to be failing.\r\n\r\nIn this release, I am removing the call to `unref` to fix this issue.\r\nThis means that you will now have to call esbuild's `stop()` function to\r\nallow Deno to exit, just like you did before esbuild version 0.20.0 when\r\nthis regression was introduced.\r\n\r\nNote: This regression wasn't caught earlier because Deno doesn't seem to\r\nfail tests that have outstanding `setTimeout` calls, which esbuild's\r\ntest harness was using to enforce a maximum test runtime. Adding a\r\n`setTimeout` was allowing esbuild's Deno tests to succeed. So this\r\nregression doesn't necessarily apply to all people using tests in Deno.\r\n\r\n###\r\n[`v0.20.1`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0201)\r\n\r\n[Compare\r\nSource](https://togithub.com/evanw/esbuild/compare/v0.20.0...v0.20.1)\r\n\r\n- Fix a bug with the CSS nesting transform\r\n([#​3648](https://togithub.com/evanw/esbuild/issues/3648))\r\n\r\nThis release fixes a bug with the CSS nesting transform for older\r\nbrowsers where the generated CSS could be incorrect if a selector list\r\ncontained a pseudo element followed by another selector. The bug was\r\ncaused by incorrectly mutating the parent rule's selector list when\r\nfiltering out pseudo elements for the child rules:\r\n\r\n ```css\r\n /* Original code */\r\n .foo {\r\n &:after,\r\n & .bar {\r\n color: red;\r\n }\r\n }\r\n\r\n /* Old output (with --supported:nesting=false) */\r\n .foo .bar,\r\n .foo .bar {\r\n color: red;\r\n }\r\n\r\n /* New output (with --supported:nesting=false) */\r\n .foo:after,\r\n .foo .bar {\r\n color: red;\r\n }\r\n ```\r\n\r\n- Constant folding for JavaScript inequality operators\r\n([#​3645](https://togithub.com/evanw/esbuild/issues/3645))\r\n\r\nThis release introduces constant folding for the `< > <= >=` operators.\r\nThe minifier will now replace these operators with `true` or `false`\r\nwhen both sides are compile-time numeric or string constants:\r\n\r\n ```js\r\n // Original code\r\n console.log(1 < 2, '๐Ÿ•' > '๐Ÿง€')\r\n\r\n // Old output (with --minify)\r\n console.log(1<2,\"๐Ÿ•\">\"๐Ÿง€\");\r\n\r\n // New output (with --minify)\r\n console.log(!0,!1);\r\n ```\r\n\r\n- Better handling of `__proto__` edge cases\r\n([#​3651](https://togithub.com/evanw/esbuild/pull/3651))\r\n\r\nJavaScript object literal syntax contains a special case where a\r\nnon-computed property with a key of `__proto__` sets the prototype of\r\nthe object. This does not apply to computed properties or to properties\r\nthat use the shorthand property syntax introduced in ES6. Previously\r\nesbuild didn't correctly preserve the \"sets the prototype\" status of\r\nproperties inside an object literal, meaning a property that sets the\r\nprototype could accidentally be transformed into one that doesn't and\r\nvice versa. This has now been fixed:\r\n\r\n ```js\r\n // Original code\r\n function foo(__proto__) {\r\n return { __proto__: __proto__ } // Note: sets the prototype\r\n }\r\n function bar(__proto__, proto) {\r\n {\r\n let __proto__ = proto\r\n return { __proto__ } // Note: doesn't set the prototype\r\n }\r\n }\r\n\r\n // Old output\r\n function foo(__proto__) {\r\nreturn { __proto__ }; // Note: no longer sets the prototype (WRONG)\r\n }\r\n function bar(__proto__, proto) {\r\n {\r\n let __proto__2 = proto;\r\nreturn { __proto__: __proto__2 }; // Note: now sets the prototype\r\n(WRONG)\r\n }\r\n }\r\n\r\n // New output\r\n function foo(__proto__) {\r\nreturn { __proto__: __proto__ }; // Note: sets the prototype (correct)\r\n }\r\n function bar(__proto__, proto) {\r\n {\r\n let __proto__2 = proto;\r\nreturn { [\"__proto__\"]: __proto__2 }; // Note: doesn't set the prototype\r\n(correct)\r\n }\r\n }\r\n ```\r\n\r\n- Fix cross-platform non-determinism with CSS color space\r\ntransformations\r\n([#​3650](https://togithub.com/evanw/esbuild/issues/3650))\r\n\r\nThe Go compiler takes advantage of \"fused multiply and add\" (FMA)\r\ninstructions on certain processors which do the operation `x*y + z`\r\nwithout intermediate rounding. This causes esbuild's CSS color space\r\nmath to differ on different processors (currently `ppc64le` and\r\n`s390x`), which breaks esbuild's guarantee of deterministic output. To\r\navoid this, esbuild's color space math now inserts a `float64()` cast\r\naround every single math operation. This tells the Go compiler not to\r\nuse the FMA optimization.\r\n\r\n- Fix a crash when resolving a path from a directory that doesn't exist\r\n([#​3634](https://togithub.com/evanw/esbuild/issues/3634))\r\n\r\nThis release fixes a regression where esbuild could crash when resolving\r\nan absolute path if the source directory for the path resolution\r\noperation doesn't exist. While this situation doesn't normally come up,\r\nit could come up when running esbuild concurrently with another\r\noperation that mutates the file system as esbuild is doing a build (such\r\nas using `git` to switch branches). The underlying problem was a\r\nregression that was introduced in version 0.18.0.\r\n\r\n###\r\n[`v0.20.0`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0200)\r\n\r\n[Compare\r\nSource](https://togithub.com/evanw/esbuild/compare/v0.19.12...v0.20.0)\r\n\r\n**This release deliberately contains backwards-incompatible changes.**\r\nTo avoid automatically picking up releases like this, you should either\r\nbe pinning the exact version of `esbuild` in your `package.json` file\r\n(recommended) or be using a version range syntax that only accepts patch\r\nupgrades such as `^0.19.0` or `~0.19.0`. See npm's documentation about\r\n[semver](https://docs.npmjs.com/cli/v6/using-npm/semver/) for more\r\ninformation.\r\n\r\nThis time there is only one breaking change, and it only matters for\r\npeople using Deno. Deno tests that use esbuild will now fail unless you\r\nmake the change described below.\r\n\r\n- Work around API deprecations in Deno 1.40.x\r\n([#​3609](https://togithub.com/evanw/esbuild/issues/3609),\r\n[#​3611](https://togithub.com/evanw/esbuild/pull/3611))\r\n\r\n[Deno 1.40.0](https://deno.com/blog/v1.40) was just released and\r\nintroduced run-time warnings about certain APIs that esbuild uses. With\r\nthis release, esbuild will work around these run-time warnings by using\r\nnewer APIs if they are present and falling back to the original APIs\r\notherwise. This should avoid the warnings without breaking compatibility\r\nwith older versions of Deno.\r\n\r\nUnfortunately, doing this introduces a breaking change. The newer child\r\nprocess APIs lack a way to synchronously terminate esbuild's child\r\nprocess, so calling `esbuild.stop()` from within a Deno test is no\r\nlonger sufficient to prevent Deno from failing a test that uses\r\nesbuild's API (Deno fails tests that create a child process without\r\nkilling it before the test ends). To work around this, esbuild's\r\n`stop()` function has been changed to return a promise, and you now have\r\nto change `esbuild.stop()` to `await esbuild.stop()` in all of your Deno\r\ntests.\r\n\r\n- Reorder implicit file extensions within `node_modules`\r\n([#​3341](https://togithub.com/evanw/esbuild/issues/3341),\r\n[#​3608](https://togithub.com/evanw/esbuild/issues/3608))\r\n\r\nIn [version\r\n0.18.0](https://togithub.com/evanw/esbuild/releases/v0.18.0), esbuild\r\nchanged the behavior of implicit file extensions within `node_modules`\r\ndirectories (i.e. in published packages) to prefer `.js` over `.ts` even\r\nwhen the `--resolve-extensions=` order prefers `.ts` over `.js` (which\r\nit does by default). However, doing that also accidentally made esbuild\r\nprefer `.css` over `.ts`, which caused problems for people that\r\npublished packages containing both TypeScript and CSS in files with the\r\nsame name.\r\n\r\nWith this release, esbuild will reorder TypeScript file extensions\r\nimmediately after the last JavaScript file extensions in the implicit\r\nfile extension order instead of putting them at the end of the order.\r\nSpecifically the default implicit file extension order is\r\n`.tsx,.ts,.jsx,.js,.css,.json` which used to become\r\n`.jsx,.js,.css,.json,.tsx,.ts` in `node_modules` directories. With this\r\nrelease it will now become `.jsx,.js,.tsx,.ts,.css,.json` instead.\r\n\r\nWhy even rewrite the implicit file extension order at all? One reason is\r\nbecause the `.js` file is more likely to behave correctly than the `.ts`\r\nfile. The behavior of the `.ts` file may depend on `tsconfig.json` and\r\nthe `tsconfig.json` file may not even be published, or may use `extends`\r\nto refer to a base `tsconfig.json` file that wasn't published. People\r\ncan get into this situation when they forget to add all `.ts` files to\r\ntheir `.npmignore` file before publishing to npm. Picking `.js` over\r\n`.ts` helps make it more likely that resulting bundle will behave\r\ncorrectly.\r\n\r\n###\r\n[`v0.19.12`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#01912)\r\n\r\n[Compare\r\nSource](https://togithub.com/evanw/esbuild/compare/v0.19.11...v0.19.12)\r\n\r\n- The \"preserve\" JSX mode now preserves JSX text verbatim\r\n([#​3605](https://togithub.com/evanw/esbuild/issues/3605))\r\n\r\nThe [JSX specification](https://facebook.github.io/jsx/) deliberately\r\ndoesn't specify how JSX text is supposed to be interpreted and there is\r\nno canonical way to interpret JSX text. Two most popular interpretations\r\nare Babel and TypeScript. Yes [they are\r\ndifferent](https://twitter.com/jarredsumner/status/1456118847937781764)\r\n(esbuild [deliberately follows\r\nTypeScript](https://twitter.com/evanwallace/status/1456122279453208576)\r\nby the way).\r\n\r\nPreviously esbuild normalized text to the TypeScript interpretation when\r\nthe \"preserve\" JSX mode is active. However, \"preserve\" should arguably\r\nreproduce the original JSX text verbatim so that whatever JSX transform\r\nruns after esbuild is free to interpret it however it wants. So with\r\nthis release, esbuild will now pass JSX text through unmodified:\r\n\r\n ```jsx\r\n // Original code\r\n let el =\r\n some text\r\n {foo}\r\n more text \r\n\r\n // Old output (with --loader=jsx --jsx=preserve)\r\n let el = \r\n {\" some text\"}\r\n {foo}\r\n {\"more text \"}\r\n ;\r\n\r\n // New output (with --loader=jsx --jsx=preserve)\r\n let el = some text\r\n {foo}\r\n more text ;\r\n ```\r\n\r\n- Allow JSX elements as JSX attribute values\r\n\r\nJSX has an obscure feature where you can use JSX elements in attribute\r\nposition without surrounding them with `{...}`. It looks like this:\r\n\r\n ```jsx\r\n let el =
/>;\r\n ```\r\n\r\nI think I originally didn't implement it even though it's part of the\r\n[JSX specification](https://facebook.github.io/jsx/) because it\r\npreviously didn't work in TypeScript (and potentially also in Babel?).\r\nHowever, support for it was [silently added in TypeScript\r\n4.8](https://togithub.com/microsoft/TypeScript/pull/47994) without me\r\nnoticing and Babel has also since fixed their [bugs regarding this\r\nfeature](https://togithub.com/babel/babel/pull/6006). So I'm adding it\r\nto esbuild too now that I know it's widely supported.\r\n\r\nKeep in mind that there is some ongoing discussion about [removing this\r\nfeature from JSX](https://togithub.com/facebook/jsx/issues/53). I agree\r\nthat the syntax seems out of place (it does away with the elegance of\r\n\"JSX is basically just XML with `{...}` escapes\" for something arguably\r\nharder to read, which doesn't seem like a good trade-off), but it's in\r\nthe specification and TypeScript and Babel both implement it so I'm\r\ngoing to have esbuild implement it too. However, I reserve the right to\r\nremove it from esbuild if it's ever removed from the specification in\r\nthe future. So use it with caution.\r\n\r\n- Fix a bug with TypeScript type parsing\r\n([#​3574](https://togithub.com/evanw/esbuild/issues/3574))\r\n\r\nThis release fixes a bug with esbuild's TypeScript parser where a\r\nconditional type containing a union type that ends with an infer type\r\nthat ends with a constraint could fail to parse. This was caused by the\r\n\"don't parse a conditional type\" flag not getting passed through the\r\nunion type parser. Here's an example of valid TypeScript code that\r\npreviously failed to parse correctly:\r\n\r\n ```ts\r\ntype InferUnion = T extends { a: infer U extends number } | infer U\r\nextends number ? U : never\r\n ```\r\n\r\n###\r\n[`v0.19.11`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#01911)\r\n\r\n[Compare\r\nSource](https://togithub.com/evanw/esbuild/compare/v0.19.10...v0.19.11)\r\n\r\n- Fix TypeScript-specific class transform edge case\r\n([#​3559](https://togithub.com/evanw/esbuild/issues/3559))\r\n\r\nThe previous release introduced an optimization that avoided\r\ntransforming `super()` in the class constructor for TypeScript code\r\ncompiled with `useDefineForClassFields` set to `false` if all class\r\ninstance fields have no initializers. The rationale was that in this\r\ncase, all class instance fields are omitted in the output so no changes\r\nto the constructor are needed. However, if all of this is the case *and*\r\nthere are `#private` instance fields with initializers, those private\r\ninstance field initializers were still being moved into the constructor.\r\nThis was problematic because they were being inserted before the call to\r\n`super()` (since `super()` is now no longer transformed in that case).\r\nThis release introduces an additional optimization that avoids moving\r\nthe private instance field initializers into the constructor in this\r\nedge case, which generates smaller code, matches the TypeScript\r\ncompiler's output more closely, and avoids this bug:\r\n\r\n ```ts\r\n // Original code\r\n class Foo extends Bar {\r\n #private = 1;\r\n public: any;\r\n constructor() {\r\n super();\r\n }\r\n }\r\n\r\n // Old output (with esbuild v0.19.9)\r\n class Foo extends Bar {\r\n constructor() {\r\n super();\r\n this.#private = 1;\r\n }\r\n #private;\r\n }\r\n\r\n // Old output (with esbuild v0.19.10)\r\n class Foo extends Bar {\r\n constructor() {\r\n this.#private = 1;\r\n super();\r\n }\r\n #private;\r\n }\r\n\r\n // New output\r\n class Foo extends Bar {\r\n #private = 1;\r\n constructor() {\r\n super();\r\n }\r\n }\r\n ```\r\n\r\n- Minifier: allow reording a primitive past a side-effect\r\n([#​3568](https://togithub.com/evanw/esbuild/issues/3568))\r\n\r\nThe minifier previously allowed reordering a side-effect past a\r\nprimitive, but didn't handle the case of reordering a primitive past a\r\nside-effect. This additional case is now handled:\r\n\r\n ```js\r\n // Original code\r\n function f() {\r\n let x = false;\r\n let y = x;\r\n const boolean = y;\r\nlet frag = $.template(`

hello\r\nworld

`);\r\n return frag;\r\n }\r\n\r\n // Old output (with --minify)\r\nfunction f(){const e=!1;return $.template(`hello world

`)}\r\n\r\n // New output (with --minify)\r\nfunction f(){return $.template('

hello\r\nworld

')}\r\n ```\r\n\r\n- Minifier: consider properties named using known `Symbol` instances to\r\nbe side-effect free\r\n([#​3561](https://togithub.com/evanw/esbuild/issues/3561))\r\n\r\nMany things in JavaScript can have side effects including property\r\naccesses and ToString operations, so using a symbol such as\r\n`Symbol.iterator` as a computed property name is not obviously\r\nside-effect free. This release adds a special case for known `Symbol`\r\ninstances so that they are considered side-effect free when used as\r\nproperty names. For example, this class declaration will now be\r\nconsidered side-effect free:\r\n\r\n ```js\r\n class Foo {\r\n *[Symbol.iterator]() {\r\n }\r\n }\r\n ```\r\n\r\n- Provide the `stop()` API in node to exit esbuild's child process\r\n([#​3558](https://togithub.com/evanw/esbuild/issues/3558))\r\n\r\nYou can now call `stop()` in esbuild's node API to exit esbuild's child\r\nprocess to reclaim the resources used. It only makes sense to do this\r\nfor a long-lived node process when you know you will no longer be making\r\nany more esbuild API calls. It is not necessary to call this to allow\r\nnode to exit, and it's advantageous to not call this in between calls to\r\nesbuild's API as sharing a single long-lived esbuild child process is\r\nmore efficient than re-creating a new esbuild child process for every\r\nAPI call. This API call used to exist but was removed in [version\r\n0.9.0](https://togithub.com/evanw/esbuild/releases/v0.9.0). This release\r\nadds it back due to a user request.\r\n\r\n###\r\n[`v0.19.10`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#01910)\r\n\r\n[Compare\r\nSource](https://togithub.com/evanw/esbuild/compare/v0.19.9...v0.19.10)\r\n\r\n- Fix glob imports in TypeScript files\r\n([#​3319](https://togithub.com/evanw/esbuild/issues/3319))\r\n\r\nThis release fixes a problem where bundling a TypeScript file containing\r\na glob import could emit a call to a helper function that doesn't exist.\r\nThe problem happened because esbuild's TypeScript transformation removes\r\nunused imports (which is required for correctness, as they may be\r\ntype-only imports) and esbuild's glob import transformation wasn't\r\ncorrectly marking the imported helper function as used. This wasn't\r\ncaught earlier because most of esbuild's glob import tests were written\r\nin JavaScript, not in TypeScript.\r\n\r\n- Fix `require()` glob imports with bundling disabled\r\n([#​3546](https://togithub.com/evanw/esbuild/issues/3546))\r\n\r\nPreviously `require()` calls containing glob imports were incorrectly\r\ntransformed when bundling was disabled. All glob imports should only be\r\ntransformed when bundling is enabled. This bug has been fixed.\r\n\r\n- Fix a panic when transforming optional chaining with `define`\r\n([#​3551](https://togithub.com/evanw/esbuild/issues/3551),\r\n[#​3554](https://togithub.com/evanw/esbuild/pull/3554))\r\n\r\nThis release fixes a case where esbuild could crash with a panic, which\r\nwas triggered by using `define` to replace an expression containing an\r\noptional chain. Here is an example:\r\n\r\n ```js\r\n // Original code\r\n console.log(process?.env.SHELL)\r\n\r\n // Old output (with --define:process.env={})\r\n /* panic: Internal error (while parsing \"\") */\r\n\r\n // New output (with --define:process.env={})\r\n var define_process_env_default = {};\r\n console.log(define_process_env_default.SHELL);\r\n ```\r\n\r\nThis fix was contributed by\r\n[@​hi-ogawa](https://togithub.com/hi-ogawa).\r\n\r\n- Work around a bug in node's CommonJS export name detector\r\n([#​3544](https://togithub.com/evanw/esbuild/issues/3544))\r\n\r\nThe export names of a CommonJS module are dynamically-determined at run\r\ntime because CommonJS exports are properties on a mutable object. But\r\nthe export names of an ES module are statically-determined at module\r\ninstantiation time by using `import` and `export` syntax and cannot be\r\nchanged at run time.\r\n\r\nWhen you import a CommonJS module into an ES module in node, node scans\r\nover the source code to attempt to detect the set of export names that\r\nthe CommonJS module will end up using. That statically-determined set of\r\nnames is used as the set of names that the ES module is allowed to\r\nimport at module instantiation time. However, this scan appears to have\r\nbugs (or at least, can cause false positives) because it doesn't appear\r\nto do any scope analysis. Node will incorrectly consider the module to\r\nexport something even if the assignment is done to a local variable\r\ninstead of to the module-level `exports` object. For example:\r\n\r\n ```js\r\n // confuseNode.js\r\n exports.confuseNode = function(exports) {\r\n // If this local is called \"exports\", node incorrectly\r\n // thinks this file has an export called \"notAnExport\".\r\n exports.notAnExport = function() {\r\n };\r\n };\r\n ```\r\n\r\nYou can see that node incorrectly thinks the file `confuseNode.js` has\r\nan export called `notAnExport` when that file is loaded in an ES module\r\ncontext:\r\n\r\n ```console\r\n $ node -e 'import(\"./confuseNode.js\").then(console.log)'\r\n [Module: null prototype] {\r\n confuseNode: [Function (anonymous)],\r\n default: { confuseNode: [Function (anonymous)] },\r\n notAnExport: undefined\r\n }\r\n ```\r\n\r\nTo avoid this, esbuild will now rename local variables that use the\r\nnames `exports` and `module` when generating CommonJS output for the\r\n`node` platform.\r\n\r\n- Fix the return value of esbuild's `super()` shim\r\n([#​3538](https://togithub.com/evanw/esbuild/issues/3538))\r\n\r\nSome people write `constructor` methods that use the return value of\r\n`super()` instead of using `this`. This isn't too common because\r\n[TypeScript doesn't let you do\r\nthat](https://togithub.com/microsoft/TypeScript/issues/37847) but it can\r\ncome up when writing JavaScript. Previously esbuild's class lowering\r\ntransform incorrectly transformed the return value of `super()` into\r\n`undefined`. With this release, the return value of `super()` will now\r\nbe `this` instead:\r\n\r\n ```js\r\n // Original code\r\n class Foo extends Object {\r\n field\r\n constructor() {\r\n console.log(typeof super())\r\n }\r\n }\r\n new Foo\r\n\r\n // Old output (with --target=es6)\r\n class Foo extends Object {\r\n constructor() {\r\n var __super = (...args) => {\r\n super(...args);\r\n __publicField(this, \"field\");\r\n };\r\n console.log(typeof __super());\r\n }\r\n }\r\n new Foo();\r\n\r\n // New output (with --target=es6)\r\n class Foo extends Object {\r\n constructor() {\r\n var __super = (...args) => {\r\n super(...args);\r\n __publicField(this, \"field\");\r\n return this;\r\n };\r\n console.log(typeof __super());\r\n }\r\n }\r\n new Foo();\r\n ```\r\n\r\n- Terminate the Go GC when esbuild's `stop()` API is called\r\n([#​3552](https://togithub.com/evanw/esbuild/issues/3552))\r\n\r\nIf you use esbuild with WebAssembly and pass the `worker: false` flag to\r\n`esbuild.initialize()`, then esbuild will run the WebAssembly module on\r\nthe main thread. If you do this within a Deno test and that test calls\r\n`esbuild.stop()` to clean up esbuild's resources, Deno may complain that\r\na `setTimeout()` call lasted past the end of the test. This happens when\r\nthe Go is in the middle of a garbage collection pass and has scheduled\r\nadditional ongoing garbage collection work. Normally calling\r\n`esbuild.stop()` will terminate the web worker that the WebAssembly\r\nmodule runs in, which will terminate the Go GC, but that doesn't happen\r\nif you disable the web worker with `worker: false`.\r\n\r\nWith this release, esbuild will now attempt to terminate the Go GC in\r\nthis edge case by calling `clearTimeout()` on these pending timeouts.\r\n\r\n- Apply `/* @​__NO_SIDE_EFFECTS__ */` on tagged template literals\r\n([#​3511](https://togithub.com/evanw/esbuild/issues/3511))\r\n\r\nTagged template literals that reference functions annotated with a\r\n`@__NO_SIDE_EFFECTS__` comment are now able to be removed via\r\ntree-shaking if the result is unused. This is a convention from\r\n[Rollup](https://togithub.com/rollup/rollup/pull/5024). Here is an\r\nexample:\r\n\r\n ```js\r\n // Original code\r\nconst html = /* @​__NO_SIDE_EFFECTS__ */ (a, ...b) => ({ a, b })\r\n html`
remove`\r\n x = html`keep`\r\n\r\n // Old output (with --tree-shaking=true)\r\nconst html = /* @​__NO_SIDE_EFFECTS__ */ (a, ...b) => ({ a, b });\r\n html`remove`;\r\n x = html`keep`;\r\n\r\n // New output (with --tree-shaking=true)\r\nconst html = /* @​__NO_SIDE_EFFECTS__ */ (a, ...b) => ({ a, b });\r\n x = html`keep`;\r\n ```\r\n\r\nNote that this feature currently only works within a single file, so\r\nit's not especially useful. This feature does not yet work across\r\nseparate files. I still recommend using `@__PURE__` annotations instead\r\nof this feature, as they have wider tooling support. The drawback of\r\ncourse is that `@__PURE__` annotations need to be added at each call\r\nsite, not at the declaration, and for non-call expressions such as\r\ntemplate literals you need to wrap the expression in an IIFE\r\n(immediately-invoked function expression) to create a call expression to\r\napply the `@__PURE__` annotation to.\r\n\r\n- Publish builds for IBM AIX PowerPC 64-bit\r\n([#​3549](https://togithub.com/evanw/esbuild/issues/3549))\r\n\r\nThis release publishes a binary executable to npm for IBM AIX PowerPC\r\n64-bit, which means that in theory esbuild can now be installed in that\r\nenvironment with `npm install esbuild`. This hasn't actually been tested\r\nyet. If you have access to such a system, it would be helpful to confirm\r\nwhether or not doing this actually works.\r\n\r\n###\r\n[`v0.19.9`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0199)\r\n\r\n[Compare\r\nSource](https://togithub.com/evanw/esbuild/compare/v0.19.8...v0.19.9)\r\n\r\n- Add support for transforming new CSS gradient syntax for older\r\nbrowsers\r\n\r\nThe specification called [CSS Images Module Level\r\n4](https://www.w3.org/TR/css-images-4/) introduces new CSS gradient\r\nsyntax for customizing how the browser interpolates colors in between\r\ncolor stops. You can now control the color space that the interpolation\r\nhappens in as well as (for \"polar\" color spaces) control whether hue\r\nangle interpolation happens clockwise or counterclockwise. You can read\r\nmore about this in [Mozilla's blog post about new CSS gradient\r\nfeatures](https://developer.mozilla.org/en-US/blog/css-color-module-level-4/).\r\n\r\nWith this release, esbuild will now automatically transform this syntax\r\nfor older browsers in the `target` list. For example, here's a gradient\r\nthat should appear as a rainbow in a browser that supports this new\r\nsyntax:\r\n\r\n ```css\r\n /* Original code */\r\n .rainbow-gradient {\r\n width: 100px;\r\n height: 100px;\r\nbackground: linear-gradient(in hsl longer hue, #​7ff,\r\n#​77f);\r\n }\r\n\r\n /* New output (with --target=chrome99) */\r\n .rainbow-gradient {\r\n width: 100px;\r\n height: 100px;\r\n background:\r\n linear-gradient(\r\n #​77ffff,\r\n #​77ffaa 12.5%,\r\n #​77ff80 18.75%,\r\n #​84ff77 21.88%,\r\n #​99ff77 25%,\r\n #eeff77 37.5%,\r\n #fffb77 40.62%,\r\n #ffe577 43.75%,\r\n #ffbb77 50%,\r\n #ff9077 56.25%,\r\n #ff7b77 59.38%,\r\n #ff7788 62.5%,\r\n #ff77dd 75%,\r\n #ff77f2 78.12%,\r\n #f777ff 81.25%,\r\n #cc77ff 87.5%,\r\n #​7777ff);\r\n }\r\n ```\r\n\r\nYou can now use this syntax in your CSS source code and esbuild will\r\nautomatically convert it to an equivalent gradient for older browsers.\r\nIn addition, esbuild will now also transform \"double position\" and\r\n\"transition hint\" syntax for older browsers as appropriate:\r\n\r\n ```css\r\n /* Original code */\r\n .stripes {\r\n width: 100px;\r\n height: 100px;\r\nbackground: linear-gradient(#e65 33%, #ff2 33% 67%, #​99e 67%);\r\n }\r\n .glow {\r\n width: 100px;\r\n height: 100px;\r\n background: radial-gradient(white 10%, 20%, black);\r\n }\r\n\r\n /* New output (with --target=chrome33) */\r\n .stripes {\r\n width: 100px;\r\n height: 100px;\r\n background:\r\n linear-gradient(\r\n #e65 33%,\r\n #ff2 33%,\r\n #ff2 67%,\r\n #​99e 67%);\r\n }\r\n .glow {\r\n width: 100px;\r\n height: 100px;\r\n background:\r\n radial-gradient(\r\n #ffffff 10%,\r\n #aaaaaa 12.81%,\r\n #​959595 15.62%,\r\n #​7b7b7b 21.25%,\r\n #​5a5a5a 32.5%,\r\n #​444444 43.75%,\r\n #​323232 55%,\r\n #​161616 77.5%,\r\n #​000000);\r\n }\r\n ```\r\n\r\nYou can see visual examples of these new syntax features by looking at\r\n[esbuild's gradient transformation\r\ntests](https://esbuild.github.io/gradient-tests/).\r\n\r\nIf necessary, esbuild will construct a new gradient that approximates\r\nthe original gradient by recursively splitting the interval in between\r\ncolor stops until the approximation error is within a small threshold.\r\nThat is why the above output CSS contains many more color stops than the\r\ninput CSS.\r\n\r\nNote that esbuild deliberately *replaces* the original gradient with the\r\napproximation instead of inserting the approximation before the original\r\ngradient as a fallback. The latest version of Firefox has multiple\r\ngradient rendering bugs (including incorrect interpolation of\r\npartially-transparent colors and interpolating non-sRGB colors using the\r\nincorrect color space). If esbuild didn't replace the original gradient,\r\nthen Firefox would use the original gradient instead of the fallback the\r\nappearance would be incorrect in Firefox. In other words, the latest\r\nversion of Firefox supports modern gradient syntax but interprets it\r\nincorrectly.\r\n\r\n- Add support for `color()`, `lab()`, `lch()`, `oklab()`, `oklch()`, and\r\n`hwb()` in CSS\r\n\r\nCSS has recently added lots of new ways of specifying colors. You can\r\nread more about this in [Chrome's blog post about CSS color\r\nspaces](https://developer.chrome.com/docs/css-ui/high-definition-css-color-guide).\r\n\r\nThis release adds support for minifying colors that use the `color()`,\r\n`lab()`, `lch()`, `oklab()`, `oklch()`, or `hwb()` syntax and/or\r\ntransforming these colors for browsers that don't support it yet:\r\n\r\n ```css\r\n /* Original code */\r\n div {\r\n color: hwb(90deg 20% 40%);\r\n background: color(display-p3 1 0 0);\r\n }\r\n\r\n /* New output (with --target=chrome99) */\r\n div {\r\n color: #​669933;\r\n background: #ff0f0e;\r\n background: color(display-p3 1 0 0);\r\n }\r\n ```\r\n\r\nAs you can see, colors outside of the sRGB color space such as\r\n`color(display-p3 1 0 0)` are mapped back into the sRGB gamut and\r\ninserted as a fallback for browsers that don't support the new color\r\nsyntax.\r\n\r\n- Allow empty type parameter lists in certain cases\r\n([#​3512](https://togithub.com/evanw/esbuild/issues/3512))\r\n\r\nTypeScript allows interface declarations and type aliases to have empty\r\ntype parameter lists. Previously esbuild didn't handle this edge case\r\nbut with this release, esbuild will now parse this syntax:\r\n\r\n ```ts\r\n interface Foo<> {}\r\n type Bar<> = {}\r\n ```\r\n\r\nThis fix was contributed by\r\n[@​magic-akari](https://togithub.com/magic-akari).\r\n\r\n###\r\n[`v0.19.8`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0198)\r\n\r\n[Compare\r\nSource](https://togithub.com/evanw/esbuild/compare/v0.19.7...v0.19.8)\r\n\r\n- Add a treemap chart to esbuild's bundle analyzer\r\n([#​2848](https://togithub.com/evanw/esbuild/issues/2848))\r\n\r\nThe bundler analyzer on esbuild's website\r\n(https://esbuild.github.io/analyze/) now has a treemap chart type in\r\naddition to the two existing chart types (sunburst and flame). This\r\nshould be more familiar for people coming from other similar tools, as\r\nwell as make better use of large screens.\r\n\r\n- Allow decorators after the `export` keyword\r\n([#​104](https://togithub.com/evanw/esbuild/issues/104))\r\n\r\nPreviously esbuild's decorator parser followed the original behavior of\r\nTypeScript's experimental decorators feature, which only allowed\r\ndecorators to come before the `export` keyword. However, the upcoming\r\nJavaScript decorators feature also allows decorators to come after the\r\n`export` keyword. And with TypeScript 5.0, TypeScript now also allows\r\nexperimental decorators to come after the `export` keyword too. So\r\nesbuild now allows this as well:\r\n\r\n ```js\r\n // This old syntax has always been permitted:\r\n @​decorator export class Foo {}\r\n @​decorator export default class Foo {}\r\n\r\n // This new syntax is now permitted too:\r\n export @​decorator class Foo {}\r\n export default @​decorator class Foo {}\r\n ```\r\n\r\nIn addition, esbuild's decorator parser has been rewritten to fix\r\nseveral subtle and likely unimportant edge cases with esbuild's parsing\r\nof exports and decorators in TypeScript (e.g. TypeScript apparently does\r\nautomatic semicolon insertion after `interface` and `export interface`\r\nbut not after `export default interface`).\r\n\r\n- Pretty-print decorators using the same whitespace as the original\r\n\r\nWhen printing code containing decorators, esbuild will now try to\r\nrespect whether the original code contained newlines after the decorator\r\nor not. This can make generated code containing many decorators much\r\nmore compact to read:\r\n\r\n ```js\r\n // Original code\r\n class Foo {\r\n @​a @​b @​c abc\r\n @​x @​y @​z xyz\r\n }\r\n\r\n // Old output\r\n class Foo {\r\n @​a\r\n @​b\r\n @​c\r\n abc;\r\n @​x\r\n @​y\r\n @​z\r\n xyz;\r\n }\r\n\r\n // New output\r\n class Foo {\r\n @​a @​b @​c abc;\r\n @​x @​y @​z xyz;\r\n }\r\n ```\r\n\r\n###\r\n[`v0.19.7`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0197)\r\n\r\n[Compare\r\nSource](https://togithub.com/evanw/esbuild/compare/v0.19.6...v0.19.7)\r\n\r\n- Add support for bundling code that uses import attributes\r\n([#​3384](https://togithub.com/evanw/esbuild/issues/3384))\r\n\r\nJavaScript is gaining new syntax for associating a map of string\r\nkey-value pairs with individual ESM imports. The proposal is still a\r\nwork in progress and is still undergoing significant changes before\r\nbeing finalized. However, the first iteration has already been shipping\r\nin Chromium-based browsers for a while, and the second iteration has\r\nlanded in V8 and is now shipping in node, so it makes sense for esbuild\r\nto support it. Here are the two major iterations of this proposal (so\r\nfar):\r\n\r\n 1. Import assertions (deprecated, will not be standardized)\r\n - Uses the `assert` keyword\r\n - Does *not* affect module resolution\r\n - Causes an error if the assertion fails\r\n - Shipping in Chrome 91+ (and in esbuild 0.11.22+)\r\n\r\n 2. Import attributes (currently set to become standardized)\r\n - Uses the `with` keyword\r\n - Affects module resolution\r\n - Unknown attributes cause an error\r\n - Shipping in node 21+\r\n\r\nYou can already use esbuild to bundle code that uses import assertions\r\n(the first iteration). However, this feature is mostly useless for\r\nbundlers because import assertions are not allowed to affect module\r\nresolution. It's basically only useful as an annotation on external\r\nimports, which esbuild will then preserve in the output for use in a\r\nbrowser (which would otherwise refuse to load certain imports).\r\n\r\nWith this release, esbuild now supports bundling code that uses import\r\nattributes (the second iteration). This is much more useful for bundlers\r\nbecause they are allowed to affect module resolution, which means the\r\nkey-value pairs can be provided to plugins. Here's an example, which\r\nuses esbuild's built-in support for the upcoming [JSON module\r\nstandard](https://togithub.com/tc39/proposal-json-modules):\r\n\r\n ```js\r\n // On static imports\r\n import foo from './package.json' with { type: 'json' }\r\n console.log(foo)\r\n\r\n // On dynamic imports\r\nconst bar = await import('./package.json', { with: { type: 'json' } })\r\n console.log(bar)\r\n ```\r\n\r\nOne important consequence of the change in semantics between import\r\nassertions and import attributes is that two imports with identical\r\npaths but different import attributes are now considered to be different\r\nmodules. This is because the import attributes are provided to the\r\nloader, which might then use those attributes during loading. For\r\nexample, you could imagine an image loader that produces an image of a\r\ndifferent size depending on the import attributes.\r\n\r\nImport attributes are now reported in the\r\n[metafile](https://esbuild.github.io/api/#metafile) and are now provided\r\nto [on-load plugins](https://esbuild.github.io/plugins/#on-load) as a\r\nmap in the `with` property. For example, here's an esbuild plugin that\r\nturns all imports with a `type` import attribute equal to `'cheese'`\r\ninto a module that exports the cheese emoji:\r\n\r\n ```js\r\n const cheesePlugin = {\r\n name: 'cheese',\r\n setup(build) {\r\n build.onLoad({ filter: /.*/ }, args => {\r\n if (args.with.type === 'cheese') return {\r\n contents: `export default \"๐Ÿง€\"`,\r\n }\r\n })\r\n }\r\n }\r\n\r\n require('esbuild').build({\r\n bundle: true,\r\n write: false,\r\n stdin: {\r\n contents: `\r\nimport foo from 'data:text/javascript,' with { type: 'cheese' }\r\n console.log(foo)\r\n `,\r\n },\r\n plugins: [cheesePlugin],\r\n }).then(result => {\r\n const code = new Function(result.outputFiles[0].text)\r\n code()\r\n })\r\n ```\r\n\r\nWarning: It's possible that the second iteration of this feature may\r\nchange significantly again even though it's already shipping in real\r\nJavaScript VMs (since it has already happened once before). In that\r\ncase, esbuild may end up adjusting its implementation to match the\r\neventual standard behavior. So keep in mind that by using this, you are\r\nusing an unstable upcoming JavaScript feature that may undergo breaking\r\nchanges in the future.\r\n\r\n- Adjust TypeScript experimental decorator behavior\r\n([#​3230](https://togithub.com/evanw/esbuild/issues/3230),\r\n[#​3326](https://togithub.com/evanw/esbuild/issues/3326),\r\n[#​3394](https://togithub.com/evanw/esbuild/issues/3394))\r\n\r\nWith this release, esbuild will now allow TypeScript experimental\r\ndecorators to access both static class properties and `#private` class\r\nnames. For example:\r\n\r\n ```js\r\n const check =\r\n (a: T, b: T): PropertyDecorator =>\r\n () => console.log(a === b)\r\n\r\n async function test() {\r\n class Foo {\r\n static #foo = 1\r\n static bar = 1 + Foo.#foo\r\n @​check(Foo.#foo, 1) a: any\r\n @​check(Foo.bar, await Promise.resolve(2)) b: any\r\n }\r\n }\r\n\r\n test().then(() => console.log('pass'))\r\n ```\r\n\r\nThis will now print `true true pass` when compiled by esbuild.\r\nPreviously esbuild evaluated TypeScript decorators outside of the class\r\nbody, so it didn't allow decorators to access `Foo` or `#foo`. Now\r\nesbuild does something different, although it's hard to concisely\r\nexplain exactly what esbuild is doing now (see the background section\r\nbelow for more information).\r\n\r\nNote that TypeScript's experimental decorator support is currently\r\nbuggy: TypeScript's compiler passes this test if only the first `@check`\r\nis present or if only the second `@check` is present, but TypeScript's\r\ncompiler fails this test if both checks are present together. I haven't\r\nchanged esbuild to match TypeScript's behavior exactly here because I'm\r\nwaiting for TypeScript to fix these bugs instead.\r\n\r\nSome background: TypeScript experimental decorators don't have\r\nconsistent semantics regarding the context that the decorators are\r\nevaluated in. For example, TypeScript will let you use `await` within a\r\ndecorator, which implies that the decorator runs outside the class body\r\n(since `await` isn't supported inside a class body), but TypeScript will\r\nalso let you use `#private` names, which implies that the decorator runs\r\ninside the class body (since `#private` names are only supported inside\r\na class body). The value of `this` in a decorator is also buggy (the\r\nrun-time value of `this` changes if any decorator in the class uses a\r\n`#private` name but the type of `this` doesn't change, leading to the\r\ntype checker no longer matching reality). These inconsistent semantics\r\nmake it hard for esbuild to implement this feature as decorator\r\nevaluation happens in some superposition of both inside and outside the\r\nclass body that is particular to the internal implementation details of\r\nthe TypeScript compiler.\r\n\r\n- Forbid `--keep-names` when targeting old browsers\r\n([#​3477](https://togithub.com/evanw/esbuild/issues/3477))\r\n\r\nThe `--keep-names` setting needs to be able to assign to the `name`\r\nproperty on functions and classes. However, before ES6 this property was\r\nnon-configurable, and attempting to assign to it would throw an error.\r\nSo with this release, esbuild will no longer allow you to enable this\r\nsetting while also targeting a really old browser.\r\n\r\n###\r\n[`v0.19.6`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0196)\r\n\r\n[Compare\r\nSource](https://togithub.com/evanw/esbuild/compare/v0.19.5...v0.19.6)\r\n\r\n- Fix a constant folding bug with bigint equality\r\n\r\nThis release fixes a bug where esbuild incorrectly checked for bigint\r\nequality by checking the equality of the bigint literal text. This is\r\ncorrect if the bigint doesn't have a radix because bigint literals\r\nwithout a radix are always in canonical form (since leading zeros are\r\nnot allowed). However, this is incorrect if the bigint has a radix (e.g.\r\n`0x123n`) because the canonical form is not enforced when a radix is\r\npresent.\r\n\r\n ```js\r\n // Original code\r\n console.log(!!0n, !!1n, 123n === 123n)\r\n console.log(!!0x0n, !!0x1n, 123n === 0x7Bn)\r\n\r\n // Old output\r\n console.log(false, true, true);\r\n console.log(true, true, false);\r\n\r\n // New output\r\n console.log(false, true, true);\r\n console.log(!!0x0n, !!0x1n, 123n === 0x7Bn);\r\n ```\r\n\r\n- Add some improvements to the JavaScript minifier\r\n\r\nThis release adds more cases to the JavaScript minifier, including\r\nsupport for inlining `String.fromCharCode` and\r\n`String.prototype.charCodeAt` when possible:\r\n\r\n ```js\r\n // Original code\r\ndocument.onkeydown = e => e.keyCode === 'A'.charCodeAt(0) &&\r\nconsole.log(String.fromCharCode(55358, 56768))\r\n\r\n // Old output (with --minify)\r\n\r\ndocument.onkeydown=o=>o.keyCode===\"A\".charCodeAt(0)&&console.log(String.fromCharCode(55358,56768));\r\n\r\n // New output (with --minify)\r\n document.onkeydown=o=>o.keyCode===65&&console.log(\"๐Ÿง€\");\r\n ```\r\n\r\nIn addition, immediately-invoked function expressions (IIFEs) that\r\nreturn a single expression are now inlined when minifying. This makes it\r\npossible to use IIFEs in combination with `@__PURE__` annotations to\r\nannotate arbitrary expressions as side-effect free without the IIFE\r\nwrapper impacting code size. For example:\r\n\r\n ```js\r\n // Original code\r\nconst sideEffectFreeOffset = /* @​__PURE__ */ (() =>\r\ncomputeSomething())()\r\n use(sideEffectFreeOffset)\r\n\r\n // Old output (with --minify)\r\n const e=(()=>computeSomething())();use(e);\r\n\r\n // New output (with --minify)\r\n const e=computeSomething();use(e);\r\n ```\r\n\r\n- Automatically prefix the `mask-composite` CSS property for WebKit\r\n([#​3493](https://togithub.com/evanw/esbuild/issues/3493))\r\n\r\nThe `mask-composite` property will now be prefixed as\r\n`-webkit-mask-composite` for older WebKit-based browsers. In addition to\r\nprefixing the property name, handling older browsers also requires\r\nrewriting the values since WebKit uses non-standard names for the mask\r\ncomposite modes:\r\n\r\n ```css\r\n /* Original code */\r\n div {\r\n mask-composite: add, subtract, intersect, exclude;\r\n }\r\n\r\n /* New output (with --target=chrome100) */\r\n div {\r\n -webkit-mask-composite:\r\n source-over,\r\n source-out,\r\n source-in,\r\n xor;\r\n mask-composite:\r\n add,\r\n subtract,\r\n intersect,\r\n exclude;\r\n }\r\n ```\r\n\r\n- Avoid referencing `this` from JSX elements in derived class\r\nconstructors\r\n([#​3454](https://togithub.com/evanw/esbuild/issues/3454))\r\n\r\nWhen you enable `--jsx=automatic` and `--jsx-dev`, the JSX transform is\r\nsupposed to insert `this` as the last argument to the `jsxDEV` function.\r\nI'm not sure exactly why this is and I can't find any specification for\r\nit, but in any case this causes the generated code to crash when you use\r\na JSX element in a derived class constructor before the call to\r\n`super()` as `this` is not allowed to be accessed at that point. For\r\nexample\r\n\r\n ```js\r\n // Original code\r\n class ChildComponent extends ParentComponent {\r\n constructor() {\r\n super(
)\r\n }\r\n }\r\n\r\n // Problematic output (with --loader=jsx --jsx=automatic --jsx-dev)\r\n import { jsxDEV } from \"react/jsx-dev-runtime\";\r\n class ChildComponent extends ParentComponent {\r\n constructor() {\r\n super(/* @​__PURE__ */ jsxDEV(\"div\", {}, void 0, false, {\r\n fileName: \"\",\r\n lineNumber: 3,\r\n columnNumber: 15\r\n }, this)); // The reference to \"this\" crashes here\r\n }\r\n }\r\n ```\r\n\r\nThe TypeScript compiler doesn't handle this at all while the Babel\r\ncompiler just omits `this` for the entire constructor (even after the\r\ncall to `super()`). There seems to be no specification so I can't be\r\nsure that this change doesn't break anything important. But given that\r\nBabel is pretty loose with this and TypeScript doesn't handle this at\r\nall, I'm guessing this value isn't too important. React's blog post\r\nseems to indicate that this value was intended to be used for a\r\nReact-specific migration warning at some point, so it could even be that\r\nthis value is irrelevant now. Anyway the crash in this case should now\r\nbe fixed.\r\n\r\n- Allow package subpath imports to map to node built-ins\r\n([#​3485](https://togithub.com/evanw/esbuild/issues/3485))\r\n\r\nYou are now able to use a [subpath\r\nimport](https://nodejs.org/api/packages.html#subpath-imports) in your\r\npackage to resolve to a node built-in module. For example, with a\r\n`package.json` file like this:\r\n\r\n ```json\r\n {\r\n \"type\": \"module\",\r\n \"imports\": {\r\n \"#stream\": {\r\n \"node\": \"stream\",\r\n \"default\": \"./stub.js\"\r\n }\r\n }\r\n }\r\n ```\r\n\r\n You can now import from node's `stream` module like this:\r\n\r\n ```js\r\n import * as stream from '#stream';\r\n console.log(Object.keys(stream));\r\n ```\r\n\r\nThis will import from node's `stream` module when the platform is `node`\r\nand from `./stub.js` otherwise.\r\n\r\n- No longer throw an error when a `Symbol` is missing\r\n([#​3453](https://togithub.com/evanw/esbuild/issues/3453))\r\n\r\nCertain JavaScript syntax features use special properties on the global\r\n`Symbol` object. For example, the asynchronous iteration syntax uses\r\n`Symbol.asyncIterator`. Previously esbuild's generated code for older\r\nbrowsers required this symbol to be polyfilled. However, starting with\r\nthis release esbuild will use\r\n[`Symbol.for()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/for)\r\nto construct these symbols if they are missing instead of throwing an\r\nerror about a missing polyfill. This means your code no longer needs to\r\ninclude a polyfill for missing symbols as long as your code also uses\r\n`Symbol.for()` for missing symbols.\r\n\r\n- Parse upcoming changes to TypeScript syntax\r\n([#​3490](https://togithub.com/evanw/esbuild/issues/3490),\r\n[#​3491](https://togithub.com/evanw/esbuild/pull/3491))\r\n\r\nWith this release, you can now use `from` as the name of a default\r\ntype-only import in TypeScript code, as well as `of` as the name of an\r\n`await using` loop iteration variable:\r\n\r\n ```ts\r\n import type from from 'from'\r\n for (await using of of of) ;\r\n ```\r\n\r\nThis matches similar changes in the TypeScript compiler\r\n([#​56376](https://togithub.com/microsoft/TypeScript/issues/56376)\r\nand\r\n[#​55555](https://togithub.com/microsoft/TypeScript/issues/55555))\r\nwhich will start allowing this syntax in an upcoming version of\r\nTypeScript. Please never actually write code like this.\r\n\r\nThe type-only import syntax change was contributed by\r\n[@​magic-akari](https://togithub.com/magic-akari).\r\n\r\n###\r\n[`v0.19.5`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0195)\r\n\r\n[Compare\r\nSource](https://togithub.com/evanw/esbuild/compare/v0.19.4...v0.19.5)\r\n\r\n- Fix a regression in 0.19.0 regarding `paths` in `tsconfig.json`\r\n([#​3354](https://togithub.com/evanw/esbuild/issues/3354))\r\n\r\nThe fix in esbuild version 0.19.0 to process `tsconfig.json` aliases\r\nbefore the `--packages=external` setting unintentionally broke an edge\r\ncase in esbuild's handling of certain `tsconfig.json` aliases where\r\nthere are multiple files with the same name in different directories.\r\nThis release adjusts esbuild's behavior for this edge case so that it\r\npasses while still processing aliases before `--packages=external`.\r\nPlease read the linked issue for more details.\r\n\r\n- Fix a CSS `font` property minification bug\r\n([#​3452](https://togithub.com/evanw/esbuild/issues/3452))\r\n\r\nThis release fixes a bug where esbuild's CSS minifier didn't insert a\r\nspace between the font size and the font family in the `font` CSS\r\nshorthand property in the edge case where the original source code\r\ndidn't already have a space and the leading string token was shortened\r\nto an identifier:\r\n\r\n ```css\r\n /* Original code */\r\n .foo { font: 16px\"Menlo\"; }\r\n\r\n /* Old output (with --minify) */\r\n .foo{font:16pxMenlo}\r\n\r\n /* New output (with --minify) */\r\n .foo{font:16px Menlo}\r\n ```\r\n\r\n- Fix bundling CSS with asset names containing spaces\r\n([#​3410](https://togithub.com/evanw/esbuild/issues/3410))\r\n\r\nAssets referenced via CSS `url()` tokens may cause esbuild to generate\r\ninvalid output when bundling if the file name contains spaces (e.g.\r\n`url(image 2.png)`). With this release, esbuild will now quote all\r\nbundled asset references in `url()` tokens to avoid this problem. This\r\nonly affects assets loaded using the `file` and `copy` loaders.\r\n\r\n- Fix invalid CSS `url()` tokens in `@import` rules\r\n([#​3426](https://togithub.com/evanw/esbuild/issues/3426))\r\n\r\nIn the future, CSS `url()` tokens may contain additional stuff after the\r\nURL. This is irrelevant today as no CSS specification does this. But\r\nesbuild previously had a bug where using these tokens in an `@import`\r\nrule resulted in malformed output. This bug has been fixed.\r\n\r\n- Fix `browser` + `false` + `type: module` in `package.json`\r\n([#​3367](https://togithub.com/evanw/esbuild/issues/3367))\r\n\r\nThe `browser` field in `package.json` allows you to map a file to\r\n`false` to have it be treated as an empty file when bundling for the\r\nbrowser. However, if `package.json` contains `\"type\": \"module\"` then all\r\n`.js` files will be considered ESM, not CommonJS. Importing a named\r\nimport from an empty CommonJS file gives you undefined, but importing a\r\nnamed export from an empty ESM file is a build error. This release\r\nchanges esbuild's interpretation of these files mapped to `false` in\r\nthis situation from ESM to CommonJS to avoid generating build errors for\r\nnamed imports.\r\n\r\n- Fix a bug in top-level await error reporting\r\n([#​3400](https://togithub.com/evanw/esbuild/issues/3400))\r\n\r\nUsing `require()` on a file that contains [top-level\r\nawait](https://v8.dev/features/top-level-await) is not allowed because\r\n`require()` must return synchronously and top-level await makes that\r\nimpossible. You will get a build error if you try to bundle code that\r\ndoes this with esbuild. This release fixes a bug in esbuild's error\r\nreporting code for complex cases of this situation involving multiple\r\nlevels of imports to get to the module containing the top-level await.\r\n\r\n- Update to Unicode 15.1.0\r\n\r\nThe character tables that determine which characters form valid\r\nJavaScript identifiers have been updated from Unicode version 15.0.0 to\r\nthe newly-released Unicode version 15.1.0. I'm not putting an example in\r\nthe release notes because all of the new chara\r\n\r\n
\r\n\r\n---\r\n\r\n### Configuration\r\n\r\n๐Ÿ“… **Schedule**: Branch creation - \"before 9am on monday\" (UTC),\r\nAutomerge - At any time (no schedule defined).\r\n\r\n๐Ÿšฆ **Automerge**: Disabled by config. Please merge this manually once you\r\nare satisfied.\r\n\r\nโ™ป **Rebasing**: Whenever PR becomes conflicted, or you tick the\r\nrebase/retry checkbox.\r\n\r\n๐Ÿ‘ป **Immortal**: This PR will be recreated if closed unmerged. Get\r\n[config help](https://togithub.com/renovatebot/renovate/discussions) if\r\nthat's undesired.\r\n\r\n---\r\n\r\n- [ ] If you want to rebase/retry this PR, check\r\nthis box\r\n\r\n---\r\n\r\nThis PR has been generated by [Mend\r\nRenovate](https://www.mend.io/free-developer-tools/renovate/). View\r\nrepository job log\r\n[here](https://developer.mend.io/github/keithamus/hdx).\r\n\r\n\r\n\r\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Update dependencies (#19)"}},{"before":null,"after":"db8b4ae6f283929e86c5e6adc7de8d3e1c54f61b","ref":"refs/heads/renovate/dependencies","pushedAt":"2024-05-06T21:29:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"renovate[bot]","name":null,"path":"/apps/renovate","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/2740?s=80&v=4"},"commit":{"message":"Update dependencies","shortMessageHtmlLink":"Update dependencies"}},{"before":"e32a20a97edeee4cbebc3f4ab2f10c2d2722ac2b","after":null,"ref":"refs/heads/renovate/postcss-import-16.x","pushedAt":"2024-05-06T21:25:38.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"}},{"before":"82cc0ae3f9b144f9120e744b79686cbd0c44c23b","after":"2dea75dea2d2da0f74d609247966ffe1ddfc12e1","ref":"refs/heads/main","pushedAt":"2024-05-06T21:25:37.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"},"commit":{"message":"Update dependency postcss-import to v16 (#18)\n\n[![Mend\r\nRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)\r\n\r\nThis PR contains the following updates:\r\n\r\n| Package | Change | Age | Adoption | Passing | Confidence |\r\n|---|---|---|---|---|---|\r\n| [postcss-import](https://togithub.com/postcss/postcss-import) |\r\n[`^15.1.0` ->\r\n`^16.0.0`](https://renovatebot.com/diffs/npm/postcss-import/15.1.0/16.1.0)\r\n|\r\n[![age](https://developer.mend.io/api/mc/badges/age/npm/postcss-import/16.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/postcss-import/16.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/postcss-import/15.1.0/16.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/postcss-import/15.1.0/16.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n\r\n---\r\n\r\n### Release Notes\r\n\r\n
\r\npostcss/postcss-import (postcss-import)\r\n\r\n###\r\n[`v16.1.0`](https://togithub.com/postcss/postcss-import/blob/HEAD/CHANGELOG.md#1610--2024-03-20)\r\n\r\n[Compare\r\nSource](https://togithub.com/postcss/postcss-import/compare/16.0.1...16.1.0)\r\n\r\n- Allow bundling URLs with fragments (useful for Vite users)\r\n([#​560](https://togithub.com/postcss/postcss-import/issues/560),\r\n[#​561](https://togithub.com/postcss/postcss-import/pull/561))\r\n\r\n###\r\n[`v16.0.1`](https://togithub.com/postcss/postcss-import/blob/HEAD/CHANGELOG.md#1601--2024-02-14)\r\n\r\n[Compare\r\nSource](https://togithub.com/postcss/postcss-import/compare/16.0.0...16.0.1)\r\n\r\n- Fix crash when handling some `@import`s with media conditions\r\n([#​557](https://togithub.com/postcss/postcss-import/issues/557),\r\n[#​558](https://togithub.com/postcss/postcss-import/pull/558))\r\n\r\n###\r\n[`v16.0.0`](https://togithub.com/postcss/postcss-import/blob/HEAD/CHANGELOG.md#1600--2024-01-02)\r\n\r\n[Compare\r\nSource](https://togithub.com/postcss/postcss-import/compare/15.1.0...16.0.0)\r\n\r\n- **BREAKING:** Require Node.js v18+\r\n([#​550](https://togithub.com/postcss/postcss-import/issues/550),\r\n[#​551](https://togithub.com/postcss/postcss-import/pull/551))\r\n- **BREAKING:** Signifigant rewrite, with small behavioral tweaks in a\r\nnumber of edge cases\r\n- Support for `@supports` conditional imports added\r\n([#​532](https://togithub.com/postcss/postcss-import/issues/532),\r\n[#​548](https://togithub.com/postcss/postcss-import/pull/548))\r\n- When `skipDuplicates` is `false`, handles import cycles correctly\r\n([#​462](https://togithub.com/postcss/postcss-import/issues/462),\r\n[#​535](https://togithub.com/postcss/postcss-import/pull/535))\r\n- Add `warnOnEmpty` option to allow disabling warnings for empty files\r\n([#​84](https://togithub.com/postcss/postcss-import/issues/84),\r\n[#​541](https://togithub.com/postcss/postcss-import/pull/541))\r\n- Use proper `node.error`s\r\n([#​518](https://togithub.com/postcss/postcss-import/issues/518),\r\n[#​540](https://togithub.com/postcss/postcss-import/pull/540))\r\n\r\nHuge thanks to [`@romainmenke`](https://togithub.com/romainmenke) for\r\nall the hard work he put into this release.\r\n\r\n
\r\n\r\n---\r\n\r\n### Configuration\r\n\r\n๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined),\r\nAutomerge - At any time (no schedule defined).\r\n\r\n๐Ÿšฆ **Automerge**: Disabled by config. Please merge this manually once you\r\nare satisfied.\r\n\r\nโ™ป **Rebasing**: Whenever PR becomes conflicted, or you tick the\r\nrebase/retry checkbox.\r\n\r\n๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update\r\nagain.\r\n\r\n---\r\n\r\n- [ ] If you want to rebase/retry this PR, check\r\nthis box\r\n\r\n---\r\n\r\nThis PR has been generated by [Mend\r\nRenovate](https://www.mend.io/free-developer-tools/renovate/). View\r\nrepository job log\r\n[here](https://developer.mend.io/github/keithamus/hdx).\r\n\r\n\r\n\r\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Update dependency postcss-import to v16 (#18)"}},{"before":"d5261d24350eaa832f9f7e92a4b56d431ba0d283","after":null,"ref":"refs/heads/renovate/cssnano-7.x","pushedAt":"2024-05-06T19:02:31.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"}},{"before":"c65db45cf2d446bbbb64e0fdbb3dbfdef665d8f4","after":"82cc0ae3f9b144f9120e744b79686cbd0c44c23b","ref":"refs/heads/main","pushedAt":"2024-05-06T19:02:30.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"},"commit":{"message":"Update dependency cssnano to v7 (#17)\n\n[![Mend\r\nRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)\r\n\r\nThis PR contains the following updates:\r\n\r\n| Package | Change | Age | Adoption | Passing | Confidence |\r\n|---|---|---|---|---|---|\r\n| [cssnano](https://togithub.com/cssnano/cssnano) | [`^6.0.1` ->\r\n`^7.0.0`](https://renovatebot.com/diffs/npm/cssnano/6.1.2/7.0.1) |\r\n[![age](https://developer.mend.io/api/mc/badges/age/npm/cssnano/7.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/cssnano/7.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/cssnano/6.1.2/7.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/cssnano/6.1.2/7.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)\r\n|\r\n\r\n---\r\n\r\n### Release Notes\r\n\r\n
\r\ncssnano/cssnano (cssnano)\r\n\r\n###\r\n[`v7.0.1`](https://togithub.com/cssnano/cssnano/releases/tag/cssnano%407.0.1):\r\nv7.0.1\r\n\r\n[Compare\r\nSource](https://togithub.com/cssnano/cssnano/compare/cssnano@7.0.0...cssnano@7.0.1)\r\n\r\n#### Patch changes\r\n\r\nUpdate postcss-calc dependency to latest version\r\n\r\n###\r\n[`v7.0.0`](https://togithub.com/cssnano/cssnano/releases/tag/cssnano%407.0.0):\r\nv7.0.0\r\n\r\n[Compare\r\nSource](https://togithub.com/cssnano/cssnano/compare/cssnano@6.1.2...cssnano@7.0.0)\r\n\r\n#### Breaking changes\r\n\r\nThis release drops official support for unmaintained long term support\r\nNode.js releases 14 and 16. It also drops support for non-long term\r\nsupport releases 19 and 21 and add support for Node.js 22. Only the\r\n`package.json` `engines` field has been updated. The code should\r\notherwise be identical to the previous 6.1.2 release.\r\n\r\nEnsuring support for older Node.js had become difficult as the GitHub\r\nactions runners are not available for the latest MacOS and recent pnpm\r\nalso could not run on CI any more.\r\n\r\n
\r\n\r\n---\r\n\r\n### Configuration\r\n\r\n๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined),\r\nAutomerge - At any time (no schedule defined).\r\n\r\n๐Ÿšฆ **Automerge**: Disabled by config. Please merge this manually once you\r\nare satisfied.\r\n\r\nโ™ป **Rebasing**: Whenever PR becomes conflicted, or you tick the\r\nrebase/retry checkbox.\r\n\r\n๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update\r\nagain.\r\n\r\n---\r\n\r\n- [ ] If you want to rebase/retry this PR, check\r\nthis box\r\n\r\n---\r\n\r\nThis PR has been generated by [Mend\r\nRenovate](https://www.mend.io/free-developer-tools/renovate/). View\r\nrepository job log\r\n[here](https://developer.mend.io/github/keithamus/hdx).\r\n\r\n\r\n\r\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Update dependency cssnano to v7 (#17)"}},{"before":"e8178e0c3b5f6a7b04a19b1f17ed2ab2df80ac0a","after":null,"ref":"refs/heads/renovate/boa-dev-criterion-compare-action-digest","pushedAt":"2024-05-06T19:02:21.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"}},{"before":"d94e66dc93a8b72e52c30d06762eb438aceac8bc","after":"c65db45cf2d446bbbb64e0fdbb3dbfdef665d8f4","ref":"refs/heads/main","pushedAt":"2024-05-06T19:02:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"keithamus","name":"Keith Cirkel","path":"/keithamus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/118266?s=80&v=4"},"commit":{"message":"Update boa-dev/criterion-compare-action digest to 59f4d96 (#8)\n\n[![Mend\r\nRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)\r\n\r\nThis PR contains the following updates:\r\n\r\n| Package | Type | Update | Change |\r\n|---|---|---|---|\r\n| boa-dev/criterion-compare-action | action | digest | `adfd3a9` ->\r\n`59f4d96` |\r\n\r\n---\r\n\r\n### Configuration\r\n\r\n๐Ÿ“… **Schedule**: Branch creation - At any time (no schedule defined),\r\nAutomerge - At any time (no schedule defined).\r\n\r\n๐Ÿšฆ **Automerge**: Disabled by config. Please merge this manually once you\r\nare satisfied.\r\n\r\nโ™ป **Rebasing**: Whenever PR becomes conflicted, or you tick the\r\nrebase/retry checkbox.\r\n\r\n๐Ÿ”• **Ignore**: Close this PR and you won't be reminded about this update\r\nagain.\r\n\r\n---\r\n\r\n- [ ] If you want to rebase/retry this PR, check\r\nthis box\r\n\r\n---\r\n\r\nThis PR has been generated by [Mend\r\nRenovate](https://www.mend.io/free-developer-tools/renovate/). View\r\nrepository job log\r\n[here](https://developer.mend.io/github/keithamus/hdx).\r\n\r\n\r\n\r\nCo-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>","shortMessageHtmlLink":"Update boa-dev/criterion-compare-action digest to 59f4d96 (#8)"}},{"before":null,"after":"e32a20a97edeee4cbebc3f4ab2f10c2d2722ac2b","ref":"refs/heads/renovate/postcss-import-16.x","pushedAt":"2024-05-06T19:00:45.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"renovate[bot]","name":null,"path":"/apps/renovate","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/2740?s=80&v=4"},"commit":{"message":"Update dependency postcss-import to v16","shortMessageHtmlLink":"Update dependency postcss-import to v16"}},{"before":null,"after":"d5261d24350eaa832f9f7e92a4b56d431ba0d283","ref":"refs/heads/renovate/cssnano-7.x","pushedAt":"2024-05-06T19:00:36.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"renovate[bot]","name":null,"path":"/apps/renovate","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/2740?s=80&v=4"},"commit":{"message":"Update dependency cssnano to v7","shortMessageHtmlLink":"Update dependency cssnano to v7"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEY5LXUAA","startCursor":null,"endCursor":null}},"title":"Activity ยท keithamus/hdx"}