Write a pretty printer in Rust
Win $25,000

The Prettier Bounty is a challenge to write a prettier-compliant pretty printer in Rust

Background

Participate

Have a question? Send us an email at info@algora.io and we’ll get back to you as soon as we can!

Challenge specs

The bounty is split into two distinct prize pools: Grand Prize & WASIX Prize.
Winning the Grand Prize requires passing > 95% of the prettier JavaScript tests.
Winning the WASIX Prize requires compiling the formatter to WASIX and publishing it to Wasmer via CI.
The scope for the challenge is JavaScript — only ES6 syntax is required.
TypeScript, GraphQL, CSS, or any other embedded language or unstable syntax are out of scope for the challenge.
All formatting options must be supported.
The bounty will be awarded to the first successful solution.
You can (and are encouraged to) work as a team and split the bounty with your teammates.

🎉 Winner 🎉

Average compatibility
96.10%
Compatible lines
96.62%
Pull requests
42
Contributors
9
ContributorPull requestStatusCreated
faultyserver
faultyserver
add `bracketSpacing` option matching Prettier's setting
Merged
Conaclos
Conaclos
predictable order of type parameter modifiers
Merged
Conaclos
Conaclos
Attach comments to labels
Merged
TaKO8Ki
TaKO8Ki
fix self closing compatibility with Prettier
Merged
Conaclos
Conaclos
don't print empty import assertion
Merged
Conaclos
Conaclos
add parens around instantiation expr when needed
Merged
victor-teles
victor-teles
consider JsArrayHole as simple argument
Merged
Conaclos
Conaclos
fix arrow function expression needs parens
Merged
Conaclos
Conaclos
fix uneeded parens on decoaretd class expr
Merged
Conaclos
Conaclos
fix default export expression parens
Merged
Conaclos
Conaclos
no space after asserts without predicate
Merged
faultyserver
faultyserver
(also parser) Respect, parse, and format BOM characters from source files
Merged
Conaclos
Conaclos
ignore embdedded languages and unstable syntaxes
Merged
Conaclos
Conaclos
edge case with expression statement and type cast
Merged
victor-teles
victor-teles
handle line break and comments for array holes
Merged
faultyserver
faultyserver
Handle more unary and update expressions as simple arguments
Merged
Conaclos
Conaclos
remove trailing spaces after shebang
Merged
faultyserver
faultyserver
allow `require` to split lines
Merged
Conaclos
Conaclos
ignore throw expression
Merged
Conaclos
Conaclos
format numeric properties and unquote exact floats
Merged
unvalley
unvalley
quit hard line break if default clause has no consequent
Merged
TaKO8Ki
TaKO8Ki
add a block indent to dangling comments
Merged
TaKO8Ki
TaKO8Ki
check if the third member of test call expression is appropriate
Merged
victor-teles
victor-teles
fix unnecessary indent to nested await
Merged
Gumichocopengin8
Gumichocopengin8
respect prettier `Range` options
Merged
Yash-Singh1
Yash-Singh1
fix typescript/union/inlining
Merged
victor-teles
victor-teles
assignment with await/yield do not break
Merged
faultyserver
faultyserver
Handle special first-argument expansions in call arguments
Merged
TaKO8Ki
TaKO8Ki
fix prettier differences in test declarations
Merged
suxin2017
suxin2017
arrows comment
Merged
SuperchupuDev
SuperchupuDev
add `lineEnding` option
Merged
TaKO8Ki
TaKO8Ki
add parens to tail body for a chain of arrow functions
Merged
Conaclos
Conaclos
highligh prettier reformat issue
Merged
faultyserver
faultyserver
Fix multi-expression template literal indention
Merged
Yash-Singh1
Yash-Singh1
fix typescript declarations and soft wrap index signatures
Merged
faultyserver
faultyserver
Implement `bracketSameLine` option to match Prettier
Merged
victor-teles
victor-teles
sloppy mode tests
Merged
Yash-Singh1
Yash-Singh1
`noInitializerWithDefinite` rule
Merged
suxin2017
suxin2017
arrows chain as arg
Merged
Conaclos
Conaclos
disambiguate unary expr in instanceof and in expr
Merged
Conaclos
Conaclos
handle let variable name in non-strict mode
Merged
Conaclos
Conaclos
indent nested conditional expressions
Merged