Lucas Azzola
364c38de0d
Implement custom parser API ( #1783 )
...
* feat(api): add custom parser API
* test(api): add integration test for parser resolution
* chore(api): fix build after resolving conflicts
* docs(api): document custom parser API
* docs(api): fix typo
* chore(build): add parse5 to build and support yarn test --prod
2017-06-12 16:51:12 +10:00
Lucas Azzola
486a89bfdc
fix(typescript): workaround - don't wrap directives in parens, fixes #2074 ( #2107 )
2017-06-11 19:10:56 -07:00
Lucas Azzola
e8f12cf621
TypeScript: Remove parens from type annotations where possible ( #2098 )
...
* fix(typescript): remove parens from union types where possible, fixes #1885
* fix(typescript): ensure parenthesis removal is stable
* fix(typescript): don't strip parens around function type
2017-06-11 18:06:47 -07:00
Lucas Azzola
9c608d2ec1
fix(typescript): use printFunctionParams for call/construct signature, fixes #2105 ( #2106 )
2017-06-11 16:06:38 -07:00
Lucas Azzola
ec7d99439d
fix(typescript): print arrow function type params on same line as params, fixes #2099 ( #2101 )
2017-06-11 07:30:51 -07:00
Lucas Azzola
4395e09b78
fix(import): allow break with both default named import, fixes #2050 ( #2096 )
2017-06-10 21:55:21 -07:00
Lucas Azzola
a79a444bac
fix(variable-declarator): indent first variable in one-var scenario, fixes #2072 ( #2095 )
2017-06-10 21:19:50 -07:00
Lucas Azzola
fdb7467de7
feat(html): add support for HTML fragments ( #2093 )
2017-06-10 20:10:34 -07:00
Lucas Azzola
b4f0ff346e
feat(mutliparser): add react-relay and graphql-tag parsing ( #2092 )
2017-06-10 08:59:27 -07:00
Lucas Azzola
d1b94c540c
Implement parser switching (HTML, Vue, styled-components) ( #2086 )
...
* feat(multiparser): implement switching from html -> css,js,ts
* feat(multiparser): use quasi value instead of originalText
2017-06-10 08:03:39 -07:00
Lucas Azzola
77f0c05d2a
fix(method-chain): break on non-literal computed member expression, fixes #2075 ( #2087 )
2017-06-10 07:47:22 -07:00
Lucas Azzola
1e08f03554
fix(typescript): break on multiple interface extends, fixes #2043 ( #2085 )
2017-06-10 07:46:59 -07:00
Lucas Azzola
f7819d5695
CSS: implement prettier-ignore ( #2089 )
...
* fix(css): implement prettier-ignore, fixes #2007
* refactor(css): move prettier-ignore to printNodeSequence
2017-06-10 07:45:59 -07:00
Lucas Azzola
a9409f11e7
fix(css): print @else on same line as }, fixes #2053 ( #2088 )
2017-06-10 07:40:05 -07:00
Lucas Azzola
8903e5e527
fix(html): fix AST_COMPARE on htmlparser2 ASTs ( #2084 )
2017-06-09 19:45:39 -07:00
Lucas Azzola
d00956d51d
feat(html): add parse5/htmlparser2 printer ( #2083 )
2017-06-09 19:22:59 -07:00
Christopher Chedeau
f399e90bc2
Preserve lines after directives ( #2070 )
...
Looks like we were only doing it at the top level, we should do it everywhere.
Fixes #2067
2017-06-08 17:10:01 -07:00
Christopher Chedeau
939734b75e
Use ifBreak instead of shouldBreak ( #2063 )
...
shouldBreak is only a heuristic to enforce a break, if it breaks "naturally", then it won't be applied.
Fixes #2055
2017-06-08 11:47:49 -07:00
Tim Griesser
753ff5f0ac
Fix lint errors ( #2062 )
2017-06-08 09:49:24 -07:00
Tim Griesser
df26cc05cc
Support graphql ListType ( #2061 )
2017-06-08 09:34:35 -07:00
Christopher Chedeau
883e637fa9
Support the Keyword type ( #2056 )
...
This is an issue in https://github.com/eslint/typescript-eslint-parser/issues/315
Fixes #2049
2017-06-08 09:25:28 -07:00
Tim Griesser
e9045e4bcf
Support graphql NonNullType ( #2060 )
2017-06-08 09:20:41 -07:00
Pier Paolo Ramon
126727380d
CSS: Every selector is now printed in its own line ( #2047 )
...
Changes the behaviour for line breaking inside selector lists (those
separated by ',') so that every selector is in its own line.
Fixes #1962
2017-06-08 07:46:24 -07:00
Christopher Chedeau
f702c2c614
1.4.3
...
* Fix support for node 4 (#1988 )
* Fix website on iOS Safari (#1970 )
Formatting change:
* Position JSX whitespace (`{" "}`) at the end of lines (#1964 )
Lots of small fixes, mainly for TypeScript.
2017-06-07 15:48:34 -07:00
Christopher Chedeau
924363193b
Check if the next group has comments ( #2040 )
...
Fixes #1958
Fixes #1959
2017-06-07 15:20:11 -07:00
Christopher Chedeau
1edb1f261b
Include typeAnnotation inside of node location ( #2039 )
...
We should remove this hack once https://github.com/eslint/typescript-eslint-parser/issues/314 lands
Fixes #1946
2017-06-07 15:05:46 -07:00
Christopher Chedeau
42b0368e3d
Fix decorator comments for export class ( #2038 )
...
We need to do the same location trick for export class unfortunately.
Fixes #1956
2017-06-07 14:55:55 -07:00
Christopher Chedeau
b730f4eccf
Add group around TSMethodSignature ( #2037 )
...
This ensures that the comment size is not taken into account during measurement
Fixes #1976
2017-06-07 14:20:55 -07:00
Christopher Chedeau
09f147decd
Do not throw for unprinted comments inside of JSX ( #2036 )
...
Fixes #1990
2017-06-07 12:57:03 -07:00
Christopher Chedeau
ccda4c7115
Break decorator before content ( #2032 )
...
Fixes #1996
2017-06-07 12:40:47 -07:00
Christopher Chedeau
e16478ef80
Fix less &:extends when parsed with scss ( #2034 )
...
This is the only breakage that people ever reported with CSS so I'm happy adding one edge case like this.
Fixes #1967
2017-06-07 12:40:36 -07:00
Christopher Chedeau
cabae6d877
Fix parenthesis for call expression inside of member expression inside of new ( #2035 )
...
Fixes #2033
2017-06-07 12:40:27 -07:00
Christopher Chedeau
c7cacf0529
Break if string | null ( #2028 )
...
We were a bit too aggressive around the `| null` heuristic.
Fixes #2002
2017-06-07 11:51:32 -07:00
Christopher Chedeau
c9c8512170
Only prevent lone `set` if there's no type annotations ( #2026 )
...
If there are, it's not ambiguous.
Fixes #2023
2017-06-07 11:51:25 -07:00
Christopher Chedeau
5ba0b0ec87
Add semi for functions without body ( #2025 )
...
We don't need to be overly restrictive and should add the semi if there's no body
Fixes #2003
2017-06-07 11:51:17 -07:00
Alexandre BODIN
8ec1b40961
GraphQL: Add support for union types ( #2014 )
2017-06-07 10:33:46 -07:00
Sashko Stubailo
0583fd4ce6
Add alias and null value ( #2017 )
...
Add kitchen sink test case
2017-06-06 18:06:15 -07:00
Joseph Frazier
1f3665fba0
Upgrade prettier to v1.4.2, fix lint issues ( #2018 )
...
This corrects the regressions seen in commit
26e829b
(https://github.com/prettier/prettier/pull/1888 )
2017-06-06 18:05:22 -07:00
Sashko Stubailo
88f962beee
Add support for GraphQL directies ( #2015 )
2017-06-06 17:42:47 -07:00
Joseph Frazier
b20437ad13
Use printStatementSequence() to print SwitchCase consequent ( #2011 )
...
I noticed the duplicated code while working on commit 0cfd772
(https://github.com/prettier/prettier/pull/2008 )
2017-06-06 14:58:20 -07:00
Joseph Frazier
0cfd772fd2
Protect SwitchCase statements from ASI ( #2008 )
...
* Add no-semi test with SequenceExpression
Adapted from https://github.com/prettier/prettier/issues/2006
* Protect SequenceExpressions from ASI
Fixes https://github.com/prettier/prettier/issues/2006
* Add test for ASI protection of SequenceExpression outside SwitchCase
See https://github.com/prettier/prettier/pull/2008#issuecomment-306614217
* Revert "Protect SequenceExpressions from ASI"
This reverts commit ca644fad8072c90a977ad8a2f29674bc72f679e8.
* Protect SwitchCase statements from ASI
See https://github.com/prettier/prettier/pull/2008#issuecomment-306614217
Fixes https://github.com/prettier/prettier/issues/2006
2017-06-06 14:28:51 -07:00
Sashko Stubailo
7c051804a8
Add support for GraphQL object values ( #2010 )
2017-06-06 14:28:15 -07:00
Sashko Stubailo
c441f87fc0
Add GraphQL fragment support ( #2005 )
2017-06-06 12:35:40 -07:00
Rodrigo Pombo
d4774edd03
Parse CSS in template literals (styled-jsx) ( #1984 )
...
* Add basic styled-jsx parsing
* Use eval("require")
* Remove template literal raw and cooked values when it contains CSS
* Set postcss parser to options and group subtree parts
* Gracefully give up TemplateLiteral formatting when it fails
2017-06-06 08:28:13 -07:00
Sashko Stubailo
6d00644c78
Add GraphQL variable definition support ( #1995 )
2017-06-06 08:26:04 -07:00
Daniel Tschinder
df7311a7f3
Add parens around all string literals at top level ( #1999 )
2017-06-06 08:24:13 -07:00
Sashko Stubailo
c80e82c7d7
Add support for list values ( #1994 )
...
Run the linter
2017-06-05 23:45:15 -07:00
Sashko Stubailo
df08dc4a56
Add support for arguments with soft line break ( #1993 )
2017-06-05 22:25:12 -07:00
Sashko Stubailo
8cb259eac7
GraphQL: Add support for printing operation names ( #1992 )
...
* Add support for printing GraphQL operation names
* Remove extra empty line at the end
2017-06-05 22:24:01 -07:00
Sashko Stubailo
76c5733b55
GraphQL: Add support for formatting fields in selection sets ( #1991 )
...
* GraphQL: Add support for formatting fields in selection sets
(Doesn't yet handle arguments or directives)
* Remove extra space
2017-06-05 22:23:03 -07:00
Carl von Buelow
19bd2a3f7c
Add "use strict" to fix SyntaxError on Node@4 ( #1988 )
2017-06-05 18:27:55 -07:00
Joseph Frazier
d9e4d8f1b8
Remove unnecessary 'else' after 'return' ( #1987 )
...
As mentioned in at the end of
https://github.com/prettier/prettier/pull/1983/files#r120222081
2017-06-05 15:12:59 -07:00
Karl O'Keeffe
73432c2ce7
Position JSX whitespace (`{" "}`) at the end of lines ( #1964 )
...
* Position JSX whitespace at the end of lines
Currently we place JSX whitespace at the beginning of lines.
* Use `isLiteral` when determining JSX whitespace
2017-06-05 21:52:54 +01:00
Jon Wong
e33d6773d6
Adding support for `graphql` ( #1982 )
...
* Initial GraphQL implementation
This is the bare minimum amount of code to make graphql work. Turns out it's pretty easy to add support for other languages :)
* Fixing support for `graphql` parsing
There was a few structural changes with the addition of CSS and Typescript that we had to take into account.
* Fixing file glob, adding `graphql` to yarn.lock
* Removing extraneous file
* Adding `graphql` parser, style changes
* Splitting out graphql printer
* Removing merge conflict
* Fixing yarn.lock
* Addressing code review, using `createError`
* Adding release config
* Using exact version
* Removing destructuring
2017-06-05 12:34:08 -07:00
Lucas Azzola
31ab3b6036
feat(css): split postcss printer into separate file ( #1969 )
2017-06-05 07:28:38 -07:00
Lucas Azzola
642ac7e230
fix(typescript): print semi in class index signatures, fixes #1960 ( #1961 )
2017-06-04 07:21:33 -07:00
Lucas Azzola
6697122e28
fix(decorators): do not inline methods with decorators with babylon, fixes #1933 ( #1934 )
2017-06-03 05:24:24 -07:00
Lucas Azzola
649cec7fdd
TypeScript: fix trailing comma in enum ( #1938 )
...
* fix(typescript): fix trailing comma in enum, fixes #1932
* fix(typescript): use --trailing-comma es5 for enums
2017-06-03 05:20:36 -07:00
Lucas Azzola
c57f2ab507
fix(typescript): no semi after export default abstract class, fixes #1926 ( #1937 )
2017-06-03 05:19:39 -07:00
Lucas Azzola
2ef169eb67
fix(typescript): print semi with inline interfaces/types, fixes #1930 ( #1936 )
2017-06-03 05:18:59 -07:00
Christopher Chedeau
dae7203be6
Fix As parenthesis for real ( #1923 )
...
Instead of doing it inside of object, we need to have them use the existing mechanism that checks if the left-most character is a paren.
2017-06-02 16:08:45 -07:00
Christopher Chedeau
3264da9cab
Fix leading comment ( #1920 )
...
It turns out that leading comment is attached to the CallExpression which is the last one and not the first one if they fit in a single line, so we want to not check that one.
Fixes #1892
2017-06-02 15:50:43 -07:00
Christopher Chedeau
323d64fb84
Port intersection inlining logic to TypeScript ( #1919 )
...
Fixes #1880
2017-06-02 15:40:33 -07:00
Christopher Chedeau
0d239477cb
Use semi-colon for object separator ( #1918 )
...
Looks like the convention for typescript separator is `;` whereas for flow it's `,`. Let's migrate to that.
Fixes #1896
Fixes #1879
Fixes #1874
2017-06-02 15:32:51 -07:00
Christopher Chedeau
74f0d3979b
Add parenthesis for yield and await inside of `as` ( #1915 )
...
Fixes #1913
2017-06-02 15:10:02 -07:00
Christopher Chedeau
2f9ea794db
Always expand enums ( #1914 )
...
We do the same for classes, and it's usually written that way even if it fits in one line, even in the TS docs: https://www.typescriptlang.org/docs/handbook/enums.html
Fixes #1873
2017-06-02 15:09:55 -07:00
Christopher Chedeau
a255977009
Do not make variable multilines inside of for loop ( #1912 )
...
Fixes #1876
2017-06-02 15:00:16 -07:00
Christopher Chedeau
e58dd2bf0b
Add semi for ts function declarations without body ( #1911 )
...
Fixes #1891
2017-06-02 14:49:37 -07:00
Christopher Chedeau
6933d16125
Inline decorators with no arguments ( #1910 )
...
Fixes #1898
2017-06-02 14:40:39 -07:00
Christopher Chedeau
0e35d3758a
Fix <this.x /> ( #1886 )
...
Would be nice to get it properly handled in https://github.com/eslint/typescript-eslint-parser/issues/307
Fixes #1877
2017-06-02 14:27:27 -07:00
Christopher Chedeau
74f7f96fe4
Move accessibility before static ( #1908 )
...
I looked through all the places where we display accessibility and all of them now have a consistent way of printing all those modifiers.
Fixes #1877
2017-06-02 14:27:19 -07:00
Simen Bekkhus
584bf4ecbf
Upgrade babel code frame ( #1902 )
...
* Upgrade babel code frame
* Get better marker for parsing errors in postcss-values-parser
2017-06-02 14:11:05 -07:00
Joseph Frazier
3070884b10
Add shebang comment nodes to Flow/TypeScript ASTs ( #1905 )
...
* Add shebang comment nodes to Flow/TypeScript ASTs
Now we handle actually printing the shebang in `printComment`, rather
than lopping it off beforehand and reattaching it afterward, as
suggested in https://github.com/prettier/prettier/pull/1718#issuecomment-303876792
* Dedupe AST shebang-insertion code into helper function
2017-06-02 13:38:15 -07:00
Joseph Frazier
26e829b987
Upgrade prettier to v1.4.0, fix lint issues ( #1888 )
2017-06-02 11:48:43 -07:00
Kevin Gibbons
4915e0228e
Require semicolons before class props named 'in' or 'instanceof' ( #1878 )
2017-06-02 10:52:11 -07:00
Lucas Azzola
83c5253429
fix(typescript): look at source to determine export = statement ( #1868 )
2017-06-02 08:32:40 -07:00
Christopher Chedeau
faf2ac5f9e
Hack to get export default work ( #1866 )
...
Fixes #1854
2017-06-02 08:12:03 -07:00
Lucas Azzola
38eec13a03
TypeScript: temp fix for missing readonly keyword ( #1865 )
...
* fix(typescript): temp fix for missing readonly keyword, fixes #1845
* fix(typescript): use non-master commit from tsep
2017-06-02 08:09:24 -07:00
Lucas Azzola
8511e798dc
feat(decorators): inline more types of decorators ( #1864 )
2017-06-02 07:38:44 -07:00
Lucas Azzola
9ed94c77ab
fix(typescript): do not print trailing comma in TS tuple type, fixes #1858 ( #1863 )
2017-06-02 07:16:41 -07:00
Lucas Azzola
ede078c0d3
fix(typescript): print static before accessibility, fixes #1855 ( #1862 )
2017-06-02 07:16:11 -07:00
Christopher Chedeau
bc4075ac65
Add parenthesis around object inside of as ( #1852 )
...
Fixes #1851
2017-06-01 21:10:05 -07:00
Christopher Chedeau
3f8c4d6974
Fix yet another form of class with the same ast ( #1849 )
...
Fixes #1847
2017-06-01 19:02:15 -07:00
Joseph Frazier
4bfeb9064d
Add `cursorOffset` option for cursor translation ( #1637 )
...
* Add `formatWithCursor` API with `cursorOffset` option
This addresses https://github.com/prettier/prettier/issues/93 by
adding a new option, `cursorOffset`, that tells prettier to determine
the location of the cursor after the code has been formatted. This is
accessible through the API via a new function, `formatWithCursor`, which
returns a `{formatted: string, cursorOffset: ?number}`.
Here's a usage example:
```js
require("prettier").formatWithCursor(" 1", { cursorOffset: 2 });
// -> { formatted: '1;\n', cursorOffset: 1 }
```
* Add `--cursor-offset` CLI option
It will print out the offset instead of the formatted output. This
makes it easier to test. For example:
echo ' 1' | prettier --stdin --cursor-offset 2
# prints 1
* Add basic test of cursor translation
* Document `cursorOffset` option and `formatWithCursor()`
* Print translated cursor offset to stderr when --cursor-offset is given
This lets us continue to print the formatted code, while also
communicating the updated cursor position.
See https://github.com/prettier/prettier/pull/1637#discussion_r119735496
* doc-print cursor placeholder in comments.printComments()
See https://github.com/prettier/prettier/pull/1637#discussion_r119735149
* Compare array index to -1 instead of >= 0 to determine element presence
See https://github.com/prettier/prettier/pull/1637#discussion_r119736623
* Return {formatted, cursor} from printDocToString() instead of mutating options
See https://github.com/prettier/prettier/pull/1637#discussion_r119737354
2017-06-01 15:52:29 -07:00
Mitermayer Reis
ba86d8ea65
Fix error messages ( #1839 )
...
* Adding --stdin-filepath option in order to enable filetype inference from
stdin
* Making sure error messages are 1 indexed based instead of zero indexed
2017-05-31 17:50:55 -07:00
Mitermayer Reis
0d9b04bc94
Adding --stdin-filepath option in order to enable filetype inference … ( #1835 )
...
* Adding --stdin-filepath option in order to enable filetype inference from stdin to allow chosing css parser
* Adding readme information on the filepath option
* Also including support for typescript parser inference.
* Running linter
2017-05-31 12:26:22 -07:00
Karl O'Keeffe
f4ef1c2c97
JSX whitespace on the same line as text ( #1829 )
...
This tweaks our JSX formatting to only put a JSX whitespace `{" "}` on a line by itself when it comes before or after a multiline element.
When preceding a text or single line element it appear on the same line as that element.
2017-05-31 10:16:50 -07:00
Karl O'Keeffe
a680cd8534
Fix unstable JSX output by ensuring we follow `fill` rules. ( #1827 )
...
* Fix unstable JSX output by ensuring we follow `fill` rules.
This changes makes us more strict about ensuring our JSX children follow the alternating content/whitespace format expected by the `fill` primitive.
Previously there were some cases where could get out of sync which would throw out the formatting.
* Simplify whitespace wrangling
# Conflicts:
# src/printer.js
2017-05-31 09:42:36 -07:00
Christopher Chedeau
fa708d102a
Remove trailing commas for generics in TypeScript ( #1832 )
...
Fixes #1820
2017-05-31 09:22:00 -07:00
Christopher Chedeau
3097f9b2fe
Do not indent nested ternaries ( #1822 )
...
This avoids making it seems like it is indented by 4 characters instead of two. The downside is that if the condition is multi-line it's not going to be properly aligned, but I feel it's a better trade-offs. If you are doing nested ternaries, you usually have small conditions.
2017-05-30 10:08:06 -07:00
Christopher Chedeau
73ff0ef9ea
Add group around implements ( #1821 )
...
This shouldn't break if it fits in one line.
Fixes #1818
2017-05-30 09:45:07 -07:00
Joseph Frazier
ea27846d1f
Don't force line break in empty loop bodies ( #1815 )
...
This makes them consistent with empty function bodies.
Fixes https://github.com/prettier/prettier/issues/1356
2017-05-30 09:39:10 -07:00
Christopher Chedeau
eeb8616e3c
Add parenthesis for single arg types with generics ( #1814 )
...
Fixes #1813
2017-05-29 16:59:45 -07:00
Christopher Chedeau
2ab3d6d6ac
Workaround bug with comment ending in */ ( #1810 )
...
Reported in the original repo: https://github.com/postcss/postcss-scss/issues/64
2017-05-29 13:05:20 -07:00
Christopher Chedeau
59e4e83355
Break before combinators and indent ( #1809 )
2017-05-29 12:55:14 -07:00
Christopher Chedeau
f34492d7e5
Strip leading space for first combinators ( #1807 )
2017-05-29 12:49:25 -07:00
Christopher Chedeau
27df0f81f5
Preserve space before parens ( #1806 )
2017-05-29 12:41:04 -07:00
Christopher Chedeau
dc287d32a5
Remove extra newline from empty @media ( #1802 )
2017-05-29 08:52:24 -07:00
Christopher Chedeau
c4e32f4c78
Remove double spaces in @font-face ( #1801 )
2017-05-29 08:49:51 -07:00
Christopher Chedeau
873123223f
Fix empty urls ( #1800 )
2017-05-29 08:43:19 -07:00