diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index a2509dc9637d..000000000000 --- a/.eslintignore +++ /dev/null @@ -1,19 +0,0 @@ -.tmp -# Do not use `tests/format/**/*`, since it will ignore directories -# https://github.com/eslint/eslint/issues/17964#issuecomment-1879772142 -tests/format/**/*.* -!tests/format/**/format.test.js -# TODO: Remove this in 2025 -!tests/format/**/jsfmt.spec.js -tests/integration/cli/ -test*.* -scripts/release/node_modules -coverage/ -dist*/ -**/node_modules/** -website/build/ -website/static/playground.js -website/static/lib/ -scripts/benchmark/*/ -**/.yarn/** -**/.pnp.* diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 0288bf5571fa..0ab5c82efb70 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -5,16 +5,8 @@ # See https://git-scm.com/docs/git-blame#Documentation/git-blame.txt---ignore-revs-fileltfilegt # Prettier bump after release -# 3.2.5 -9a794f9cdbcfdc1536db97e4656e58414523a2f2 -# 3.2.4 -b77b958aecba1d230bd73ce308bdb70163a1c231 # 3.2.3 4985be553e911fef7d83f3341eb143c443473c58 -# 3.2.2 -afc0a6b5fae11c86c18bbc345775821607d4d41d -# 3.2.1 -5811ad00705488365e0d0baf50c92965edddf58e # 3.2.0 ee0d667fa2bf175c194f2f93c98c25a575454476 # 3.1.1 @@ -29,68 +21,18 @@ eebf0e4b5ec8ac24393c56ced4b4819d4c551f31 64b6e83884c2fa513ec6199b1812e03315ebbb4e # 3.0.0 fa484156174a6553b4155a0a7455f69e404b61a7 -# 2.8.8 -fe8fcb5f9888ddbe9c749da01439dbdc7d28e367 -# 2.8.7 -0e26a75ebf0cb5b436f6a2d26a7bb88d04f23b90 -# 2.8.6 -0461cdd8149f0bb9bb95dfac5faed75b47f77689 -# 2.8.5 -c1808e86a3c7c2c8f43093f99e78fce3b6d0a97d -# 2.8.4 -f3b23ab63c9387329dc1993e1d0aa71583d67a0b -# 2.8.3 -9e9f8ec13f0420a4825fdba85d79ddeaaef1e00c # 2.8.2 b9c3cd4c7016dfb1bb3539c5b3db15fdd54b9f6f -# 2.8.1 -b87de09bcf9a523fe3da31394ba0e6f5d107cf3e -# 2.8.0 -4049e49fe2a939facd6f46be338a3be9c1c0489e -# 2.7.1 -1f9baef429df2516ff8eb835fd8c020b5e854a5f # 2.7.0 59ec4f2ef4aef37c10a265aa7fc568c596fb4427 -# 2.6.2 -e2d9e9139d34043c8e6c45cda2777de013340e2e -# 2.6.1 -678fe1562dc1347fc0539334ee5cbaea79ea8af7 # 2.6.0 f7c44237331348c001c2907e844cd0d1530b23ff -# 2.5.1 -4683a6284d53b913f129694a5be666fc55b06982 -# 2.5.0 -846dbdd7e8c9deb315b3e663b3103c559e798a89 -# 2.4.1 -2b5b22056e7e180ba52b04c849b6e8a1e26d87d1 -# 2.4.0 -ef514b9b5c817cf5105bac31a59e88cbdbdf189b -# 2.3.2 -0747d9204113ee4bb4e3c2bab113dc3772a5e8d9 # 2.3.1 a34b4a711ed9928f8809bed3f4c8572dc3a40efb # 2.3.0 3d8dc612b54cef741a1c31da1011a2d48748a1dd -# 2.2.1 -80961835a68e3de1b14819a7b77583a54d2b63d7 -# 2.2.0 -cf354c205de9841a2d306387473dac369359ca2b -# 2.1.2 -c4d3014b95122f4ad19c319a9b3f5f9625d6003f -# 2.1.1 -a8363197118e530d948978da6e5c414a765ba9c0 # 2.1.0 cef4bcafc7867050582d3107632bde7e722575d1 -# 2.0.5 -d33f8a3e2c0a59cb9f383ddec5bbf8d296bb1a23 -# 2.0.4 -592149791e4fea656d8c5fa34c25d4d19076a07a -# 2.0.3 -64b3ac9e8e933a09f049b7cace540ee526f4d5a4 -# 2.0.2 -c1dd17cf383b78fd8fd43442bb5db59b51900410 -# 2.0.1 -f56d620be529b60c13032681446c1eb76e0fb088 # 2.0.0 9dad95b35f935edce4c3d6cfa45c79a0b9c82b9f diff --git a/.github/ISSUE_TEMPLATE/formatting.md b/.github/ISSUE_TEMPLATE/formatting.md index a5330db4cc03..741e9cf032cd 100644 --- a/.github/ISSUE_TEMPLATE/formatting.md +++ b/.github/ISSUE_TEMPLATE/formatting.md @@ -26,7 +26,7 @@ Don't fill the form below manually! Let a program create a report for you: --> -**Prettier 3.3.0** +**Prettier 3.3.1** [Playground link](https://prettier.io/playground/#.....) ```sh diff --git a/.github/ISSUE_TEMPLATE/integration.md b/.github/ISSUE_TEMPLATE/integration.md index e1e0e1bb7cb5..a64d9bf9cb3f 100644 --- a/.github/ISSUE_TEMPLATE/integration.md +++ b/.github/ISSUE_TEMPLATE/integration.md @@ -20,7 +20,7 @@ BEFORE SUBMITTING AN ISSUE: **Environments:** -- Prettier Version: 3.3.0 +- Prettier Version: 3.3.1 - Running Prettier via: - Runtime: - Operating System: diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f419f156849..609324a3c6ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,85 @@ +# 3.3.1 + +[diff](https://github.com/prettier/prettier/compare/3.3.0...3.3.1) + +#### Preserve empty lines in front matter ([#16347](https://github.com/prettier/prettier/pull/16347) by [@fisker](https://github.com/fisker)) + + +```markdown + +--- +foo: + - bar1 + + - bar2 + + - bar3 +--- +Markdown + + + +--- +foo: + - bar1 + - bar2 + - bar3 +--- + +Markdown + + + +--- +foo: + - bar1 + + - bar2 + + - bar3 +--- + +Markdown +``` + +#### Preserve explicit language in front matter ([#16348](https://github.com/prettier/prettier/pull/16348) by [@fisker](https://github.com/fisker)) + + +```markdown + +---yaml +title: Hello +slug: home +--- + + +--- +title: Hello +slug: home +--- + + +---yaml +title: Hello +slug: home +--- +``` + +#### Avoid line breaks in import attributes ([#16349](https://github.com/prettier/prettier/pull/16349) by [@fisker](https://github.com/fisker)) + + +```jsx +// 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" }; +``` + # 3.3.0 [diff](https://github.com/prettier/prettier/compare/3.2.5...3.3.0) diff --git a/changelog_unreleased/angular/15926.md b/changelog_unreleased/angular/15926.md deleted file mode 100644 index 15a7d1bba687..000000000000 --- a/changelog_unreleased/angular/15926.md +++ /dev/null @@ -1,42 +0,0 @@ -#### Respect `trailingComma` in Angular templates (#15926 by @fisker) - -If you are using an old version of Angular doesn't support trailing comma, make sure add - -```yaml -overrides: - - files: "" - options: - trailingComma: none -``` - -to your `.prettierrc` file. - - -```jsx -// Input -
- -// Prettier stable -
- -// Prettier main -
-``` diff --git a/changelog_unreleased/api/16157.md b/changelog_unreleased/api/16157.md deleted file mode 100644 index a7f53fa9247a..000000000000 --- a/changelog_unreleased/api/16157.md +++ /dev/null @@ -1,10 +0,0 @@ -#### Add support for `package.yaml` config (#16157 by @danielbayley) - -Enable support for reading `prettier` configuration from [`package.yaml`](https://github.com/pnpm/pnpm/pull/1799). - -```yaml -# package.yaml -prettier: - semi: false - singleQuote: true -``` diff --git a/changelog_unreleased/flow/16066.md b/changelog_unreleased/flow/16066.md deleted file mode 100644 index da4068f3287d..000000000000 --- a/changelog_unreleased/flow/16066.md +++ /dev/null @@ -1,17 +0,0 @@ -#### `declare namespace` printing support for Flow (#16066 by @SamChou19815) - - -```jsx -// Input -declare namespace foo { - declare var bar: string; -} - -// Prettier stable -// does not parse - -// Prettier main -declare namespace foo { - declare var bar: string; -} -``` diff --git a/changelog_unreleased/flow/16191.md b/changelog_unreleased/flow/16191.md deleted file mode 100644 index f1c4291f112b..000000000000 --- a/changelog_unreleased/flow/16191.md +++ /dev/null @@ -1,23 +0,0 @@ -#### Component syntax printing support for Flow (#16191 by @SamChou19815) - - -```jsx -// Input -component MyComponent(a: string, b: number) renders SomeComponent { - return ; -} -hook useMyHook(a: string) { - return useState(a); -} - -// Prettier stable -// does not parse - -// Prettier main -component MyComponent(a: string, b: number) renders SomeComponent { - return ; -} -hook useMyHook(a: string) { - return useState(a); -} -``` diff --git a/changelog_unreleased/flow/16268.md b/changelog_unreleased/flow/16268.md deleted file mode 100644 index 1f6270c0990b..000000000000 --- a/changelog_unreleased/flow/16268.md +++ /dev/null @@ -1,21 +0,0 @@ -#### Support big int Flow Enums (#16268 by @gkz) - -Adds support for big int [Flow Enums](https://flow.org/en/docs/enums/). - - -```jsx -// Input -enum E { - A = 0n, - B = 1n, -} - -// Prettier stable -// error - -// Prettier main -enum E { - A = 0n, - B = 1n, -} -``` diff --git a/changelog_unreleased/flow/16271.md b/changelog_unreleased/flow/16271.md deleted file mode 100644 index dc25e2e399c4..000000000000 --- a/changelog_unreleased/flow/16271.md +++ /dev/null @@ -1,15 +0,0 @@ -#### Support Flow's inexact tuple types (#16271 by @gkz) - -Adds support for Flow's inexact tuple types. - - -```jsx -// Input -type T = [number, ...]; - -// Prettier stable -type T = [number]; - -// Prettier main -type T = [number, ...]; -``` diff --git a/changelog_unreleased/flow/16272.md b/changelog_unreleased/flow/16272.md deleted file mode 100644 index ab752e4fc02e..000000000000 --- a/changelog_unreleased/flow/16272.md +++ /dev/null @@ -1,15 +0,0 @@ -#### Support Flow's 'implies' type guard variant (#16272 by @gkz) - -Adds support for Flow's `implies` type guard variant. Also updates the `flow-parser` dependency. - - -```jsx -// Input -declare function f(x: mixed): implies x is T; - -// Prettier stable -// error - -// Prettier main -declare function f(x: mixed): implies x is T; -``` diff --git a/changelog_unreleased/javascript/15888.md b/changelog_unreleased/javascript/15888.md deleted file mode 100644 index 4959c2f851e6..000000000000 --- a/changelog_unreleased/javascript/15888.md +++ /dev/null @@ -1,13 +0,0 @@ -#### Unquote keys in import attributes (#15888 by @sosukesuzuki) - - -```jsx -// Input -import json from "./mod.json" with { "type": "json" }; - -// Prettier stable -import json from "./mod.json" with { "type": "json" }; - -// Prettier main -import json from "./mod.json" with { type: "json" }; -``` diff --git a/changelog_unreleased/javascript/16058.md b/changelog_unreleased/javascript/16058.md deleted file mode 100644 index f870d51b783d..000000000000 --- a/changelog_unreleased/javascript/16058.md +++ /dev/null @@ -1,16 +0,0 @@ -#### Fix unstable object print (#16058 by @fisker) - - -```jsx -// Input -a = {"\a": 1, "b": 2} - -// Prettier stable (--quote-props consistent) -a = { "a": 1, "b": 2 }; - -// Prettier stable (--quote-props as-needed) -a = { "a": 1, b: 2 }; - -// Prettier main -a = { a: 1, b: 2 }; -``` diff --git a/changelog_unreleased/javascript/16064.md b/changelog_unreleased/javascript/16064.md deleted file mode 100644 index a01066d1fcd8..000000000000 --- a/changelog_unreleased/javascript/16064.md +++ /dev/null @@ -1,21 +0,0 @@ -#### Format embedded GQL in template literal statements (#16064 by @keithlayne) - - -```jsx -// Input -/* GraphQL */ ` - query foo { id } -`; - -// Prettier stable -/* GraphQL */ ` - query foo { id } -`; - -// Prettier main -/* GraphQL */ ` - query foo { - id - } -`; -``` diff --git a/changelog_unreleased/javascript/16070.md b/changelog_unreleased/javascript/16070.md deleted file mode 100644 index 0056c2e1b60a..000000000000 --- a/changelog_unreleased/javascript/16070.md +++ /dev/null @@ -1,23 +0,0 @@ -#### Improve formatting of React `useImperativeHandle` hook (#16070 by @Jaswanth-Sriram-Veturi) - - -```jsx -// Input -useImperativeHandle(ref, () => { - /* Function body */ -}, []); - -// Prettier stable -useImperativeHandle( - ref, - () => { - /* Function body */ - }, - [], -); - -// Prettier main -useImperativeHandle(ref, () => { - /* Function body */ -}, []); -``` diff --git a/changelog_unreleased/javascript/16116.md b/changelog_unreleased/javascript/16116.md deleted file mode 100644 index 31673dfa1cbb..000000000000 --- a/changelog_unreleased/javascript/16116.md +++ /dev/null @@ -1,19 +0,0 @@ -#### Allow linebreaks in member expressions in template interpolations (#16116 by @bakkot) - -When there is already a linebreak in a template interpolation, allow it to stay there even if it is a member expression. Note that (as of [#15209](https://github.com/prettier/prettier/pull/15209)) Prettier will not insert a linebreak inside an interpolation when one is not already present. - - -```jsx -// Input -`template with ${ - very.very.very.very.very.very.very.very.very.very.very.long.chain -}`; - -// Prettier stable -`template with ${very.very.very.very.very.very.very.very.very.very.very.long.chain}`; - -// Prettier main -`template with ${ - very.very.very.very.very.very.very.very.very.very.very.long.chain -}`; -``` diff --git a/changelog_unreleased/javascript/16267.md b/changelog_unreleased/javascript/16267.md deleted file mode 100644 index 78471333fbf8..000000000000 --- a/changelog_unreleased/javascript/16267.md +++ /dev/null @@ -1,19 +0,0 @@ -#### Fix dynamic import when the module source is a template string (#16267 by @fisker) - - -```jsx -// Input -const module = await import(`data:text/javascript, - console.log("RUN"); -`); - -// Prettier stable -const module = await (`data:text/javascript, - console.log("RUN"); -`); - -// Prettier main -const module = await import(`data:text/javascript, - console.log("RUN"); -`); -``` diff --git a/changelog_unreleased/javascript/16349.md b/changelog_unreleased/javascript/16349.md new file mode 100644 index 000000000000..5449ced4bc3a --- /dev/null +++ b/changelog_unreleased/javascript/16349.md @@ -0,0 +1,14 @@ +#### Avoid line breaks in import attributes (#16349 by @fisker) + + +```jsx +// Input +import something from "./some-very-very-very-very-very-very-very-very-long-path.json" with { type: "json" }; + +// Prettier stable +import something from "./some-very-very-very-very-very-very-very-very-long-path.json" with { type: + "json" }; + +// Prettier main +import something from "./some-very-very-very-very-very-very-very-very-long-path.json" with { type: "json" }; +``` diff --git a/changelog_unreleased/markdown/15993.md b/changelog_unreleased/markdown/15993.md deleted file mode 100644 index 06af5767fedf..000000000000 --- a/changelog_unreleased/markdown/15993.md +++ /dev/null @@ -1,51 +0,0 @@ -#### Improve wrapping for code block in markdown and jsx in mdx (#15993 by @seiyab) - - -````md - -```css -img { - filter: drop-shadow(2px 2px 0 hsl(300deg 100% 50%)) drop-shadow( - -2px -2px 0 hsl(210deg 100% 50%) -) - drop-shadow(2px 2px 0 hsl(120deg 100% 50%)) drop-shadow( - -2px -2px 0 hsl(30deg 100% 50%) - ); -} -``` - - -```css -img { - filter: drop-shadow(2px 2px 0 hsl(300deg 100% 50%)) drop-shadow( - -2px -2px 0 hsl(210deg 100% 50%) - ) - drop-shadow(2px 2px 0 hsl(120deg 100% 50%)) drop-shadow( - -2px -2px 0 hsl(30deg 100% 50%) - ); -} -``` - - -```css -img { - filter: drop-shadow(2px 2px 0 hsl(300deg 100% 50%)) - drop-shadow(-2px -2px 0 hsl(210deg 100% 50%)) - drop-shadow(2px 2px 0 hsl(120deg 100% 50%)) - drop-shadow(-2px -2px 0 hsl(30deg 100% 50%)); -} -``` -```` - - -```md - -Prettier is an opinionated-code-formatter-that-support-many-languages-and-integrate-with-most-editors - - -Prettier is an opinionated-code-formatter-that-support-many-languages-and-integrate-with-most-editors - - -Prettier is an -opinionated-code-formatter-that-support-many-languages-and-integrate-with-most-editors -``` diff --git a/changelog_unreleased/markdown/16063.md b/changelog_unreleased/markdown/16063.md deleted file mode 100644 index d1b14cc8d22e..000000000000 --- a/changelog_unreleased/markdown/16063.md +++ /dev/null @@ -1,18 +0,0 @@ -#### Add newline between markdown footnote definitions (#16063 by @Atema) - - -```md - -[^a]: Footnote A - -[^b]: Footnote B - - -[^a]: Footnote A -[^b]: Footnote B - - -[^a]: Footnote A - -[^b]: Footnote B -``` diff --git a/changelog_unreleased/markdown/16158.md b/changelog_unreleased/markdown/16158.md deleted file mode 100644 index 517e09e41deb..000000000000 --- a/changelog_unreleased/markdown/16158.md +++ /dev/null @@ -1,21 +0,0 @@ -#### Improve wrapping for markdown / mdx (#16158 by @seiyab) - -```json -{ "proseWrap": "always" } -``` - - -```md - -\ -word very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word - - -\ -word very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word - - -\ -word very-very-very-very-very-very-very-very-very-very-long-word -very-very-very-very-very-very-very-very-very-very-long-word -``` diff --git a/changelog_unreleased/markdown/16347.md b/changelog_unreleased/markdown/16347.md new file mode 100644 index 000000000000..8f2c85d5c03d --- /dev/null +++ b/changelog_unreleased/markdown/16347.md @@ -0,0 +1,39 @@ +#### Preserve empty lines in front matter (#16347 by @fisker) + + +```markdown + +--- +foo: + - bar1 + + - bar2 + + - bar3 +--- +Markdown + + + +--- +foo: + - bar1 + - bar2 + - bar3 +--- + +Markdown + + + +--- +foo: + - bar1 + + - bar2 + + - bar3 +--- + +Markdown +``` diff --git a/changelog_unreleased/markdown/16348.md b/changelog_unreleased/markdown/16348.md new file mode 100644 index 000000000000..b116b885fd18 --- /dev/null +++ b/changelog_unreleased/markdown/16348.md @@ -0,0 +1,22 @@ +#### Preserve explicit language in front matter (#16348 by @fisker) + + +```markdown + +---yaml +title: Hello +slug: home +--- + + +--- +title: Hello +slug: home +--- + + +---yaml +title: Hello +slug: home +--- +``` diff --git a/changelog_unreleased/typescript/16031.md b/changelog_unreleased/typescript/16031.md deleted file mode 100644 index d706f566c49d..000000000000 --- a/changelog_unreleased/typescript/16031.md +++ /dev/null @@ -1,19 +0,0 @@ -#### Add missing parentheses to `TSInferType` (#16031 by @fisker) - - -```jsx -// Input -type Foo = T extends (infer U extends number) | { a: infer U extends number } - ? U - : never; - -// Prettier stable -type Foo = T extends infer U extends number | { a: infer U extends number } - ? U - : never; - -// Prettier main -type Foo = T extends (infer U extends number) | { a: infer U extends number } - ? U - : never; -``` diff --git a/changelog_unreleased/typescript/16040.md b/changelog_unreleased/typescript/16040.md deleted file mode 100644 index 927f8b16dab5..000000000000 --- a/changelog_unreleased/typescript/16040.md +++ /dev/null @@ -1,21 +0,0 @@ -#### Throw errors for duplicated accessibility modifiers (#16040 by @fisker, @auvred) - - -```jsx -// Input -class Foo { - public public bar() {}; -} - -// Prettier stable -class Foo { - public bar() {} -} - -// Prettier main -SyntaxError: Accessibility modifier already seen. (2:10) - 1 | class Foo { -> 2 | public public bar() {}; - | ^^^^^^ - 3 | } -``` diff --git a/changelog_unreleased/typescript/16133.md b/changelog_unreleased/typescript/16133.md deleted file mode 100644 index 9c2b90f261fe..000000000000 --- a/changelog_unreleased/typescript/16133.md +++ /dev/null @@ -1,22 +0,0 @@ -#### Respect `--no-semi` for readonly class field (#16133 by @sxzz) - - -```tsx -// Input -class A { - field - readonly [expr] = true -} - -// Prettier stable -class A { - field; - readonly [expr] = true -} - -// Prettier main -class A { - field - readonly [expr] = true -} -``` diff --git a/changelog_unreleased/typescript/16194.md b/changelog_unreleased/typescript/16194.md deleted file mode 100644 index f1dafbc17b72..000000000000 --- a/changelog_unreleased/typescript/16194.md +++ /dev/null @@ -1,21 +0,0 @@ -#### Add necessary parentheses to yield expressions (#16194 by @kirkwaiblinger) - -Add parentheses around yield expressions if parent is an angle-bracket type assertion. - - -```ts -// Input -function* g() { - const y = (yield x); -} - -// Prettier stable -function* g() { - const y = yield x; -} - -// Prettier main -function* g() { - const y = (yield x); -} -``` diff --git a/docs/browser.md b/docs/browser.md index 1b9651944857..38e78d5e5aec 100644 --- a/docs/browser.md +++ b/docs/browser.md @@ -18,7 +18,7 @@ Required options: - **[`parser`](options.md#parser) (or [`filepath`](options.md#file-path))**: One of these options has to be specified for Prettier to know which parser to use. -- **`plugins`**: Unlike the `format` function from the [Node.js-based API](api.md#prettierformatsource--options), this function doesn’t load plugins automatically. The `plugins` option is required because all the parsers included in the Prettier package come as plugins (for reasons of file size). These plugins are files in . Note that `estree` plugin should be loaded when printing JavaScript, TypeScript, Flow, or JSON. +- **`plugins`**: Unlike the `format` function from the [Node.js-based API](api.md#prettierformatsource--options), this function doesn’t load plugins automatically. The `plugins` option is required because all the parsers included in the Prettier package come as plugins (for reasons of file size). These plugins are files in . Note that `estree` plugin should be loaded when printing JavaScript, TypeScript, Flow, or JSON. You need to load the ones that you’re going to use and pass them to `prettier.format` using the `plugins` option. @@ -29,8 +29,8 @@ See below for examples. ### Global ```html - - + + - + +