Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
142e0e7
lint, format, check: 14 files
Jarred-Sumner Oct 12, 2026
049de70
lint, format, check: 5 files
Jarred-Sumner Oct 12, 2026
e4d628b
lint, format, check: 3 files
Jarred-Sumner Oct 12, 2026
97481d6
lint, format, check: 2 files
Jarred-Sumner Oct 12, 2026
620e8e5
Format
Jarred-Sumner Oct 12, 2026
1cc4d8d
Format
Jarred-Sumner Oct 12, 2026
a6a15fc
lint, format: 1178 files
Jarred-Sumner Oct 12, 2026
1cf0d61
lint, format: 1135 files
Jarred-Sumner Oct 12, 2026
9247261
lint, format: 66 files
Jarred-Sumner Oct 12, 2026
eafd737
lint, format: 153 files
Jarred-Sumner Oct 12, 2026
20a6964
lint, format: 819 files
Jarred-Sumner Oct 12, 2026
19a467c
lint, format: 307 files
Jarred-Sumner Oct 12, 2026
5fee1a2
lint, format: 20 files
Jarred-Sumner Oct 12, 2026
9089ccf
lint, format: 1015 files
Jarred-Sumner Oct 12, 2026
679e44a
lint, format: 112 files
Jarred-Sumner Oct 12, 2026
dbf7a8c
lint, format: 45 files
Jarred-Sumner Oct 12, 2026
8489792
[autofix.ci] apply automated fixes
autofix-ci[bot] Oct 12, 2026
a039c23
lint, format: 28 files
Jarred-Sumner Oct 12, 2026
04bb1c2
lint, format: 18 files
Jarred-Sumner Oct 12, 2026
bb10cd2
lint, format: 44 files
Jarred-Sumner Oct 12, 2026
6bf9eaa
lint, format: 21 files
Jarred-Sumner Oct 12, 2026
cd16959
lint, format: 30 files
Jarred-Sumner Oct 12, 2026
fd4a57c
lint, format: 22 files
Jarred-Sumner Oct 12, 2026
dfda4be
lint, format: 121 files
Jarred-Sumner Oct 12, 2026
462141e
lint, format: 7 files
Jarred-Sumner Oct 12, 2026
65969cd
lint, format: 19 files
Jarred-Sumner Oct 12, 2026
8fdeb0c
lint, format: 8 files
Jarred-Sumner Oct 12, 2026
0f39da7
lint, format: 9 files
Jarred-Sumner Oct 12, 2026
a404a9b
lint, format: 40 files
Jarred-Sumner Oct 12, 2026
159232a
lint, format: 213 files
Jarred-Sumner Oct 12, 2026
49bda02
lint, format: 83 files
Jarred-Sumner Oct 12, 2026
7a11467
lint, format: 4 files
Jarred-Sumner Oct 12, 2026
b498ced
Merge branch 'main' into claude/bun-lint
Jarred-Sumner Oct 12, 2026
94910f7
lint, format: 4 files
Jarred-Sumner Oct 12, 2026
6948712
lint, format: 33 files
Jarred-Sumner Oct 12, 2026
7a33ce8
lint, format: 26 files
Jarred-Sumner Oct 12, 2026
14b163c
lint, format: 17 files
Jarred-Sumner Oct 12, 2026
69e09a7
lint, format: 72 files
Jarred-Sumner Oct 12, 2026
af91ce0
lint, format: 23 files
Jarred-Sumner Oct 12, 2026
78c93d5
lint, format: 27 files
Jarred-Sumner Oct 12, 2026
025dda8
lint, format: 36 files
Jarred-Sumner Oct 12, 2026
25858b2
lint, format: 72 files
Jarred-Sumner Oct 13, 2026
f6f3c6b
lint, format: 28 files
Jarred-Sumner Oct 13, 2026
2abec93
lint, format: 149 files
Jarred-Sumner Oct 13, 2026
d07d3ee
lint, format: 1 files
Jarred-Sumner Oct 13, 2026
31ff214
lint, format: 117 files
Jarred-Sumner Oct 13, 2026
77815af
lint, format: 204 files
Jarred-Sumner Oct 13, 2026
acd5ac5
lint, format: 141 files
Jarred-Sumner Oct 13, 2026
3f0e8d0
lint, format: 14 files
Jarred-Sumner Oct 13, 2026
dea575e
lint, format: 34 files
Jarred-Sumner Oct 13, 2026
8f21994
lint, format: 70 files
Jarred-Sumner Oct 13, 2026
9d29b6a
lint, format: 27 files
Jarred-Sumner Oct 13, 2026
dcbdac3
lint, format: 18 files
Jarred-Sumner Oct 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@ test/cli/format/own/cases/** -text
# Compared line by line with what a runner prints, which ends a line with \n on every system.
test/cli/format/*/expected.txt text eol=lf
test/cli/lint/conformance/expected*.txt text eol=lf
# Embedded in the executable, which splits them at \n.
src/lint/linter/config/presets.txt text eol=lf
src/lint/linter/deprecated.txt text eol=lf
src/lint/linter/schema/schemas.txt text eol=lf
src/lint/oxlint_help.txt text eol=lf
src/sema/messages.txt text eol=lf

*.lockb binary diff=lockb

Expand Down
2 changes: 2 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ scripts/build/xmac.mjs

# the output codeblocks need to stay minified
docs/bundler/minifier.mdx
# Prettier would reformat the code examples, and test/cli/lint/rule-docs.test.ts runs them exactly as written
docs/lint/rules

# `declare module "*" with { type: "text" }` is TypeScript 7.1 syntax that
# prettier's parser does not accept yet
Expand Down
8 changes: 8 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,14 @@
"options": {
"printWidth": 100
}
},
{
"files": ["src/runtime/cli/init/**"],
"options": {
"arrowParens": "always",
"printWidth": 80,
"quoteProps": "as-needed"
}
}
]
}
5 changes: 5 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -489,3 +489,14 @@ bun_transpiler = { path = "src/transpiler" }

[profile.release.package.bun_react_compiler]
opt-level = "s"

# The runners behind `--run-typescript-tests`, `--run-prettier-tests` and `--run-eslint-tests`. Only canary and debug
# builds have them, and the time goes into what they test, which keeps its own level.
[profile.release.package.bun_sema_baselines]
opt-level = "z"

[profile.release.package.bun_format_conformance]
opt-level = "z"

[profile.release.package.bun_lint_conformance]
opt-level = "z"
49 changes: 27 additions & 22 deletions LICENSE.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,28 +47,33 @@ Bun statically links these libraries:
| A fork of [`uWebsockets`](https://github.com/jarred-sumner/uwebsockets) | Apache 2.0 licensed |
| Parts of [Tigerbeetle's IO code](https://github.com/tigerbeetle/tigerbeetle/blob/532c8b70b9142c17e07737ab6d3da68d7500cbca/src/io/windows.zig#L1) | Apache 2.0 licensed |
| `__cxa_thread_atexit` fallback from [LLVM libc++abi](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/libcxxabi/src/cxa_thread_atexit.cpp) | Apache 2.0 with LLVM exception |
| The type checker behind `bun check` is a port of [`typescript-go`](https://github.com/microsoft/typescript-go), and uses TypeScript's diagnostic messages and `lib.*.d.ts` files | Apache 2.0 |
| The linter behind `bun lint` is a port of [ESLint](https://github.com/eslint/eslint): its rules, its code path analysis, its configuration and its messages | MIT |
| The TypeScript rules of `bun lint`, their scope analysis and their helpers for types are a port of [`typescript-eslint`](https://github.com/typescript-eslint/typescript-eslint) | MIT |
| The scope analysis of `bun lint` follows [`eslint-scope`](https://github.com/eslint/js/tree/main/packages/eslint-scope) | BSD 2-Clause |
| The selectors of `bun lint` are a port of [`esquery`](https://github.com/estools/esquery) | BSD 3-Clause |
| `bun lint` has ports of [`@eslint-community/regexpp`](https://github.com/eslint-community/regexpp), [`@eslint-community/eslint-utils`](https://github.com/eslint-community/eslint-utils), [`ts-api-utils`](https://github.com/JoshuaKGoldberg/ts-api-utils), [`levn`](https://github.com/gkz/levn) and [`natural-compare`](https://github.com/litejs/natural-compare-lite), reports invalid options the way [`ajv`](https://github.com/ajv-validator/ajv) does, and uses the lists of [`globals`](https://github.com/sindresorhus/globals) | MIT |
| The modes of `src/glob` for the patterns of other tools follow [`minimatch`](https://github.com/isaacs/minimatch) | Blue Oak 1.0.0 |
| and are ports of [`brace-expansion`](https://github.com/juliangruber/brace-expansion), [`picomatch`](https://github.com/micromatch/picomatch), [`ignore`](https://github.com/kaelzhang/node-ignore), [`is-glob`](https://github.com/micromatch/is-glob) and [`is-extglob`](https://github.com/jonschlinkert/is-extglob), and of the way [`globset` and `ignore`](https://github.com/BurntSushi/ripgrep) read a line of an ignore file | MIT |
| and of [`glob-parent`](https://github.com/gulpjs/glob-parent) | ISC |
| The rules of plugins that are built into `bun lint` are ports from [`eslint-plugin-react-hooks`](https://github.com/facebook/react/tree/main/packages/eslint-plugin-react-hooks), [`eslint-plugin-import`](https://github.com/import-js/eslint-plugin-import), [`eslint-plugin-n`](https://github.com/eslint-community/eslint-plugin-n), [`eslint-plugin-es-x`](https://github.com/eslint-community/eslint-plugin-es-x), [`eslint-plugin-react`](https://github.com/jsx-eslint/eslint-plugin-react) with [`jsx-ast-utils`](https://github.com/jsx-eslint/jsx-ast-utils), [`eslint-plugin-prettier`](https://github.com/prettier/eslint-plugin-prettier) with [`prettier-linter-helpers`](https://github.com/prettier/prettier-linter-helpers), and [`oxlint`](https://github.com/oxc-project/oxc) | MIT |
| How the rule `prettier/prettier` cuts the difference between two texts into reports follows [`fast-diff`](https://github.com/jhchen/fast-diff) | Apache 2.0 |
| What the rules of `eslint-plugin-react` ask of ESLint's older API (`isSpaceBetweenTokens`, `getJSDocComment`) follows [`@eslint/compat`](https://github.com/eslint/rewrite/tree/main/packages/compat) | Apache 2.0 |
| The rules of `unicorn`, `oxc`, `react`, `react-perf`, `jsx-a11y`, `nextjs`, `import`, `promise`, `node`, `jest`, `vitest`, `vue` and `jsdoc` that `bun lint` has with a configuration of oxlint are ports of the rules of [`oxlint`](https://github.com/oxc-project/oxc), which are ports from [`eslint-plugin-unicorn`](https://github.com/sindresorhus/eslint-plugin-unicorn), [`eslint-plugin-react`](https://github.com/jsx-eslint/eslint-plugin-react), [`eslint-plugin-react-perf`](https://github.com/cvazac/eslint-plugin-react-perf), [`eslint-plugin-jsx-a11y`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y), [`@next/eslint-plugin-next`](https://github.com/vercel/next.js/tree/canary/packages/eslint-plugin-next), [`eslint-plugin-import`](https://github.com/import-js/eslint-plugin-import), [`eslint-plugin-n`](https://github.com/eslint-community/eslint-plugin-n), [`eslint-plugin-jest`](https://github.com/jest-community/eslint-plugin-jest), [`@vitest/eslint-plugin`](https://github.com/vitest-dev/eslint-plugin-vitest) and [`eslint-plugin-vue`](https://github.com/vuejs/eslint-plugin-vue) | MIT |
| and from [`eslint-plugin-promise`](https://github.com/eslint-community/eslint-plugin-promise) | ISC |
| and from [`eslint-plugin-jsdoc`](https://github.com/gajus/eslint-plugin-jsdoc) | BSD 3-Clause |
| How `bun lint` and `bun format` take a JSDoc comment apart follows [`oxc_jsdoc`](https://github.com/oxc-project/oxc/tree/main/crates/oxc_jsdoc) | MIT |
| The formatter behind `bun format` implements [Prettier](https://github.com/prettier/prettier). Its rules for JavaScript and TypeScript are a port of [`oxc_formatter`](https://github.com/oxc-project/oxc/tree/main/crates/oxc_formatter) | MIT |
| The intermediate representation and the printer of `bun format` come from [Biome](https://github.com/biomejs/biome) | MIT or Apache 2.0 |
| The CSS, Less and SCSS parsers of `bun format` follow [`postcss`](https://github.com/postcss/postcss), [`postcss-less`](https://github.com/shellscape/postcss-less), [`postcss-scss`](https://github.com/postcss/postcss-scss), [`postcss-selector-parser`](https://github.com/postcss/postcss-selector-parser), [`postcss-media-query-parser`](https://github.com/dryoma/postcss-media-query-parser) and [`postcss-value-parser`](https://github.com/TrySound/postcss-value-parser) | MIT |
| The import sorting of `bun format` is a port of [`@trivago/prettier-plugin-sort-imports`](https://github.com/trivago/prettier-plugin-sort-imports) and [`@ianvs/prettier-plugin-sort-imports`](https://github.com/ianvs/prettier-plugin-sort-imports) | Apache 2.0 |
| `bun format` also has ports of [`prettier-plugin-organize-imports`](https://github.com/simonhaenisch/prettier-plugin-organize-imports), parts of [`@babel/generator`](https://github.com/babel/babel), [`sort-package-json`](https://crates.io/crates/sort-package-json), [`jest-docblock`](https://github.com/jestjs/jest/tree/main/packages/jest-docblock), and tables that follow [`emoji-regex`](https://github.com/mathiasbynens/emoji-regex) and [`get-east-asian-width`](https://github.com/sindresorhus/get-east-asian-width) | MIT |
| The Svelte printer of `bun format` is a port of [`prettier-plugin-svelte`](https://github.com/sveltejs/prettier-plugin-svelte) | MIT |
| The type checker behind `bun check` and the parser it shares with `bun lint` and `bun fmt` are ports of [`typescript-go`](https://github.com/microsoft/typescript-go). They use TypeScript's diagnostic messages and `lib.*.d.ts` files | Apache 2.0 |
| `bun lint` ports large parts of [ESLint](https://github.com/eslint/eslint): code path analysis, rule helpers such as `ast-utils.js`, config and comment handling, and many rules. The ESLint rules in `bun lint` use ESLint's rule names, options, option schemas, messages and descriptions. The `eslint:recommended` and `eslint:all` presets are ESLint's. Parts of `main.js` in `src/lint/js_plugin/worker` are copied from ESLint, and parts of `LintReport.cpp`, `LintSourceCode.cpp` and `LintTokens.cpp` in `src/jsc/bindings` are ported from it | MIT |
| `bun lint` does the same with the rules of [`typescript-eslint`](https://github.com/typescript-eslint/typescript-eslint). It also ports `type-utils` and the plugin's `util` helpers, and uses its presets, the error messages of `typescript-estree` and the `lib` globals of `scope-manager` | MIT |
| Selectors in `bun lint` are a port of [`esquery`](https://github.com/estools/esquery) | BSD 3-Clause |
| `bun lint` has ports of [`@eslint-community/regexpp`](https://github.com/eslint-community/regexpp), [`@eslint-community/eslint-utils`](https://github.com/eslint-community/eslint-utils), [`levn`](https://github.com/gkz/levn) and [`natural-compare`](https://github.com/litejs/natural-compare-lite), and of parts of [`ts-api-utils`](https://github.com/JoshuaKGoldberg/ts-api-utils) and [`@eslint/eslintrc`](https://github.com/eslint/eslintrc) | MIT |
| `bun lint` uses the error messages of [`ajv`](https://github.com/ajv-validator/ajv), [`acorn`](https://github.com/acornjs/acorn) and [`optionator`](https://github.com/gkz/optionator), and the lists in [`globals`](https://github.com/sindresorhus/globals) and [`is-core-module`](https://github.com/inspect-js/is-core-module) | MIT |
| `bun lint` uses the error messages of [`espree`](https://github.com/eslint/js/tree/main/packages/espree) | BSD 2-Clause |
| `bun lint` uses the `JSON.parse` error messages of [V8](https://github.com/v8/v8) | BSD 3-Clause |
| `bun lint` has ports of parts of [`@eslint/plugin-kit`, `@eslint/config-array`, `@eslint/config-helpers` and `@eslint/compat`](https://github.com/eslint/rewrite) | Apache 2.0 |
| `bun lint` and `bun fmt` have a port of the pattern-to-regular-expression table of [`ignore`](https://github.com/kaelzhang/node-ignore) | MIT |
| `bun lint` and `bun fmt` have ports of [`is-glob`](https://github.com/micromatch/is-glob) and [`is-extglob`](https://github.com/jonschlinkert/is-extglob) | MIT |
| `bun lint` and `bun fmt` have a port of [`glob-parent`](https://github.com/gulpjs/glob-parent) | ISC |
| The `react-hooks`, `import`, `n`, `react` and `prettier` rules in `bun lint` are ports of the rules in [`eslint-plugin-react-hooks`](https://github.com/facebook/react/tree/main/packages/eslint-plugin-react-hooks), [`eslint-plugin-import`](https://github.com/import-js/eslint-plugin-import), [`eslint-plugin-n`](https://github.com/eslint-community/eslint-plugin-n), [`eslint-plugin-es-x`](https://github.com/eslint-community/eslint-plugin-es-x), [`eslint-plugin-react`](https://github.com/jsx-eslint/eslint-plugin-react) and [`eslint-plugin-prettier`](https://github.com/prettier/eslint-plugin-prettier), with the same rule names, options and messages. They include the Node.js version tables of `eslint-plugin-n` and a few functions from [`jsx-ast-utils`](https://github.com/jsx-eslint/jsx-ast-utils) and [`prettier-linter-helpers`](https://github.com/prettier/prettier-linter-helpers) | MIT |
| The text diff used by `bun test` and the `prettier/prettier` rule has parts of [`diff-match-patch`](https://github.com/google/diff-match-patch) and of [`fast-diff`](https://github.com/jhchen/fast-diff), which is derived from it | Apache 2.0 |
| The `unicorn`, `oxc`, `react-perf`, `jsx-a11y`, `nextjs`, `promise`, `node`, `jest` and `vitest` rules in `bun lint` are ports of the rules in [`oxlint`](https://github.com/oxc-project/oxc), with its messages and help text. With an oxlint config, the other rules use the messages of oxlint and [`tsgolint`](https://github.com/oxc-project/tsgolint) too. `bun lint` also ports parts of `oxc_jsdoc` and `oxc_react_compiler` | MIT |
| oxlint ported those rules from [`eslint-plugin-unicorn`](https://github.com/sindresorhus/eslint-plugin-unicorn), [`eslint-plugin-react-perf`](https://github.com/cvazac/eslint-plugin-react-perf), [`eslint-plugin-jsx-a11y`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y), [`@next/eslint-plugin-next`](https://github.com/vercel/next.js/tree/canary/packages/eslint-plugin-next), [`eslint-plugin-n`](https://github.com/eslint-community/eslint-plugin-n), [`eslint-plugin-jest`](https://github.com/jest-community/eslint-plugin-jest) and [`@vitest/eslint-plugin`](https://github.com/vitest-dev/eslint-plugin-vitest). Their rule names, options and some of their messages are in `bun lint` | MIT |
| oxlint ported its `promise` rules from [`eslint-plugin-promise`](https://github.com/eslint-community/eslint-plugin-promise) | ISC |
| The ARIA tables of the `jsx-a11y` rules come from [`aria-query`](https://github.com/A11yance/aria-query) by way of oxlint | Apache 2.0 |
| `bun fmt` is a port of [Prettier](https://github.com/prettier/prettier): its printers for CSS, SCSS, Less, HTML, Vue, Angular, Markdown, YAML, GraphQL and Handlebars, its document printer, its handling of options, pragmas, ranges, cursor offsets and embedded code, and the HTML tables it is built with | MIT |
| The JavaScript and TypeScript printer of `bun fmt`, its JSDoc formatting and its oxfmt-style import sorting are a port of [`oxc_formatter`](https://github.com/oxc-project/oxc/tree/main/crates/oxc_formatter), which is a port of the [Biome](https://github.com/biomejs/biome) formatter. The intermediate representation and its printer come from Biome by way of `oxc_formatter_core` | MIT |
| `bun fmt` has ports of the parsers in [`postcss`](https://github.com/postcss/postcss), [`postcss-scss`](https://npmjs.com/package/postcss-scss), [`postcss-less`](https://npmjs.com/package/postcss-less), [`postcss-selector-parser`](https://github.com/postcss/postcss-selector-parser), [`postcss-media-query-parser`](https://github.com/dryoma/postcss-media-query-parser), [`postcss-values-parser`](https://npmjs.com/package/postcss-values-parser), [`angular-html-parser`](https://npmjs.com/package/angular-html-parser), [`graphql-js`](https://github.com/graphql/graphql-js), [`@glimmer/syntax`](https://github.com/glimmerjs/glimmer-vm), [`simple-html-tokenizer`](https://github.com/tildeio/simple-html-tokenizer) and [`@angular/compiler`](https://github.com/angular/angular), and of parts of [`yaml-unist-parser`](https://npmjs.com/package/yaml-unist-parser) and [`angular-estree-parser`](https://npmjs.com/package/angular-estree-parser) | MIT |
| `bun fmt` also has a port of [`@handlebars/parser`](https://github.com/handlebars-lang/handlebars-parser) and of one file of [`yaml`](https://npmjs.com/package/yaml) | ISC |
| Import sorting in `bun fmt` has ports of [`@trivago/prettier-plugin-sort-imports`](https://github.com/trivago/prettier-plugin-sort-imports) and [`@ianvs/prettier-plugin-sort-imports`](https://github.com/ianvs/prettier-plugin-sort-imports), and of `organizeImports.ts` in [TypeScript](https://github.com/microsoft/TypeScript) | Apache 2.0 |
| `bun fmt` has ports of [`jest-docblock`](https://github.com/jestjs/jest/tree/main/packages/jest-docblock) and the crates [`sort-package-json`](https://crates.io/crates/sort-package-json) and [`oxc-toml`](https://crates.io/crates/oxc-toml) (a fork of taplo), and of parts of [`@babel/generator`](https://github.com/babel/babel), [`micromark`](https://github.com/micromark/micromark) and [`editorconfig-without-wasm`](https://github.com/fisker/editorconfig-core-js-without-wasm). Its character width tables are generated from [`emoji-regex`](https://github.com/mathiasbynens/emoji-regex), [`get-east-asian-width`](https://github.com/sindresorhus/get-east-asian-width) and [`narrow-emojis`](https://npmjs.com/package/narrow-emojis) | MIT |
| Tailwind class sorting in `bun fmt` is a port of parts of [`prettier-plugin-tailwindcss`](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) | MIT |

The tests in `test/cli/lint/conformance` and `test/cli/format` include test cases from ESLint, typescript-eslint, the ESLint plugins above, oxc, tsgolint, Prettier and the two import sorting plugins. They are not part of the `bun` binary. Their licenses are next to them.

## Polyfills

Expand Down
Loading
Loading