Skip to content

Add yuku-ts parser - #19629

Merged
fisker merged 49 commits into
prettier:mainfrom
fisker:yuku-ts
Jul 15, 2026
Merged

Add yuku-ts parser#19629
fisker merged 49 commits into
prettier:mainfrom
fisker:yuku-ts

Conversation

@fisker

@fisker fisker commented Jul 14, 2026

Copy link
Copy Markdown
Member

Description

Fixes #19627

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.
  • I did not use AI to generate this PR.
  • (If the above is not checked) I have reviewed the AI-generated content before submitting.

@fisker fisker mentioned this pull request Jul 14, 2026
6 tasks
fisker added 2 commits July 15, 2026 01:55
# Conflicts:
#	.github/renovate.json5
#	package.json
#	src/language-js/parse/postprocess/index.js
#	src/language-js/parse/yuku.js
#	src/main/plugins/builtin-plugins/development-plugins.js
#	src/main/range.js
#	tests/config/format-test/failed-format-tests.js
#	tests/config/format-test/verify-fixtures.js
#	tests/format/js/_errors_/class-property-named-constructor/__snapshots__/format.test.js.snap
#	tests/format/js/_errors_/class-property-named-constructor/format.test.js
#	tests/format/js/_errors_/discard-binding/__snapshots__/format.test.js.snap
#	tests/format/js/_errors_/discard-binding/format.test.js
#	tests/format/js/_errors_/export-name/__snapshots__/format.test.js.snap
#	tests/format/js/_errors_/export-name/format.test.js
#	tests/format/js/_errors_/reserved-word/__snapshots__/format.test.js.snap
#	tests/format/js/_errors_/reserved-word/format.test.js
#	tests/format/js/arrows-bind/format.test.js
#	tests/format/js/async-do-expressions/format.test.js
#	tests/format/js/babel-plugins/__snapshots__/format.test.js.snap
#	tests/format/js/babel-plugins/format.test.js
#	tests/format/js/bind-expressions/format.test.js
#	tests/format/js/call/invalid/format.test.js
#	tests/format/js/deferred-import-evaluation/__snapshots__/format.test.js.snap
#	tests/format/js/deferred-import-evaluation/format.test.js
#	tests/format/js/destructuring-private-fields/format.test.js
#	tests/format/js/discard-binding/__snapshots__/format.test.js.snap
#	tests/format/js/discard-binding/format.test.js
#	tests/format/js/do/format.test.js
#	tests/format/js/explicit-resource-management/__snapshots__/format.test.js.snap
#	tests/format/js/explicit-resource-management/format.test.js
#	tests/format/js/export-default/escaped/format.test.js
#	tests/format/js/export-default/export-default-from/format.test.js
#	tests/format/js/for/__snapshots__/format.test.js.snap
#	tests/format/js/for/format.test.js
#	tests/format/js/identifier/parentheses/__snapshots__/format.test.js.snap
#	tests/format/js/identifier/parentheses/format.test.js
#	tests/format/js/module-blocks/format.test.js
#	tests/format/js/module-blocks/quote-props/format.test.js
#	tests/format/js/multiparser-invalid/__snapshots__/format.test.js.snap
#	tests/format/js/multiparser-invalid/format.test.js
#	tests/format/js/no-semi-babylon-extensions/format.test.js
#	tests/format/js/objects/__snapshots__/format.test.js.snap
#	tests/format/js/objects/format.test.js
#	tests/format/js/optional-chaining-assignment/format.test.js
#	tests/format/js/partial-application/format.test.js
#	tests/format/js/pipeline-operator/format.test.js
#	tests/format/js/reserved-word/format.test.js
#	tests/format/js/source-phase-imports/format.test.js
#	tests/format/js/throw_expressions/format.test.js
#	tests/format/js/v8_intrinsic/format.test.js
#	tests/unit/builtin-plugins.js
#	yarn.lock
@fisker
fisker marked this pull request as ready for review July 15, 2026 09:29
@fisker
fisker merged commit dc47535 into prettier:main Jul 15, 2026
16 of 17 checks passed
@fisker
fisker deleted the yuku-ts branch July 15, 2026 09:29
fisker added a commit that referenced this pull request Jul 17, 2026
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
# Conflicts:
#	tests/format/js/deferred-import-evaluation/__snapshots__/format.test.js.snap
sys-support pushed a commit to 3caravelle/renovate that referenced this pull request Jul 21, 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.9.5` → `3.9.6`](https://renovatebot.com/diffs/npm/prettier/3.9.5/3.9.6) | ![age](https://developer.mend.io/api/mc/badges/age/npm/prettier/3.9.6?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prettier/3.9.5/3.9.6?slim=true) |

---

### Release Notes

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

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

[Compare Source](prettier/prettier@3.9.5...3.9.6)

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

##### TypeScript: Preserve quotes for methods named `new` ([#&#8203;19621](prettier/prettier#19621) by [@&#8203;kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```tsx
// Input
interface Container {
  "new"(id: string): number;
}

// Prettier 3.9.5
interface Container {
  new(id: string): number;
}

// Prettier 3.9.6
interface Container {
  "new"(id: string): number;
}
```

##### TypeScript: Support `import defer` ([#&#8203;19624](prettier/prettier#19624), [#&#8203;19675](prettier/prettier#19675) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```tsx
// Input
import defer * as foo from "foo";

// Prettier 3.9.5
import * as foo from "foo";

// Prettier 3.9.6
import defer * as foo from "foo";
```

##### JavaScript: Added a new official plugin `@prettier/plugin-yuku` ([#&#8203;19628](prettier/prettier#19628), [#&#8203;19629](prettier/prettier#19629) by [@&#8203;fisker](https://github.com/fisker))

`@prettier/plugin-yuku` is powered by [Yuku](https://yuku.fyi/) (A high-performance JavaScript/TypeScript compiler toolchain written in Zig).

This plugin includes two new parsers: `yuku` (JavaScript syntax) and `yuku-ts` (TypeScript syntax).

**To use this plugin:**

1. Install the plugin:

   ```bash
   yarn add --dev prettier @&#8203;prettier/plugin-yuku
   ```

2. Add it to your `.prettierrc`:

   ```yaml
   plugins:
     - "@&#8203;prettier/plugin-yuku"
   ```

Due to package size limitations, this plugin is not bundled with the main prettier package and must be installed separately.

For more information, check [the package homepage](https://github.com/prettier/prettier/tree/main/packages/plugin-yuku).

Big thanks to [@&#8203;arshad-yaseen](https://github.com/arshad-yaseen) for his excellent work.

</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/48
Co-authored-by: Renovate Bot <[email protected]>
Co-committed-by: Renovate Bot <[email protected]>
apricote pushed a commit to hetznercloud/fleeting-plugin-hetzner that referenced this pull request Jul 27, 2026
…fleeting-plugin-hetzner!393)

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.9.5` → `3.9.6` | ![age](https://developer.mend.io/api/mc/badges/age/npm/prettier/3.9.6?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prettier/3.9.5/3.9.6?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.9.6`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#396)

[Compare Source](prettier/prettier@3.9.5...3.9.6)

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

##### TypeScript: Preserve quotes for methods named `new` ([#&#8203;19621](prettier/prettier#19621) by [@&#8203;kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```tsx
// Input
interface Container {
  "new"(id: string): number;
}

// Prettier 3.9.5
interface Container {
  new(id: string): number;
}

// Prettier 3.9.6
interface Container {
  "new"(id: string): number;
}
```

##### TypeScript: Support `import defer` ([#&#8203;19624](prettier/prettier#19624), [#&#8203;19675](prettier/prettier#19675) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```tsx
// Input
import defer * as foo from "foo";

// Prettier 3.9.5
import * as foo from "foo";

// Prettier 3.9.6
import defer * as foo from "foo";
```

##### JavaScript: Added a new official plugin `@prettier/plugin-yuku` ([#&#8203;19628](prettier/prettier#19628), [#&#8203;19629](prettier/prettier#19629) by [@&#8203;fisker](https://github.com/fisker))

`@prettier/plugin-yuku` is powered by [Yuku](https://yuku.fyi/) (A high-performance JavaScript/TypeScript compiler toolchain written in Zig).

This plugin includes two new parsers: `yuku` (JavaScript syntax) and `yuku-ts` (TypeScript syntax).

**To use this plugin:**

1. Install the plugin:

   ```bash
   yarn add --dev prettier @&#8203;prettier/plugin-yuku
   ```

2. Add it to your `.prettierrc`:

   ```yaml
   plugins:
     - "@&#8203;prettier/plugin-yuku"
   ```

Due to package size limitations, this plugin is not bundled with the main prettier package and must be installed separately.

For more information, check [the package homepage](https://github.com/prettier/prettier/tree/main/packages/plugin-yuku).

Big thanks to [@&#8203;arshad-yaseen](https://github.com/arshad-yaseen) for his excellent work.

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- 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 [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODMuMCIsInVwZGF0ZWRJblZlciI6IjQzLjI4My4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Raimundo82 pushed a commit to Raimundo82/processos-juridicos that referenced this pull request Aug 19, 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.4` → `3.9.6`](https://renovatebot.com/diffs/npm/prettier/3.8.4/3.9.6) | ![age](https://developer.mend.io/api/mc/badges/age/npm/prettier/3.9.6?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prettier/3.8.4/3.9.6?slim=true) |

---

### Release Notes

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

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

[Compare Source](prettier/prettier@3.9.5...3.9.6)

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

##### TypeScript: Preserve quotes for methods named `new` ([#&#8203;19621](prettier/prettier#19621) by [@&#8203;kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```tsx
// Input
interface Container {
  "new"(id: string): number;
}

// Prettier 3.9.5
interface Container {
  new(id: string): number;
}

// Prettier 3.9.6
interface Container {
  "new"(id: string): number;
}
```

##### TypeScript: Support `import defer` ([#&#8203;19624](prettier/prettier#19624), [#&#8203;19675](prettier/prettier#19675) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```tsx
// Input
import defer * as foo from "foo";

// Prettier 3.9.5
import * as foo from "foo";

// Prettier 3.9.6
import defer * as foo from "foo";
```

##### JavaScript: Added a new official plugin `@prettier/plugin-yuku` ([#&#8203;19628](prettier/prettier#19628), [#&#8203;19629](prettier/prettier#19629) by [@&#8203;fisker](https://github.com/fisker))

`@prettier/plugin-yuku` is powered by [Yuku](https://yuku.fyi/) (A high-performance JavaScript/TypeScript compiler toolchain written in Zig).

This plugin includes two new parsers: `yuku` (JavaScript syntax) and `yuku-ts` (TypeScript syntax).

**To use this plugin:**

1. Install the plugin:

   ```bash
   yarn add --dev prettier @&#8203;prettier/plugin-yuku
   ```

2. Add it to your `.prettierrc`:

   ```yaml
   plugins:
     - "@&#8203;prettier/plugin-yuku"
   ```

Due to package size limitations, this plugin is not bundled with the main prettier package and must be installed separately.

For more information, check [the package homepage](https://github.com/prettier/prettier/tree/main/packages/plugin-yuku).

Big thanks to [@&#8203;arshad-yaseen](https://github.com/arshad-yaseen) for his excellent work.

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

[Compare Source](prettier/prettier@3.9.4...3.9.5)

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

##### Markdown: Cap ordered list mark at 999,999,999 ([#&#8203;19351](prettier/prettier#19351) by [@&#8203;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 ([#&#8203;19487](prettier/prettier#19487) by [@&#8203;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 ([#&#8203;19503](prettier/prettier#19503) by [@&#8203;kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

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

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

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

##### CSS: Prevent addition space in `type()` with `+` ([#&#8203;19516](prettier/prettier#19516) by [@&#8203;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 ([#&#8203;19517](prettier/prettier#19517) by [@&#8203;kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

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

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

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

##### Markdown: Preserve wiki links with aliases ([#&#8203;19527](prettier/prettier#19527) by [@&#8203;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 ([#&#8203;19565](prettier/prettier#19565) by [@&#8203;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 ([#&#8203;19567](prettier/prettier#19567) by [@&#8203;Janther](https://github.com/Janther))

Prettier\@&#8203;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 ([#&#8203;19568](prettier/prettier#19568) by [@&#8203;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 ([#&#8203;19571](prettier/prettier#19571) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

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

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

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

##### TypeScript: Ignore comments inside mapped type when checking type parameter comments ([#&#8203;19572](prettier/prettier#19572) by [@&#8203;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 ([#&#8203;19574](prettier/prettier#19574) by [@&#8203;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` ([#&#8203;19581](prettier/prettier#19581) by [@&#8203;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 ([#&#8203;19583](prettier/prettier#19583) by [@&#8203;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`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#394)

[Compare Source](prettier/prettier@3.9.3...3.9.4)

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

##### Angular: Format `@content(name)` -> `@content (name)` to align with other block syntax ([#&#8203;19499](prettier/prettier#19499) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```html
<!-- Input -->
<FancyButton [label]="title">
  @&#8203;content (icon) {
    <span>Icon!</span>
  }
  @&#8203;content (description) {
    <span>Description text</span>
  }
  <span>Other children</span>
</FancyButton>

<!-- Prettier 3.9.3 -->
<FancyButton [label]="title">
  @&#8203;content(icon) {
    <span>Icon!</span>
  }
  @&#8203;content(description) {
    <span>Description text</span>
  }
  <span>Other children</span>
</FancyButton>

<!-- Prettier 3.9.4 -->
<FancyButton [label]="title">
  @&#8203;content (icon) {
    <span>Icon!</span>
  }
  @&#8203;content (description) {
    <span>Description text</span>
  }
  <span>Other children</span>
</FancyButton>
```

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

[Compare Source](prettier/prettier@3.9.2...3.9.3)

[diff](prettier/prettier@3.9.1...3.9.3)

##### Markdown: Fix unexpected removal of characters in liquid syntax ([#&#8203;19489](prettier/prettier#19489) by [@&#8203;seiyab](https://github.com/seiyab))

<!-- prettier-ignore -->

```md
// Input
<!-- Input -->
{{ page.title
}} text

<!-- Prettier 3.9.1 -->
{{ page.title
 text

<!-- Prettier 3.9.3 -->
{{ page.title
}} text
```

##### TypeScript: Allow decorators to be used with declare on class fields ([#&#8203;19492](prettier/prettier#19492) by [@&#8203;evoactivity](https://github.com/evoactivity))

Extensively used within the Ember ecosystem, decorators with `declare` on class fields will ignore the babel parser error and allow Prettier to format the code without breaking it.

<!-- prettier-ignore -->

```ts
// Input
export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
  @&#8203;service declare server: ServerService;
}

// Prettier 3.9.1
// SyntaxError: Decorators can't be used with a declare field. (2:3)
//  1 | export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
//> 2 |   @&#8203;service declare server: ServerService;
//    |   ^
//  3 | }

// Prettier 3.9.3
export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
  @&#8203;service declare server: ServerService;
}
```

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

[Compare Source](prettier/prettier@3.9.1...3.9.2)

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

[Compare Source](prettier/prettier@3.9.0...3.9.1)

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

##### CLI: Fix ignored file has been cached incorrectly ([#&#8203;19483](prettier/prettier#19483) by [@&#8203;kovsu](https://github.com/kovsu))

Bug details [#&#8203;18016](prettier/prettier#18016)

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

[Compare Source](prettier/prettier@3.8.5...3.9.0)

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

🔗 [Release Notes](https://prettier.io/blog/2026/06/27/3.9.0)

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

[Compare Source](prettier/prettier@3.8.4...3.8.5)

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

##### Flow: Support `readonly` as a variance annotation ([#&#8203;19022](prettier/prettier#19022) by [@&#8203;marcoww6](https://github.com/marcoww6))

Flow now accepts `readonly` as a property variance annotation, equivalent to `+` (covariant/read-only).

<!-- prettier-ignore -->

```jsx
// Input
type T = {
  readonly foo: string,
};

// Prettier 3.8.4
SyntaxError

// Prettier 3.8.5
type T = {
  readonly foo: string,
};
```

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Lisbon)

- 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 you tick the rebase/retry checkbox.

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

---

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

---

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

---------

Co-authored-by: Raimundo <[email protected]>
Reviewed-on: https://devops-01.marinha.pt/marinha-si/Processos-Juridicos/pulls/485
Co-authored-by: Renovate Bot <[email protected]>
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.

Support yuku parser

1 participant