Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Include available printers in plugin type declarations#18706

Merged
fisker merged 5 commits into
prettier:mainprettier/prettier:mainfrom
porada:fix/estree-typesCopy head branch name to clipboard
Jan 21, 2026
Merged

Include available printers in plugin type declarations#18706
fisker merged 5 commits into
prettier:mainprettier/prettier:mainfrom
porada:fix/estree-typesCopy head branch name to clipboard

Conversation

@porada

@porada porada commented Jan 21, 2026

Copy link
Copy Markdown
Contributor

This PR updates the plugin type declaration builder to include printers alongside parsers.

While working on a plugin, I ended up having to shim prettier/plugins/estree locally. This change exposes types for values that are already available at runtime, making them accessible without workarounds.

I’m not sure whether the added tests provide sufficient coverage. I’d appreciate any guidance on how to improve them.

Checklist

  • I’ve added tests to confirm my change works.
  • (If changing the API or CLI) I’ve documented the changes I’ve made (in the docs/ directory).
  • (If the change is user-facing) I’ve added my changes to changelog_unreleased/*/XXXX.md file following changelog_unreleased/TEMPLATE.md.
  • I’ve read the contributing guidelines.

@netlify

netlify Bot commented Jan 21, 2026

Copy link
Copy Markdown

Deploy Preview for prettier ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 804ce22
🔍 Latest deploy log https://app.netlify.com/projects/prettier/deploys/6970acd936d17100081a225c
😎 Deploy Preview https://deploy-preview-18706--prettier.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify

netlify Bot commented Jan 21, 2026

Copy link
Copy Markdown

Deploy Preview for prettier ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 83a90bb
🔍 Latest deploy log https://app.netlify.com/projects/prettier/deploys/6970ad1230a0ef0008b574be
😎 Deploy Preview https://deploy-preview-18706--prettier.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@pkg-pr-new

pkg-pr-new Bot commented Jan 21, 2026

Copy link
Copy Markdown

Open in StackBlitz

yarn add https://pkg.pr.new/@prettier/plugin-hermes@18706.tgz
yarn add https://pkg.pr.new/@prettier/plugin-oxc@18706.tgz
yarn add https://pkg.pr.new/prettier@18706.tgz

commit: 520f8be

@porada

porada commented Jan 21, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the review!

@fisker
fisker merged commit 6fe3de3 into prettier:main Jan 21, 2026
35 of 39 checks passed
@porada

porada commented Jan 21, 2026

Copy link
Copy Markdown
Contributor Author

@fisker — Any chance you’ll be releasing 3.8.1 anytime soon?

@fisker

fisker commented Jan 21, 2026

Copy link
Copy Markdown
Member

The main branch is not ready for release, I can cherry-pick to v3.8.x to make a release if necessary, but I feel this can wait.

@porada

porada commented Jan 21, 2026

Copy link
Copy Markdown
Contributor Author

Noted. If this could be released within the next few days, that’d be amazing.

@fisker

fisker commented Jan 21, 2026

Copy link
Copy Markdown
Member

Is prettier-plugin-expand-json that you are working on?

fisker added a commit that referenced this pull request Jan 21, 2026
Co-authored-by: fisker <lionkay@gmail.com>
@fisker

fisker commented Jan 21, 2026

Copy link
Copy Markdown
Member

Released https://github.com/prettier/prettier/releases/tag/3.8.1

@porada

porada commented Jan 21, 2026

Copy link
Copy Markdown
Contributor Author

Yes. This is where I came across the type issue in the first place.

@porada

porada commented Jan 21, 2026

Copy link
Copy Markdown
Contributor Author

Thank you!

porada added a commit to porada/prettier-plugin-expand-json that referenced this pull request Jan 21, 2026
apricote pushed a commit to hetznercloud/fleeting-plugin-hetzner that referenced this pull request Jan 21, 2026
…fleeting-plugin-hetzner!339)

This MR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | `3.8.0` → `3.8.1` | ![age](https://developer.mend.io/api/mc/badges/age/npm/prettier/3.8.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prettier/3.8.0/3.8.1?slim=true) |

Note: The `pre-commit` manager in Renovate is not supported by the `pre-commit` maintainers or community. Please do not report any problems there, instead [create a Discussion in the Renovate repository](https://github.com/renovatebot/renovate/discussions/new) if you have any questions.

---

### Release Notes

<details>
<summary>prettier/prettier (prettier)</summary>

### [`v3.8.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#381)

[Compare Source](prettier/prettier@3.8.0...3.8.1)

[diff](prettier/prettier@3.8.0...3.8.1)

##### Include available `printers` in plugin type declarations ([#&#8203;18706](prettier/prettier#18706) by [@&#8203;porada](https://github.com/porada))

<!-- prettier-ignore -->

```ts
// Input
import * as prettierPluginEstree from "prettier/plugins/estree";

// Prettier 3.8.0
// Property 'printers' does not exist on type 'typeof import("prettier/plugins/estree")'. ts(2339)
prettierPluginEstree.printers.estree; //=> any

// Prettier 3.8.1
prettierPluginEstree.printers.estree; //=> Printer
prettierPluginEstree.printers["estree-json"]; //=> Printer
```

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox.

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

---

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

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44OC4xIiwidXBkYXRlZEluVmVyIjoiNDIuODguMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
736-c41-2c1-e464fc974 pushed a commit to Swiss-Armed-Forces/Loom that referenced this pull request Jan 25, 2026
This MR contains the following updates:

| Package | Type | Update | Change | OpenSSF |
|---|---|---|---|---|
| [@testing-library/react](https://github.com/testing-library/react-testing-library) | devDependencies | patch | [`16.3.1` → `16.3.2`](https://renovatebot.com/diffs/npm/@testing-library%2freact/16.3.1/16.3.2) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/testing-library/react-testing-library/badge)](https://securityscorecards.dev/viewer/?uri=github.com/testing-library/react-testing-library) |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react)) | devDependencies | patch | [`19.2.8` → `19.2.9`](https://renovatebot.com/diffs/npm/@types%2freact/19.2.8/19.2.9) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/DefinitelyTyped/DefinitelyTyped/badge)](https://securityscorecards.dev/viewer/?uri=github.com/DefinitelyTyped/DefinitelyTyped) |
| [@typescript-eslint/eslint-plugin](https://typescript-eslint.io/packages/eslint-plugin) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)) | devDependencies | patch | [`8.53.0` → `8.53.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/8.53.0/8.53.1) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/typescript-eslint/typescript-eslint/badge)](https://securityscorecards.dev/viewer/?uri=github.com/typescript-eslint/typescript-eslint) |
| [@typescript-eslint/parser](https://typescript-eslint.io/packages/parser) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)) | devDependencies | patch | [`8.53.0` → `8.53.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.53.0/8.53.1) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/typescript-eslint/typescript-eslint/badge)](https://securityscorecards.dev/viewer/?uri=github.com/typescript-eslint/typescript-eslint) |
| [ace-builds](https://github.com/ajaxorg/ace-builds) | dependencies | patch | [`1.43.5` → `1.43.6`](https://renovatebot.com/diffs/npm/ace-builds/1.43.5/1.43.6) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/ajaxorg/ace-builds/badge)](https://securityscorecards.dev/viewer/?uri=github.com/ajaxorg/ace-builds) |
| [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | devDependencies | patch | [`3.8.0` → `3.8.1`](https://renovatebot.com/diffs/npm/prettier/3.8.0/3.8.1) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/prettier/prettier/badge)](https://securityscorecards.dev/viewer/?uri=github.com/prettier/prettier) |
| [typescript-eslint](https://typescript-eslint.io/packages/typescript-eslint) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint)) | devDependencies | patch | [`8.53.0` → `8.53.1`](https://renovatebot.com/diffs/npm/typescript-eslint/8.53.0/8.53.1) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/typescript-eslint/typescript-eslint/badge)](https://securityscorecards.dev/viewer/?uri=github.com/typescript-eslint/typescript-eslint) |

---

### Release Notes

<details>
<summary>testing-library/react-testing-library (@&#8203;testing-library/react)</summary>

### [`v16.3.2`](https://github.com/testing-library/react-testing-library/releases/tag/v16.3.2)

[Compare Source](testing-library/react-testing-library@v16.3.1...v16.3.2)

##### Bug Fixes

- Update 'onCaughtError' type inference in 'RenderOptions' to work with React v19 ([#&#8203;1438](testing-library/react-testing-library#1438)) ([f32bd1b](testing-library/react-testing-library@f32bd1b))

</details>

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

### [`v8.53.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8531-2026-01-19)

[Compare Source](typescript-eslint/typescript-eslint@v8.53.0...v8.53.1)

##### 🩹 Fixes

- **utils:** make RuleCreator root defaultOptions optional ([#&#8203;11956](typescript-eslint/typescript-eslint#11956))
- **eslint-plugin:** \[consistent-indexed-object-style] skip fixer if interface is a default export ([#&#8203;11951](typescript-eslint/typescript-eslint#11951))

##### ❤️ Thank You

- Cameron
- Yukihiro Hasegawa [@&#8203;y-hsgw](https://github.com/y-hsgw)

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

</details>

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

### [`v8.53.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8531-2026-01-19)

[Compare Source](typescript-eslint/typescript-eslint@v8.53.0...v8.53.1)

This was a version bump only for parser to align it with other projects, there were no code changes.

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

</details>

<details>
<summary>ajaxorg/ace-builds (ace-builds)</summary>

### [`v1.43.6`](https://github.com/ajaxorg/ace-builds/blob/HEAD/CHANGELOG.md#1436-2026-01-23)

[Compare Source](ajaxorg/ace-builds@v1.43.5...v1.43.6)

</details>

<details>
<summary>prettier/prettier (prettier)</summary>

### [`v3.8.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#381)

[Compare Source](prettier/prettier@3.8.0...3.8.1)

[diff](prettier/prettier@3.8.0...3.8.1)

##### Include available `printers` in plugin type declarations ([#&#8203;18706](prettier/prettier#18706) by [@&#8203;porada](https://github.com/porada))

<!-- prettier-ignore -->

```ts
// Input
import * as prettierPluginEstree from "prettier/plugins/estree";

// Prettier 3.8.0
// Property 'printers' does not exist on type 'typeof import("prettier/plugins/estree")'. ts(2339)
prettierPluginEstree.printers.estree; //=> any

// Prettier 3.8.1
prettierPluginEstree.printers.estree; //=> Printer
prettierPluginEstree.printers["estree-json"]; //=> Printer
```

</details>

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

### [`v8.53.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8531-2026-01-19)

[Compare Source](typescript-eslint/typescript-eslint@v8.53.0...v8.53.1)

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

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

</details>

---

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

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi40IiwidXBkYXRlZEluVmVyIjoiNDIuOTIuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIiwicmVub3ZhdGUiXX0=-->

See merge request swiss-armed-forces/cyber-command/cea/loom!262

Co-authored-by: Loom MR Pipeline Trigger <group_103951964_bot_9504bb8dead6d4e406ad817a607f24be@noreply.gitlab.com>
736-c41-2c1-e464fc974 added a commit to Swiss-Armed-Forces/Loom that referenced this pull request Jan 25, 2026
chore(deps): update frontend dependencies (patch) (patch)

This MR contains the following updates:

| Package | Type | Update | Change | OpenSSF |
|---|---|---|---|---|
| [@testing-library/react](https://github.com/testing-library/react-testing-library) | devDependencies | patch | [`16.3.1` → `16.3.2`](https://renovatebot.com/diffs/npm/@testing-library%2freact/16.3.1/16.3.2) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/testing-library/react-testing-library/badge)](https://securityscorecards.dev/viewer/?uri=github.com/testing-library/react-testing-library) |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react)) | devDependencies | patch | [`19.2.8` → `19.2.9`](https://renovatebot.com/diffs/npm/@types%2freact/19.2.8/19.2.9) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/DefinitelyTyped/DefinitelyTyped/badge)](https://securityscorecards.dev/viewer/?uri=github.com/DefinitelyTyped/DefinitelyTyped) |
| [@typescript-eslint/eslint-plugin](https://typescript-eslint.io/packages/eslint-plugin) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)) | devDependencies | patch | [`8.53.0` → `8.53.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/8.53.0/8.53.1) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/typescript-eslint/typescript-eslint/badge)](https://securityscorecards.dev/viewer/?uri=github.com/typescript-eslint/typescript-eslint) |
| [@typescript-eslint/parser](https://typescript-eslint.io/packages/parser) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)) | devDependencies | patch | [`8.53.0` → `8.53.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/8.53.0/8.53.1) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/typescript-eslint/typescript-eslint/badge)](https://securityscorecards.dev/viewer/?uri=github.com/typescript-eslint/typescript-eslint) |
| [ace-builds](https://github.com/ajaxorg/ace-builds) | dependencies | patch | [`1.43.5` → `1.43.6`](https://renovatebot.com/diffs/npm/ace-builds/1.43.5/1.43.6) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/ajaxorg/ace-builds/badge)](https://securityscorecards.dev/viewer/?uri=github.com/ajaxorg/ace-builds) |
| [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | devDependencies | patch | [`3.8.0` → `3.8.1`](https://renovatebot.com/diffs/npm/prettier/3.8.0/3.8.1) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/prettier/prettier/badge)](https://securityscorecards.dev/viewer/?uri=github.com/prettier/prettier) |
| [typescript-eslint](https://typescript-eslint.io/packages/typescript-eslint) ([source](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint)) | devDependencies | patch | [`8.53.0` → `8.53.1`](https://renovatebot.com/diffs/npm/typescript-eslint/8.53.0/8.53.1) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/typescript-eslint/typescript-eslint/badge)](https://securityscorecards.dev/viewer/?uri=github.com/typescript-eslint/typescript-eslint) |

---

### Release Notes

<details>
<summary>testing-library/react-testing-library (@&#8203;testing-library/react)</summary>

### [`v16.3.2`](https://github.com/testing-library/react-testing-library/releases/tag/v16.3.2)

[Compare Source](testing-library/react-testing-library@v16.3.1...v16.3.2)

##### Bug Fixes

- Update 'onCaughtError' type inference in 'RenderOptions' to work with React v19 ([#&#8203;1438](testing-library/react-testing-library#1438)) ([f32bd1b](testing-library/react-testing-library@f32bd1b))

</details>

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

### [`v8.53.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#8531-2026-01-19)

[Compare Source](typescript-eslint/typescript-eslint@v8.53.0...v8.53.1)

##### 🩹 Fixes

- **utils:** make RuleCreator root defaultOptions optional ([#&#8203;11956](typescript-eslint/typescript-eslint#11956))
- **eslint-plugin:** \[consistent-indexed-object-style] skip fixer if interface is a default export ([#&#8203;11951](typescript-eslint/typescript-eslint#11951))

##### ❤️ Thank You

- Cameron
- Yukihiro Hasegawa [@&#8203;y-hsgw](https://github.com/y-hsgw)

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

</details>

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

### [`v8.53.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#8531-2026-01-19)

[Compare Source](typescript-eslint/typescript-eslint@v8.53.0...v8.53.1)

This was a version bump only for parser to align it with other projects, there were no code changes.

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

</details>

<details>
<summary>ajaxorg/ace-builds (ace-builds)</summary>

### [`v1.43.6`](https://github.com/ajaxorg/ace-builds/blob/HEAD/CHANGELOG.md#1436-2026-01-23)

[Compare Source](ajaxorg/ace-builds@v1.43.5...v1.43.6)

</details>

<details>
<summary>prettier/prettier (prettier)</summary>

### [`v3.8.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#381)

[Compare Source](prettier/prettier@3.8.0...3.8.1)

[diff](prettier/prettier@3.8.0...3.8.1)

##### Include available `printers` in plugin type declarations ([#&#8203;18706](prettier/prettier#18706) by [@&#8203;porada](https://github.com/porada))

<!-- prettier-ignore -->

```ts
// Input
import * as prettierPluginEstree from "prettier/plugins/estree";

// Prettier 3.8.0
// Property 'printers' does not exist on type 'typeof import("prettier/plugins/estree")'. ts(2339)
prettierPluginEstree.printers.estree; //=> any

// Prettier 3.8.1
prettierPluginEstree.printers.estree; //=> Printer
prettierPluginEstree.printers["estree-json"]; //=> Printer
```

</details>

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

### [`v8.53.1`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-eslint/CHANGELOG.md#8531-2026-01-19)

[Compare Source](typescript-eslint/typescript-eslint@v8.53.0...v8.53.1)

This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.

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

</details>

---

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

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi40IiwidXBkYXRlZEluVmVyIjoiNDIuOTIuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIiwicmVub3ZhdGUiXX0=-->

See merge request swiss-armed-forces/cyber-command/cea/loom!262

Co-authored-by: Loom MR Pipeline Trigger <group_103951964_bot_9504bb8dead6d4e406ad817a607f24be@noreply.gitlab.com>
Co-authored-by: open-source Pipeline <group_90701827_bot_ed04ae348bc5f40af9966fb8b6867e99@noreply.gitlab.com>
sys-support pushed a commit to 3caravelle/renovate that referenced this pull request Jan 26, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | [`3.8.0` → `3.8.1`](https://renovatebot.com/diffs/npm/prettier/3.8.0/3.8.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/prettier/3.8.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prettier/3.8.0/3.8.1?slim=true) |

---

### Release Notes

<details>
<summary>prettier/prettier (prettier)</summary>

### [`v3.8.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#381)

[Compare Source](prettier/prettier@3.8.0...3.8.1)

[diff](prettier/prettier@3.8.0...3.8.1)

##### Include available `printers` in plugin type declarations ([#&#8203;18706](prettier/prettier#18706) by [@&#8203;porada](https://github.com/porada))

<!-- prettier-ignore -->

```ts
// Input
import * as prettierPluginEstree from "prettier/plugins/estree";

// Prettier 3.8.0
// Property 'printers' does not exist on type 'typeof import("prettier/plugins/estree")'. ts(2339)
prettierPluginEstree.printers.estree; //=> any

// Prettier 3.8.1
prettierPluginEstree.printers.estree; //=> Printer
prettierPluginEstree.printers["estree-json"]; //=> Printer
```

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

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

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

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

---

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

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44MS4zIiwidXBkYXRlZEluVmVyIjoiNDIuODEuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: https://git.3caravelle.net/3Caravelle/renovate/pulls/17
Co-authored-by: Renovate Bot <renovate-bot@3caravelle.com>
Co-committed-by: Renovate Bot <renovate-bot@3caravelle.com>
robbevp pushed a commit to robbevp/website-robbevanpetegem that referenced this pull request Feb 28, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | devDependencies | patch | [`9.39.2` -> `9.39.3`](https://renovatebot.com/diffs/npm/eslint/9.39.2/9.39.3) |
| [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | devDependencies | patch | [`3.8.0` -> `3.8.1`](https://renovatebot.com/diffs/npm/prettier/3.8.0/3.8.1) |
| [stylelint](https://stylelint.io) ([source](https://github.com/stylelint/stylelint)) | devDependencies | minor | [`17.0.0` -> `17.4.0`](https://renovatebot.com/diffs/npm/stylelint/17.0.0/17.4.0) |

---

### Release Notes

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

### [`v9.39.3`](https://github.com/eslint/eslint/releases/tag/v9.39.3)

[Compare Source](eslint/eslint@v9.39.2...v9.39.3)

#### Bug Fixes

- [`791bf8d`](eslint/eslint@791bf8d) fix: restore TypeScript 4.0 compatibility in types ([#&#8203;20504](eslint/eslint#20504)) (sethamus)

#### Chores

- [`8594a43`](eslint/eslint@8594a43) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)@&#8203;9.39.3 ([#&#8203;20529](eslint/eslint#20529)) (Milos Djermanovic)
- [`9ceef92`](eslint/eslint@9ceef92) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
- [`af498c6`](eslint/eslint@af498c6) chore: ignore `/docs/v9.x` in link checker ([#&#8203;20453](eslint/eslint#20453)) (Milos Djermanovic)

</details>

<details>
<summary>prettier/prettier (prettier)</summary>

### [`v3.8.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#381)

[Compare Source](prettier/prettier@3.8.0...3.8.1)

[diff](prettier/prettier@3.8.0...3.8.1)

##### Include available `printers` in plugin type declarations ([#&#8203;18706](prettier/prettier#18706) by [@&#8203;porada](https://github.com/porada))

<!-- prettier-ignore -->

```ts
// Input
import * as prettierPluginEstree from "prettier/plugins/estree";

// Prettier 3.8.0
// Property 'printers' does not exist on type 'typeof import("prettier/plugins/estree")'. ts(2339)
prettierPluginEstree.printers.estree; //=> any

// Prettier 3.8.1
prettierPluginEstree.printers.estree; //=> Printer
prettierPluginEstree.printers["estree-json"]; //=> Printer
```

</details>

<details>
<summary>stylelint/stylelint (stylelint)</summary>

### [`v17.4.0`](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#1740---2026-02-25)

[Compare Source](stylelint/stylelint@17.3.0...17.4.0)

It adds 2 options to the rules and fixes 7 bugs.

- Added: `ignoreAtRules: []` to `at-rule-no-vendor-prefix` ([#&#8203;9096](stylelint/stylelint#9096)) ([@&#8203;theacrat](https://github.com/theacrat)).
- Added: `ignoreMediaFeatureNames: []` to `media-feature-name-no-vendor-prefix` ([#&#8203;9097](stylelint/stylelint#9097)) ([@&#8203;theacrat](https://github.com/theacrat)).
- Fixed: performance of selector cloning rules ([#&#8203;9089](stylelint/stylelint#9089)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `*-empty-line-before` performance ([#&#8203;9092](stylelint/stylelint#9092)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `declaration-property-value-no-unknown` performance ([#&#8203;9090](stylelint/stylelint#9090)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `no-irregular-whitespace` performance ([#&#8203;9091](stylelint/stylelint#9091)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `property-no-unknown` false negatives for at-rule descriptors ([#&#8203;9109](stylelint/stylelint#9109)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `property-no-unknown` false positives for `corner-shape` ([#&#8203;9099](stylelint/stylelint#9099)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `property-no-unknown` false positives for double-slashed properties ([#&#8203;9099](stylelint/stylelint#9099)) ([@&#8203;jeddy3](https://github.com/jeddy3)).

### [`v17.3.0`](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#1730---2026-02-13)

[Compare Source](stylelint/stylelint@17.2.0...17.3.0)

It fixes 17 bugs. 3 related to supporting `calc()` in `declaration-property-value-no-unknown`, and 13 performance ones that make Stylelint a further 3x faster when using the rules in our [standard config](https://www.npmjs.com/package/stylelint-config-standard).

- Fixed: performance of rule sequencing ([#&#8203;9055](stylelint/stylelint#9055)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `*-list` performance ([#&#8203;9056](stylelint/stylelint#9056)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `*-notation` performance ([#&#8203;9044](stylelint/stylelint#9044)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `declaration-property-max-values` performance ([#&#8203;9057](stylelint/stylelint#9057)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `declaration-property-value-keyword-no-deprecated` performance ([#&#8203;9058](stylelint/stylelint#9058)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `declaration-property-value-no-unknown` false negatives for math functions inside of non-math functions ([#&#8203;9064](stylelint/stylelint#9064)) ([@&#8203;romainmenke](https://github.com/romainmenke)).
- Fixed: `declaration-property-value-no-unknown` false positives for `calc()` with mixed operations ([#&#8203;9064](stylelint/stylelint#9064)) ([@&#8203;romainmenke](https://github.com/romainmenke)).
- Fixed: `declaration-property-value-no-unknown` performance ([#&#8203;9062](stylelint/stylelint#9062)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `declaration-property-value-no-unknown` reported ranges for multiple math functions ([#&#8203;9064](stylelint/stylelint#9064)) ([@&#8203;romainmenke](https://github.com/romainmenke)).
- Fixed: `length-zero-no-unit` performance ([#&#8203;9046](stylelint/stylelint#9046)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `named-grid-areas-no-invalid` false positives for mix of tabs and spaces ([#&#8203;9039](stylelint/stylelint#9039)) ([@&#8203;adalinesimonian](https://github.com/adalinesimonian)).
- Fixed: `no-unknown-custom-media` performance ([#&#8203;9059](stylelint/stylelint#9059)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `selector-max-*` performance ([#&#8203;9042](stylelint/stylelint#9042)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `shorthand-property-no-redundant-values` performance ([#&#8203;9047](stylelint/stylelint#9047)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `syntax-string-no-invalid` performance ([#&#8203;9061](stylelint/stylelint#9061)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `time-min-milliseconds` performance ([#&#8203;9060](stylelint/stylelint#9060)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `value-keyword-case` performance ([#&#8203;9048](stylelint/stylelint#9048)) ([@&#8203;jeddy3](https://github.com/jeddy3)).

### [`v17.2.0`](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#1720---2026-02-10)

[Compare Source](stylelint/stylelint@17.1.1...17.2.0)

It fixes 7 bugs, including 5 performance ones that make Stylelint 7x faster and use 3x less memory on larger codebases such as design systems and monorepos. We also restructured our docs to create a [contributor guide](CONTRIBUTING.md). If you'd like to help out and contribute to Stylelint, that's the place to start.

- Fixed: performance of config augmentation and module imports ([#&#8203;9021](stylelint/stylelint#9021)) ([@&#8203;adalinesimonian](https://github.com/adalinesimonian)).
- Fixed: performance of config override matching ([#&#8203;9023](stylelint/stylelint#9023)) ([@&#8203;adalinesimonian](https://github.com/adalinesimonian)).
- Fixed: performance of config resolution ([#&#8203;9033](stylelint/stylelint#9033)) ([@&#8203;adalinesimonian](https://github.com/adalinesimonian)).
- Fixed: performance of rule resolution ([#&#8203;9022](stylelint/stylelint#9022)) ([@&#8203;adalinesimonian](https://github.com/adalinesimonian)).
- Fixed: `declaration-property-value-no-unknown` false negatives for math functions ([#&#8203;9011](stylelint/stylelint#9011)) ([@&#8203;ragini-pandey](https://github.com/ragini-pandey)).
- Fixed: `no-duplicate-selectors` false negatives for matching escaped selectors ([#&#8203;8953](stylelint/stylelint#8953)) ([@&#8203;bjnewman](https://github.com/bjnewman)).
- Fixed: `no-invalid-position-at-import-rule` false negatives for layers with blocks ([#&#8203;9026](stylelint/stylelint#9026)) ([@&#8203;romainmenke](https://github.com/romainmenke)).

### [`v17.1.1`](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#1711---2026-02-03)

[Compare Source](stylelint/stylelint@17.1.0...17.1.1)

It fixes 2 bugs.

- Fixed: resolution of configs, plugins, processors, and custom syntaxes in Yarn PnP environments ([#&#8203;9010](stylelint/stylelint#9010)) ([@&#8203;adalinesimonian](https://github.com/adalinesimonian)).
- Fixed: `lightness-notation` autofix for decimals ([#&#8203;9009](stylelint/stylelint#9009)) ([@&#8203;IlyaSemenov](https://github.com/IlyaSemenov)).

### [`v17.1.0`](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#1710---2026-01-30)

[Compare Source](stylelint/stylelint@17.0.0...17.1.0)

It fixes 5 bugs and adds the `display-notation` rule. Before we turn it on in our [standard config](https://www.npmjs.com/package/stylelint-config-standard), we'd like to [hear the community's thoughts](stylelint/stylelint-config-standard#387) on which options to use.

- Added: `display-notation` rule ([#&#8203;8981](stylelint/stylelint#8981)) ([@&#8203;romainmenke](https://github.com/romainmenke)).
- Fixed: `GlobbyOptions` TypeScript errors ([#&#8203;8992](stylelint/stylelint#8992)) ([@&#8203;zalishchuk](https://github.com/zalishchuk)).
- Fixed: `hue-degree-notation` false negatives and positives for relative colors ([#&#8203;8985](stylelint/stylelint#8985)) ([@&#8203;jamesnw](https://github.com/jamesnw)).
- Fixed: `lightness-notation` false negatives for relative colors ([#&#8203;8987](stylelint/stylelint#8987)) ([@&#8203;jamesnw](https://github.com/jamesnw)).
- Fixed: `selector-type-no-unknown` false positives for `geolocation` and `usermedia` ([#&#8203;9004](stylelint/stylelint#9004)) ([@&#8203;Mouvedia](https://github.com/Mouvedia)).
- Fixed: `selector-type-no-unknown` false positives for `rb`, `rtc` and `menuitem` ([#&#8203;8972](stylelint/stylelint#8972)) ([@&#8203;Mouvedia](https://github.com/Mouvedia)).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

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

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

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

---

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

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS42MS4wIiwidXBkYXRlZEluVmVyIjoiNDEuNjEuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: https://git.robbevp.be/robbevp/website-robbevanpetegem/pulls/505
Co-authored-by: Renovate Bot <renovate@robbevp.be>
Co-committed-by: Renovate Bot <renovate@robbevp.be>
evgenygunko pushed a commit to evgenygunko/Translations that referenced this pull request Mar 22, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | devDependencies | minor | [`^3.7.4` -> `^3.8.1`](https://renovatebot.com/diffs/npm/prettier/3.7.4/3.8.1) |

---

### Release Notes

<details>
<summary>prettier/prettier (prettier)</summary>

### [`v3.8.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#381)

[Compare Source](prettier/prettier@3.8.0...3.8.1)

[diff](prettier/prettier@3.8.0...3.8.1)

##### Include available `printers` in plugin type declarations ([#&#8203;18706](prettier/prettier#18706) by [@&#8203;porada](https://github.com/porada))

<!-- prettier-ignore -->

```ts
// Input
import * as prettierPluginEstree from "prettier/plugins/estree";

// Prettier 3.8.0
// Property 'printers' does not exist on type 'typeof import("prettier/plugins/estree")'. ts(2339)
prettierPluginEstree.printers.estree; //=> any

// Prettier 3.8.1
prettierPluginEstree.printers.estree; //=> Printer
prettierPluginEstree.printers["estree-json"]; //=> Printer
```

### [`v3.8.0`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#380)

[Compare Source](prettier/prettier@3.7.4...3.8.0)

[diff](prettier/prettier@3.7.4...3.8.0)

🔗 [Release Notes](https://prettier.io/blog/2026/01/14/3.8.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or PR is renamed to start with "rebase!".

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

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
renovate Bot added a commit to gwennlbh/workflowdash that referenced this pull request Jul 25, 2026
##### [v3.9.5](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#395)

[diff](prettier/prettier@3.9.4...3.9.5)

##### Markdown: Cap ordered list mark at 999,999,999 ([#19351](prettier/prettier#19351) by [@tats-u](https://github.com/tats-u))

CommonMark parsers only support ordered list item numbers up to 999,999,999.

With this change, Prettier now caps the ordered list item number at 999,999,999 to ensure that the output is correctly parsed as an ordered list by CommonMark parsers. Numbers larger than 999,999,999 are not parsed as list item numbers and are left unchanged in the output:

<!-- prettier-ignore -->

```markdown
<!-- Input -->
999999998. text
999999998. text
999999998. text
999999998. text

1234567890123456789012) text

<!-- Prettier 3.9.4 -->
999999998. text
999999999. text
1000000000. text
1000000001. text

1234567890123456789012) text

<!-- Prettier 3.9.5 -->
999999998. text
999999999. text
999999999. text
999999999. text

1234567890123456789012) text
```

##### Markdown: Avoid corrupting empty link with title ([#19487](prettier/prettier#19487) by [@andersk](https://github.com/andersk))

Do not remove `<>` from an inline link or image with an empty URL and a title, as this removal would change its interpretation.

<!-- prettier-ignore -->

```md
<!-- Input -->
[link](<> "title")

<!-- Prettier 3.9.4 -->
[link]( "title")

<!-- Prettier 3.9.5 -->
[link](<> "title")
```

##### Less: Remove extra spaces after `[` in map lookups ([#19503](prettier/prettier#19503) by [@kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```less
// Input
.foo {
  color: #theme[ primary];
  color: #theme[@name];
  color: #theme[@@name];
}

// Prettier 3.9.4
.foo {
  color: #theme[ primary];
  color: #theme[ @name];
  color: #theme[ @@name];
}

// Prettier 3.9.5
.foo {
  color: #theme[primary];
  color: #theme[@name];
  color: #theme[@@name];
}
```

##### CSS: Prevent addition space in `type()` with `+` ([#19516](prettier/prettier#19516) by [@bigandy](https://github.com/bigandy))

This fixes the addition space before `+` in CSS `type()` declaration. For example `type(<number>+)` was being converted into `type(<number> +)` which is invalid CSS and does not work.

<!-- prettier-ignore -->

```css
/* Input */
div {
  border-radius: attr(br type(<length>+));
}

/* Prettier 3.9.4 */
div {
  border-radius: attr(br type(<length> +));
}

/* Prettier 3.9.5 */
div {
  border-radius: attr(br type(<length>+));
}
```

##### Less: Remove spaces between merge markers and colons ([#19517](prettier/prettier#19517) by [@kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```less
// Input
a {
  box-shadow  +  : 0 0 1px #000;
}

// Prettier 3.9.4
a {
  box-shadow+  : 0 0 1px #000;
}

// Prettier 3.9.5
a {
  box-shadow+: 0 0 1px #000;
}
```

##### Markdown: Preserve wiki links with aliases ([#19527](prettier/prettier#19527) by [@kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```markdown
<!-- Input -->
[[Foo:Bar]]

<!-- Prettier 3.9.4 -->
[[Foo]]

<!-- Prettier 3.9.5 -->
[[Foo:Bar]]
```

##### TypeScript: Fix comments being dropped on shorthand `type` import/export specifiers ([#19565](prettier/prettier#19565) by [@kirkwaiblinger](https://github.com/kirkwaiblinger))

<!-- prettier-ignore -->

```tsx
// Input
export { type /* comment */ T } from "foo";
import { type /* comment */ T } from "foo";

// Prettier 3.9.4
Error: Comment "comment" was not printed. Please report this error!

// Prettier 3.9.5
export { type /* comment */ T } from "foo";
import { type /* comment */ T } from "foo";
```

##### Miscellaneous: Preserving comments' `placement` property ([#19567](prettier/prettier#19567) by [@Janther](https://github.com/Janther))

Prettier\@3.9.0 deleted an undocumented property on comments, which was already used by plugins, `comment.placement` is now available again after comment attach.

##### Flow: Stop enforcing empty module declaration to break ([#19568](prettier/prettier#19568) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```flow
// Input
declare module "foo" {}

// Prettier 3.9.4
declare module "foo" {
}

// Prettier 3.9.5
declare module "foo" {}
```

##### Angular: Support expression for exhaustive typechecking ([#19571](prettier/prettier#19571) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```html
<!-- Input -->
@switch (state.mode) {
  @default never(state);
}

<!-- Prettier 3.9.4 -->
@switch (state.mode) {
  @default never;
}

<!-- Prettier 3.9.5 -->
@switch (state.mode) {
  @default never(state);
}
```

##### TypeScript: Ignore comments inside mapped type when checking type parameter comments ([#19572](prettier/prettier#19572) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```tsx
// Input
foo<{
  // comment
  [key in keyof Foo]: number
}>();

// Prettier 3.9.4
foo<
  {
    // comment
    [key in keyof Foo]: number;
  }
>();

// Prettier 3.9.5
foo<{
  // comment
  [key in keyof Foo]: number;
}>();
```

##### Less: Fix adjacent block comments being corrupted ([#19574](prettier/prettier#19574) by [@kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```less
// Input
/* a *//* b */
/* a */* {
  color: red;
}

// Prettier 3.9.4
/* a */
/* b */
/* a * {
  color: red;
}

// Prettier 3.9.5
/* a */ /* b */
/* a */
* {
  color: red;
}
```

##### JavaScript: Handle dangling comments in `SwitchStatement` ([#19581](prettier/prettier#19581) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```jsx
// Input
switch (foo) {
 // comment
}

// Prettier 3.9.4
switch (
  foo
  // comment
) {
}

// Prettier 3.9.5
switch (foo) {
  // comment
}
```

##### TypeScript: Remove space in comment-only object type ([#19583](prettier/prettier#19583) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```tsx
// Input
var foo = {
  /* comment */
};
type Foo = {
  /* comment */
};

// Prettier 3.9.4
var foo = {/* comment */};
type Foo = { /* comment */ };

// Prettier 3.9.5
var foo = {/* comment */};
type Foo = {/* comment */};
```
##### [v3.9.4](prettier/prettier@3.9.3...3.9.4)

##### [v3.9.3](prettier/prettier@b875c90...b875c90)

##### [v3.9.2](prettier/prettier@3.9.1...b875c90)

##### [v3.9.1](prettier/prettier@3.9.0...3.9.1)

##### [v3.9.0](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#390)

[diff](prettier/prettier@3.8.5...3.9.0)

🔗 [Release Notes](https://prettier.io/blog/2026/06/27/3.9.0)
##### [v3.8.5](prettier/prettier@3.8.4...96395cb)

##### [v3.8.4](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#384)

[diff](prettier/prettier@3.8.3...3.8.4)

##### Markdown: Fix blank lines between list items and nested sub-lists being removed in Markdown/MDX ([#17746](prettier/prettier#17746) by [@byplayer](https://github.com/byplayer))

Prettier was removing blank lines between list items and their nested sub-lists, converting loose lists into tight lists and changing their semantic meaning.

<!-- prettier-ignore -->

```markdown
<!-- Input -->
- a

  - b

- c


  - d

<!-- Prettier 3.8.3 -->
- a
  - b
- c
  - d

<!-- Prettier 3.8.4 -->
- a

  - b

- c

  - d
```
##### [v3.8.3](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#383)

[diff](prettier/prettier@3.8.2...3.8.3)

##### SCSS: Prevent trailing comma in `if()` function ([#18471](prettier/prettier#18471) by [@kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```scss
// Input
$value: if(sass(false): 1; else: -1);

// Prettier 3.8.2
$value: if(
  sass(false): 1; else: -1,
);

// Prettier 3.8.3
$value: if(sass(false): 1; else: -1);
```
##### [v3.8.2](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#382)

[diff](prettier/prettier@3.8.1...3.8.2)

##### Angular: Support Angular v21.2 ([#18722](prettier/prettier#18722), [#19034](prettier/prettier#19034) by [@fisker](https://github.com/fisker))

Exhaustive typechecking with `@default never;`

<!-- prettier-ignore -->

```html
<!-- Input -->
@switch (foo) {
  @case (1) {}
  @default never;
}

<!-- Prettier 3.8.1 -->
SyntaxError: Incomplete block "default never". If you meant to write the @ character, you should use the "&#64;" HTML entity instead. (3:3)

<!-- Prettier 3.8.2 -->
@switch (foo) {
  @case (1) {}
  @default never;
}
```

`arrow function` and `instanceof` expressions.

<!-- prettier-ignore -->

```html
<!-- Input -->
@let fn = (a) =>        a?    1:2;

{{ fn ( a         instanceof b)}}

<!-- Prettier 3.8.1 -->
@let fn = (a) =>        a?    1:2;

{{ fn ( a         instanceof b)}}

<!-- Prettier 3.8.2 -->
@let fn = (a) => (a ? 1 : 2);

{{ fn(a instanceof b) }}
```
##### [v3.8.1](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#381)

[diff](prettier/prettier@3.8.0...3.8.1)

##### Include available `printers` in plugin type declarations ([#18706](prettier/prettier#18706) by [@porada](https://github.com/porada))

<!-- prettier-ignore -->

```ts
// Input
import * as prettierPluginEstree from "prettier/plugins/estree";

// Prettier 3.8.0
// Property 'printers' does not exist on type 'typeof import("prettier/plugins/estree")'. ts(2339)
prettierPluginEstree.printers.estree; //=> any

// Prettier 3.8.1
prettierPluginEstree.printers.estree; //=> Printer
prettierPluginEstree.printers["estree-json"]; //=> Printer
```
##### [v3.8.0](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#380)

[diff](prettier/prettier@3.7.4...3.8.0)

🔗 [Release Notes](https://prettier.io/blog/2026/01/14/3.8.0)
##### [v3.7.4](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#374)

[diff](prettier/prettier@3.7.3...3.7.4)

##### LWC: Avoid quote around interpolations ([#18383](prettier/prettier#18383) by [@kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```html
<!-- Input -->
<div foo={bar}>   </div>

<!-- Prettier 3.7.3 (--embedded-language-formatting off) -->
<div foo="{bar}"></div>

<!-- Prettier 3.7.4 (--embedded-language-formatting off) -->
<div foo={bar}></div>
```

##### TypeScript: Fix comment inside union type gets duplicated ([#18393](prettier/prettier#18393) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```tsx
// Input
type Foo = (/** comment */ a | b) | c;

// Prettier 3.7.3
type Foo = /** comment */ (/** comment */ a | b) | c;

// Prettier 3.7.4
type Foo = /** comment */ (a | b) | c;
```

##### TypeScript: Fix unstable comment print in union type comments ([#18395](prettier/prettier#18395) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```tsx
// Input
type X = (A | B) & (
  // comment
  A | B
);

// Prettier 3.7.3 (first format)
type X = (A | B) &
  (// comment
  A | B);

// Prettier 3.7.3 (second format)
type X = (
  | A
  | B // comment
) &
  (A | B);

// Prettier 3.7.4
type X = (A | B) &
  // comment
  (A | B);
```
##### [v3.7.3](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#373)

[diff](prettier/prettier@3.7.2...3.7.3)

##### API: Fix `prettier.getFileInfo()` change that breaks VSCode extension ([#18375](prettier/prettier#18375) by [@fisker](https://github.com/fisker))

An internal refactor accidentally broke the VSCode extension plugin loading.
##### [v3.7.2](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#372)

[diff](prettier/prettier@3.7.1...3.7.2)

##### JavaScript: Fix string print when switching quotes ([#18351](prettier/prettier#18351) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```jsx
// Input
console.log("A descriptor\\'s .kind must be \"method\" or \"field\".")

// Prettier 3.7.1
console.log('A descriptor\\'s .kind must be "method" or "field".');

// Prettier 3.7.2
console.log('A descriptor\\\'s .kind must be "method" or "field".');
```

##### JavaScript: Preserve quote for embedded HTML attribute values ([#18352](prettier/prettier#18352) by [@kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```tsx
// Input
const html = /* HTML */ ` <div class="${styles.banner}"></div> `;

// Prettier 3.7.1
const html = /* HTML */ ` <div class=${styles.banner}></div> `;

// Prettier 3.7.2
const html = /* HTML */ ` <div class="${styles.banner}"></div> `;
```

##### TypeScript: Fix comment in empty type literal ([#18364](prettier/prettier#18364) by [@fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```tsx
// Input
export type XXX = {
  // tbd
};

// Prettier 3.7.1
export type XXX = { // tbd };

// Prettier 3.7.2
export type XXX = {
  // tbd
};
```
##### [v3.7.1](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#371)

[diff](prettier/prettier@3.7.0...3.7.1)

##### API: Fix performance regression in doc printer ([#18342](prettier/prettier#18342) by [@fisker](https://github.com/fisker))

Prettier 3.7.0 can be very slow when formatting big files, the regression has been fixed.
##### [v3.7.0](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#370)

[diff](prettier/prettier@3.6.2...3.7.0)

🔗 [Release Notes](https://prettier.io/blog/2025/11/27/3.7.0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.