chore(deps): update devdependencies (non-major)
This MR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| @semantic-release/npm | devDependencies | patch | 11.0.2 -> 11.0.3 |
| prettier (source) | devDependencies | minor | 3.1.1 -> 3.5.3 |
Release Notes
semantic-release/npm (@semantic-release/npm)
v11.0.3
Bug Fixes
- deps: raised the minimum accepted range of npm to v10.5.0 (#759) (a0313f8), closes semantic-release/semantic-release#3202
even though our existing range allowed anyone to update as soon as the new npm version was available, this will encourage being on a version that does not report the ip vulnerability a bit more forcefully
prettier/prettier (prettier)
v3.5.3
Flow: Fix missing parentheses in ConditionalTypeAnnotation (#17196 by @fisker)
// Input
type T<U> = 'a' | ('b' extends U ? 'c' : empty);
type T<U> = 'a' & ('b' extends U ? 'c' : empty);
// Prettier 3.5.2
type T<U> = "a" | "b" extends U ? "c" : empty;
type T<U> = "a" & "b" extends U ? "c" : empty;
// Prettier 3.5.3
type T<U> = "a" | ("b" extends U ? "c" : empty);
type T<U> = "a" & ("b" extends U ? "c" : empty);
v3.5.2
Remove module-sync condition (#17156 by @fisker)
In Prettier 3.5.0, we added module-sync condition to package.json, so that require("prettier") can use ESM version, but turns out it doesn't work if CommonJS and ESM plugins both imports builtin plugins. To solve this problem, we decide simply remove the module-sync condition, so require("prettier") will still use the CommonJS version, we'll revisit until require(ESM) feature is more stable.
v3.5.1
Fix CLI crash when cache for old version exists (#17100 by @sosukesuzuki)
Prettier 3.5 uses a different cache format than previous versions, Prettier 3.5.0 crashes when reading existing cache file, Prettier 3.5.1 fixed the problem.
Support dockercompose and github-actions-workflow in VSCode (#17101 by @remcohaszing)
Prettier now supports the dockercompose and github-actions-workflow languages in Visual Studio Code.
v3.5.0
v3.4.2
Treat U+30A0 & U+30FB in Katakana Block as CJK (#16796 by @tats-u)
Prettier doesn't treat U+30A0 & U+30FB as Japanese. U+30FB is commonly used in Japanese to represent the delimitation of first and last names of non-Japanese people or “and”. The following “C言語・C++・Go・Rust” means “C language & C++ & Go & Rust” in Japanese.
<!-- Input (--prose-wrap=never) -->
C言
語
・
C++
・
Go
・
Rust
<!-- Prettier 3.4.1 -->
C言語・ C++ ・ Go ・ Rust
<!-- Prettier 3.4.2 -->
C言語・C++・Go・Rust
U+30A0 can be used as the replacement of the - in non-Japanese names (e.g. “Saint-Saëns” (Charles Camille Saint-Saëns) can be represented as “サン゠サーンス” in Japanese), but substituted by ASCII hyphen (U+002D) or U+FF1D (full width hyphen) in many cases (e.g. “サン=サーンス” or “サン=サーンス”).
Fix comments print on class methods with decorators (#16891 by @fisker)
// Input
class A {
@​decorator
/**
* The method description
*
*/
async method(foo: Foo, bar: Bar) {
console.log(foo);
}
}
// Prettier 3.4.1
class A {
@​decorator
async /**
* The method description
*
*/
method(foo: Foo, bar: Bar) {
console.log(foo);
}
}
// Prettier 3.4.2
class A {
@​decorator
/**
* The method description
*
*/
async method(foo: Foo, bar: Bar) {
console.log(foo);
}
}
Fix non-idempotent formatting (#16899 by @seiyab)
This bug fix is not language-specific. You may see similar change in any languages. This fixes regression in 3.4.0 so change caused by it should yield same formatting as 3.3.3.
// Input
<div>
foo
<span>longlonglonglonglonglonglonglonglonglonglonglonglonglonglongl foo</span>
, abc
</div>;
// Prettier 3.4.1 (first)
<div>
foo
<span>
longlonglonglonglonglonglonglonglonglonglonglonglonglonglongl foo
</span>, abc
</div>;
// Prettier 3.4.1 (second)
<div>
foo
<span>longlonglonglonglonglonglonglonglonglonglonglonglonglonglongl foo</span>
, abc
</div>;
// Prettier 3.4.2
<div>
foo
<span>longlonglonglonglonglonglonglonglonglonglonglonglonglonglongl foo</span>
, abc
</div>;
v3.4.1
Remove unnecessary parentheses around assignment in v-on (#16887 by @fisker)
<!-- Input -->
<template>
<button @​click="foo += 2">Click</button>
</template>
<!-- Prettier 3.4.0 -->
<template>
<button @​click="(foo += 2)">Click</button>
</template>
<!-- Prettier 3.4.1 -->
<template>
<button @​click="foo += 2">Click</button>
</template>
v3.4.0
v3.3.3
Add parentheses for nullish coalescing in ternary (#16391 by @cdignam-segment)
This change adds clarity to operator precedence.
// Input
foo ? bar ?? foo : baz;
foo ?? bar ? a : b;
a ? b : foo ?? bar;
// Prettier 3.3.2
foo ? bar ?? foo : baz;
foo ?? bar ? a : b;
a ? b : foo ?? bar;
// Prettier 3.3.3
foo ? (bar ?? foo) : baz;
(foo ?? bar) ? a : b;
a ? b : (foo ?? bar);
Add parentheses for decorator expressions (#16458 by @y-schneider)
Prevent parentheses around member expressions or tagged template literals from being removed to follow the stricter parsing rules of TypeScript 5.5.
// Input
@​(foo`tagged template`)
class X {}
// Prettier 3.3.2
@​foo`tagged template`
class X {}
// Prettier 3.3.3
@​(foo`tagged template`)
class X {}
Support @let declaration syntax (#16474 by @sosukesuzuki)
Adds support for Angular v18 @let declaration syntax.
Please see the following code example. The @let declaration allows you to define local variables within the template:
@​let name = 'Frodo';
<h1>Dashboard for {{name}}</h1>
Hello, {{name}}
For more details, please refer to the excellent blog post by the Angular Team: Introducing @let in Angular.
We also appreciate the Angular Team for kindly answering our questions to implement this feature.
v3.3.2
Fix handlebars path expressions starts with @ (#16358 by @Princeyadav05)
{{! Input }}
<div>{{@​x.y.z}}</div>
{{! Prettier 3.3.1 }}
<div>{{@​x}}</div>
{{! Prettier 3.3.2 }}
<div>{{@​x.y.z}}</div>
v3.3.1
Preserve empty lines in front matter (#16347 by @fisker)
<!-- Input -->
---
foo:
- bar1
- bar2
- bar3
---
Markdown
<!-- Prettier 3.3.0 -->
---
foo:
- bar1
- bar2
- bar3
---
Markdown
<!-- Prettier 3.3.1 -->
---
foo:
- bar1
- bar2
- bar3
---
Markdown
Preserve explicit language in front matter (#16348 by @fisker)
<!-- Input -->
---yaml
title: Hello
slug: home
---
<!-- Prettier 3.3.0 -->
---
title: Hello
slug: home
---
<!-- Prettier 3.3.1 -->
---yaml
title: Hello
slug: home
---
Avoid line breaks in import attributes (#16349 by @fisker)
// Input
import something from "./some-very-very-very-very-very-very-very-very-long-path.json" with { type: "json" };
// Prettier 3.3.0
import something from "./some-very-very-very-very-very-very-very-very-long-path.json" with { type:
"json" };
// Prettier 3.3.1
import something from "./some-very-very-very-very-very-very-very-very-long-path.json" with { type: "json" };
v3.3.0
v3.2.5
Support Angular inline styles as single template literal (#15968 by @sosukesuzuki)
Angular v17 supports single string inline styles.
// Input
@​Component({
template: `<div>...</div>`,
styles: `h1 { color: blue; }`,
})
export class AppComponent {}
// Prettier 3.2.4
@​Component({
template: `<div>...</div>`,
styles: `h1 { color: blue; }`,
})
export class AppComponent {}
// Prettier 3.2.5
@​Component({
template: `<div>...</div>`,
styles: `
h1 {
color: blue;
}
`,
})
export class AppComponent {}
Unexpected embedded formatting for Angular template (#15969 by @JounQin)
Computed template should not be considered as Angular component template
// Input
const template = "foobar";
@​Component({
[template]: `<h1>{{ hello }}</h1>`,
})
export class AppComponent {}
// Prettier 3.2.4
const template = "foobar";
@​Component({
[template]: `<h1>{{ hello }}</h1>`,
})
export class AppComponent {}
// Prettier 3.2.5
const template = "foobar";
@​Component({
[template]: `<h1>{{ hello }}</h1>`,
})
export class AppComponent {}
Use "json" parser for tsconfig.json by default (#16012 by @sosukesuzuki)
In v3.2.0, we introduced "jsonc" parser which adds trailing comma by default.
When adding a new parser we also define how it will be used based on the linguist-languages data.
tsconfig.json is a special file used by TypeScript, it uses .json file extension, but it actually uses the JSON with Comments syntax. However, we found that there are many third-party tools not recognize it correctly because of the confusing .json file extension.
We decide to treat it as a JSON file for now to avoid the extra configuration step.
To keep using the "jsonc" parser for your tsconfig.json files, add the following to your .prettierrc file
{
"overrides": [
{
"files": ["tsconfig.json", "jsconfig.json"],
"options": {
"parser": "jsonc"
}
}
]
}
v3.2.4
prettier --file-info tsconfig.json { "ignored": false, "inferredParser": "jsonc" }
v3.2.3
Throw errors for invalid code (#15881 by @fisker, @Josh-Cena, @auvred)
// Input
1++;
// Prettier 3.2.2
1++;
// Prettier 3.2.3
SyntaxError: Invalid left-hand side expression in unary operation (1:1)
> 1 | 1++;
| ^
// Input
try {} catch (error = 1){}
// Prettier 3.2.2
try {
} catch (error) {}
// Prettier 3.2.3
SyntaxError: Catch clause variable cannot have an initializer. (1:23)
> 1 | try {} catch (error = 1){}
| ^
Fix parser inference (#15927 by @fisker)
// Prettier 3.2.2
prettier --file-info tsconfig.json
{ "ignored": false, "inferredParser": "json" }
// Prettier 3.2.3
prettier --file-info tsconfig.json
{ "ignored": false, "inferredParser": "jsonc" }
v3.2.2
Fix crash when parsing template literal CSS in a JSX style tag using a spread attribute (#15896 by @eelco)
For example this code would crash before:
<style {...spread}>{`.{}`}</style>
Fix formatting error on optional call expression and member chain (#15920 by @sosukesuzuki)
// Input
a(() => {}, c?.d());
// Prettier 3.2.1
TypeError: Cannot read properties of undefined (reading 'type')
// Prettier 3.2.2
a(() => {}, c?.d());
v3.2.1
Fix formatting error on member chain (#15915 by @sosukesuzuki)
// Input
test().test2().test2(thing?.something);
// Prettier 3.2.0
TypeError: Cannot read properties of undefined (reading 'type')
// Prettier 3.2.1
test().test2().test2(thing?.something);
v3.2.0
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.