Files
compiler-explorer/biome.json
Matt Godbolt 53c7dd328b Configure Biome import organiser with grouped imports (#8431)
Enable Biome's `organizeImports` with groups matching the original
ESLint `import/order` configuration:

1. **Node builtins** (`node:fs`, `path`, etc.)
2. *(blank line)*
3. **Third-party packages** (`express`, `@sentry/node`, etc.)
4. *(blank line)*
5. **Local/relative imports** (`../foo.js`, `./bar.js`, aliases)

This resolves the inconsistency where Biome wasn't enforcing import
grouping, meaning new files would lose the blank-line separation that
the old ESLint config enforced.

### Impact
- **354 files** updated out of 738 checked (~48%)
- **+188 / -240 lines** (net -52) — almost entirely single blank line
additions/removals between import groups
- No import reordering; purely group separator consistency

Fixes #7373

🤖 Generated by LLM (Claude, via OpenClaw)
2026-02-01 20:50:46 -06:00

108 lines
2.3 KiB
JSON

{
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
"files": {
"includes": [
"cypress/**",
"docs/**",
"lib/**",
"public/**",
"shared/**",
"static/**",
"test/**",
"types/**",
"views/**",
"!static/policies/*.html",
"!lib/storage/data/**/*",
"!lib/asm-docs/generated/**/*",
"!test/**/*.json"
]
},
"overrides": [
{
"includes": ["static/**", "shared/**"],
"linter": {
"rules": {
"suspicious": {
"noPrototypeBuiltins": "off"
}
}
}
}
],
"linter": {
"rules": {
"suspicious": {
"noExplicitAny": "off",
"noImplicitAnyLet": "off",
"noAssignInExpressions": "off",
"noControlCharactersInRegex": "off",
"noFallthroughSwitchClause": "off",
"noDoubleEquals": "off"
},
"style": {
"noParameterAssign": "off",
"noNonNullAssertion": "off",
"useImportType": "off",
"useTemplate": "off"
},
"correctness": {
"noUnsafeOptionalChaining": "off",
"noUnusedImports": "error",
"noUnusedFunctionParameters": "off"
},
"performance": {
"noAccumulatingSpread": "off",
"noDelete": "off"
},
"complexity": {
"noStaticOnlyClass": "off",
"noForEach": "off",
"useLiteralKeys": "off",
"noThisInStatic": "off"
}
}
},
"formatter": {
"enabled": true,
"attributePosition": "auto",
"indentStyle": "space",
"indentWidth": 4,
"lineWidth": 120,
"lineEnding": "lf"
},
"javascript": {
"formatter": {
"arrowParentheses": "asNeeded",
"bracketSameLine": false,
"bracketSpacing": false,
"quoteProperties": "asNeeded",
"semicolons": "always",
"trailingCommas": "all",
"quoteStyle": "single"
}
},
"assist": {
"actions": {
"source": {
"organizeImports": {
"level": "on",
"options": {
"groups": [
":NODE:",
":BLANK_LINE:",
[":PACKAGE:", ":PACKAGE_WITH_PROTOCOL:", ":URL:"],
":BLANK_LINE:",
[":ALIAS:", ":PATH:"]
]
}
}
}
}
},
"json": {
"formatter": {
"indentWidth": 2
}
}
}