From b72361408e944dcfa9f8009bc3d8360cf6e709ec Mon Sep 17 00:00:00 2001
From: Christopher Quadflieg
Date: Thu, 24 Oct 2019 08:43:44 +0200
Subject: [PATCH] Squashed commit of the following:
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
commit 2c14a7f13c0723b290f9267cdd02165b50f1e3ea
Author: Georgii Dolzhykov
Date: Wed Oct 23 21:57:00 2019 +0300
docs on whitespace sensitivity: better wording (#6699)
commit 63b450b8e69fd9dcfc79bd4e30f98e6d248a63cb
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Wed Oct 23 14:39:44 2019 +0200
Bump terser-webpack-plugin from 1.4.1 to 2.1.3 (#6654)
Bumps [terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin) from 1.4.1 to 2.1.3.
- [Release notes](https://github.com/webpack-contrib/terser-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/terser-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/terser-webpack-plugin/compare/v1.4.1...v2.1.3)
Signed-off-by: dependabot-preview[bot]
commit df45e12c5c9083fee03c56297781f2b15da63609
Author: Kai Cataldo <7041728+kaicataldo@users.noreply.github.com>
Date: Wed Oct 23 07:56:59 2019 -0400
API: add resolveConfig option to getFileInfo() (#6666)
* Add useConfig option to getFileInfo()
* useConfig -> resolveConfig
commit 7f68db8e88adc951b996490a7e16a8aea6faa76a
Author: Sosuke Suzuki
Date: Tue Oct 22 22:05:10 2019 +0900
JavaScript: arguments with object contains newline in arrow function (#6382)
* Modify to fix arguments with object contains newline in arrow function(nested)
* Update CHANGELOG.unreleased.md
* Update tests
* Modify to refactor
* Modify to refactor
* Add pr number and link
* Update CHANGELOG.unreleased.md
* Modify to remove unnecessary null checking
* Fix for ArrayPattern
* Fix for RestElement
* Fix for AssignmentPattern
* Update tests
* Fix for nested array and object
* Update tests
* Fix for nested array pattern
* Update tests
* Modify to discard unnecessary node type check
* Fix for rest element
* Fix for array in rest
* Fix for array in assignment pattern
* Update tests
* Fix for CallExpression with Assignment
* Fix for ArrowFunction with AssignmentPattern
* Update tests
* Modify to support generally pattern
* Update tests
* Modify to use path.each instead of path.map
* Fix for multi arguments
* Fix typo, Argments => Arguments
commit a7cae47cdfb60cb5e63ab584e467f78305667145
Author: Chad Carbert
Date: Mon Oct 21 23:51:41 2019 +0200
Glimmer: Improve whitespace handling (#6354)
* Improve curly and whitespace handling
* Refactoring and clean up
* Collapse elements with non-whitespace children
* Clean selfClosing check in AST compare
selfClosing tags can't be considered when using AST_COMPARE=1.
The new AST may have a Glimmer component that has been collapsed,
ie: ->
These result in different ASTs and thereofre we need to clean the
check that compares self-closing in the before and after ASTs
Co-authored-by: Jamie White
* Add istanbul ignore for ternaries in utilities
* Improve handling around whitespace near elements and block statements
* Update tests after rebasing
* Fix CHANGELOG.unreleased.md after rebase
* Tweak regex around leading and trialing line beraks and update test
Co-authored-by: FabHof <35104465+FabHof@users.noreply.github.com>
* Extract attribute value from concat node
commit e4ab962a6db6cebf20133236fa1ed48c599b1ed4
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon Oct 21 17:34:47 2019 +0200
Bump docusaurus from 1.13.0 to 1.14.0 in /website (#6690)
Bumps [docusaurus](https://github.com/facebook/docusaurus) from 1.13.0 to 1.14.0.
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/compare/v1.13.0...v1.14.0)
Signed-off-by: dependabot-preview[bot]
commit 5edb0edae5be00d39c9416e376d14071aad86683
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon Oct 21 14:23:46 2019 +0300
Bump codemirror-graphql from 0.11.1 to 0.11.2 in /website (#6689)
Bumps [codemirror-graphql](https://github.com/graphql/graphiql) from 0.11.1 to 0.11.2.
- [Release notes](https://github.com/graphql/graphiql/releases)
- [Changelog](https://github.com/graphql/graphiql/blob/master/CHANGELOG.md)
- [Commits](https://github.com/graphql/graphiql/compare/codemirror-graphql@0.11.1...codemirror-graphql@0.11.2)
Signed-off-by: dependabot-preview[bot]
commit a5a33bca111e6c09a63ded1b818bce5f88523794
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon Oct 21 14:03:01 2019 +0300
Bump codemirror from 5.49.0 to 5.49.2 in /website (#6691)
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.49.0 to 5.49.2.
- [Release notes](https://github.com/codemirror/CodeMirror/releases)
- [Changelog](https://github.com/codemirror/CodeMirror/blob/master/CHANGELOG.md)
- [Commits](https://github.com/codemirror/CodeMirror/compare/5.49.0...5.49.2)
Signed-off-by: dependabot-preview[bot]
commit 10deb1f086d1baf41f2566d82fd8df24940929c3
Author: Selvazhagan <38141381+selvazhagan@users.noreply.github.com>
Date: Mon Oct 21 02:38:21 2019 -0700
Angular: closing parenthesis on a new line after ternaries passed to pipes (#5902)
commit 8a37258a3344fdf73b6824145d8aabd41db96670
Author: Zaven Muradyan
Date: Sun Oct 20 07:19:47 2019 -0700
Add basic instructions on how to run Prettier locally for debugging. (#6686)
Fixes #5887.
commit 4bd0c014fedf472f65fcfab772f11e52d4c0e23c
Author: Sean Baines
Date: Sun Oct 20 15:44:29 2019 +0200
Fix tooltip being hidden behind browser scrollbars (#6688)
commit e1bfd2e2fc3d78f66c663f311b161e613116d693
Author: Georgii Dolzhykov
Date: Fri Oct 18 15:20:55 2019 +0300
fix playground: wrong parser shown in options on first open (#6683)
commit 3dbe4b20381c3ecc8ada39a6b9cfc902179808ce
Author: fisker Cheung
Date: Fri Oct 18 16:36:24 2019 +0800
Docs: add link to `devDependencies` (#6682)
commit 9a0bdf71cb6112760bf4df89e2b304222fe5003b
Author: JounQin
Date: Thu Oct 17 21:45:24 2019 +0800
feat: add support for PartialApplication (#6397)
commit 80260555c90f369fd4e9d502868c4b5233347cf9
Author: Georgii Dolzhykov
Date: Thu Oct 17 14:23:14 2019 +0300
ts: fix optional computed methods (#6673)
commit 4ba0d4e36d62a96567b3ff57e1e113747cddb457
Author: Georgii Dolzhykov
Date: Wed Oct 16 23:18:53 2019 +0300
fix spelling, wording, markup issues in CHANGELOG.unreleased.md (#6672)
commit f28faf9c048a5a591e27292bfdd2948303571bcf
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Wed Oct 16 20:11:51 2019 +0200
Bump webpack from 4.41.1 to 4.41.2 in /website (#6671)
Bumps [webpack](https://github.com/webpack/webpack) from 4.41.1 to 4.41.2.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.41.1...v4.41.2)
Signed-off-by: dependabot-preview[bot]
Co-authored-by: null <27856297+dependabot-preview[bot]@users.noreply.github.com>
commit 60d6f139a938408f660b3d9a739ce19f96387db0
Author: Sosuke Suzuki
Date: Thu Oct 17 01:53:01 2019 +0900
Docs: update docs to follow #6665 (#6670)
commit 4750b1c25aa75ebbc7464610e8dde02bbaab98a4
Author: fisker Cheung
Date: Wed Oct 16 21:09:39 2019 +0800
Fix an expired todo test (#6665)
* Fix a expired todo test
* only check TypeError
* Throw a specific TypeError
* fix async expect
* use return
commit 10bd71e4781f5f39a08880cd60cdded4fb9e3c20
Author: Eric Sakmar
Date: Wed Oct 16 03:46:20 2019 -0400
fix(js): Object destructuring in method shorthand #6515 (#6646)
commit d52021ecbfda885a00f717b7d9ecbc73236ee9ec
Author: fisker Cheung
Date: Wed Oct 16 13:08:30 2019 +0800
Minor tweaks for build configs (#6663)
* Minor tweaks for build configs
* fix `@angular/compiler` path
commit b5cc13a5dfa92e9166a47b9daf8cce74daeb7722
Author: fisker Cheung
Date: Wed Oct 16 00:00:32 2019 +0800
Remove usage of `require.extensions` in `parser-glimmer.js` (#6658)
* Fix usage of `require.extensions`
* try cjs build
* update comment
commit d4537dc5f2cca7d122e0707a8fd827d2888adff1
Author: Georgii Dolzhykov
Date: Tue Oct 15 18:32:46 2019 +0300
enable the allowUndeclaredExports Babel option (#6660)
commit ab598e6e23356d51bb896e1d02dc23c0f04bea57
Author: Georgii Dolzhykov
Date: Tue Oct 15 18:27:39 2019 +0300
tests: rename duplicate bindings to be ready for #6400 (#6662)
commit 3a998df02e39c81714343d8aa50b176bb45e0446
Author: Sosuke Suzuki
Date: Wed Oct 16 00:11:48 2019 +0900
TSX: Fix incorrectly removing parentheses around jsx elements being accessed in tsx file (#6640)
* Modify to wrap jsx element used with member-expression in tsx
* Add tests
* Update CHANGELOG.unreleased.md
* Modify to support no-inline jsx element
* Add pr number
* Fix from lint-docs
* Modify to rename isTsx => isTSXFile
* Modify to no considering file ext
* Support JSXFragment and add tests
* Update CHANGELOG.unreleased.md
commit c949f5ba20058d6ad5646923138ca3f06c40a514
Author: fisker Cheung
Date: Tue Oct 15 19:48:56 2019 +0800
Use `babel` plugin replace `includes` (#6659)
commit aa4c1cad5bc3f7082138e6f9e4f695f37a0f10ad
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon Oct 14 19:25:54 2019 +0200
Bump @babel/preset-react from 7.0.0 to 7.6.3 in /website (#6648)
Bumps [@babel/preset-react](https://github.com/babel/babel) from 7.0.0 to 7.6.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.0.0...v7.6.3)
Signed-off-by: dependabot-preview[bot]
Co-authored-by: null <27856297+dependabot-preview[bot]@users.noreply.github.com>
commit 3a8ebae57d227354f56e3a1ae4d4033b806572ec
Author: Georgii Dolzhykov
Date: Mon Oct 14 18:39:36 2019 +0300
refactoring: unify code for printing methods, remove isNodeStar… (#6637)
* unify code for printing methods, remove isNodeStartingWithDeclare hacks
* body is BlockStatement, not an array
* getters and setters can't be async
* unify printPropertyKey calls
commit 1e93fabae5f142da6696bff9c871c703dba032fd
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon Oct 14 17:23:23 2019 +0200
Bump webpack from 4.41.0 to 4.41.1 in /website (#6649)
Bumps [webpack](https://github.com/webpack/webpack) from 4.41.0 to 4.41.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.41.0...v4.41.1)
Signed-off-by: dependabot-preview[bot]
Co-authored-by: null <27856297+dependabot-preview[bot]@users.noreply.github.com>
commit 6ca2a1842c0480945a5d98d0c1a5839db0d802ee
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon Oct 14 17:23:12 2019 +0200
Bump @babel/preset-env from 7.6.2 to 7.6.3 in /website (#6650)
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.6.2 to 7.6.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.6.2...v7.6.3)
Signed-off-by: dependabot-preview[bot]
Co-authored-by: null <27856297+dependabot-preview[bot]@users.noreply.github.com>
commit 977b828666a12ce5fff2ec0053360c2d33572e97
Author: Georgii Dolzhykov
Date: Mon Oct 14 15:00:21 2019 +0300
Get rid of TSParenthesizedType nodes before proceeding with formatting (#6605)
* get rid of TSParenthesizedType nodes before proceeding with formatting
* fix parens for TSIndexedAccessType, TSFunctionType, TSConditionalType
fixes #6603
* workaround edge cases with one-item unions and intersections
* fix parens for TSInferType
* fix parens for rest elements in tuple types
* refactoring
* fix function types in conditional types
* move tests for rest and optional tuple elements
* fix comment issues
* tests for unions and intersections
* add parens around multiline unions in tuple
* move the parens check for TS nodes closer to the one for Flow nodes
* update CHANGELOG.unreleased.md
* remove dead code
* fix parens for TSConstructorType
* better wording in CHANGELOG.unreleased.md
commit f8a4a61a6265ff398d817eece67ded0c661b473d
Author: Georgii Dolzhykov
Date: Sun Oct 13 22:51:58 2019 +0300
fix typos (#6642)
commit 02ec2337b8365f3714375185fa1219b818078d49
Author: Sosuke Suzuki
Date: Mon Oct 14 04:51:02 2019 +0900
Modify to follow #6638 (#6645)
commit 43247c88c259feef2287eaf4a11cf52b669b3c9d
Author: Flavyoo
Date: Sun Oct 13 13:15:04 2019 -0400
Added image for Estalee and updates users.yml (#6629)
* Added image for Estalee and updates users.yml
* Update users.yml
* Ran SVGO
* Ran SVGO
commit 1435b2756c0052fd62ccc644bc2fc3cdfee8eb05
Author: David Lechner
Date: Sat Oct 12 12:26:07 2019 -0500
docs/configuration: specify order of precedence (#6638)
This updates the docs to show the search order of the config files.
Order comes from: https://github.com/prettier/prettier/blob/3805034bdfe45722e31a1abf019d4368dfb8ae11/src/config/resolve-config.js#L35-L44
commit 5118fc21f38d1531f56e7148cdff90ebf0cd7625
Author: fisker Cheung
Date: Thu Oct 10 18:04:38 2019 +0800
Update `yaml-unist-parser` to support yaml@1.7.1 (#6632)
commit 4769f1139a70212078b40f0b482fc6a30c04288b
Author: fisker Cheung
Date: Thu Oct 10 18:03:28 2019 +0800
Remove useless `rollup-plugin-node-builtins` (#6635)
commit 297be7cc31d0a3da0288b6e7fdb3dce49d966bf2
Author: Kyle Scully
Date: Wed Oct 9 10:01:05 2019 -0700
docs(website): add build.com to users (#6633)
commit 9805496c4d14d705b60faf06708011023cd72ed8
Author: fisker Cheung
Date: Thu Oct 10 00:10:24 2019 +0800
Add code sample for `babel-flow` parser (#6631)
commit 282d1017f31319c04d1b2e4e7c6e92dca76945b1
Author: Ingvar Stepanyan
Date: Wed Oct 9 15:29:37 2019 +0100
Add support for V8 intrinsics via Babel (#6496)
This plugin was recently added on Babel side and allows to parse custom syntax for V8 intrinsics.
They don't clash with any real-world JavaScript syntax, so adding this option should be as safe as any other plugin, and would allow to format JavaScript that uses such intrinsics (e.g. code inside Node.js or V8 itself).
commit 1cc92752e51b7176a66c2af11d185e00bda71dfe
Author: fisker Cheung
Date: Wed Oct 9 20:13:13 2019 +0800
Update `@babel/core` & `@babel/preset-env` to v7.6.3 (#6628)
commit 179943ccba91ab4afb863dc0c40c873b893a29b6
Author: fisker Cheung
Date: Wed Oct 9 19:52:11 2019 +0800
Update `@babel/parser` to v7.6.3 (#6386)
* fix flow_function_parentheses
* fix directives
* fix classes
* fix flow_method
* fix `do`
* fix `decorators`
* fix `comments_closure_typecast`
* fix `comments`
* fix `flow_internal_slot`
* fix `flow_comments`
* fix `flow_type_declarations`
* fix `flow_type_spread`
* fix `functional_composition`
* fix `multiparser_js_css`
* fix `no-semi`
* fix `objects`
* fix `template`
* fix `yield`
* update `flow_method` snap
* fix `empty_paren_comment`
* fix `mdx`
* fix `object_property_comment`
* Update `@babel/parser`
* Update @babel/parser to v7.6.2
* Update yarn.lock
* fix `nullish_coalescing` test
* fix `flow_class_field` test
* fix snapshot
* @babel/parser v7.6.3
* fix tests
* update snap
commit 7daf06f4ca81be02191a454e965a4186d3db4341
Author: fisker Cheung
Date: Wed Oct 9 01:21:31 2019 +0800
Update `eslint` to v6.5.1 (#6627)
commit 385c2dcc4fb7ee92f36abfa8db4eb31e1a65a7c3
Author: Martin Donath
Date: Tue Oct 8 16:37:40 2019 +0200
[typescript, flow]: double indent for unions inside of tuples (#6381)
commit 02cbd15ec233662a4bf0111f799518cb1de5462d
Author: Sosuke Suzuki
Date: Tue Oct 8 22:56:08 2019 +0900
TypeScript: Fix incorrectly removes double parentheses around types (#6604)
commit affa24ce764bd14ac087abeef0603012f5c635d6
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon Oct 7 18:15:15 2019 +0200
Bump codemirror-graphql from 0.9.0 to 0.11.1 in /website (#6615)
Bumps [codemirror-graphql](https://github.com/graphql/graphiql) from 0.9.0 to 0.11.1.
- [Release notes](https://github.com/graphql/graphiql/releases)
- [Changelog](https://github.com/graphql/graphiql/blob/master/CHANGELOG.md)
- [Commits](https://github.com/graphql/graphiql/compare/v0.9.0...codemirror-graphql@0.11.1)
Signed-off-by: dependabot-preview[bot]
commit 6b1e0b29f39bc5ba2d0d3e750e70d18ba17936a9
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon Oct 7 18:14:19 2019 +0200
Bump concurrently from 4.1.2 to 5.0.0 in /website (#6614)
Bumps [concurrently](https://github.com/kimmobrunfeldt/concurrently) from 4.1.2 to 5.0.0.
- [Release notes](https://github.com/kimmobrunfeldt/concurrently/releases)
- [Commits](https://github.com/kimmobrunfeldt/concurrently/compare/v4.1.2...v5.0.0)
Signed-off-by: dependabot-preview[bot]
Co-authored-by: null <27856297+dependabot-preview[bot]@users.noreply.github.com>
commit 64b036f81f7bc8f910f349300ca8800077cabce3
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon Oct 7 18:11:57 2019 +0200
Bump react-dom from 16.10.1 to 16.10.2 in /website (#6613)
Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) from 16.10.1 to 16.10.2.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v16.10.2/packages/react-dom)
Signed-off-by: dependabot-preview[bot]
Co-authored-by: null <27856297+dependabot-preview[bot]@users.noreply.github.com>
commit 838ca6610d123290d54beb3095b9e1aa2440bec9
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon Oct 7 17:35:18 2019 +0200
Bump react from 16.10.1 to 16.10.2 in /website (#6616)
Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) from 16.10.1 to 16.10.2.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v16.10.2/packages/react)
Signed-off-by: dependabot-preview[bot]
Co-authored-by: null <27856297+dependabot-preview[bot]@users.noreply.github.com>
commit ed7c848f3b1de0de762c5dee772a51aca8e77f86
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon Oct 7 17:34:49 2019 +0200
Bump eslint-config-prettier from 6.3.0 to 6.4.0 (#6618)
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 6.3.0 to 6.4.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v6.3.0...v6.4.0)
Signed-off-by: dependabot-preview[bot]
commit 13db243935c5f015797e4cddadc0da0400210372
Author: Sosuke Suzuki
Date: Tue Oct 8 00:32:10 2019 +0900
Update CHANGELOG.unreleased.md (#6611)
commit 32dd447271db23b6d51f28f7053c7f9ebae46e56
Author: Sosuke Suzuki
Date: Thu Oct 3 23:45:03 2019 +0900
Refactor: Move functions unrelated to printing from printer-estree.js to utils.js (#6562)
commit 6d4d6a759984c40ad2648fa17ad709c7a9830efb
Author: Evilebot Tnawi
Date: Thu Oct 3 17:21:05 2019 +0300
revert: `--only-changed` argument (#6594)
commit 3f13d2ec1b5ef6fe90ff42fcab5d7b4f442c1128
Author: fisker Cheung
Date: Thu Oct 3 20:24:03 2019 +0800
Support typescript 3.6 (#6519)
commit ce65fc236b729e0c347d734df8353649bcff349a
Author: fisker Cheung
Date: Thu Oct 3 19:37:37 2019 +0800
Update all dependencies in `website/` (#6597)
commit 1aef2b13f4e577b9879c35131e0219e5dba5dc81
Author: Sosuke Suzuki
Date: Thu Oct 3 00:34:58 2019 +0900
Website: Update documentation of `resolveConfigFile` (#6568)
commit fced57c1d68971407481247f35fd2c6b329fce4e
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Tue Oct 1 16:51:10 2019 +0200
Bump codemirror-graphql from 0.6.12 to 0.9.0 in /website (#6592)
Bumps [codemirror-graphql](https://github.com/graphql/graphiql) from 0.6.12 to 0.9.0.
- [Release notes](https://github.com/graphql/graphiql/releases)
- [Changelog](https://github.com/graphql/graphiql/blob/master/CHANGELOG.md)
- [Commits](https://github.com/graphql/graphiql/compare/v0.6.12...v0.9.0)
Signed-off-by: dependabot-preview[bot]
commit f4e5d744a942a45f95cdd68b318202b66d48a009
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Tue Oct 1 15:22:03 2019 +0200
[Security] Bump remarkable from 1.7.1 to 1.7.4 in /website (#6589)
Bumps [remarkable](https://github.com/jonschlinkert/remarkable) from 1.7.1 to 1.7.4. **This update includes security fixes.**
- [Release notes](https://github.com/jonschlinkert/remarkable/releases)
- [Changelog](https://github.com/jonschlinkert/remarkable/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jonschlinkert/remarkable/compare/1.7.1...v1.7.4)
Signed-off-by: dependabot-preview[bot]
commit d96be477292b76c959a4c39665bc1f60fbd864b8
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Tue Oct 1 15:21:51 2019 +0200
Bump babel-preset-env from 1.6.1 to 1.7.0 in /website (#6588)
Bumps [babel-preset-env](https://github.com/babel/babel-preset-env) from 1.6.1 to 1.7.0.
- [Release notes](https://github.com/babel/babel-preset-env/releases)
- [Changelog](https://github.com/babel/babel-preset-env/blob/1.x/CHANGELOG.md)
- [Commits](https://github.com/babel/babel-preset-env/compare/v1.6.1...v1.7.0)
Signed-off-by: dependabot-preview[bot]
commit 68d68d4a43ba92a767e0362e658ec458ab34933a
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Tue Oct 1 15:12:24 2019 +0200
[Security] Bump extend from 3.0.1 to 3.0.2 in /website (#6586)
Bumps [extend](https://github.com/justmoon/node-extend) from 3.0.1 to 3.0.2. **This update includes a security fix.**
- [Release notes](https://github.com/justmoon/node-extend/releases)
- [Changelog](https://github.com/justmoon/node-extend/blob/master/CHANGELOG.md)
- [Commits](https://github.com/justmoon/node-extend/compare/v3.0.1...v3.0.2)
Signed-off-by: dependabot-preview[bot]
commit b0a13800b7f1b18ee0b2ea74b871c7f4b4e112ea
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Tue Oct 1 15:30:26 2019 +0300
Bump react-dom from 16.3.3 to 16.10.1 in /website (#6593)
Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) from 16.3.3 to 16.10.1.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v16.10.1/packages/react-dom)
Signed-off-by: dependabot-preview[bot]
commit fb7957dee22f4858898567658ef7b69d6b43dbf5
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Tue Oct 1 14:26:09 2019 +0200
[Security] Bump url-parse from 1.4.1 to 1.4.7 in /website (#6591)
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.4.1 to 1.4.7. **This update includes security fixes.**
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.4.1...1.4.7)
Signed-off-by: dependabot-preview[bot]
commit 5c82a0614163fc04d64cbaf21558d050cf2c5272
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Tue Oct 1 14:25:49 2019 +0200
Bump clipboard from 2.0.0 to 2.0.4 in /website (#6590)
Bumps [clipboard](https://github.com/zenorocha/clipboard.js) from 2.0.0 to 2.0.4.
- [Release notes](https://github.com/zenorocha/clipboard.js/releases)
- [Commits](https://github.com/zenorocha/clipboard.js/compare/v2.0.0...v2.0.4)
Signed-off-by: dependabot-preview[bot]
commit a8d13741fd724d5efedc166c50e03ec0f91f4093
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Tue Oct 1 14:17:12 2019 +0200
Bump concurrently from 3.5.1 to 4.1.2 in /website (#6585)
Bumps [concurrently](https://github.com/kimmobrunfeldt/concurrently) from 3.5.1 to 4.1.2.
- [Release notes](https://github.com/kimmobrunfeldt/concurrently/releases)
- [Commits](https://github.com/kimmobrunfeldt/concurrently/compare/3.5.1...v4.1.2)
Signed-off-by: dependabot-preview[bot]
commit a65a7c38402d55b0d458c4f1fc5d2825aef90a94
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Tue Oct 1 14:16:34 2019 +0200
[Security] Bump merge from 1.2.0 to 1.2.1 (#6583)
Bumps [merge](https://github.com/yeikos/js.merge) from 1.2.0 to 1.2.1. **This update includes a security fix.**
- [Release notes](https://github.com/yeikos/js.merge/releases)
- [Commits](https://github.com/yeikos/js.merge/compare/v1.2.0...v1.2.1)
Signed-off-by: dependabot-preview[bot]
commit 8ed774c5dcc6d4cb510a3b68e199a8131c599cda
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Tue Oct 1 15:07:58 2019 +0300
[Security] Bump lodash from 4.17.10 to 4.17.15 (#6581)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.10 to 4.17.15. **This update includes security fixes.**
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.10...4.17.15)
Signed-off-by: dependabot-preview[bot]
commit 6f9d917eb30409e4be2a560d1efcfe425c3aacfc
Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Tue Oct 1 14:06:02 2019 +0200
[Security] Bump extend from 3.0.1 to 3.0.2 (#6579)
Bumps [extend](https://github.com/justmoon/node-extend) from 3.0.1 to 3.0.2. **This update includes a security fix.**
- [Release notes](https://github.com/justmoon/node-extend/releases)
- [Changelog](https://github.com/justmoon/node-extend/blob/master/CHANGELOG.md)
- [Commits](https://github.com/justmoon/node-extend/compare/v3.0.1...v3.0.2)
Signed-off-by: dependabot-preview[bot]
commit 9b1493ad92370adbe0cc3460e0173cbce211dcbb
Author: fisker Cheung
Date: Tue Oct 1 18:54:24 2019 +0800
Update `unicode-regex` to v3 (#6575)
commit 38ae5d5210d9d81776672f2aea00d982160c53b8
Author: Brian Kim
Date: Tue Oct 1 06:53:45 2019 -0400
Javascript: Use function literals in arguments to detect function composition (#6033)
commit b4e86b6b9a8858c1512bb679526ba9677e51ec50
Author: fisker Cheung
Date: Tue Oct 1 07:14:34 2019 +0800
Update `yaml` to v1.1 (#6571)
commit 7cb0c23774f4278d7d60187c6db0d8bd08e9da09
Author: Cyrille David
Date: Mon Sep 30 16:08:58 2019 +0200
fix(handlebars): Use quotes from config in AttrNode (#6377)
commit 2bc15e2beda333f64bff006dbf87ebb25fa2893e
Author: fisker Cheung
Date: Mon Sep 30 21:26:38 2019 +0800
Update `string-width` to latest v3 (#6572)
commit a1cb247ae6a61a156404b89e69142423b1af33e5
Author: fisker Cheung
Date: Mon Sep 30 20:14:11 2019 +0800
Update `execa` to v1 (#6563)
commit 86a3ad890c6d56b9bdb72c5983d33640c650710e
Author: fisker Cheung
Date: Mon Sep 30 20:02:55 2019 +0800
Update `leven` to v3 (#6539)
commit c6dea424e54eb4c8ec414480914ffda71dfccc19
Author: fisker Cheung
Date: Mon Sep 30 19:56:24 2019 +0800
Update `builtin-modules` to v3 (#6546)
commit f2a71e48ce78bda38cc3ee8e510e915e52c5e656
Author: fisker Cheung
Date: Mon Sep 30 19:52:39 2019 +0800
Update `jest-docblock` to v24 (#6538)
commit 30cf1cc75ce41921aa0e93a51e9f6fac8449eaa7
Author: fisker Cheung
Date: Mon Sep 30 19:49:39 2019 +0800
Update `chalk` to v2.4.2 (#6529)
commit 4bf884b315ded4b5a605d6230e63501d308c78fe
Author: fisker Cheung
Date: Mon Sep 30 19:48:20 2019 +0800
Update `jest-watch-typeahead` to v0.3.1 (#6566)
commit 4f150d6501cd8d4d174a9c9eebda5ed42deecb62
Author: fisker Cheung
Date: Mon Sep 30 19:47:49 2019 +0800
Update `cross-env` to latest v5 (#6564)
commit 20b4493c31023d187c51786412669b8b28f1e39b
Author: fisker Cheung
Date: Mon Sep 30 19:47:17 2019 +0800
Update `mem` to latest v4 (#6565)
commit ff33515de811038b1673d60e152b4352651814c0
Author: fisker Cheung
Date: Mon Sep 30 19:46:37 2019 +0800
Update `graphql` to v14.5.8 (#6536)
commit 0a6e9db86ad958cd52e51956b5c0862e2ee7c6df
Author: fisker Cheung
Date: Mon Sep 30 19:45:01 2019 +0800
Update `diff` to v4 (#6532)
commit 76c9badfc7ce25e22a919173b5014fcf32ce8630
Author: fisker Cheung
Date: Mon Sep 30 19:44:43 2019 +0800
Update `esutils` to v2.0.3 (#6561)
commit b36242791ce8ac99dc62008b916b762b88d89756
Author: fisker Cheung
Date: Sun Sep 29 09:45:16 2019 +0800
Update `semver` to v6 (#6543)
commit 30c399044abbbf3313e80dfbc6df586a585d47c1
Author: fisker Cheung
Date: Sun Sep 29 00:21:44 2019 +0800
Update `rollup` related dependencies to latest (#6559)
commit 9c46c88a9802b59bddbd0599da5b07cfb6ce4865
Author: fisker Cheung
Date: Sun Sep 29 00:21:11 2019 +0800
Update `jest-junit` to v8 (#6549)
commit 6e5cef01abf2c3b050970cf2a320059c4f9f9618
Author: fisker Cheung
Date: Sat Sep 28 22:40:13 2019 +0800
Update `remark-math` to v1.0.6 (#6556)
* Update `remark-math` to v2
* Update `remark-math` to v1.0.6
commit 261e7756060cbdba2389dc5f1483f11f73044e70
Author: fisker Cheung
Date: Sat Sep 28 22:39:49 2019 +0800
Update `@babel/core` and `@babel/preset-env` to v7.6.2 (#6557)
commit b69deca1dcfe8a971bfc9a2d08dc03b5f5b52fd6
Author: fisker Cheung
Date: Sat Sep 28 22:35:02 2019 +0800
Update flow-parser to v.89.0 (#6555)
commit 7f389e1f600ba7f44df30d02db049b2b5d540344
Author: fisker Cheung
Date: Sat Sep 28 22:32:39 2019 +0800
Update `shelljs` to v0.8.3 (#6552)
commit e742a1c80bb4959832887c651e03ba574769f1b0
Author: fisker Cheung
Date: Sat Sep 28 22:32:18 2019 +0800
Update `html-element-attributes` to v2.1.0 (#6537)
commit 2a995cab421aef6d4b76fbdd05a007f4a13a7902
Author: fisker Cheung
Date: Sat Sep 28 21:45:24 2019 +0800
Update `strip-ansi` to v5 (#6554)
commit 0610862f56be743109fdd51bb6f5054f1a747443
Author: fisker Cheung
Date: Sat Sep 28 21:44:20 2019 +0800
Update `dashify` to v2 (#6531)
commit d1ec5975c4c6edcee02c20e8aa963429ac56e36a
Author: fisker Cheung
Date: Sat Sep 28 21:43:06 2019 +0800
update `cosmiconfig` to v5.2.1 (#6530)
commit 496c5a208a9cfb8996250ddbc6df7877eb57fb24
Author: fisker Cheung
Date: Sat Sep 28 21:42:43 2019 +0800
update `camelcase` to v5.3.1 (#6528)
* update `camelcase` to v5.3.1
* update yarn.lock
commit 7ec1af1cbd7c900d833b2da1bcf465734e1ec955
Author: fisker Cheung
Date: Sat Sep 28 21:41:30 2019 +0800
update `editorconfig` to v0.15.3 (#6533)
commit 27bef857df07832a4712e9b37ec74a998581ebf3
Author: fisker Cheung
Date: Sat Sep 28 21:40:47 2019 +0800
Update `rimraf` to v3 (#6551)
commit f86a5bfae39dd32571599b1c3d17fa6c5daaf318
Author: fisker Cheung
Date: Sat Sep 28 21:40:28 2019 +0800
Update `webpack` to v4.41.0 (#6560)
* Update `webpack` to v4.41.0
* update cache version
commit eeb4734b23ca7fa1619c0a8f4d135d631baf1d1b
Author: fisker Cheung
Date: Sat Sep 28 21:40:05 2019 +0800
Update `resolve` to v1.12.0 (#6542)
commit 112593606301e2896d760fc3b15cda6397e70192
Author: fisker Cheung
Date: Sat Sep 28 21:39:32 2019 +0800
Update `html-tag-names` to v1.1.4 (#6553)
commit 28b06e940078a0b39ea24f8664560e1b87f4baaa
Author: fisker Cheung
Date: Sat Sep 28 21:39:11 2019 +0800
Update `eslint-plugin-prettier` to v3.1.1 (#6558)
commit 84e7866896ea5e12a0b916b4a7cf51123aea323e
Author: Andrew Powell
Date: Sat Sep 28 09:22:18 2019 -0400
docs: add prettier-plugin-package to community plugins (#6463)
commit 8125667bbf35b40fc78f3e18577a332629f034ba
Author: Matthew Leffler
Date: Fri Sep 27 07:20:31 2019 -0400
Add R&D to users (#6523)
commit c0059b06c0d392f1f871460d15de0ca17d4e5b0c
Author: Sosuke Suzuki
Date: Fri Sep 27 20:09:43 2019 +0900
Fix lint (#6526)
commit bb037eb218cbcf914575fe95d9f43e87ffab69a9
Author: Matthew Leffler
Date: Wed Sep 25 08:51:50 2019 -0400
TypeScript: Improve argument expansion with `as` type expressions (#6471)
commit 90bb52439b2dbe36dfa7aace9d1f336b2cd72587
Author: Albert Nigmatzianov
Date: Tue Sep 24 20:28:26 2019 +0200
Add Campusjäger to users (#6509)
commit 3fb6d0b88a4abc54a49b99b5fc86d53a959ef2f6
Author: fisker Cheung
Date: Wed Sep 25 00:53:31 2019 +0800
Update `linguist-languages` to v7.6.0 (#6489)
commit 27e777e476ea09025187e1d179d87ed90a948931
Author: Sosuke Suzuki
Date: Wed Sep 25 00:59:54 2019 +0900
TypeScript: Keep type parameters inline for a variable declaration (#6467)
* Modify to keep inline type parameter with variable declaration
* Update CHENGELOG.unreleased.md
* Add tests
* Add tests
* Add pr number and link
commit 24ffeba8f6324ee74c5439c649b03fa2b0aec441
Author: fisker Cheung
Date: Tue Sep 24 00:36:31 2019 +0800
Update `@angular/compiler` to v8 (#6498)
commit 2e2368f5d7db2d74c4c4b0242055a8dbb2a55398
Author: Sosuke Suzuki
Date: Tue Sep 24 01:35:06 2019 +0900
JavaScript: Fix inconsistent indentation in switch statement (#6514)
* Add "SwitchStatement" to isInsideParenthesis
* Change tests
* Add tests
* Update CHANGELOG.unreleased.md
* Add pr number and link
commit c5c8862333135e4abc2d03b5b0e76faf9d9014f7
Author: Sosuke Suzuki
Date: Mon Sep 23 21:00:34 2019 +0900
JavaScript: Fix Bad format for multi-line optional chaining with comment (#6506)
commit 942dc04c5189d609cf3fbf94521560c8b5f5e152
Author: Markus <9371658+beardcoder@users.noreply.github.com>
Date: Mon Sep 23 13:58:23 2019 +0200
TASK: Correct version number (#6493)
commit 70d6352d32cfc7276e3594c1a5d98e5defb3c1bb
Author: Lucas Duailibe
Date: Mon Sep 16 12:21:09 2019 -0300
Remove empty blog post
commit f000fb1e881ea67036f942469078d61288e69847
Author: fisker Cheung
Date: Mon Sep 16 19:33:59 2019 +0800
Update babel related deps (#6485)
commit a0eddb1c8c1012126758fbec4e45a3530b618e6e
Author: fisker Cheung
Date: Mon Sep 16 19:33:40 2019 +0800
Update rollup related deps (#6484)
commit 35b6cdcef31724ac31a3e0497be4c8feb7adf7f4
Author: fisker Cheung
Date: Mon Sep 16 19:33:11 2019 +0800
Update eslint related deps (#6483)
commit 71d9a08488a3e0939eb874cacd0acbb1e6409a3a
Author: fisker Cheung
Date: Mon Sep 16 17:13:32 2019 +0800
Minify postcss parser (#6395)
* Update webpack to v4
* add todo
* add link
* Minify postcss parser
* update yarn.lock
* chore: update yarn.lock
commit 8d0ac8bb58ccc0d30a47a000ca3adba7343cec90
Author: Simon Lydell
Date: Sat Sep 14 13:11:52 2019 +0200
Update website/versioned_docs/version-stable/
commit 5ce16eaa023d0926cf508e900ca191bd08c731ec
Author: fisker Cheung
Date: Sat Sep 14 05:57:16 2019 +0800
Update linguist-languages to v7 (#6367)
* Update linguist-languages to v7
* Trigger build
* Update
* replace `includes` with `indexOf`
* fix `exclude`
* add `nodejs` back
commit 370e827217574e6f34c9c66fe2253b4ee6955561
Author: fisker Cheung
Date: Sat Sep 14 05:55:30 2019 +0800
Update webpack to v4 (#6366)
* Update webpack to v4
* add todo
* add link
commit e83b4537feaa6c063a1598b8d3972b6ad600f2a7
Author: Ramy Majouji
Date: Thu Sep 12 15:31:18 2019 -0400
Optimize Images (#6472)
* Optimize PNGs and SVGs
Ran all images through SVGO and ImageOptim. No design changes and no lossy compression.
* Add Font Smoothing
* --pretty --indent 2
* Update prettier-centered-logo-static.svg
commit af3084a63fad78eb617798044f9566eb30555e22
Author: Jack Bates
Date: Thu Sep 12 08:52:48 2019 -0700
Plugins can have falsy default options (#6348)
commit ee43140f2c6b62bbba3767a3e46882a7586040a7
Author: Matthew Leffler
Date: Thu Sep 12 08:21:07 2019 -0600
Fix docs lint error (#6474)
commit 2e8690a2a9cce872a714913323e1fb8f3f92f43b
Author: Lipis
Date: Thu Sep 12 01:37:25 2019 +0300
Rename 2019-09-16-1.19.md to 2019-09-16-1.19.0.md
commit 80df0fe793d7b5a144a3f0e632449bbe0b102d83
Author: Lipis
Date: Thu Sep 12 01:36:53 2019 +0300
Create 2019-09-16-1.19.md
commit 8e8411b7c7bbadbec92669c9bcf5ed771c0bcc91
Author: Sosuke Suzuki
Date: Wed Sep 11 19:10:44 2019 +0900
Fix lint error (#6465)
commit 3f89bba2314d0b69eae6e290f243e3e2a848d9fa
Author: Sosuke Suzuki
Date: Wed Sep 11 18:10:34 2019 +0900
JavaScript: Fix formatting on long named exports (#6446)
* Modify to put specific export inline
* Add tests
* Fix tests
* Modify to support default exports
* Update CHANGELOG.unreleased.md
* Modify to refactor
* Add pr link
* Modify to rename "content" -> "printed"
* Modify to define canBreak helpter
* Fix from linter
* Update CHANGELOG.unreleased.md
* Add tests
commit 9f5bd298db26f76e95ad17f8406edd7ebefacc5a
Author: Lipis
Date: Sat Sep 7 19:38:14 2019 +0300
website: Update dependencies on website (#6455)
* website: Update dependencies on website
* Update website/pages/en/index.js
Co-Authored-By: Simon Lydell
commit 8f0fdba4ba34fd77976be8bdc505cb99ed0299dd
Author: Sosuke Suzuki
Date: Sat Sep 7 21:46:00 2019 +0900
JavaScript: Fix ugly formatting parens wrap binary expressions… (#6441)
* Modify to break specific call expression correctly
* Add tests
* Update CHANGELOG.unreleased.md
* Add tests
* Fix tests
* Add pr link
commit fd6ad2a623be5aed12b4718a6d08afbbdd4d84f6
Author: Kevin Gibbons
Date: Thu Sep 5 12:56:30 2019 -0700
handle empty object param patterns with type annotations (#6438)
* handle object patterns in function parameters with type annotations
* fix lint
* update changelog
commit ff9b2b6cb5cdcfc0db62d4f7fcee74a1e3dd24ad
Author: Georgii Dolzhykov
Date: Thu Sep 5 21:24:20 2019 +0300
HTML: treat scripts as blocks (not inline) (#6423)
* HTML: treat scripts as blocks (not inline)
Fixes #6393
Signed-off-by: Georgii Dolzhykov
* update CHANGELOG.unreleased.md
commit 223443c057e64ca04cda5c0f37f5d15daaf69337
Author: Ivan Pazhitnykh
Date: Fri Aug 30 23:30:36 2019 +0300
Playground: Fix "Report issue" 414 bug (#6409)
commit 2523a017aad479b006593e9b380e4e27a7caea3d
Author: Sosuke Suzuki
Date: Fri Aug 30 14:07:00 2019 +0900
JavaScript: object destructuring with parameter decorators (#6411)
commit 7c47135f6162583a86990b2edc817dfe7247bc70
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu Aug 29 20:15:35 2019 +0200
Bump mixin-deep from 1.3.1 to 1.3.2 (#6432)
Bumps [mixin-deep](https://github.com/jonschlinkert/mixin-deep) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/jonschlinkert/mixin-deep/releases)
- [Commits](https://github.com/jonschlinkert/mixin-deep/compare/1.3.1...1.3.2)
Signed-off-by: dependabot[bot]
commit 77e79bbfa5fdd7c8968561ecdfa1b04adbc4596c
Author: Sosuke Suzuki
Date: Fri Aug 30 03:14:45 2019 +0900
TypeScript: Fixed to break line and add a semi in one execution on one line long mapped types (#6420)
commit a8d75a1464414fc0e7e8c761cdcdde76d096281d
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu Aug 29 07:02:13 2019 +0200
Bump mixin-deep from 1.3.1 to 1.3.2 in /website (#6431)
Bumps [mixin-deep](https://github.com/jonschlinkert/mixin-deep) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/jonschlinkert/mixin-deep/releases)
- [Commits](https://github.com/jonschlinkert/mixin-deep/compare/1.3.1...1.3.2)
Signed-off-by: dependabot[bot]
commit 8a4b34d2a48e2684f2ce8e079f595bde4fa47734
Author: Brian Ng
Date: Wed Aug 28 15:03:41 2019 -0500
Add changelog entry for ?? precedence update (#6430)
commit 01dc7aec658ec5041a5d1f0318b82a42614abeb8
Author: Kevin Gibbons
Date: Wed Aug 28 03:50:24 2019 -0700
fix: more readable parentheses for new-call (#6412)
commit 2827543154ba3c39f317b4f47e40d5528d892383
Author: Simon Lydell
Date: Tue Aug 27 07:09:12 2019 +0200
Improve overrides documentation (#6416)
Refs. #6415.
commit 5c976c4636657fd7344227b23de34841498f5811
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue Aug 27 07:08:46 2019 +0200
Bump eslint-utils from 1.3.1 to 1.4.2 (#6421)
Bumps [eslint-utils](https://github.com/mysticatea/eslint-utils) from 1.3.1 to 1.4.2.
- [Release notes](https://github.com/mysticatea/eslint-utils/releases)
- [Commits](https://github.com/mysticatea/eslint-utils/compare/v1.3.1...v1.4.2)
Signed-off-by: dependabot[bot]
commit 2f40dba3177c6edd3ceb88b26cdf4718e892a3e5
Author: Shinigami
Date: Wed Aug 21 19:18:04 2019 +0200
Remove alpha from plugin pug (#6408)
commit 43d03209d211758ae645d35335351b04a672bf38
Author: Christopher Chedeau
Date: Tue Aug 20 14:26:21 2019 -0700
Update ?? precedence to match stage 3 proposal (#6404)
The spec was updated ( https://tc39.es/proposal-nullish-coalescing/ ) with the following two changes:
- ?? has lower precedence than ||. (previously equal)
- ?? cannot immediately contain, or be contained within, an && or || operation. (parens are now required)
The safe way to upgrade is to run prettier with just this change so that parenthesis are properly added. Then to upgrade the parser (only flow supports the new precendence in the next release, babel hasn't been updated yet) in prettier so that the new precedence is being used. Failure to do so will result in parse errors because of missing parenthesis so we will not have silent errors.
There was only 44 callsites mixing || and ?? in a confusing way in the Facebook codebase so it shouldn't be a huge deal in practice.
commit 23146404850011972f695fb6bc2b8113c3cffbfc
Author: Beau Fabry
Date: Thu Aug 15 02:34:19 2019 -0700
include renames in git pre-commit hook (#6371)
commit 68d3e74afeccb5525d3dd9a2bc7e8b4137745245
Author: JounQin
Date: Wed Aug 14 18:45:59 2019 +0800
fix(mdx): text with whitespace after JSX trim incorrectly (#6340)
commit b9cbca9eceea28968096b5a80a41be0f1089a62c
Author: Simon Lydell
Date: Mon Aug 12 19:17:55 2019 +0200
Update website/versioned_docs/version-stable/
commit 26c835c60ca9abd78c4df55da1bdffbce4202cf2
Author: Simon Lydell
Date: Mon Aug 12 17:25:45 2019 +0200
Update option philosophy (#6387)
... to more closely align with what we’ve learned the past 3 years.
Note: These are not my personal opinions. It’s my attempt at distilling
internal core discussions into a short document.
commit 7829caa8189217321fb55d20a517ca33b7331451
Author: fisker Cheung
Date: Mon Aug 12 23:23:13 2019 +0800
Fix `.eslintrc.yml` code style (#6388)
commit e773cfbf1270e10bf6037a092aee465a17166559
Author: Kepler Sticka-Jones
Date: Mon Aug 12 07:39:08 2019 -0600
docs: add jest-runner-prettier to related projects (#6383)
commit 6d6d57f2a46e38bf4b80325aaf3602e831963ada
Author: Dirk Schürjohann
Date: Mon Aug 12 15:38:42 2019 +0200
docs: webstorm info on how to watch partials (#6384)
Since file watchers ignore partials like `_component.scss` (underscore!) when imported in some `main.scss`, they won’t be prettified. Use the `COMPILE_PARTIAL=true` environment variable to also watch and prettify partials.
commit dd648423750552cd6dad8653b7df81e1cfbc4286
Author: Cyrille David
Date: Mon Aug 12 15:35:13 2019 +0200
chore(Handlebars): Refactor test suite (#6378)
commit 4b96097a8db7436236585eef93da4a3e8d2a53fc
Author: Chris Brody
Date: Fri Aug 9 09:42:02 2019 -0400
get-stream@4.1.0 update in package dependencies (#6372)
commit 9e5a5435a107fb894b20c24a97a8c5a63ee54ad9
Author: Sosuke Suzuki
Date: Thu Aug 8 22:48:37 2019 +0900
fix(TypeScript): specific union type breaks after opening parenthesis, but not before closing (#6307)
commit ce366f08348fd3a68f93b2d714fb734a08b8a1e2
Author: Sosuke Suzuki
Date: Thu Aug 8 22:06:28 2019 +0900
fix(JavaScript): bug when arrow fn as function parameter with newline (#6301)
commit d66c5f82daf9d395b89956d5e762a4dc2a054c42
Author: Sosuke Suzuki
Date: Thu Aug 8 21:18:37 2019 +0900
fix(HTML, Vue): don't break the template element included in a line shorter than print-width (#6284)
commit 38450587fef735b5cd722e68a25a91a9bc30bf1f
Author: Jack Bates
Date: Thu Aug 8 05:02:47 2019 -0700
Delete .config.json.swp (#6363)
commit 494e3b74289afbfa1da4cddf8f66fa5f1b1e3689
Author: fisker Cheung
Date: Thu Aug 8 20:00:42 2019 +0800
Update babel (#6368)
* Update `@babel/core` & `@babel/preset-env` to latest
* Update `@babel/code-frame`
commit c5cf747b267bd1d84f70a574f0fb27373c44242b
Author: fisker Cheung
Date: Thu Aug 8 18:23:04 2019 +0800
Update rollup to v1.19.4 (#6365)
commit 0e77cd3d33d7d78ef4e6f649d83a62aa82dc5125
Author: fisker Cheung
Date: Thu Aug 8 18:21:32 2019 +0800
Update ESLint to v6 (#6364)
commit 7d0175ca90a79051e5713758e6c5295635b634d0
Author: kamilic
Date: Thu Aug 1 17:06:12 2019 +0800
feat: implement --vue-indent-script-and-style mentioned at pr-#… (#6157)
* feat: implement --vue-indent-script-and-style mentioned at pr-#6077
* docs: --vue-indent-script-and-style
* update new test case
* feat: playground for --vue-indent-script-and-style
* chores: Revert package.json version
* Remove noisy snapshots
commit e5fbef238d3c298d02a0eb5f4534b24f95eb8862
Author: JounQin
Date: Tue Jul 30 17:48:14 2019 +0800
docs: fix possible typo AFAIK (#6341)
commit 998f98aaded4c3b2b627578098c7f0c92cda7385
Author: JounQin
Date: Mon Jul 29 19:32:24 2019 +0800
fix: Adjacent JSX elements should be allowed in mdx (#6332)
* fix: adjacent JSX elements should be allowed in mdx
* chore: update CHANGELOG.unreleased.md for PR
* fix: adjacent JSX elements format issue of line
* fix: get html text from ast correctly
* fix: self closing issue
* fix: finally find out how to get original text from position
* chore: reset unnecessary changes
* fix: additional text after jsx should also be allowed
* fix: regression of empty text
* docs: add missing links
* fix linting...
commit 788bd7afcd61b77dc08cd496fa50e8e345a3bf1a
Author: Niklas Higi
Date: Sun Jul 28 08:43:06 2019 +0200
Link to `fast-glob` instead of `glob` in docs (#6333)
commit 48697e923711cf2bd9cf9de2dae8e3445dc5344b
Author: Gabriel Harel
Date: Fri Jul 26 09:03:26 2019 -0700
Handle missing cache directory for changedCache (#6327)
* handle missing cache directory for changedCache
* fallback to temp dir when cache dir not found
commit 6fae09b67ec6f7b27259a5c133a6961d05a4161b
Author: Gabriel Harel
Date: Mon Jul 22 10:17:24 2019 -0400
Add --only-changed flag to CLI (#5910)
commit 7286413ee5246d43f7900997226096989c26fdf0
Author: Matt Kane
Date: Mon Jul 22 14:48:03 2019 +0100
Add JSON script types (#6293)
* Add JSON mimetypes
* Use endsWith
Co-Authored-By: Simon Lydell
commit b557dc3603008143b8af55252f12361b05630de1
Author: Joffrey JAFFEUX
Date: Mon Jul 22 15:39:18 2019 +0200
[Glimmer/Handlebars] Forces multilines print when almost at max length (#6249)
commit 0c72b24a0e584d6f1a8bb0e8ba3a090e268721fb
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon Jul 22 14:04:10 2019 +0300
Bump lodash from 4.17.5 to 4.17.15 in /website (#6320)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.5 to 4.17.15.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.5...4.17.15)
Signed-off-by: dependabot[bot]
commit 26b55a7e339d6e5021e19991ee1d14f3394f385d
Author: Alexander Kachkaev
Date: Sat Jul 20 19:43:11 2019 +0100
Add prettier-plugin-packagejson to docs (#6314)
commit 9c8d920c173534e7c65111f9310f763f80de55a3
Author: Liam Stupid Name Humphreys
Date: Thu Jul 18 15:54:39 2019 +0100
add Kotlin plugin to plugins doc (#6309)
* add kotlin-plugin to plugins doc
* maintain alphabetic order in plugins list
* maintain alphabetic order in plugins list
---
.eslintrc.yml | 22 +-
.ignore | 1 -
CHANGELOG.unreleased.md | 906 ++-
CONTRIBUTING.md | 2 +-
docs/api.md | 20 +-
docs/cli.md | 2 +-
docs/configuration.md | 23 +-
docs/integrating-with-linters.md | 14 +-
docs/option-philosophy.md | 36 +-
docs/options.md | 15 +
docs/plugins.md | 7 +-
docs/precommit.md | 4 +-
docs/related-projects.md | 1 +
docs/webstorm.md | 3 +-
package.json | 107 +-
scripts/.eslintrc.yml | 8 +-
scripts/build/build.js | 2 +-
scripts/build/bundler.js | 27 +-
scripts/build/config.js | 72 +-
src/cli/util.js | 2 +-
src/common/get-file-info.js | 71 +-
src/common/util.js | 3 +-
src/language-css/index.js | 8 +-
src/language-css/printer-postcss.js | 8 +-
src/language-graphql/index.js | 2 +-
src/language-handlebars/index.js | 2 +-
src/language-handlebars/printer-glimmer.js | 175 +-
src/language-html/constants.evaluate.js | 1 +
src/language-html/index.js | 8 +-
src/language-html/options.js | 7 +
src/language-html/printer-html.js | 5 +-
src/language-html/utils.js | 7 +-
src/language-js/clean.js | 5 -
src/language-js/comments.js | 3 +-
src/language-js/embed.js | 2 +-
src/language-js/index.js | 27 +-
src/language-js/needs-parens.js | 166 +-
src/language-js/parser-babylon.js | 5 +-
src/language-js/postprocess.js | 30 +-
src/language-js/printer-estree.js | 1278 +--
src/language-js/utils.js | 838 +-
src/language-markdown/index.js | 23 +-
src/language-markdown/mdx.js | 10 +-
src/language-markdown/parser-markdown.js | 29 +-
src/language-markdown/printer-markdown.js | 70 +-
src/language-markdown/utils.js | 18 +-
src/language-yaml/index.js | 2 +-
src/main/comments.js | 4 +-
src/main/options.js | 3 +-
src/main/parser.js | 2 +-
src/main/support.js | 4 +-
src/utils/create-language.js | 10 +-
.../__snapshots__/jsfmt.spec.js.snap | 4 +-
tests/arrays/__snapshots__/jsfmt.spec.js.snap | 4 +-
tests/arrays/empty.js | 2 +-
tests/arrows/__snapshots__/jsfmt.spec.js.snap | 1242 ++-
tests/arrows/call.js | 318 +
.../__snapshots__/jsfmt.spec.js.snap | 8 +-
tests/assignment/destructuring.js | 2 +-
.../__snapshots__/jsfmt.spec.js.snap | 12 +-
.../assignment_comments.js | 6 +-
tests/async/__snapshots__/jsfmt.spec.js.snap | 20 +-
tests/async/await_parse.js | 6 +-
tests/async/conditional-expression.js | 2 +-
tests/async/parens.js | 2 +-
.../__snapshots__/jsfmt.spec.js.snap | 142 +-
tests/binary-expressions/arrow.js | 4 +-
tests/binary-expressions/call.js | 65 +
tests/binary-expressions/comment.js | 2 +-
.../__snapshots__/jsfmt.spec.js.snap | 36 +-
tests/class_comment/comments.js | 18 +-
.../__snapshots__/jsfmt.spec.js.snap | 64 +-
tests/class_extends/extends.js | 32 +-
.../classes/__snapshots__/jsfmt.spec.js.snap | 32 +-
tests/classes/break.js | 8 +-
tests/classes/empty.js | 8 +-
.../__snapshots__/jsfmt.spec.js.snap | 24 +
.../classes_private_fields/private_fields.js | 6 +
.../comments/__snapshots__/jsfmt.spec.js.snap | 176 +-
tests/comments/assignment-pattern.js | 2 +-
tests/comments/dangling.js | 8 +-
tests/comments/export.js | 4 +
tests/comments/flow_union.js | 2 +-
tests/comments/function-declaration.js | 30 +-
tests/comments/last-arg.js | 12 +-
tests/comments/variable_declarator.js | 30 +-
.../__snapshots__/jsfmt.spec.js.snap | 36 +-
.../closure-compiler-type-cast.js | 18 +-
.../__snapshots__/jsfmt.spec.js.snap | 8 +-
tests/conditional/comments.js | 4 +-
.../__snapshots__/jsfmt.spec.js.snap | 5 +-
.../__snapshots__/jsfmt.spec.js.snap | 9 +-
tests/decorators/classes.js | 2 +-
.../__snapshots__/jsfmt.spec.js.snap | 24 +
tests/destructuring/destructuring.js | 12 +
.../__snapshots__/jsfmt.spec.js.snap | 16 +-
tests/directives/test.js | 8 +-
tests/do/__snapshots__/jsfmt.spec.js.snap | 4 +-
tests/do/do.js | 2 +-
.../__snapshots__/jsfmt.spec.js.snap | 16 +-
.../empty_paren_comment.js | 8 +-
.../__snapshots__/jsfmt.spec.js.snap | 11 +
tests/export_extension/export.js | 3 +
.../exports/__snapshots__/jsfmt.spec.js.snap | 4 +
tests/exports/test.js | 2 +
.../__snapshots__/jsfmt.spec.js.snap | 4 +-
tests/flow_class_field/override.js | 2 +-
.../__snapshots__/jsfmt.spec.js.snap | 28 +-
tests/flow_comments/arrow.js | 6 +-
tests/flow_comments/let.js | 2 +-
tests/flow_comments/object_type_annotation.js | 6 +-
.../__snapshots__/jsfmt.spec.js.snap | 204 +-
tests/flow_function_parentheses/test.js | 34 +-
.../__snapshots__/jsfmt.spec.js.snap | 28 +-
tests/flow_internal_slot/internal_slot.js | 14 +-
.../__snapshots__/jsfmt.spec.js.snap | 4 +-
tests/flow_method/method.js | 2 +-
.../__snapshots__/jsfmt.spec.js.snap | 34 +
tests/flow_parameter_with_type/jsfmt.spec.js | 2 +
tests/flow_parameter_with_type/param.js | 2 +
.../__snapshots__/jsfmt.spec.js.snap | 48 +-
tests/flow_type_declarations/long.js | 2 +-
tests/flow_type_declarations/opaque.js | 10 +-
.../__snapshots__/jsfmt.spec.js.snap | 8 +-
tests/flow_type_spread/comments.js | 4 +-
.../__snapshots__/jsfmt.spec.js.snap | 57 +-
tests/flow_union/union.js | 2 +-
tests/flow_union/within-tuple.js | 13 +
.../__snapshots__/jsfmt.spec.js.snap | 97 +-
tests/functional_composition/lodash_flow.js | 4 +-
.../lodash_flow_right.js | 4 +-
tests/functional_composition/ramda_compose.js | 5 +
.../reselect_createselector.js | 4 +-
.../glimmer/__snapshots__/jsfmt.spec.js.snap | 1658 ----
tests/glimmer/comment.hbs | 11 -
tests/glimmer/preserved-spaces-and-breaks.hbs | 44 +
.../__snapshots__/jsfmt.spec.js.snap | 40 +
tests/handlebars-attr-node/brackets.hbs | 4 +
.../jsfmt.spec.js | 0
.../__snapshots__/jsfmt.spec.js.snap | 395 +
.../basic-handlebars.hbs | 0
.../component.hbs | 0
tests/handlebars-basics/jsfmt.spec.js | 2 +
.../literals.hbs | 0
.../nested-path.hbs | 0
.../{handlebars => handlebars-basics}/raw.hbs | 0
.../string-literals.hbs | 0
.../__snapshots__/jsfmt.spec.js.snap | 865 ++
.../block-statement.hbs | 0
.../each.hbs | 0
.../if-else.hbs} | 18 +
.../handlebars-block-statement/jsfmt.spec.js | 2 +
.../loop.hbs | 2 +-
.../__snapshots__/jsfmt.spec.js.snap | 46 +
.../comments.hbs | 12 +
.../jsfmt.spec.js | 0
.../__snapshots__/jsfmt.spec.js.snap | 124 +
.../concat-statement.hbs | 0
.../handlebars-concat-statement/jsfmt.spec.js | 2 +
.../__snapshots__/jsfmt.spec.js.snap | 168 +
.../element-node.hbs | 0
tests/handlebars-element-node/jsfmt.spec.js | 2 +
.../__snapshots__/jsfmt.spec.js.snap | 30 +
.../html-entities.hbs | 0
tests/handlebars-escape/jsfmt.spec.js | 2 +
.../__snapshots__/jsfmt.spec.js.snap | 144 +-
.../empty-with-no-trailing-newline.hbs | 0
.../empty-with-trailing-newline.hbs | 1 +
.../handlebars-last-line/end-of-line-last.hbs | 1 +
tests/handlebars-last-line/jsfmt.spec.js | 2 +
.../__snapshots__/jsfmt.spec.js.snap | 154 +
.../element-modifier-statement.hbs | 0
.../jsfmt.spec.js | 2 +
.../__snapshots__/jsfmt.spec.js.snap | 149 +
tests/handlebars-newline/jsfmt.spec.js | 1 +
tests/handlebars-newline/test.hbs | 69 +
.../__snapshots__/jsfmt.spec.js.snap | 198 +
tests/handlebars-sub-expression/jsfmt.spec.js | 2 +
.../sub-expressions.hbs | 0
.../__snapshots__/jsfmt.spec.js.snap | 415 +
tests/handlebars-text-wrap/jsfmt.spec.js | 1 +
tests/handlebars-text-wrap/test.hbs | 145 +
.../__snapshots__/jsfmt.spec.js.snap | 519 ++
tests/handlebars-whitespace/basics.hbs | 26 +
tests/handlebars-whitespace/boss.hbs | 15 +
.../curly.hbs | 0
.../display-inline-block.hbs | 12 +
tests/handlebars-whitespace/display-none.hbs | 2 +
tests/handlebars-whitespace/fill.hbs | 11 +
.../handlebars-whitespace/inline-element.hbs | 16 +
tests/handlebars-whitespace/jsfmt.spec.js | 1 +
.../non-breaking-whitespace.hbs | 6 +
tests/handlebars-whitespace/punctuation.hbs | 3 +
.../surrounding-linebreak.hbs | 17 +
tests/handlebars-whitespace/table.hbs | 20 +
tests/handlebars/if-else.hbs | 18 -
tests/handlebars/if.hbs | 3 -
.../__snapshots__/jsfmt.spec.js.snap | 36 +
tests/html_script/script.html | 17 +
.../__snapshots__/jsfmt.spec.js.snap | 229 +
tests/html_vue_indent/inside-template.vue | 22 +
tests/html_vue_indent/jsfmt.spec.js | 2 +
tests/html_vue_indent/vue-tag-indent.vue | 22 +
.../__snapshots__/jsfmt.spec.js.snap | 28 +
tests/html_whitespace/template.html | 7 +
tests/if/__snapshots__/jsfmt.spec.js.snap | 20 +-
tests/if/if_comments.js | 10 +-
tests/import/__snapshots__/jsfmt.spec.js.snap | 52 +-
tests/import/comments.js | 6 +-
tests/import/inline.js | 6 +-
.../__snapshots__/jsfmt.spec.js.snap | 48 +
tests/jsx_fragment/fragment.js | 24 +
tests/mdx/__snapshots__/jsfmt.spec.js.snap | 96 +-
tests/mdx/import-export.mdx | 4 +-
tests/mdx/jsx.mdx | 18 +
tests/mdx/mixed.mdx | 2 +-
tests/member/__snapshots__/jsfmt.spec.js.snap | 4 +-
tests/member/expand.js | 2 +-
.../__snapshots__/jsfmt.spec.js.snap | 16 +-
tests/multiparser_js_css/styled-components.js | 8 +-
.../__snapshots__/jsfmt.spec.js.snap | 10 +-
tests/new_expression/new_expression.js | 3 +
.../no-semi/__snapshots__/jsfmt.spec.js.snap | 96 +-
tests/no-semi/no-semi.js | 16 +-
.../__snapshots__/jsfmt.spec.js.snap | 4 +-
.../nullish_coalesing_operator.js | 2 +-
.../__snapshots__/jsfmt.spec.js.snap | 4 +-
tests/object_property_comment/after-key.js | 2 +-
.../objects/__snapshots__/jsfmt.spec.js.snap | 12 +-
tests/objects/expression.js | 6 +-
.../__snapshots__/jsfmt.spec.js.snap | 106 +
tests/optional_chaining/comments.js | 46 +
.../__snapshots__/jsfmt.spec.js.snap | 31 +
tests/partial_application/jsfmt.spec.js | 1 +
tests/partial_application/test.js | 10 +
.../require/__snapshots__/jsfmt.spec.js.snap | 28 +-
tests/require/require.js | 4 +-
tests/switch/__snapshots__/jsfmt.spec.js.snap | 20 +-
tests/switch/switch.js | 6 +
.../template/__snapshots__/jsfmt.spec.js.snap | 4 +-
tests/template/parenthesis.js | 2 +-
.../__snapshots__/jsfmt.spec.js.snap | 16 +-
tests/ternaries/nested.js | 2 +-
.../__snapshots__/jsfmt.spec.js.snap | 49 +
.../custom/typeParameters/variables.ts | 14 +
.../__snapshots__/jsfmt.spec.js.snap | 87 +
.../argument_expansion.js | 31 +
.../jsfmt.spec.js | 1 +
.../__snapshots__/jsfmt.spec.js.snap | 7 +-
.../__snapshots__/jsfmt.spec.js.snap | 8 +-
tests/typescript_as/as.js | 4 +-
.../__snapshots__/jsfmt.spec.js.snap | 30 +-
tests/typescript_class/extends_implements.ts | 12 +-
tests/typescript_class/optional.ts | 4 +
.../__snapshots__/jsfmt.spec.js.snap | 54 +-
.../conditonal-types.ts | 19 +
.../infer-type.ts | 6 +
.../__snapshots__/jsfmt.spec.js.snap | 4 +-
tests/typescript_declare/declare_var.ts | 2 +-
.../__snapshots__/jsfmt.spec.js.snap | 92 +-
.../decorators-comments.js | 4 +-
tests/typescript_decorators/decorators.js | 43 +
.../__snapshots__/jsfmt.spec.js.snap | 198 +
.../intersection-parens.ts | 43 +
tests/typescript_intersection/jsfmt.spec.js | 2 +
.../__snapshots__/jsfmt.spec.js.snap | 9 +-
tests/typescript_keyof/keyof.ts | 5 +-
.../__snapshots__/jsfmt.spec.js.snap | 26 +-
tests/typescript_non_null/member-chain.js | 2 +-
tests/typescript_non_null/parens.ts | 10 +-
.../__snapshots__/jsfmt.spec.js.snap | 2 +
tests/typescript_optional_type/complex.ts | 1 +
.../__snapshots__/jsfmt.spec.js.snap | 14 +
tests/typescript_rest_type/complex.ts | 1 +
.../__snapshots__/jsfmt.spec.js.snap | 60 +
tests/typescript_tsx/member-expression.tsx | 24 +
.../__snapshots__/jsfmt.spec.js.snap | 4 +-
.../long-function-arg.ts | 2 +-
.../__snapshots__/jsfmt.spec.js.snap | 337 +-
tests/typescript_union/inlining.ts | 11 +-
tests/typescript_union/union-parens.ts | 73 +-
tests/typescript_union/within-tuple.ts | 64 +
.../__snapshots__/jsfmt.spec.js.snap | 4 +-
tests/unary_expression/comments.js | 2 +-
.../__snapshots__/jsfmt.spec.js.snap | 47 +
tests/v8_intrinsic/intrinsic_call.js | 24 +
tests/v8_intrinsic/jsfmt.spec.js | 1 +
tests/yield/__snapshots__/jsfmt.spec.js.snap | 12 +-
tests/yield/conditional.js | 6 +-
.../__snapshots__/early-exit.js.snap | 6 +
.../__snapshots__/help-options.js.snap | 13 +
.../__snapshots__/support-info.js.snap | 96 +-
tests_integration/__tests__/file-info.js | 149 +-
tests_integration/__tests__/format.js | 4 +-
.../__tests__/plugin-default-options.js | 10 +-
.../with-resolve-config-no-config/file.bar | 1 +
.../with-resolve-config-no-config/file.foo | 1 +
.../cli/with-resolve-config/.prettierrc | 12 +
.../cli/with-resolve-config/file.bar | 1 +
.../cli/with-resolve-config/file.foo | 1 +
.../plugins/defaultOptions/.config.json.swp | Bin 4096 -> 0 bytes
.../plugins/defaultOptions/plugin.js | 8 +-
website/blog/2017-04-13-1.0.0.md | 4 +-
website/blog/2017-06-28-1.5.0.md | 2 +-
website/blog/2018-11-07-1.15.0.md | 14 +-
.../assets/github-diff-ternary-in-jsx.png | Bin 45500 -> 16599 bytes
website/blog/assets/markdown-list-indent.gif | Bin 524062 -> 341281 bytes
website/blog/assets/markdown-lists.gif | Bin 18118 -> 15059 bytes
.../blog/assets/prettier-revolution-conf.png | Bin 31025 -> 12985 bytes
website/data/users.yml | 12 +
website/package.json | 28 +-
website/pages/en/index.js | 8 +-
website/playground/Playground.js | 260 +-
website/playground/buttons.js | 12 +-
website/playground/codeSamples.js | 3 +-
website/playground/util.js | 4 +-
website/static/icon.png | Bin 1766 -> 1419 bytes
website/static/images/editors/atom-128px.png | Bin 5191 -> 3522 bytes
website/static/images/editors/editor_atom.svg | 12 +-
.../static/images/editors/editor_espresso.svg | 4 +-
website/static/images/editors/editor_vim.svg | 2 +-
website/static/images/editors/editor_vs.svg | 4 +-
.../static/images/editors/editor_webstorm.svg | 8 +-
website/static/images/editors/emacs-128px.png | Bin 19352 -> 7695 bytes
.../static/images/editors/espresso-128px.png | Bin 22302 -> 7184 bytes
.../images/editors/sublimetext-128px.png | Bin 6539 -> 3838 bytes
website/static/images/editors/vim-128px.png | Bin 12452 -> 5395 bytes
.../images/editors/visualstudio-128px.png | Bin 2032 -> 1700 bytes
.../static/images/editors/vscode-128px.png | Bin 13853 -> 5108 bytes
.../static/images/editors/webstorm-128px.png | Bin 3865 -> 3444 bytes
website/static/images/get_started_rects.svg | 98 +-
website/static/images/github.svg | 2 +-
website/static/images/languages/css-128px.png | Bin 7033 -> 4336 bytes
.../static/images/languages/graphql-128px.png | Bin 5994 -> 4047 bytes
.../images/languages/graphql_small_grey.svg | 2 +-
website/static/images/languages/js-128px.png | Bin 2169 -> 1853 bytes
.../static/images/languages/js_small_grey.svg | 4 +-
.../images/languages/markdown-128px.png | Bin 1977 -> 1763 bytes
.../images/languages/python_small_grey.svg | 2 +-
.../images/languages/swift_small_grey.svg | 2 +-
website/static/images/languages/tools_gql.svg | 2 +-
.../static/images/languages/tools_html.svg | 25 +-
website/static/images/languages/tools_md.svg | 7 +-
.../static/images/languages/tools_yaml.svg | 23 +-
website/static/images/npm.svg | 6 +-
website/static/images/tidelift-small.png | Bin 5125 -> 1241 bytes
website/static/images/users/3yourmind.svg | 22 +-
.../static/images/users/algolia-200x100.png | Bin 8748 -> 5022 bytes
.../images/users/assertible-200x100.png | Bin 2744 -> 2499 bytes
website/static/images/users/babel-200x100.png | Bin 12368 -> 5513 bytes
.../static/images/users/brigad-200x100.png | Bin 8258 -> 4010 bytes
website/static/images/users/buildcom.svg | 9 +
website/static/images/users/campusjaeger.svg | 1 +
.../images/users/charlietango-200x100.png | Bin 2013 -> 2011 bytes
website/static/images/users/codecarrot.svg | 12 +-
.../static/images/users/codemix-200x100.png | Bin 2938 -> 1863 bytes
website/static/images/users/computerbase.svg | 8 +-
.../static/images/users/contiamo-200x100.png | Bin 5304 -> 2900 bytes
.../static/images/users/danger-200x100.png | Bin 9633 -> 9003 bytes
.../static/images/users/discord-200x100.png | Bin 1451 -> 1152 bytes
.../static/images/users/drizly-200x100.png | Bin 3526 -> 3109 bytes
website/static/images/users/dropbox.svg | 44 +-
website/static/images/users/dropbox_grey.svg | 43 +-
.../static/images/users/escrow-200x100.png | Bin 6634 -> 3495 bytes
website/static/images/users/estalee.svg | 11 +
.../static/images/users/eventstag-200x100.png | Bin 2580 -> 2539 bytes
website/static/images/users/exponea.svg | 4 +-
.../static/images/users/eyesquare-200x100.png | Bin 5619 -> 3772 bytes
.../static/images/users/facebook-200x100.png | Bin 14370 -> 4548 bytes
.../images/users/freelancer-200x100.png | Bin 4856 -> 3234 bytes
.../images/users/getonboard-200x100.png | Bin 3826 -> 2788 bytes
.../static/images/users/gumgum-200x100.png | Bin 2565 -> 2257 bytes
.../static/images/users/hackclub-200x100.png | Bin 5574 -> 3415 bytes
.../static/images/users/hasura-200x100.png | Bin 9173 -> 4377 bytes
.../static/images/users/hearthsim-200x100.png | Bin 5148 -> 4423 bytes
website/static/images/users/heroku.svg | 52 +-
.../images/users/holidaycheck-200x100.png | Bin 8498 -> 5121 bytes
.../static/images/users/housinganywhere.svg | 4 +-
website/static/images/users/hudl-200x100.png | Bin 5689 -> 3832 bytes
.../static/images/users/ideati-200x100.png | Bin 3374 -> 2656 bytes
website/static/images/users/iress-200x100.png | Bin 4797 -> 3427 bytes
website/static/images/users/jane-200x100.png | Bin 3784 -> 3158 bytes
website/static/images/users/jest-200x100.png | Bin 2913 -> 2696 bytes
website/static/images/users/leesa.svg | 2 +-
.../static/images/users/lifesum-200x100.png | Bin 7628 -> 4515 bytes
.../images/users/loyaltylion-200x100.png | Bin 2551 -> 2232 bytes
website/static/images/users/m6web-200x100.png | Bin 17089 -> 5210 bytes
.../images/users/materialui-200x100.png | Bin 4655 -> 2771 bytes
.../images/users/mathrioshka-200x100.png | Bin 19708 -> 15498 bytes
.../static/images/users/metric-ai-white.svg | 13 +-
website/static/images/users/monei-200x100.png | Bin 5439 -> 3128 bytes
.../static/images/users/mongodb-200x100.png | Bin 7160 -> 3598 bytes
.../static/images/users/moonmail-200x100.png | Bin 5078 -> 3190 bytes
website/static/images/users/n26-200x100.png | Bin 1500 -> 1465 bytes
website/static/images/users/nhl-200x100.png | Bin 10087 -> 4864 bytes
website/static/images/users/nrwl-200x100.png | Bin 11741 -> 3252 bytes
.../static/images/users/openbravo-200x100.png | Bin 4651 -> 2810 bytes
.../static/images/users/outreach-200x100.png | Bin 5486 -> 3875 bytes
.../static/images/users/paypal-200x100.png | Bin 9153 -> 5123 bytes
website/static/images/users/quip.svg | 8 +-
website/static/images/users/react-200x100.png | Bin 5356 -> 2810 bytes
.../static/images/users/researchanddesign.svg | 3 +
.../images/users/rnfirebase-200x100.png | Bin 8457 -> 4369 bytes
website/static/images/users/salesforce.svg | 50 +-
.../static/images/users/sevenspan-200x100.png | Bin 5912 -> 2900 bytes
website/static/images/users/shelf-200x100.png | Bin 2636 -> 2217 bytes
.../images/users/smooth-code-200x100.png | Bin 8868 -> 3113 bytes
.../static/images/users/storybook-200x100.png | Bin 5618 -> 3331 bytes
.../static/images/users/talkable-200x100.png | Bin 2617 -> 2238 bytes
.../images/users/tradeshift-200x100.png | Bin 9289 -> 3079 bytes
.../images/users/transloadit-200x100.png | Bin 7652 -> 3900 bytes
.../static/images/users/troops-200x100.png | Bin 3624 -> 2794 bytes
website/static/images/users/used_by_babel.svg | 4 +-
.../static/images/users/used_by_danger.svg | 2 +-
website/static/images/users/used_by_react.svg | 12 +-
.../static/images/users/used_by_webpack.svg | 4 +-
website/static/images/users/used_by_yarn.svg | 2 +-
.../static/images/users/webflow-200x100.png | Bin 4177 -> 3500 bytes
.../static/images/users/webpack-200x100.png | Bin 4547 -> 3127 bytes
.../static/images/users/wingify-200x100.png | Bin 1626 -> 1602 bytes
website/static/images/users/yarn-200x100.png | Bin 4823 -> 3428 bytes
website/static/images/users/yelp-200x100.png | Bin 8423 -> 4514 bytes
website/static/images/users/zeit-200x100.png | Bin 899 -> 687 bytes
website/static/images/users/zipch-200x100.png | Bin 1678 -> 1337 bytes
.../static/prettier-centered-logo-static.svg | 97 +-
website/static/prettier.png | Bin 11893 -> 5164 bytes
website/static/separate-css/playground.css | 7 +-
website/versioned_docs/version-stable/api.md | 18 +-
.../versioned_docs/version-stable/browser.md | 12 +
website/versioned_docs/version-stable/cli.md | 4 +-
.../version-stable/configuration.md | 23 +-
.../integrating-with-linters.md | 16 +-
.../version-stable/option-philosophy.md | 36 +-
.../versioned_docs/version-stable/plugins.md | 5 +-
.../version-stable/precommit.md | 4 +-
.../version-stable/related-projects.md | 1 +
.../versioned_docs/version-stable/webstorm.md | 1 +
website/webpack.config.js | 2 +-
website/yarn.lock | 6926 +++++++----------
yarn.lock | 5552 +++++++------
440 files changed, 17965 insertions(+), 11101 deletions(-)
create mode 100644 tests/binary-expressions/call.js
create mode 100644 tests/flow_parameter_with_type/__snapshots__/jsfmt.spec.js.snap
create mode 100644 tests/flow_parameter_with_type/jsfmt.spec.js
create mode 100644 tests/flow_parameter_with_type/param.js
create mode 100644 tests/flow_union/within-tuple.js
delete mode 100644 tests/glimmer/__snapshots__/jsfmt.spec.js.snap
delete mode 100644 tests/glimmer/comment.hbs
create mode 100644 tests/glimmer/preserved-spaces-and-breaks.hbs
create mode 100644 tests/handlebars-attr-node/__snapshots__/jsfmt.spec.js.snap
create mode 100644 tests/handlebars-attr-node/brackets.hbs
rename tests/{glimmer => handlebars-attr-node}/jsfmt.spec.js (100%)
create mode 100644 tests/handlebars-basics/__snapshots__/jsfmt.spec.js.snap
rename tests/{handlebars => handlebars-basics}/basic-handlebars.hbs (100%)
rename tests/{glimmer => handlebars-basics}/component.hbs (100%)
create mode 100644 tests/handlebars-basics/jsfmt.spec.js
rename tests/{glimmer => handlebars-basics}/literals.hbs (100%)
rename tests/{handlebars => handlebars-basics}/nested-path.hbs (100%)
rename tests/{handlebars => handlebars-basics}/raw.hbs (100%)
rename tests/{glimmer => handlebars-basics}/string-literals.hbs (100%)
create mode 100644 tests/handlebars-block-statement/__snapshots__/jsfmt.spec.js.snap
rename tests/{glimmer => handlebars-block-statement}/block-statement.hbs (100%)
rename tests/{handlebars => handlebars-block-statement}/each.hbs (100%)
rename tests/{glimmer/else-if.hbs => handlebars-block-statement/if-else.hbs} (78%)
create mode 100644 tests/handlebars-block-statement/jsfmt.spec.js
rename tests/{glimmer => handlebars-block-statement}/loop.hbs (73%)
create mode 100644 tests/handlebars-comment/__snapshots__/jsfmt.spec.js.snap
rename tests/{handlebars => handlebars-comment}/comments.hbs (63%)
rename tests/{handlebars => handlebars-comment}/jsfmt.spec.js (100%)
create mode 100644 tests/handlebars-concat-statement/__snapshots__/jsfmt.spec.js.snap
rename tests/{glimmer => handlebars-concat-statement}/concat-statement.hbs (100%)
create mode 100644 tests/handlebars-concat-statement/jsfmt.spec.js
create mode 100644 tests/handlebars-element-node/__snapshots__/jsfmt.spec.js.snap
rename tests/{glimmer => handlebars-element-node}/element-node.hbs (100%)
create mode 100644 tests/handlebars-element-node/jsfmt.spec.js
create mode 100644 tests/handlebars-escape/__snapshots__/jsfmt.spec.js.snap
rename tests/{glimmer => handlebars-escape}/html-entities.hbs (100%)
create mode 100644 tests/handlebars-escape/jsfmt.spec.js
rename tests/{handlebars => handlebars-last-line}/__snapshots__/jsfmt.spec.js.snap (52%)
create mode 100644 tests/handlebars-last-line/empty-with-no-trailing-newline.hbs
create mode 100644 tests/handlebars-last-line/empty-with-trailing-newline.hbs
create mode 100644 tests/handlebars-last-line/end-of-line-last.hbs
create mode 100644 tests/handlebars-last-line/jsfmt.spec.js
create mode 100644 tests/handlebars-mustache-statement/__snapshots__/jsfmt.spec.js.snap
rename tests/{glimmer => handlebars-mustache-statement}/element-modifier-statement.hbs (100%)
create mode 100644 tests/handlebars-mustache-statement/jsfmt.spec.js
create mode 100644 tests/handlebars-newline/__snapshots__/jsfmt.spec.js.snap
create mode 100644 tests/handlebars-newline/jsfmt.spec.js
create mode 100644 tests/handlebars-newline/test.hbs
create mode 100644 tests/handlebars-sub-expression/__snapshots__/jsfmt.spec.js.snap
create mode 100644 tests/handlebars-sub-expression/jsfmt.spec.js
rename tests/{glimmer => handlebars-sub-expression}/sub-expressions.hbs (100%)
create mode 100644 tests/handlebars-text-wrap/__snapshots__/jsfmt.spec.js.snap
create mode 100644 tests/handlebars-text-wrap/jsfmt.spec.js
create mode 100644 tests/handlebars-text-wrap/test.hbs
create mode 100644 tests/handlebars-whitespace/__snapshots__/jsfmt.spec.js.snap
create mode 100644 tests/handlebars-whitespace/basics.hbs
create mode 100644 tests/handlebars-whitespace/boss.hbs
rename tests/{glimmer => handlebars-whitespace}/curly.hbs (100%)
create mode 100644 tests/handlebars-whitespace/display-inline-block.hbs
create mode 100644 tests/handlebars-whitespace/display-none.hbs
create mode 100644 tests/handlebars-whitespace/fill.hbs
create mode 100644 tests/handlebars-whitespace/inline-element.hbs
create mode 100644 tests/handlebars-whitespace/jsfmt.spec.js
create mode 100644 tests/handlebars-whitespace/non-breaking-whitespace.hbs
create mode 100644 tests/handlebars-whitespace/punctuation.hbs
create mode 100644 tests/handlebars-whitespace/surrounding-linebreak.hbs
create mode 100644 tests/handlebars-whitespace/table.hbs
delete mode 100644 tests/handlebars/if-else.hbs
delete mode 100644 tests/handlebars/if.hbs
create mode 100644 tests/html_vue_indent/__snapshots__/jsfmt.spec.js.snap
create mode 100644 tests/html_vue_indent/inside-template.vue
create mode 100644 tests/html_vue_indent/jsfmt.spec.js
create mode 100644 tests/html_vue_indent/vue-tag-indent.vue
create mode 100644 tests/html_whitespace/template.html
create mode 100644 tests/optional_chaining/comments.js
create mode 100644 tests/partial_application/__snapshots__/jsfmt.spec.js.snap
create mode 100644 tests/partial_application/jsfmt.spec.js
create mode 100644 tests/partial_application/test.js
create mode 100644 tests/typescript/custom/typeParameters/variables.ts
create mode 100644 tests/typescript_argument_expansion/__snapshots__/jsfmt.spec.js.snap
create mode 100644 tests/typescript_argument_expansion/argument_expansion.js
create mode 100644 tests/typescript_argument_expansion/jsfmt.spec.js
create mode 100644 tests/typescript_intersection/__snapshots__/jsfmt.spec.js.snap
create mode 100644 tests/typescript_intersection/intersection-parens.ts
create mode 100644 tests/typescript_intersection/jsfmt.spec.js
create mode 100644 tests/typescript_rest_type/complex.ts
create mode 100644 tests/typescript_tsx/member-expression.tsx
create mode 100644 tests/typescript_union/within-tuple.ts
create mode 100644 tests/v8_intrinsic/__snapshots__/jsfmt.spec.js.snap
create mode 100644 tests/v8_intrinsic/intrinsic_call.js
create mode 100644 tests/v8_intrinsic/jsfmt.spec.js
create mode 100644 tests_integration/cli/with-resolve-config-no-config/file.bar
create mode 100644 tests_integration/cli/with-resolve-config-no-config/file.foo
create mode 100644 tests_integration/cli/with-resolve-config/.prettierrc
create mode 100644 tests_integration/cli/with-resolve-config/file.bar
create mode 100644 tests_integration/cli/with-resolve-config/file.foo
delete mode 100644 tests_integration/plugins/defaultOptions/.config.json.swp
create mode 100644 website/static/images/users/buildcom.svg
create mode 100644 website/static/images/users/campusjaeger.svg
create mode 100644 website/static/images/users/estalee.svg
create mode 100644 website/static/images/users/researchanddesign.svg
diff --git a/.eslintrc.yml b/.eslintrc.yml
index 255da117716a..52280121c79e 100644
--- a/.eslintrc.yml
+++ b/.eslintrc.yml
@@ -3,24 +3,24 @@ env:
es6: true
node: true
extends:
-- eslint:recommended
-- plugin:react/recommended
-- plugin:prettier/recommended
+ - eslint:recommended
+ - plugin:react/recommended
+ - plugin:prettier/recommended
plugins:
-- import
+ - import
rules:
curly: error
import/no-extraneous-dependencies:
- - error
- - devDependencies: ["tests*/**", "scripts/**"]
+ - error
+ - devDependencies: ["tests*/**", "scripts/**"]
no-else-return: error
no-inner-declarations: error
no-unneeded-ternary: error
no-useless-return: error
no-var: error
one-var:
- - error
- - never
+ - error
+ - never
prefer-arrow-callback: error
prefer-const: error
react/display-name: off
@@ -29,6 +29,6 @@ rules:
strict: error
symbol-description: error
yoda:
- - error
- - never
- - exceptRange: true
+ - error
+ - never
+ - exceptRange: true
diff --git a/.ignore b/.ignore
index bacdd589fbc6..a6920dce0114 100644
--- a/.ignore
+++ b/.ignore
@@ -1,3 +1,2 @@
website/static/lib
dist
-
diff --git a/CHANGELOG.unreleased.md b/CHANGELOG.unreleased.md
index 229fc486b5c6..34e0a3a00d2e 100644
--- a/CHANGELOG.unreleased.md
+++ b/CHANGELOG.unreleased.md
@@ -44,9 +44,243 @@ const link = http://example.com;
-->
-#### TypeScript: Print comment following a JSX element with generic ([#6209] by [@duailibe])
+#### API: add resolveConfig option to getFileInfo() ([#6666] by [@kaicataldo])
-Previous versions would not print this comment, this has been fixed in this version.
+Add a `resolveConfig: boolean` option to `prettier.getFileInfo()` that, when set to `true`, will resolve the configuration for the given file path. This allows consumers to take any overridden parsers into account.
+
+#### JavaScript: add support for PartialApplication ([#6397] by [@JounQin])
+
+Previous versions would not be able to format this syntax, this has been fixed in this version.
+
+
+```js
+const addOne = add(1, ?); // apply from the left
+addOne(2); // 3
+
+const addTen = add(?, 10); // apply from the right
+addTen(2); // 12
+
+// with pipeline
+let newScore = player.score
+ |> add(7, ?)
+ |> clamp(0, 100, ?); // shallow stack, the pipe to `clamp` is the same frame as the pipe to `add`.
+
+// Output (Prettier stable)
+SyntaxError: Unexpected token (1:23)
+> 1 | const addOne = add(1, ?); // apply from the left
+ | ^
+ 2 | addOne(2); // 3
+ 3 |
+ 4 | const addTen = add(?, 10); // apply from the right
+
+// Output (Prettier master)
+const addOne = add(1, ?); // apply from the left
+addOne(2); // 3
+
+const addTen = add(?, 10); // apply from the right
+addTen(2); // 12
+
+// with pipeline
+let newScore = player.score |> add(7, ?) |> clamp(0, 100, ?); // shallow stack, the pipe to \`clamp\` is the same frame as the pipe to \`add\`.
+```
+
+#### JavaScript: More readable parentheses for new-call ([#6412] by [@bakkot])
+
+
+```js
+// Input
+var a = new (x().y)();
+var a = new (x().y.z)();
+var a = new (x().y().z)();
+
+// Output (Prettier stable)
+var a = new (x()).y();
+var a = new (x()).y.z();
+var a = new (x().y()).z();
+
+// Output (Prettier master)
+var a = new (x().y)();
+var a = new (x().y.z)();
+var a = new (x().y().z)();
+```
+
+#### MDX: Text following JSX was trimmed incorrectly ([#6340] by [@JounQin])
+
+
+```md
+
+# Heading
+
+ test test
+ 123
+
+
+
+ test test
+123
+
+
+
+ test test
+ 123
+```
+
+#### TypeScript/Flow: Fix indentation for union types inside tuples ([#6381] by [@squidfunk], [#6605] by [@thorn0])
+
+
+```ts
+// Input
+type A = [
+ | AAAAAAAAAAAAAAAAAAAAAA
+ | BBBBBBBBBBBBBBBBBBBBBB
+ | CCCCCCCCCCCCCCCCCCCCCC
+ | DDDDDDDDDDDDDDDDDDDDDD
+]
+
+type B = [
+ | AAAAAAAAAAAAAAAAAAAAAA
+ | BBBBBBBBBBBBBBBBBBBBBB
+ | CCCCCCCCCCCCCCCCCCCCCC
+ | DDDDDDDDDDDDDDDDDDDDDD,
+ | AAAAAAAAAAAAAAAAAAAAAA
+ | BBBBBBBBBBBBBBBBBBBBBB
+ | CCCCCCCCCCCCCCCCCCCCCC
+ | DDDDDDDDDDDDDDDDDDDDDD
+]
+
+type C = [
+ | [AAAAAAAAAAAAAAAAAAAAAA | BBBBBBBBBBBBBBBBBBBBBB | CCCCCCCCCCCCCCCCCCCCCC | DDDDDDDDDDDDDDDDDDDDDD]
+ | [AAAAAAAAAAAAAAAAAAAAAA | BBBBBBBBBBBBBBBBBBBBBB | CCCCCCCCCCCCCCCCCCCCCC | DDDDDDDDDDDDDDDDDDDDDD]
+]
+
+// Output (Prettier stable)
+type A = [
+
+ | AAAAAAAAAAAAAAAAAAAAAA
+ | BBBBBBBBBBBBBBBBBBBBBB
+ | CCCCCCCCCCCCCCCCCCCCCC
+ | DDDDDDDDDDDDDDDDDDDDDD
+];
+
+type B = [
+
+ | AAAAAAAAAAAAAAAAAAAAAA
+ | BBBBBBBBBBBBBBBBBBBBBB
+ | CCCCCCCCCCCCCCCCCCCCCC
+ | DDDDDDDDDDDDDDDDDDDDDD,
+
+ | AAAAAAAAAAAAAAAAAAAAAA
+ | BBBBBBBBBBBBBBBBBBBBBB
+ | CCCCCCCCCCCCCCCCCCCCCC
+ | DDDDDDDDDDDDDDDDDDDDDD
+];
+
+type C = [
+
+ | [
+
+ | AAAAAAAAAAAAAAAAAAAAAA
+ | BBBBBBBBBBBBBBBBBBBBBB
+ | CCCCCCCCCCCCCCCCCCCCCC
+ | DDDDDDDDDDDDDDDDDDDDDD
+ ]
+ | [
+
+ | AAAAAAAAAAAAAAAAAAAAAA
+ | BBBBBBBBBBBBBBBBBBBBBB
+ | CCCCCCCCCCCCCCCCCCCCCC
+ | DDDDDDDDDDDDDDDDDDDDDD
+ ]
+];
+
+// Output (Prettier master)
+type A = [
+ | AAAAAAAAAAAAAAAAAAAAAA
+ | BBBBBBBBBBBBBBBBBBBBBB
+ | CCCCCCCCCCCCCCCCCCCCCC
+ | DDDDDDDDDDDDDDDDDDDDDD
+];
+
+type B = [
+ (
+ | AAAAAAAAAAAAAAAAAAAAAA
+ | BBBBBBBBBBBBBBBBBBBBBB
+ | CCCCCCCCCCCCCCCCCCCCCC
+ | DDDDDDDDDDDDDDDDDDDDDD
+ ),
+ (
+ | AAAAAAAAAAAAAAAAAAAAAA
+ | BBBBBBBBBBBBBBBBBBBBBB
+ | CCCCCCCCCCCCCCCCCCCCCC
+ | DDDDDDDDDDDDDDDDDDDDDD
+ )
+];
+
+type C = [
+ | [
+ | AAAAAAAAAAAAAAAAAAAAAA
+ | BBBBBBBBBBBBBBBBBBBBBB
+ | CCCCCCCCCCCCCCCCCCCCCC
+ | DDDDDDDDDDDDDDDDDDDDDD
+ ]
+ | [
+ | AAAAAAAAAAAAAAAAAAAAAA
+ | BBBBBBBBBBBBBBBBBBBBBB
+ | CCCCCCCCCCCCCCCCCCCCCC
+ | DDDDDDDDDDDDDDDDDDDDDD
+ ]
+];
+```
+
+#### MDX: Adjacent JSX elements should be allowed ([#6332] by [@JounQin])
+
+
+```jsx
+// Input
+
+ test test
+123
+
+// Output (Prettier stable)
+SyntaxError: Unexpected token (3:9)
+ 1 |
+ 2 | test test
+> 3 | 123
+ | ^
+
+// Output (Prettier master)
+
+ test test
+123
+
+
+// Input
+
+ test test
+
+
+ test test
+123
+
+// Output (Prettier stable)
+SyntaxError: Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...>? (4:1)
+ 2 | test test
+ 3 |
+> 4 |
+ | ^
+ 5 | test test
+ 6 | 123
+
+// Output (Prettier master)
+
+ test test
+
+
+ test test
+123
+```
+
+#### TypeScript: Comments after JSX element names with type arguments were lost ([#6209] by [@duailibe])
```ts
@@ -74,7 +308,7 @@ const comp = (
);
```
-### Handlebars: Avoid adding unwanted line breaks between text and mustaches ([#6186] by [@gavinjoyce])
+#### Handlebars: Avoid adding unwanted line breaks between text and mustaches ([#6186] by [@gavinjoyce])
Previously, Prettier added line breaks between text and mustaches which resulted in unwanted whitespace in rendered output.
@@ -104,7 +338,7 @@ Previously, Prettier added line breaks between text and mustaches which resulted
```
-### Handlebars: Improve comment formatting ([#6206] by [@gavinjoyce])
+#### Handlebars: Improve comment formatting ([#6206] by [@gavinjoyce])
Previously, Prettier would sometimes ignore whitespace when formatting comments.
@@ -146,9 +380,25 @@ Previously, Prettier would sometimes ignore whitespace when formatting comments.
```
-#### JavaScript: Keep unary expressions parentheses with comments ([#6217] by [@sosukesuzuki])
+#### JavaScript: Update ?? precedence to match stage 3 proposal ([#6404] by [@vjeux])
-Previously, Prettier removes parentheses enclose unary expressions. This change modify to keep it when the expression has comments.
+We've updated Prettier's support for the nullish coalescing operator to match a spec update that no longer allows it to immediately contain, or be contained within an `&&` or `||` operation.
+
+
+```js
+// Input
+(foo ?? baz) || baz;
+
+// Output (Prettier stable)
+foo ?? baz || baz;
+
+// Output (Prettier master)
+(foo ?? baz) || baz;
+```
+
+Please note, as we update our parsers with versions that support this spec update, code without the parenthesis will throw a parse error.
+
+#### JavaScript: Keep parentheses with comments in unary expressions ([#6217] by [@sosukesuzuki])
```ts
@@ -173,9 +423,58 @@ foo;
);
```
-### Handlebars: Improve comment formatting ([#6234] by [@gavinjoyce])
+#### Javascript: Use function literals in arguments to detect function composition ([#6033] by [@brainkim])
-Previously, Prettier would incorrectly decode HTML entiites.
+Previously, we used a set of hard-coded names related to functional programming
+(`compose`, `flow`, `pipe`, etc.) to detect function composition and chaining
+patterns in code. This was done so that Prettier would not put code like the
+following call to `pipe` on the same line even if it fit within the allotted
+column budget:
+
+
+```js
+source$
+ .pipe(
+ filter(x => x % 2 === 0),
+ map(x => x + x),
+ scan((acc, x) => acc + x, 0),
+ )
+ .subscribe(x => console.log(x));
+```
+
+However, this heuristic caused people to complain because of false positives
+where calls to functions or methods matching the hard-coded names would always
+be split on multiple lines, even if the calls did not contain function
+arguments (https://github.com/prettier/prettier/issues/5769,
+https://github.com/prettier/prettier/issues/5969). For many, this blanket
+decision to split functions based on name was both surprising and sub-optimal.
+
+We now use a refined heuristic which uses the presence of function literals to
+detect function composition. This heuristic preserves the line-splitting
+behavior above and eliminates many if not all of the false positives caused by
+the older heuristic.
+
+We encourage prettier users to try out the new heuristic and provide feedback.
+
+
+```js
+// Input
+eventStore.update(id, _.flow(updater, incrementVersion));
+
+// Output (Prettier stable)
+eventStore.update(
+ id,
+ _.flow(
+ updater,
+ incrementVersion
+ )
+);
+
+// Output (Prettier master)
+eventStore.update(id, _.flow(updater, incrementVersion));
+```
+
+#### Handlebars: Preserve HTML entities ([#6234] by [@gavinjoyce])
```hbs
@@ -197,8 +496,6 @@ Previously, Prettier would incorrectly decode HTML entiites.
#### JavaScript: Stop moving comments inside tagged template literals ([#6236] by [@sosukesuzuki])
-Previously, Prettier would move comments after the tag inside the template literal. This version fixes this problem.
-
```js
// Input
@@ -216,9 +513,10 @@ foo // comment
`;
```
-#### JavaScript: Fix moving comments in function calls like `useEffect` second argument ([#6270] by [@sosukesuzuki])
+#### TypeScript/Flow: Fix moving comments in function calls like `useEffect` ([#6270] by [@sosukesuzuki])
-This fixes a bug that was affecting function calls that have a arrow function as first argument and an array expression as second argument, such as the common React's `useEffect`. A comment in its own line before the second argument would be moved to the line above.
+This fixes a bug that was affecting function calls with an arrow function as the first argument and an array expression as the second argument, e.g. React's `useEffect`.
+If a comment was placed on the line before the second argument, Prettier would move it to the line above and corrupt the indentation.
The bug was only present when using the Flow and TypeScript parsers.
@@ -230,18 +528,14 @@ useEffect(
console.log("some code", props.foo);
},
- // We need to disable the eslint warning here,
- // because of some complicated reason.
- // eslint-disable line react-hooks/exhaustive-deps
+ // eslint-disable-line react-hooks/exhaustive-deps
[]
);
// Output (Prettier stable)
useEffect(() => {
console.log("some code", props.foo);
-}, // We need to disable the eslint warning here,
-// because of some complicated reason.
-// eslint-disable line react-hooks/exhaustive-deps
+}, // eslint-disable-line react-hooks/exhaustive-deps
[]);
// Output (Prettier master)
@@ -250,9 +544,7 @@ useEffect(
console.log("some code", props.foo);
},
- // We need to disable the eslint warning here,
- // because of some complicated reason.
- // eslint-disable line react-hooks/exhaustive-deps
+ // eslint-disable-line react-hooks/exhaustive-deps
[]
);
```
@@ -261,6 +553,540 @@ useEffect(
This version updates the TypeScript parser to correctly handle JSX text with double slashes (`//`). In previous versions, this would cause Prettier to crash.
+#### HTML, Vue: Don't wrap `template` elements on lines shorter than `printWidth` ([#6284] by [@sosukesuzuki])
+
+Previously, even if the line length was shorter than `printWidth`, Prettier would break the line with a `template` element.
+
+
+```html
+// Input
+
+ foo
+
+
+// Output (Prettier stable)
+
+ foo
+
+
+// Output (Prettier master)
+
+ foo
+
+```
+
+#### JavaScript: Fix breaks indentation and idempotency when an arrow function that args include object pattern is passed to a function as parameter. ([#6301] & [#6382] by [@sosukesuzuki])
+
+Previously, Prettier indented code strangely when an arrow function whose parameters included an object pattern was passed to a function call as an argument. Also, it broke idempotence. Please see [#6294](https://github.com/prettier/prettier/issues/6294) for details.
+
+
+```js
+// Input
+foo(
+ ({
+ a,
+
+ b
+ }) => {}
+);
+
+// Output (Prettier stable)
+foo(({ a,
+ b }) => {});
+
+// Output (Prettier master)
+foo(
+ ({
+ a,
+
+ b
+ }) => {}
+);
+```
+
+#### TypeScript: Put a closing parenthesis onto a new line after union types ([#6307] by [@sosukesuzuki])
+
+
+```ts
+// Input
+const foo = [abc, def, ghi, jkl, mno, pqr, stu, vwx, yz] as (
+ | string
+ | undefined
+)[];
+
+// Prettier (stable)
+const foo = [abc, def, ghi, jkl, mno, pqr, stu, vwx, yz] as (
+ | string
+ | undefined)[];
+
+// Prettier (master)
+const foo = [abc, def, ghi, jkl, mno, pqr, stu, vwx, yz] as (
+ | string
+ | undefined
+)[];
+```
+
+#### HTML: Script tags are now treated as blocks for the purposes of formatting ([#6423] by [@thorn0])
+
+Previously, in the [whitespace-sensitive mode](https://prettier.io/docs/en/options.html#html-whitespace-sensitivity), they were formatted as if they were inline.
+
+
+```html
+
+
+
+
+
+
+
+
+
+```
+
+#### TypeScript: Correctly format long one-line mapped types in one pass ([#6420] by [@sosukesuzuki])
+
+Previously, when Prettier formatted long one-line mapped types, it would break the line but didn’t add a semicolon until you ran Prettier again, which means Prettier’s idempotence rule was broken. Now, Prettier adds the semicolon in the first run.
+
+
+```ts
+// Input
+type FooBar = { [P in keyof T]: T[P] extends Something ? Something : T[P] }
+
+// Prettier (stable)
+type FooBar = {
+ [P in keyof T]: T[P] extends Something ? Something : T[P]
+};
+
+// Prettier (master)
+type FooBar = {
+ [P in keyof T]: T[P] extends Something ? Something : T[P];
+};
+```
+
+#### JavaScript: Fix formatting of object destructuring with parameter decorators ([#6411] by [@sosukesuzuki])
+
+Previously, Prettier formatted decorators for destructured parameters in a weird way. Now, parameter decorators are placed just above the parameter they belong to.
+
+
+```js
+// Input
+class Class {
+ method(
+ @decorator
+ { foo }
+ ) {}
+}
+
+// Prettier (stable)
+class Class {
+ method(@decorator
+ {
+ foo
+ }) {}
+}
+
+// Prettier (master)
+class Class {
+ method(
+ @decorator
+ { foo }
+ ) {}
+}
+```
+
+#### JavaScript: Handle empty object patterns with type annotations in function parameters ([#6438] by [@bakkot])
+
+
+```js
+// Input
+const f = ({}: MyVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongType) => {};
+function g({}: Foo) {}
+
+// Output (Prettier stable)
+const f = ({
+ ,
+}: MyVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongType) => {};
+function g({ }: Foo) {}
+
+// Output (Prettier master)
+const f = ({}: MyVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongType) => {};
+function g({}: Foo) {}
+```
+
+#### JavaScript: Put a closing parenthesis onto a new line after binary expressions within function calls ([#6441] by [@sosukesuzuki])
+
+
+```js
+// Input
+(
+ aaaaaaaaaaaaaaaaaaaaaaaaa &&
+ bbbbbbbbbbbbbbbbbbbbbbbbb &&
+ ccccccccccccccccccccccccc &&
+ ddddddddddddddddddddddddd &&
+ eeeeeeeeeeeeeeeeeeeeeeeee
+)();
+
+// Prettier (stable)
+(aaaaaaaaaaaaaaaaaaaaaaaaa &&
+ bbbbbbbbbbbbbbbbbbbbbbbbb &&
+ ccccccccccccccccccccccccc &&
+ ddddddddddddddddddddddddd &&
+ eeeeeeeeeeeeeeeeeeeeeeeee)();
+
+// Prettier (master)
+(
+ aaaaaaaaaaaaaaaaaaaaaaaaa &&
+ bbbbbbbbbbbbbbbbbbbbbbbbb &&
+ ccccccccccccccccccccccccc &&
+ ddddddddddddddddddddddddd &&
+ eeeeeeeeeeeeeeeeeeeeeeeee
+)();
+```
+
+#### JavaScript: Fix formatting of long named exports ([#6446] by [@sosukesuzuki])
+
+Now, Prettier formats them the same way it formats named imports.
+
+
+```js
+// Input
+export { fooooooooooooooooooooooooooooooooooooooooooooooooo } from "fooooooooooooooooooooooooooooo";
+
+// Prettier (stable)
+export {
+ fooooooooooooooooooooooooooooooooooooooooooooooooo
+} from "fooooooooooooooooooooooooooooo";
+
+// Prettier (master)
+export { fooooooooooooooooooooooooooooooooooooooooooooooooo } from "fooooooooooooooooooooooooooooo";
+```
+
+#### JavaScript: Fix bad formatting for multi-line optional chaining with comment ([#6506] by [@sosukesuzuki])
+
+
+```js
+// Input
+return a
+ .b()
+ .c()
+ // Comment
+ ?.d()
+
+// Prettier (stable)
+return a
+ .b()
+ .c()
+ ?.// Comment
+ d();
+
+// Prettier (master)
+return (
+ a
+ .b()
+ .c()
+ // Comment
+ ?.d()
+);
+```
+
+#### JavaScript: Fix inconsistent indentation in switch statement ([#6514] by [@sosukesuzuki])
+
+
+```js
+// Input
+switch ($veryLongAndVeryVerboseVariableName && $anotherVeryLongAndVeryVerboseVariableName) {
+}
+
+switch ($longButSlightlyShorterVariableName && $anotherSlightlyShorterVariableName) {
+}
+
+// Prettier (stable)
+switch (
+ $veryLongAndVeryVerboseVariableName &&
+ $anotherVeryLongAndVeryVerboseVariableName
+) {
+}
+
+switch (
+ $longButSlightlyShorterVariableName && $anotherSlightlyShorterVariableName
+) {
+}
+
+// Prettier (master)
+switch (
+ $veryLongAndVeryVerboseVariableName &&
+ $anotherVeryLongAndVeryVerboseVariableName
+) {
+}
+
+switch (
+ $longButSlightlyShorterVariableName &&
+ $anotherSlightlyShorterVariableName
+) {
+}
+```
+
+#### TypeScript: Keep type parameters inline for type annotations in variable declarations ([#6467] by [@sosukesuzuki])
+
+
+```ts
+// Input
+const fooooooooooooooo: SomeThing = looooooooooooooooooooooooooooooongNameFunc();
+
+// Prettier (stable)
+const fooooooooooooooo: SomeThing<
+ boolean
+> = looooooooooooooooooooooooooooooongNameFunc();
+
+// Prettier (master)
+const fooooooooooooooo: SomeThing = looooooooooooooooooooooooooooooongNameFunc();
+```
+
+#### Handlebars: Fix `--single-quote` option on HTML attributes ([#6377] by [@dcyriller])
+
+Previously, the flag was not applied on HTML attributes.
+
+
+```hbs
+// Input
+
+
+// Prettier (stable with the option --single-quote)
+
+
+// Prettier (master with the option --single-quote)
+
+```
+
+#### TypeScript: Sometimes double parentheses around types were removed incorrectly ([#6604] by [@sosukesuzuki])
+
+
+```ts
+// Input
+type A = 0 extends ((1 extends 2 ? 3 : 4)) ? 5 : 6;
+type B = ((0 extends 1 ? 2 : 3)) extends 4 ? 5 : 6;
+type C = ((number | string))["toString"];
+type D = ((keyof T1))["foo"];
+
+// Prettier (stable)
+type A = 0 extends 1 extends 2 ? 3 : 4 ? 5 : 6;
+type B = 0 extends 1 ? 2 : 3 extends 4 ? 5 : 6;
+type C = number | string["toString"];
+type D = keyof T1["foo"];
+
+// Prettier (master)
+type A = 0 extends (1 extends 2 ? 3 : 4) ? 5 : 6;
+type B = (0 extends 1 ? 2 : 3) extends 4 ? 5 : 6;
+type C = (number | string)["toString"];
+type D = (keyof T1)["foo"];
+```
+
+#### JavaScript: Support formatting code with V8 intrinsics ([#6496] by [@rreverser])
+
+
+```js
+// Input
+function doSmth() {
+ %DebugPrint
+ (
+ foo )
+ }
+
+// Prettier (stable)
+SyntaxError: Unexpected token (2:13)
+ 1 | function doSmth() {
+> 2 | %DebugPrint
+ | ^
+
+// Prettier (master)
+function doSmth() {
+ %DebugPrint(foo);
+}
+```
+
+#### TypeScript: Sometimes removing parentheses around JSX made the code unparseable ([#6640] by [@sosukesuzuki])
+
+
+```tsx
+// Input
+().toString();
+
+// Prettier (stable)
+.toString():
+
+// Prettier (master)
+().toString();
+```
+
+#### JavaScript: Object destructuring in method parameters always broke into multiple lines ([#6646] by [@ericsakmar])
+
+
+```js
+// Input
+const obj = {
+ func(id, { blog: { title } }) {
+ return id + title;
+ },
+};
+
+class A {
+ func(id, { blog: { title } }) {
+ return id + title;
+ }
+ #func(id, { blog: { title } }) {
+ return id + title;
+ }
+}
+
+// Prettier (stable)
+const obj = {
+ func(
+ id,
+ {
+ blog: { title }
+ }
+ ) {
+ return id + title;
+ }
+};
+
+class A {
+ func(
+ id,
+ {
+ blog: { title }
+ }
+ ) {
+ return id + title;
+ }
+ #func(
+ id,
+ {
+ blog: { title }
+ }
+ ) {
+ return id + title;
+ }
+}
+
+// Prettier (master)
+const obj = {
+ func(id, { blog: { title } }) {
+ return id + title;
+ },
+};
+
+class A {
+ func(id, { blog: { title } }) {
+ return id + title;
+ }
+ #func(id, { blog: { title } }) {
+ return id + title;
+ }
+}
+```
+
+#### TypeScript: Fix optional computed methods ([#6673] by [@thorn0])
+
+
+```ts
+// Input
+class A {
+ protected [s]?() {}
+}
+
+// Output (Prettier stable)
+class A {
+ protected [s?]() {}
+}
+
+// Output (Prettier master)
+class A {
+ protected [s]?() {}
+}
+```
+
+#### Angular: Put a closing parenthesis onto a new line after ternaries passed to pipes ([#5682] by [@selvazhagan])
+
+
+```html
+
+{{ (isCustomDiscount ? 'DISCOUNTS__DISCOUNT_TRAINING_HEADER__CUSTOM_DISCOUNT' : 'DISCOUNTS__DISCOUNT_TRAINING_HEADER__DISCOUNT') | translate }}
+
+
+{{
+ (isCustomDiscount
+ ? "DISCOUNTS__DISCOUNT_TRAINING_HEADER__CUSTOM_DISCOUNT"
+ : "DISCOUNTS__DISCOUNT_TRAINING_HEADER__DISCOUNT") | translate
+}}
+
+
+{{
+ (isCustomDiscount
+ ? "DISCOUNTS__DISCOUNT_TRAINING_HEADER__CUSTOM_DISCOUNT"
+ : "DISCOUNTS__DISCOUNT_TRAINING_HEADER__DISCOUNT"
+ ) | translate
+}}
+```
+
+#### Handlebars: Fix handling of whitespace and line breaks ([#6354] by [@chadian])
+
+This fixes a variety of whitespace and line break usecases within handlebars and Glimmer templates.
+
+
+```hbs
+// Input
+{{name}}
+
+Some sentence with {{dynamic}} expressions.
+
+
+
+sometimes{{nogaps}}areimportant
+{{name}} is your name
+
+// Output (Prettier stable)
+
+{{name}}
+Some sentence with
+{{dynamic}}
+expressions.
+
+
+
+sometimes
+{{nogaps}}
+areimportant
+
+{{name}}
+is your name
+
+// Output (Prettier master)
+{{name}}
+
+Some sentence with {{dynamic}} expressions.
+
+
+
+sometimes{{nogaps}}areimportant
+
+{{name}} is your name
+```
+
+[#5910]: https://github.com/prettier/prettier/pull/5910
+[#6033]: https://github.com/prettier/prettier/pull/6033
[#6186]: https://github.com/prettier/prettier/pull/6186
[#6206]: https://github.com/prettier/prettier/pull/6206
[#6209]: https://github.com/prettier/prettier/pull/6209
@@ -268,7 +1094,45 @@ This version updates the TypeScript parser to correctly handle JSX text with dou
[#6234]: https://github.com/prettier/prettier/pull/6234
[#6236]: https://github.com/prettier/prettier/pull/6236
[#6270]: https://github.com/prettier/prettier/pull/6270
+[#6284]: https://github.com/prettier/prettier/pull/6284
[#6289]: https://github.com/prettier/prettier/pull/6289
+[#6301]: https://github.com/prettier/prettier/pull/6301
+[#6307]: https://github.com/prettier/prettier/pull/6307
+[#6332]: https://github.com/prettier/prettier/pull/6332
+[#6340]: https://github.com/prettier/prettier/pull/6340
+[#6377]: https://github.com/prettier/prettier/pull/6377
+[#6381]: https://github.com/prettier/prettier/pull/6381
+[#6397]: https://github.com/prettier/prettier/pull/6397
+[#6404]: https://github.com/prettier/prettier/pull/6404
+[#6411]: https://github.com/prettier/prettier/pull/6411
+[#6412]: https://github.com/prettier/prettier/pull/6412
+[#6420]: https://github.com/prettier/prettier/pull/6420
+[#6423]: https://github.com/prettier/prettier/pull/6423
+[#6438]: https://github.com/prettier/prettier/pull/6411
+[#6441]: https://github.com/prettier/prettier/pull/6441
+[#6446]: https://github.com/prettier/prettier/pull/6446
+[#6467]: https://github.com/prettier/prettier/pull/6467
+[#6496]: https://github.com/prettier/prettier/pull/6496
+[#6506]: https://github.com/prettier/prettier/pull/6506
+[#6514]: https://github.com/prettier/prettier/pull/6514
+[#6604]: https://github.com/prettier/prettier/pull/6604
+[#6605]: https://github.com/prettier/prettier/pull/6605
+[#6640]: https://github.com/prettier/prettier/pull/6640
+[#6646]: https://github.com/prettier/prettier/pull/6646
+[#6673]: https://github.com/prettier/prettier/pull/6673
+[#6382]: https://github.com/prettier/prettier/pull/6382
+[@brainkim]: https://github.com/brainkim
[@duailibe]: https://github.com/duailibe
[@gavinjoyce]: https://github.com/gavinjoyce
[@sosukesuzuki]: https://github.com/sosukesuzuki
+[@g-harel]: https://github.com/g-harel
+[@jounqin]: https://github.com/JounQin
+[@bakkot]: https://gibhub.com/bakkot
+[@thorn0]: https://github.com/thorn0
+[@dcyriller]: https://github.com/dcyriller
+[@rreverser]: https://github.com/RReverser
+[@ericsakmar]: https://github.com/ericsakmar
+[@squidfunk]: https://github.com/squidfunk
+[@vjeux]: https://github.com/vjeux
+[@selvazhagan]: https://github.com/selvazhagan
+[@chadian]: https://github.com/chadian
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 90f8c9a639a9..d29de631f92d 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -15,7 +15,7 @@ Here's what you need to know about the tests:
- You can run `AST_COMPARE=1 jest` for a more robust test run. That formats each file, re-parses it, and compares the new AST with the original one and makes sure they are semantically equivalent.
- Each test folder has a `jsfmt.spec.js` that runs the tests. For JavaScript files, generally you can just put `run_spec(__dirname, ["babel", "flow", "typescript"]);` there. This will verify that the output using each parser is the same. You can also pass options as the third argument, like this: `run_spec(__dirname, ["babel"], { trailingComma: "es5" });`
- `tests/flow/` contains the Flow test suite, and is not supposed to be edited by hand. To update it, clone the Flow repo next to the Prettier repo and run: `node scripts/sync-flow-tests.js ../flow/tests/`.
-- If you would like to debug prettier locally, you can either debug it in node or the browser. The easiest way to debug it in the browser is to run the interactive `docs` REPL locally. The easiest way to debug it in node, is to create a local test file and run it in an editor like VS Code.
+- If you would like to debug prettier locally, you can either debug it in node or the browser. The easiest way to debug it in the browser is to run the interactive `docs` REPL locally. The easiest way to debug it in node, is to create a local test file with some example code you want formatted and either run it in an editor like VS Code or run it directly via `./bin/prettier.js `.
Run `yarn lint --fix` to automatically format files.
diff --git a/docs/api.md b/docs/api.md
index 249d598822d8..a2126dc2753f 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -58,16 +58,26 @@ If `options.editorconfig` is `true` and an [`.editorconfig` file](http://editorc
Use `prettier.resolveConfig.sync(filePath [, options])` if you'd like to use sync version.
-## `prettier.resolveConfigFile(filePath [, options])`
+## `prettier.resolveConfigFile([filePath])`
-`resolveConfigFile` can be used to find the path of the Prettier's configuration file will be used when resolving the config (i.e. when calling `resolveConfig`). A promise is returned which will resolve to:
+`resolveConfigFile` can be used to find the path of the Prettier configuration file that will be used when resolving the config (i.e. when calling `resolveConfig`). A promise is returned which will resolve to:
- The path of the configuration file.
- `null`, if no file was found.
The promise will be rejected if there was an error parsing the configuration file.
-If `options.useCache` is `false`, all caching will be bypassed.
+The search starts at `process.cwd()`, or at `filePath` if provided. Please see the [cosmiconfig docs](https://github.com/davidtheclark/cosmiconfig#explorersearch) for details on how the resolving works.
+
+```js
+prettier.resolveConfigFile().then(filePath => {
+ prettier.resolveConfig(filePath).then(options => {
+ const formatted = prettier.format(text, options);
+ });
+});
+```
+
+Use `prettier.resolveConfigFile.sync([filePath])` if you'd like to use sync version.
## `prettier.clearConfigCache()`
@@ -84,10 +94,14 @@ As you repeatedly call `resolveConfig`, the file system structure will be cached
}
```
+The promise will be rejected if the type of `filePath` is not `string`.
+
Setting `options.ignorePath` (`string`) and `options.withNodeModules` (`boolean`) influence the value of `ignored` (`false` by default).
Providing [plugin](plugins.md) paths in `options.plugins` (`string[]`) helps extract `inferredParser` for files that are not supported by Prettier core.
+When setting `options.resolveConfig` (`boolean`, default `false`), Prettier will resolve the configuration for the given `filePath`. This is useful, for example, when the `inferredParser` might be overridden for a subset of files.
+
Use `prettier.getFileInfo.sync(filePath [, options])` if you'd like to use sync version.
## `prettier.getSupportInfo([version])`
diff --git a/docs/cli.md b/docs/cli.md
index 5dab730fc527..d1ef8bae0cac 100644
--- a/docs/cli.md
+++ b/docs/cli.md
@@ -17,7 +17,7 @@ In practice, this may look something like:
prettier --single-quote --trailing-comma es5 --write "{app,__{tests,mocks}__}/**/*.js"
```
-Don't forget the quotes around the globs! The quotes make sure that Prettier expands the globs rather than your shell, for cross-platform usage. The [glob syntax from the glob module](https://github.com/isaacs/node-glob/blob/master/README.md#glob-primer) is used.
+Don't forget the quotes around the globs! The quotes make sure that Prettier expands the globs rather than your shell, for cross-platform usage. The [glob syntax from the `fast-glob` module](https://github.com/mrmlnc/fast-glob/blob/master/README.md#pattern-syntax) is used.
Prettier CLI will ignore files located in `node_modules` directory. To opt-out from this behavior use `--with-node-modules` flag.
diff --git a/docs/configuration.md b/docs/configuration.md
index 14cbbe67adca..b28f61c90b12 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -3,12 +3,12 @@ id: configuration
title: Configuration File
---
-Prettier uses [cosmiconfig](https://github.com/davidtheclark/cosmiconfig) for configuration file support. This means you can configure prettier via:
+Prettier uses [cosmiconfig](https://github.com/davidtheclark/cosmiconfig) for configuration file support. This means you can configure prettier via (in order of precedence):
-- A `.prettierrc` file, written in YAML or JSON, with optional extensions: `.yaml/.yml/.json`.
-- A `.prettierrc.toml` file, written in TOML (the `.toml` extension is _required_).
-- A `prettier.config.js` or `.prettierrc.js` file that exports an object.
- A `"prettier"` key in your `package.json` file.
+- A `.prettierrc` file, written in JSON or YAML, with optional extensions: `.json/.yaml/.yml` (without extension takes precedence).
+- A `.prettierrc.js` or `prettier.config.js` file that exports an object.
+- A `.prettierrc.toml` file, written in TOML (the `.toml` extension is _required_).
The configuration file will be resolved starting from the location of the file being formatted, and searching up the file tree until a config file is (or isn't) found.
@@ -61,7 +61,9 @@ singleQuote = true
## Configuration Overrides
-Prettier borrows eslint's [override format](http://eslint.org/docs/user-guide/configuring#example-configuration). This allows you to apply configuration to specific files.
+Overrides let you have different configuration for certain file extensions, folders and specific files.
+
+Prettier borrows ESLint’s [override format](http://eslint.org/docs/user-guide/configuring#example-configuration).
JSON:
@@ -74,6 +76,12 @@ JSON:
"options": {
"semi": true
}
+ },
+ {
+ "files": ["*.html", "legacy/**/*.js"],
+ "options": {
+ "tabWidth": 4
+ }
}
]
}
@@ -87,6 +95,11 @@ overrides:
- files: "*.test.js"
options:
semi: true
+ - files:
+ - "*.html"
+ - "legacy/**/*.js"
+ options:
+ tabWidth: 4
```
`files` is required for each override, and may be a string or array of strings. `excludeFiles` may be optionally provided to exclude files for a given rule, and may also be a string or array of strings.
diff --git a/docs/integrating-with-linters.md b/docs/integrating-with-linters.md
index c2a92330adc1..57fa98f72a63 100644
--- a/docs/integrating-with-linters.md
+++ b/docs/integrating-with-linters.md
@@ -9,13 +9,13 @@ This allows you to use Prettier for code formatting concerns, while letting your
Whatever linting tool you wish to integrate with, the steps are broadly similar.
First disable any existing formatting rules in your linter that may conflict with how Prettier wishes to format your code. Then you can either add an extension to your linting tool to format your file with Prettier - so that you only need a single command for format a file, or run your linter then Prettier as separate steps.
-All these instructions assume you have already installed `prettier` in your `devDependencies`.
+All these instructions assume you have already installed `prettier` in your [`devDependencies`].
## ESLint
### Disable formatting rules
-[`eslint-config-prettier`](https://github.com/prettier/eslint-config-prettier) is a config that disables rules that conflict with Prettier. Add it to your `devDependencies`, then extend from it within your `.eslintrc` configuration. Make sure to put it last in the `extends` array, so it gets the chance to override other configs.
+[`eslint-config-prettier`](https://github.com/prettier/eslint-config-prettier) is a config that disables rules that conflict with Prettier. Add it to your [`devDependencies`], then extend from it within your `.eslintrc` configuration. Make sure to put it last in the `extends` array, so it gets the chance to override other configs.
```bash
yarn add --dev eslint-config-prettier
@@ -31,7 +31,7 @@ Then in `.eslintrc.json`:
### Use ESLint to run Prettier
-[`eslint-plugin-prettier`](https://github.com/prettier/eslint-plugin-prettier) is a plugin that adds a rule that formats content using Prettier. Add it to your `devDependencies`, then enable the plugin and rule.
+[`eslint-plugin-prettier`](https://github.com/prettier/eslint-plugin-prettier) is a plugin that adds a rule that formats content using Prettier. Add it to your [`devDependencies`], then enable the plugin and rule.
```bash
yarn add --dev eslint-plugin-prettier
@@ -68,7 +68,7 @@ Then in `.eslintrc.json`:
### Disable formatting rules
-[`tslint-config-prettier`](https://github.com/alexjoverm/tslint-config-prettier) is a config that disables rules that conflict with Prettier. Add it to your `devDependencies`, then extend from it within your `tslint.json` configuration. Make sure to put it last in the `extends` array, so it gets the chance to override other configs.
+[`tslint-config-prettier`](https://github.com/alexjoverm/tslint-config-prettier) is a config that disables rules that conflict with Prettier. Add it to your [`devDependencies`], then extend from it within your `tslint.json` configuration. Make sure to put it last in the `extends` array, so it gets the chance to override other configs.
```bash
yarn add --dev tslint-config-prettier
@@ -84,7 +84,7 @@ Then in `tslint.json`:
### Use TSLint to run Prettier
-[`tslint-plugin-prettier`](https://github.com/ikatyang/tslint-plugin-prettier) is a plugin that adds a rule that formats content using Prettier. Add it to your `devDependencies`, then enable the plugin and rule.
+[`tslint-plugin-prettier`](https://github.com/ikatyang/tslint-plugin-prettier) is a plugin that adds a rule that formats content using Prettier. Add it to your [`devDependencies`], then enable the plugin and rule.
```bash
yarn add --dev tslint-plugin-prettier
@@ -140,7 +140,7 @@ Then in `.stylelintrc`:
### Use Stylelint to run Prettier
-[`stylelint-prettier`](https://github.com/prettier/stylelint-prettier) is a plugin that adds a rule that formats content using Prettier. Add it to your `devDependencies`, then enable the plugin and rule.
+[`stylelint-prettier`](https://github.com/prettier/stylelint-prettier) is a plugin that adds a rule that formats content using Prettier. Add it to your [`devDependencies`], then enable the plugin and rule.
```bash
yarn add --dev stylelint-prettier
@@ -172,3 +172,5 @@ Then in `.stylelintrc`:
"extends": ["stylelint-prettier/recommended"]
}
```
+
+[`devdependencies`]: https://docs.npmjs.com/specifying-dependencies-and-devdependencies-in-a-package-json-file
diff --git a/docs/option-philosophy.md b/docs/option-philosophy.md
index d3bd181b410f..f56fdda7afd2 100644
--- a/docs/option-philosophy.md
+++ b/docs/option-philosophy.md
@@ -3,6 +3,10 @@ id: option-philosophy
title: Option Philosophy
---
+> Prettier has a few options because of history. **But we don’t want more of them.**
+>
+> Read on to learn more.
+
Prettier is not a kitchen-sink code formatter that attempts to print your code in any way you wish. It is _opinionated._ Quoting the [Why Prettier?](why-prettier.md) page:
> By far the biggest reason for adopting Prettier is to stop all the on-going debates over styles.
@@ -11,21 +15,33 @@ The more options Prettier has, the further from the above goal it gets. **The de
The issue about [resisting adding configuration](https://github.com/prettier/prettier/issues/40) has more 👍s than any option request issue.
-So why does Prettier have options at all?
+So why are there any options at all?
+
+- A few were added during Prettier’s infancy to make it take off at all. 🚀
+- A couple were added after “great demand.” 🤔
+- Some were added for compatibility reasons. 👍
+
+What we’ve learned during the years is that it’s really hard to measure demand. Prettier has grown _a lot_ in usage. What was “great demand” back in the day is not as much today. How many is many? What about all silent users?
+
+It’s so easy to add “just one more“ option. But where do we stop? When is one too many? There will always be a “top issue” in the issue tracker. Even if we add just that one final option.
+
+The downside of options is that they open up for debate within teams. Which options should we use? Why? Did we make the right choices?
+
+Every option also makes it much harder to say no to new ones. If _those_ options exist, why can’t this one?
+
+We’ve had several users open up option requests only to close them themselves a couple of months later. They had realized that they don’t care at all about that little syntax choice they used to feel so strongly about. Examples: [#3101](https://github.com/prettier/prettier/issues/3101#issuecomment-500927917) and [#5501](https://github.com/prettier/prettier/issues/5501#issuecomment-487025417).
-Well, had Prettier been created around the same time as JavaScript itself was born it could have made choices that the community would have picked up (which is the case for [elm-format](https://github.com/avh4/elm-format/)). But JavaScript is far older than Prettier so the community has had time to start their holy wars about tabs vs spaces, single vs double quotes, indentation levels, trailing commas and semicolons, so Prettier more or less has to support those.
+All of this makes the topic of options in Prettier very difficult. And mentally tiring for maintainers. What do people want? What do people _really_ want in 6 months? Are we spending time and energy on the right things?
-Then there's a bunch of interesting cases.
+Some options are easier to motivate:
-- `--trailing-comma es5` was added to make it easier to use trailing commas in most environments without having to transpile (trailing function commas were added in ES2017).
+- `--trailing-comma es5` lets you use trailing commas in most environments without having to transpile (trailing function commas were added in ES2017).
- `--prose-wrap` is important to support all quirky markdown renderers in the wild.
- `--html-whitespace-sensitivity` is needed due to the unfortunate whitespace rules of HTML.
- `--end-of-line` makes it easier for teams to keep CRLFs out of their git repositories.
-- `--arrow-parens` was added after – at the time – [huge demand](https://github.com/prettier/prettier/issues/812). Prettier has to strike a balance between ideal goals and listening to the community.
-- `--jsx-single-quote` was also added after [great demand](https://github.com/prettier/prettier/issues/1080), but after more consideration. It took quite some time to figure out the right approach.
-- `--jsx-bracket-same-line` was needed for a big company with a huge code base (Facebook), which backed the project when it got started, to be able to [adopt Prettier at all](https://github.com/prettier/prettier/pull/661#issuecomment-295770645).
+- `--quote-props` is important for advanced usage of the Google Closure Compiler.
-Finally, perhaps the most interesting of them all is `--bracket-spacing`.
-The truth is that not even [Prettier's creator knows exactly why it exists](https://github.com/prettier/prettier/issues/715#issuecomment-281096495). It was added super early on without much thought. It now serves as an example of the types of options we should avoid.
+But others are harder to motivate in hindsight, and usually end up with bike shedding. `--arrow-parens`,
+`--jsx-single-quote`, `--jsx-bracket-same-line` and `--no-bracket-spacing` are not the type of options we want more of. They exist (and are difficult to remove now), but should not motivate adding more options like them.
-Remember, it is easy to _add_ features to a program, but hard to remove them.
+Feel free to open issues! Prettier isn’t perfect. Many times things can be improved without adding options. But if the issue _does_ seem to need a new option, we’ll generally keep it open, to let people 👍 it and add comments.
diff --git a/docs/options.md b/docs/options.md
index 46450310fb81..00f647107da2 100644
--- a/docs/options.md
+++ b/docs/options.md
@@ -307,6 +307,21 @@ Valid options:
| ------- | ------------------------------------------------------------------------ | ----------------------------------------------------------------------- |
| `"css"` | --html-whitespace-sensitivity | htmlWhitespaceSensitivity: "" |
+## Vue files script and style tags indentation
+
+_First available in v1.19.0_
+
+Whether or not to indent the code inside `
+
+
+
+=====================================output=====================================
+
+
+
+================================================================================
+`;
+
+exports[`basic-handlebars.hbs 2`] = `
+====================================options=====================================
+parsers: ["glimmer"]
+printWidth: 80
+singleQuote: true
+ | printWidth
+=====================================input======================================
+
+
+
+
+=====================================output=====================================
+
+
+
+================================================================================
+`;
+
+exports[`component.hbs 1`] = `
+====================================options=====================================
+parsers: ["glimmer"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+
+{{@greeting}}, {{@name}}!
+
+
+{{#if isAtWork}}
+ Ship that code!
+{{else if isReading}}
+ You can finish War and Peace eventually...
+{{else}}
+ Go to bed!
+{{/if}}
+
+
+
+{{#if a}}
+ A
+{{else}}
+ B
+{{/if}}
+
+
+{{#if a}}
+ b
+{{else if c}}
+ d
+{{else}}
+ e
+{{/if}}
+
+{{#if a}}
+ b
+{{else if c}}
+ d
+{{else}}
+ hello
+ {{#if f}}
+ g
+ {{/if}}
+ e
+{{/if}}
+
+{{#if a}}
+ b
+{{else if c}}
+ d
+{{else if e}}
+ f
+{{else if g}}
+ h
+{{else}}
+ j
+{{/if}}
+
+
+ {{#if a}}
+ b
+ {{else if c}}
+ d
+ {{else}}
+ e
+ {{/if}}
+
+
+
+
+ {{#if a}}
+ b
+ {{else if c}}
+ d
+ {{else}}
+ e
+ {{/if}}
+
+
+
+{{#if a}}
+ b
+{{else}}
+ {{#each c as |d|}}
+ e
+ {{/each}}
+{{/if}}
+
+{{#if a}}
+ {{#if b}}
+ ab
+ {{else if c}}
+ ac
+ {{/if}}
+{{/if}}
+
+{{#if a}}
+ a
+
b
+ c
+{{else}}
+ {{#if c}}
+ a
+ b
+
c
+ {{/if}}
+
a
+ b
+ c
+{{/if}}
+
+=====================================output=====================================
+
+ {{#if isAtWork}}
+ Ship that code!
+ {{else if isReading}}
+ You can finish War and Peace eventually...
+ {{else}}
+ Go to bed!
+ {{/if}}
+
+
+
+ {{#if a}}
+ A
+ {{else}}
+ B
+ {{/if}}
+
+
+{{#if a}}
+ b
+{{else if c}}
+ d
+{{else}}
+ e
+{{/if}}
+
+{{#if a}}
+ b
+{{else if c}}
+ d
+{{else}}
+ hello
+ {{#if f}}
+ g
+ {{/if}}
+ e
+{{/if}}
+
+{{#if a}}
+ b
+{{else if c}}
+ d
+{{else if e}}
+ f
+{{else if g}}
+ h
+{{else}}
+ j
+{{/if}}
+
+
+ {{#if a}}
+ b
+ {{else if c}}
+ d
+ {{else}}
+ e
+ {{/if}}
+
+
+
+
+ {{#if a}}
+ b
+ {{else if c}}
+ d
+ {{else}}
+ e
+ {{/if}}
+
+
+
+{{#if a}}
+ b
+{{else}}
+ {{#each c as |d|}}
+ e
+ {{/each}}
+{{/if}}
+
+{{#if a}}
+ {{#if b}}
+ ab
+ {{else if c}}
+ ac
+ {{/if}}
+{{/if}}
+
+{{#if a}}
+ a
+
+{{#if isAtWork}}
+ Ship that code!
+{{else if isReading}}
+ You can finish War and Peace eventually...
+{{else}}
+ Go to bed!
+{{/if}}
+
+
+
+{{#if a}}
+ A
+{{else}}
+ B
+{{/if}}
+
+
+{{#if a}}
+ b
+{{else if c}}
+ d
+{{else}}
+ e
+{{/if}}
+
+{{#if a}}
+ b
+{{else if c}}
+ d
+{{else}}
+ hello
+ {{#if f}}
+ g
+ {{/if}}
+ e
+{{/if}}
+
+{{#if a}}
+ b
+{{else if c}}
+ d
+{{else if e}}
+ f
+{{else if g}}
+ h
+{{else}}
+ j
+{{/if}}
+
+
+ {{#if a}}
+ b
+ {{else if c}}
+ d
+ {{else}}
+ e
+ {{/if}}
+
+
+
+
+ {{#if a}}
+ b
+ {{else if c}}
+ d
+ {{else}}
+ e
+ {{/if}}
+
+
+
+{{#if a}}
+ b
+{{else}}
+ {{#each c as |d|}}
+ e
+ {{/each}}
+{{/if}}
+
+{{#if a}}
+ {{#if b}}
+ ab
+ {{else if c}}
+ ac
+ {{/if}}
+{{/if}}
+
+{{#if a}}
+ a
+
b
+ c
+{{else}}
+ {{#if c}}
+ a
+ b
+
c
+ {{/if}}
+
a
+ b
+ c
+{{/if}}
+
+=====================================output=====================================
+
+ {{#if isAtWork}}
+ Ship that code!
+ {{else if isReading}}
+ You can finish War and Peace eventually...
+ {{else}}
+ Go to bed!
+ {{/if}}
+
+
+
+ {{#if a}}
+ A
+ {{else}}
+ B
+ {{/if}}
+
+
+{{#if a}}
+ b
+{{else if c}}
+ d
+{{else}}
+ e
+{{/if}}
+
+{{#if a}}
+ b
+{{else if c}}
+ d
+{{else}}
+ hello
+ {{#if f}}
+ g
+ {{/if}}
+ e
+{{/if}}
+
+{{#if a}}
+ b
+{{else if c}}
+ d
+{{else if e}}
+ f
+{{else if g}}
+ h
+{{else}}
+ j
+{{/if}}
+
+
+ {{#if a}}
+ b
+ {{else if c}}
+ d
+ {{else}}
+ e
+ {{/if}}
+
+
+
+
+ {{#if a}}
+ b
+ {{else if c}}
+ d
+ {{else}}
+ e
+ {{/if}}
+
+
+
+{{#if a}}
+ b
+{{else}}
+ {{#each c as |d|}}
+ e
+ {{/each}}
+{{/if}}
+
+{{#if a}}
+ {{#if b}}
+ ab
+ {{else if c}}
+ ac
+ {{/if}}
+{{/if}}
+
+{{#if a}}
+ a
+
{{! This comment will not be in the output }}
{{!-- This comment as }} and will not be in the output --}}
diff --git a/tests/handlebars/jsfmt.spec.js b/tests/handlebars-comment/jsfmt.spec.js
similarity index 100%
rename from tests/handlebars/jsfmt.spec.js
rename to tests/handlebars-comment/jsfmt.spec.js
diff --git a/tests/handlebars-concat-statement/__snapshots__/jsfmt.spec.js.snap b/tests/handlebars-concat-statement/__snapshots__/jsfmt.spec.js.snap
new file mode 100644
index 000000000000..4be7aaf87d14
--- /dev/null
+++ b/tests/handlebars-concat-statement/__snapshots__/jsfmt.spec.js.snap
@@ -0,0 +1,124 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`concat-statement.hbs 1`] = `
+====================================options=====================================
+parsers: ["glimmer"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+
+ We are a cooperative, one of the few seed companies so organized
+ in the United States. Because we do not have an individual owner or beneficiary,
+ profit is not our primary goal. Consumers own 60% of the cooperative and worker
+ members 40%. Consumer and worker members share proportionately in the cooperative’s
+ profits through our annual patronage dividends.
+
+
+
+ We are a cooperative
+
+ , one of the few seed companies so organized
+ in the United States. Because we do not have an individual owner or beneficiary,
+ profit is not our primary goal. Consumers own 60% of the cooperative and worker
+ members 40%. Consumer and worker members share proportionately in the cooperative’s
+ profits through our annual patronage dividends.
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce cursus massa vel augue
+vestibulum facilisis in porta turpis. Ut faucibus lectus sit amet urna consectetur dignissim.
+Sam vitae neque quis ex dapibus faucibus at sed ligula. Nulla sit amet aliquet nibh.
+Vestibulum at congue mi. Suspendisse vitae odio vitae massa hendrerit mattis sed eget dui.
+Sed eu scelerisque neque. Donec maximus rhoncus pellentesque. Aenean purus turpis, vehicula
+euismod ante vel, ultricies eleifend dui. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos. Donec in ornare velit.
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce cursus massa vel augue
+vestibulum facilisis in porta turpis. Ut faucibus lectus sit amet urna consectetur dignissim.
+Sam vitae neque quis ex dapibus faucibus at sed ligula. Nulla sit amet aliquet nibh.
+Vestibulum at congue mi. Suspendisse vitae odio vitae massa hendrerit mattis sed eget dui.
+Sed eu scelerisque neque. Donec maximus rhoncus pellentesque. Aenean purus turpis, vehicula
+euismod ante vel, ultricies eleifend dui. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos. Donec in ornare velit.
+
+=====================================output=====================================
+{{! TO FIX }}
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce cursus massa vel augue
+vestibulum facilisis in porta turpis. Ut faucibus lectus sit amet urna consectetur dignissim.
+Sam vitae neque quis ex dapibus faucibus at sed ligula. Nulla sit amet aliquet nibh.
+Vestibulum at congue mi. Suspendisse vitae odio vitae massa hendrerit mattis sed eget dui.
+Sed eu scelerisque neque. Donec
+
+ maximus
+
+ rhoncus pellentesque. Aenean purus turpis, vehicula
+euismod ante vel, ultricies eleifend dui. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos. Donec in ornare velit.
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce cursus massa vel augue
+vestibulum facilisis in porta turpis. Ut faucibus lectus sit amet urna consectetur dignissim.
+Sam vitae neque quis ex dapibus faucibus at sed ligula. Nulla sit amet aliquet nibh.
+Vestibulum at congue mi. Suspendisse vitae odio vitae massa hendrerit mattis sed eget dui.
+Sed eu scelerisque neque. Donec
+
+
+ maximus
+
+
+ rhoncus pellentesque. Aenean purus turpis, vehicula
+euismod ante vel, ultricies eleifend dui. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos. Donec in ornare velit.
+
+================================================================================
+`;
+
+exports[`non-breaking-whitespace.hbs 1`] = `
+====================================options=====================================
+parsers: ["glimmer"]
+printWidth: 40
+ | printWidth
+=====================================input======================================
+
+Nihil aut odit omnis. Quam maxime est molestiae. Maxime dolorem dolores voluptas quaerat ut qui sunt vitae error.
+
+Nihil aut odit omnis. Quam maxime est molestiae. Maxime dolorem dolores voluptas quaerat ut qui sunt vitae error.
+
+Prix : 32 €
+
+=====================================output=====================================
+
+
+ Nihil aut odit omnis. Quam maxime est molestiae. Maxime dolorem dolores voluptas quaerat ut qui sunt vitae error.
+
+
+
+ Nihil aut odit omnis. Quam maxime est molestiae. Maxime dolorem dolores voluptas quaerat ut qui sunt vitae error.
+
+
+
+ Prix : 32 €
+
+================================================================================
+`;
+
+exports[`punctuation.hbs 1`] = `
+====================================options=====================================
+parsers: ["glimmer"]
+printWidth: 40
+ | printWidth
+=====================================input======================================
+This is your name: {{name}}.
+This is your name: {{name}} (employee)
+This is your name: {{name}} ({{role}})
+
+=====================================output=====================================
+
+ This is your name: {{name}}.
+
+
+ This is your name: {{name}} (employee)
+
+
+ This is your name: {{name}} ({{role}})
+
+================================================================================
+`;
+
+exports[`surrounding-linebreak.hbs 1`] = `
+====================================options=====================================
+parsers: ["glimmer"]
+printWidth: 40
+ | printWidth
+=====================================input======================================
+123
+
+123
+123
+
+
+123
+
+
+
;
diff --git a/tests/handlebars-whitespace/boss.hbs b/tests/handlebars-whitespace/boss.hbs
new file mode 100644
index 000000000000..1e15a8a9c5e1
--- /dev/null
+++ b/tests/handlebars-whitespace/boss.hbs
@@ -0,0 +1,15 @@
+
Hi {{firstName}} {{lastName}} , welcome!
+{{#component propA}}
+ for {{propB}} do {{propC}} f
+{{/component}}
+{{#component propA}}
+ for {{propB}} namedo {{propC}} f
+{{/component}}
+{{propA}} {{propB}}
+{{propC}}{{propD}}
+{{propE}} {{propF}}
+{{propG}}{{propH}}
+
+
+
+hey
diff --git a/tests/glimmer/curly.hbs b/tests/handlebars-whitespace/curly.hbs
similarity index 100%
rename from tests/glimmer/curly.hbs
rename to tests/handlebars-whitespace/curly.hbs
diff --git a/tests/handlebars-whitespace/display-inline-block.hbs b/tests/handlebars-whitespace/display-inline-block.hbs
new file mode 100644
index 000000000000..abb068528c14
--- /dev/null
+++ b/tests/handlebars-whitespace/display-inline-block.hbs
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/handlebars-whitespace/display-none.hbs b/tests/handlebars-whitespace/display-none.hbs
new file mode 100644
index 000000000000..0570c11ee3ad
--- /dev/null
+++ b/tests/handlebars-whitespace/display-none.hbs
@@ -0,0 +1,2 @@
+{{!-- TO FIX --}}
+My tITlE
diff --git a/tests/handlebars-whitespace/fill.hbs b/tests/handlebars-whitespace/fill.hbs
new file mode 100644
index 000000000000..3a475a4263da
--- /dev/null
+++ b/tests/handlebars-whitespace/fill.hbs
@@ -0,0 +1,11 @@
+
+ We are a cooperative, one of the few seed companies so organized
+ in the United States. Because we do not have an individual owner or beneficiary,
+ profit is not our primary goal. Consumers own 60% of the cooperative and worker
+ members 40%. Consumer and worker members share proportionately in the cooperative’s
+ profits through our annual patronage dividends.
+
diff --git a/tests/handlebars-whitespace/inline-element.hbs b/tests/handlebars-whitespace/inline-element.hbs
new file mode 100644
index 000000000000..749afd13cdff
--- /dev/null
+++ b/tests/handlebars-whitespace/inline-element.hbs
@@ -0,0 +1,16 @@
+{{!-- TO FIX --}}
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce cursus massa vel augue
+vestibulum facilisis in porta turpis. Ut faucibus lectus sit amet urna consectetur dignissim.
+Sam vitae neque quis ex dapibus faucibus at sed ligula. Nulla sit amet aliquet nibh.
+Vestibulum at congue mi. Suspendisse vitae odio vitae massa hendrerit mattis sed eget dui.
+Sed eu scelerisque neque. Donec maximus rhoncus pellentesque. Aenean purus turpis, vehicula
+euismod ante vel, ultricies eleifend dui. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos. Donec in ornare velit.
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce cursus massa vel augue
+vestibulum facilisis in porta turpis. Ut faucibus lectus sit amet urna consectetur dignissim.
+Sam vitae neque quis ex dapibus faucibus at sed ligula. Nulla sit amet aliquet nibh.
+Vestibulum at congue mi. Suspendisse vitae odio vitae massa hendrerit mattis sed eget dui.
+Sed eu scelerisque neque. Donec maximus rhoncus pellentesque. Aenean purus turpis, vehicula
+euismod ante vel, ultricies eleifend dui. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos. Donec in ornare velit.
diff --git a/tests/handlebars-whitespace/jsfmt.spec.js b/tests/handlebars-whitespace/jsfmt.spec.js
new file mode 100644
index 000000000000..36123c9a9e0f
--- /dev/null
+++ b/tests/handlebars-whitespace/jsfmt.spec.js
@@ -0,0 +1 @@
+run_spec(__dirname, ["glimmer"], { printWidth: 40 });
diff --git a/tests/handlebars-whitespace/non-breaking-whitespace.hbs b/tests/handlebars-whitespace/non-breaking-whitespace.hbs
new file mode 100644
index 000000000000..55a8b9477611
--- /dev/null
+++ b/tests/handlebars-whitespace/non-breaking-whitespace.hbs
@@ -0,0 +1,6 @@
+
+Nihil aut odit omnis. Quam maxime est molestiae. Maxime dolorem dolores voluptas quaerat ut qui sunt vitae error.
+
+Nihil aut odit omnis. Quam maxime est molestiae. Maxime dolorem dolores voluptas quaerat ut qui sunt vitae error.
+
+Prix : 32 €
diff --git a/tests/handlebars-whitespace/punctuation.hbs b/tests/handlebars-whitespace/punctuation.hbs
new file mode 100644
index 000000000000..762851bd11c5
--- /dev/null
+++ b/tests/handlebars-whitespace/punctuation.hbs
@@ -0,0 +1,3 @@
+This is your name: {{name}}.
+This is your name: {{name}} (employee)
+This is your name: {{name}} ({{role}})
diff --git a/tests/handlebars-whitespace/surrounding-linebreak.hbs b/tests/handlebars-whitespace/surrounding-linebreak.hbs
new file mode 100644
index 000000000000..06862ebaa584
--- /dev/null
+++ b/tests/handlebars-whitespace/surrounding-linebreak.hbs
@@ -0,0 +1,17 @@
+123
+
+123
+123
+
+
+123
+
+
+
123
+
+123
+
123
+
+
+123
+
diff --git a/tests/handlebars-whitespace/table.hbs b/tests/handlebars-whitespace/table.hbs
new file mode 100644
index 000000000000..c161476daa7e
--- /dev/null
+++ b/tests/handlebars-whitespace/table.hbs
@@ -0,0 +1,20 @@
+
```
-We also allow magic comments (e.g., ``) to tell Prettier how to format this element
+We also allow magic comments (e.g., ``) to tell Prettier how to format elements
due to the fact that CSS display can be changed:
@@ -98,13 +98,13 @@ due to the fact that CSS display can be changed:
```
There's also an option for the global whitespace sensitivity
-in case you may want maximum safety or you just don't care about those whitespaces:
+in case you may want maximum safety or you just don't care about that whitespace:
`--html-whitespace-sensitivity` (defaults to `css`)
- `css` - Respect the default value of CSS `display` property.
-- `strict` - Whitespaces are considered sensitive.
-- `ignore` - Whitespaces are considered insensitive.
+- `strict` - All whitespace is considered significant.
+- `ignore` - All whitespace is considered insignificant.
##### Automatic parser inference
diff --git a/website/blog/assets/github-diff-ternary-in-jsx.png b/website/blog/assets/github-diff-ternary-in-jsx.png
index eb25e659add7b9b1ee4542677e64b11d8dd6238e..d96837f9ba8b728b222e173d26fbc400aaa89f4f 100644
GIT binary patch
literal 16599
zcmZ|01y~zh^EVs{MGK{cqNTW7Da9JJ6ev)fqQxoFqNNZ>aBXodE`=h+9SRBVPH;(Z
zm*Bzk())S--*vz8?b$24JA2ON%@aWR&=HUq%eQ{Y*Q+tBG
zF!}UV&(zk{Bk=0_?C>0e7@FBQzM9>`oE$C%g~gm-VAdKVf^#P>&X1Dxd6j<6U12as
z^U#pUrsJ#YI|KCm)5@x9JPa)xppY_>lo8Z&J&G3MXIY^ciY>
zz)g<39EpzN;`Z*_*c>g_(liNfoFA=-?(k*2y_yQrF?0O#g}&wOAR{*`w@laW&DmTw
z6H{iPCI>}gk5y*p((b|5(o{}lZejOaS&BpVFEu9apv?b~vh0}C
z<)zNPq1)Z|qw}qiovWsnwuGEqt(Y1WEx%IOFULPfX15m1-n6QT+pocmI!|L=8UD^<
zw|C&;OjnEHwIjY4me85~%ga@p@`0N(MElZNN9MG(WI!T!myYh!>b)((VNTAxcVN%%t>8j7itKG!JK2zhj$7xol}Cj9GVrC!(6W~
zxSPx=%guP!-rblH)tjrGnbmin^NCtCeY0HOJM-$(OlI#ASawD>adGAReE$HzYYC7{
zi5D>kcr{|yhcJ8V0InYZUPrU%mdSdi?t&Hosc*@x`Ni610K05}PAY&qXmE9Ma}t5s
zKN!GF%^WXc<`>s6duy0gcQZTDe?72-h+V&IE8H4s
zLhrTbb}ubuMb4}M4EoT$eNh(Ot`>cHPF+soosRN-QU<-cdOa!99lnws1@GH^Z
zX#h%F-ie0N080RHvc<`7LQkTD9J@u`l>vhcH-=qN
zp4P#f&uX3Zo6@`*&E--4sFU{`@j`-N%1`&G`0$*J8=tkXNW<{@dv=tx=zT{_0;lh(
zlV!yfqn{N#c*rG--9Ej1?<0=$OOl|eu5!Dy`vo1}72l>;;yLvtl%AN{i}rNCn_q0`
z##hJYe-5`0XB~f#^U9{fd2)6OKh0Y_m?oZtnbogtR8?D6r0kxk1FKgZBD(Kg`?nCa
zrr9MdOZmt~LoY|F3>T4|X3I9-*pK746h7quR#p$|lW@hHB
zXJFwV`P3{D6_-ZTo!eP)P^0);J|kX!|HGGg`$tnL*BKHGAW^#o3k$2nbaa2EXR`6&
z7M-TWQNkE@;=m?sRLXV9SZqso&lH6|lrd)i?o80@pIo_?5aiBZy8fhd`Jn}O#_wR;
zT!MaGaYgsQwWu4f15(}0=PPGm0|UoG2NP+dXBr44)=o7hD4bGI>!ONmyt@eo(()n31RW5Q}|`t1Zs`<4p?
zRTJf<~^{~)G!KYe%Tv?+Dr58}QS1VvxT
zNet9T=2;3WEu=ll7VRk_oBrynR=`Rhp>WvRs3tge5FPBB-TnPV0RNzSPGRaA9H8oX
zX}iw+!zTD7wa*jRsO&?Nv^{U(BVXY@Il+WH^IT51`VfR>c!IPA8v%p1XQUp*ObQOO
zUFWR9{R-#lZ}5`CiV{;ZvzQ&QkK<@&^t$ytoN_z&N{@YFQGxx1*OO=0;ajQ(7Mc4u
zi*6g2V~&5R+I1!{+#%flWGN<^?jwl34j7KiOAoj9pm1yTn_*UGc`byy>Z*xo~aX
z9@Mc;+#DnjO}kKhyqK;abzvVN%iewIYw-<8VVV)d&{WvH&Ed`4pWpxUXEOKuDB1hv
z>}1c^{2dQ=#`GSLrzAS@B`8+*JdE`I9H9M(#4}PRcZ=CnEmu*3jo$EphTHGzI+DTH
zqH_T%8*4lsPUxBNwQ(jJG`rf$+2hQ^Q@n2k6*@M`Q)7aG7!PB{quuFt-h~f*crgY;
z*@N0P5rez1#2)@7$l1%EAl$i`Z#!V!hOnv_+WJUkZO6$H=gm%rF-YAR_SjX_%sz~I
zaWq_a3NppbFnKzJdf=ZmGDHk*Vc2}BvZL{vE&;z@EmOIQxM5Mbkq-6$COy-Z$DfP#YJPXWmJ=J5Vx
zcGsz7*z5=IIW7HB|+=UA8J^>kHh;Wk2Uxy
ziP1LyGK{oWoO`FJwlmX+zkEpG4b#+VX)xC{eXE!23!?;p5lUH)o$q$rXbMQOuB<-F
zm{*jCRS68#oVmg7YDELfw?m7an!*K{pY>eyPF{-hSp6=ba^ub$Yn;Ic07qzX1iHWIpM
zqVAZJSjMFgq`FceZ&qhk<+*~9#hJ?iYUHH6*-ESAP)Am~K7IQP`2PAZqEnv!*YknM
zps&G>wj)FLHyb&r{2h%Cv-|~pr#Ji`bvWT$ktu-=@Fr`S&D)3u%BdPVhF-v`tT`)X
z9cRmAUXc#q!dt$-44!p1{l)d@@YB;Y?`IFU9|_oY==W{YWiT`MXvHEqUmoJi1|#pM
zJQ5bR4wd=yT|2kwvBHGH{CIVA<%(hKn-~oe`TJ;rMlmwEKJ!hljN$U~@*YK)GVL>?
zdalsNV~y^^?W-1K&0LzyCW9fe%a>Uh*tZjfru^k`2+S$QrRy*bKaW&;0AwH9L-Hq*
z!0&cIyC;L(_uMzUa24B`mszv(}m9gC(*ZuGNS!X>3$v7#+2IOo8?Qr
zeNrHfThejv<%LB~*vP7=efq4jM3;dh6+5@^rA08{Pef4A1dP@x%qPJyt|NVOhLaFA
z2WmA2xK&;?e?Va@iKwwURYFq7L>p3=kxka}qew*o2
zg*YaL09Ll*XWcV?T4JY9=QZEGDoXz~2-&0dzBux!pOryY&4tj`&qA?#AdG*p%0GBz
z(t!(tK0NopV|akj&ZhN;>H-+TKgW#pL!JOs?_a({Vnw5y@BItdtlm734r*HWx)^=p
zi~XAw1?T|+jz}0#`m?KaSukimm52wP4KIpwzjpnI#5C>us3`VJIpjvYA<{>rAHodq
zP)pnhg9#qkS&V|+^giZ$u=|j4{#dg617&Z4K=b7pRe|}m7Rj%#5aPjV
zDoC(-f4?}6@Vz7~q27-@o0W^g!UVzYe!s2hk++O=mxg(LijN$&Z`vnhoEU)r{!a25)iV7VYmc}Rb=Ea)h1Jz^ZLvFDrj+z_}PjdPiAM}2S@r>wuz|`M*
z|8$!r|5<>v4nwvOs!v+~_%#KDnSQBOjDm9MLo~bjby3zM?fV9(J4pdgkpV$sd1=-z
z^CPT5(=4pc$8}&d6?xmDe^$wx8jnL;Ku8_jU(1o2gpUJMVI{}R9QFy8->lbF9Px{a
z20?}2r+5oD0RK$u6B05M)Z{@7JmIhktnPBr+mK7jUD?^#
zC%f+Y>VagZ{2~);ouG3Jxq`g3#@4P$gvjv8J~?{;(;L?jS4@`b<20G_Qq%3d4RqZ7
zd!daN1UlsCFyXwHyZn?+M?Vt|3zd+C-0J6RN%A=}jNpxdT|^&uji8vD`}lkCf)wf7
zsfOwCtB$bCKb0Do!PMpB)X$uMHs6EMh+iC?Q&%niwdFXHn~?)&v^n^4>1
zW#B(^UTC~XP>E7zw*HB_*H8LHziRc%uOBoC={u6$E0@0)uJx|ZD%h)~tjor(Dv}yN}S;+^Zw<`7PTZns`6q^}nmI%yicb#aX+2k}kUN^0O5#`|PpY`z*V;d#Y
zxFyf2Ag$v5?DUb%nB+D!H|?jmX5~lJjq(JgCb$`ic}Vt27f+r25w1^hmN;+wSH9e4
zH=jPkWpj@-&8iL^fj9RF$CBJ1&_q~;Y&w<bt-QT`?K%#-DH7(Rt-EKEA%-6&lBt+P&H=T|-{v4WXK
z@Hg+Dv6pEjSGQ?zlAAnBT^}~XAwrO0*_a|_0hVp&fsfzbY{68SAlilgl}P=~;hot4
zHz7#b37;yf66*bZLIn})mnn#B9~U;!7$Bxn&_(_YV}=DE~b$AO>pKBzLDXpvC0mp=%5h`9t9g;
zx#Q9gZhEA#A*3}exs|>Dn%0FwnEe?oIUm_xZcEj`{*yHBAKDW{vDw`NUbG_6H7%Uc
zWGNig{`i{!161~-mp@4nE@l^lLc{vB)DvJ`#Uo~`r=~`Ja9~|Cxooj}{J>E8Bt(gM
zm+pBkNW%{)mNV)pb;2)yX`UR_%NA~yJV&AP+mhqN8@Giq8zSCn`X2IO&u63LXjees
zE$dH022wimU47D7VW2vcj!c8)^?Xd&OZLZL{%`Kuozy?AtH4s?fTbT`y7o2Q>3cl?BGHY+vX@@{lUs?tQUy_*;aD`>~L4x+4Qg5`5YH!&r)x=B|Qw@<&?
zUq_|CV!H*zK=d(`H3#`h)>db0s*=8O8{5db(Iy5qxWPLsA9
zhR$(dy27m7@Vlnl#edC)V0^%+Og#2S@q~8|kvvFdZ;TLXy=e>@ul4}a{ED{q*2*on
zl}zm=uJPGuvBqjDG(|F?yoo%>rY`&i^7P?G7Drz)Xvq5Y2~THzsv7nh>*akjxspVB
zAf|m<6ouXKVB*0wd#|M3e?;I5#a^XjK;6Y=dVqKFoFkHGP}b{zU;Vp7S7;gB&1dH9
zFz|Y+59uLVB93@z}AOOUoxU*?yEy4eZbg&x~QzdvY&nWOzCzH4`D5T}}FDB+@>
z5Zw8dh0;AKU*vcF*;=0P$1&C~@}#Zj#OL3Qz3E^tq-s}>7v5339#+W1U~Wi3qOgsm>~&(_^YEyR>k
zPuO6bN`_9S{-KY$2Ev+kZoD3^%~83uYh4fCqI92sI*+?unHJXzEZfQTR;XX_t00!M
zjYIwtk+WsS@W@B!Qeyn%iWlX~K$}bYhT7!B#ds7ttfuOj-Fg;%7(`I9DJ3cTg@UrM(VlP@@r6Ee`?;thZpCMO_v@G8TzHIK+cyTej^Ik
zE3oIk_1iBf0JOO77(SaKQ6Cn+k(d|Ag$M3uPBRSN{>SYJB3GF!sef1|7%pR?(C6e!
z%~0s~51v4xjwCwNFOe-3joAW9T`}fP|1`bbK@Y~sbCJYypkzfZx8L~}+G-Wo=Qgj(
z>tQR_1noY1Z!UiAyY4JW%{J|IlT=q6*;~)s@5a5ZJ6Pbr<$gs-t4rT;k+bLHGLtQk
z?n93F7`5QapM7;T*Z7B4%xB>Oe*5_RBF^V(li`!6q1(Qyk)KVbxA5us4cF{BHc+=F
zJC6TiuH{MK#iA-In%VoJYTM<5jOk_nXB>
zhi$|CfPa5Q-lIwS487fjH~^!|J^LRRAv>?E?8mt2*)|vS!xqH+FYe3r
zQ$c<`e#CDPwrBs2pdz!8JcnvGrRsz2+@|yCK+1c!{L9eDlp_!T|7G<3XkYPC+&
zg-829a#gBXxmmOK=N&}a%URsOtG%NOb7IO{^f%eWESm^uKC#f-NMP`lqp-Bze)YHb
zK2mz~-TzL@{wD@0mYht*SbdE)M?uq{6l)$9t~J+g^{NOb*+t)1d|PU#SBE_3(n2w<
z$MdSvi*j5mD69Q6ClA5^;}5!4&7Px-wQhlHYY`u$3qD=?5VY%;H!koID&~k_r{6?A
zuj{WWDPuY{pnT)s!m4*mOHBGq$@50Qj_2&`C8>oo^grf8iD0kKGH0PzyOo^}5MFyS
zJ(}7GGtVIX6-N-G5*kXMRJW+h6*yDVJU}P_vZU8i2MagmskcrXQ6H`~U>Li|b8OC~
z@^hDw^YAb4hT`YVE~O4CEEsjgv1<%S)Gp}PeTI2nS%j9P7yoEmdEfLxu=%OqEi9uy
zlW|~2o6+^_q8~Mpj!;gu1aMW$l&P=zigg4%y~h1##tOTl>N>&B#kT{QR_ISfW*K{D
z-Vx|I|Jrl`xAC9$=KiHP*`C-j5i`z!UVLEvQS&WqFlvJ+@xBk%
z>&gIHEIyQR43oEizZwajyN)338*B#~id6-4V5tSR_saNM_-|FNM_To92*DT`xeh
zyq71$+$j&)A*TW0D^td+kL}sI4*LE4Yyi@_5)(`IIjh%M-{lNezuygor)C{`U!C7d
z%_>MGE3BlSu-QPP%$V3WR<1OBOz!=+hbrlcJCyA1!awU!mGmW&z`qM9GvdyUPlLjd
zSxING`OnQBoPQI$w(dHF!Xv}bl#i)gYi}rgg$0Og>)k-|Lf-h@wdSqbp32o@?YB%Z
zW7G-lSEMTv|Mj)N7X&XpyH}68+2N9YWPK~UY3BA^<@c6!5cVt^twWI8MZ@L1>yw2@
z4t_tm>lYhJmy#Xs5pcGDJV0sl^UGUD_+Cbm^eZ^gzHqO#yPBzbOn<03lBeB7O9L+X2;_@tIy!1`YDO!#?->gHiPTM^;R@@XDMh=2RH
zFo$b}tIwm{s9O%Cz7Y-qSzv@c13%
z3zpQFK1_#`36HAwG=I}SDPEf2&^pmF7?d0pSubShI{Y86g+h_(isc0S@DVthony++
z@&Z<2N$r^umNzKLjS%t^l_vmwvXgE%7Q|e)Dqp#OhybebJ-RBa&1e`~0h`VcRi=$K
z)Ku5M86TqG<0z+m;xKdR?$=Hq2QABh5E5nj56~E2j#_`a-Ru%ToxVwWh@5s&6j}*X
ziQJ-<*TBI)KH}6rIIGKCVSRh{U7X#2%A3IaI`Tgr%f7XOh)X^osO{%((59K?AvWAW
zLbBc-aoO`_PNl9U53}hd-$B4G-Wj2P+0@{1#A9eJm&?Q7(<5qnOx_sq{t#Qq$;d+<
z&xLQA?UB#B#~Af{FMQqs(;2frwRytkUn~cfJT*%;CCK@<+PEoAun4;s*VFvQ=?IUZ
zYv+H&^D-h9<2Mb=EP^jQmUWR(ec_!Y+%YMu;E>>nzyuBG>U_w}POb1alJ*v`h-mY1
zR_&KbvzGYy?wmiz-c9tzZn8M}9*fg>CrStNfeKo5t2c##)!%xYpC`_xymF-lx4Dy=cM;-Z&6Vbq{B)FN%|_8gntxd!CIfq5-Fe~@){mp+h?0R12ef!E
zSh*ftdw%pB&Z418G5IRC)=bTA2dA8EexXaZ-@JY^{b<%Cj70nsLOGJUF1DW&xFwHe`!3$a(>
zW94ZNsd!7y{gf&)(*?N@o*gBM&b<~{2_$a&u>5qt*}HEE=YclqiB{1s5t)@6+Ird4
zEG7xqnD!0F+W}d@xPGyA^Y4&+1XGphsZ*tz$ri2g&J{%_rflGxAL#ZDhk+DZqdL14
zyRLqiL_69jf>yc>%EEDf(^k7DfJr(=s$bcGo
zg>oDvzS&h9#JlN%+=1A;Ci(E6!`-PA#2RZw_;HX~!u{?6)4d^??H96nsSOp%60R>>7?xqndlV909+xU3jiracCjc02
z9$=AT1Tv)B>jrl9++fW-kvy=iO;{kkgeRb!$^e_N#qeLz#zvAZo$N5fN@yps*~{7Z
zg6s7VCNl1FS$CW)h#Fg5z6cyTCIWM`a{0r)%w=I`MhB88zi$!n#~RRp&d$#E4tkk+
zsDkPo$njO)J>sKm5K68H$i8=ymY18IrrtrGfrW1!TRY|QBjZd3i*-;8%I-M>%h)!5I?Zsj(nUG41hR*RwfhGxSZ+!t6<((=Y#aDsEUd2YSCh8@
zN3ITw&Z18=P&6BA)y9K)au+R(;U$>hhr7=cyVvCVZBadHE?crgCfeB_ywCM~VI{E2
zlnRa3)-zDkGQb^vwZ?p=u3dtRpx~`42HCF2X(Kt!BBIw|vU+r@wcrp~8rzzb+7FT6
z*C|X2pHD5gXg?dcdF1b*!k_R3lO}`nO#s8vsNS)MqfWh2FdvLOomjbK6`Ml!xkUsr
zovM^l7tdwZs)J@wl5|aQW;xH1Z~Q5&8(XQ)tnY1OqDezUU6?Dx|8xW3J_6Bb)}$%b
zE(66RQp~WtK|sEF)meV&sNP@jayA#$$j-ZO|8shu^-9b95wLP~D=3e7=kfa)iFb+`
z{21??KpV73El#dFeI)$D?owLu<7PU|QGR=>u;R}~up=jr&|Yz|ul7|pc3^+aP7XRK
z50K%9bg3OHk8>}mL~_b823xD3jI4#iY&20{l77G0C~Ad-bY=f?)AU4Jg%g+MH~;Rz
z!}odY8n|D5M$LVD^P2xq!WT(IxHo3?4PJO6i9$whUq*UWvJGCd4l-HIJQ_(>+AcRj
zmLio4pk!TR+DI)U7?8e!JJvlL>XC2L_3@F{J@I?6F~9e;n6~6(_+b3VTcaozHAkIn
zY<3{-2AJe?@rKIMn*?yaaYkL3%~M~R(|uu7pvh9W3~ntM4P3~>Ky`BUrO@VyGnO)~
zhZc@T1k#XjluxttM9Aj@{orK(sUEARWOYN@DgC+Cub~Gsf9lk;!AM_MM&YCl
zyYYuvKPL!^n@_*8JPOS%wtAsE
zOdE|~QGIS+=OHS>`?|GtJrl`@rnhSZ#I1AM4y5ED&2
z8A>`LjuNrp5usR9drn~q-wCf+a;=w?85*nJ|F{90YlWu5=A@E;l-S`e7EXkH-`$p|
z54amuDH}h%mj3v-06Jz)l>mB8MX&CWI^==UVMvdGjj3(!(j-!o4=qALPN|#e*U*GY
zbSX`VP5h=&x^1f9XQ2+X(FHGIiwXgcKGJf@Q*h-Mn0X=jHuH1zORszbrE$9D$@|i%
zTDVBhE}bt>1r=x;N-XO4Xg(Lro-x;hRZn)R%Hv@IaN5|S18gEl0rLc4yt|;y|FO3;
zBL7Bp{`cJru&6QHJND(%SFMv$(8R3;>Vb4l{jo%3UszBq;k}3LaiO`|`$8eo5KfNx
z0PR$0P6V6Zq%eYQH8x=c3Zqd2=N2N3Q)$B32p)w(r#ouSI{AXhIYxl{h@uVPS!NP!
zreoVGeeTvecBi;u->TcLi)H8P#)@rhFqO;b{bfCs`PUtrKu_m--pyc?5I=5d%!
zNr>?S>3blx@;?gDjSqtX`3gW_6`xS`ES1#G?gLBS4}2uNBB*o^)K8AR&t+{+E8Zhl
z!pRH7b1;Hkjaem}+umzq=9;d>i#j8tqiZc`Xwl9hH0TlsNgY=ob>cno4c=9qS0wfu
z31r|pZ!XR`E@W&?jr&ARQdl_I2tROf`m~o`jr73}aY@NT%-&ny9jt{q=l7EBns6h6
zmLHd|7f5P@+ptE5D07_LGE+Yq6|R(Bwk-m~Ck)vG0(^)!$x2P0d`FYQuY{PDXvb1Y
z*RsL7dBh8f3i(sZ<*M(a4prR`tb|%A^Zw{|>8jeM=-}{gp`GV=J8ATnUn%o+Vo>2`
zI|jAUi7UIDL%FYhxc;uERmCD})EB6$AJTm8oEfaB5ih(66Bikzp7JU4zVf-Pv};1j
z?2LVqsP|}qd1`t={f!G1Fxu|
{{title}}
+