Files
lodestar/biome.jsonc
Nazar Hussain 93489491e0 feat: add type support for Bun (#8288)
**Motivation**

Add types support for Bun. So we can start using `if(Bun)` in our
codebase.

**Description**

- Add `@types/bun` package

**Steps to test or reproduce**

- Run all tests
2025-09-01 14:18:16 +02:00

219 lines
6.9 KiB
JSON

{
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
"extends": [
"@chainsafe/biomejs-config",
"@chainsafe/biomejs-config/recommended",
"@chainsafe/biomejs-config/nodejs",
"@chainsafe/biomejs-config/esm"
],
"vcs": {
"defaultBranch": "unstable"
},
"files": {
"include": ["packages/*/src/**/*.ts", "packages/*/test/**/*.ts", "configs/**/*.ts", "./vitest.config.ts"]
},
"formatter": {
"ignore": ["**/lib", "**/.nyc_output", "./packages/*/spec-tests", "**/node_modules", "./packages/*/node_modules/**"]
},
"javascript": {
"globals": ["Bun"]
},
"organizeImports": {
"enabled": true
},
"linter": {
"rules": {
"correctness": {
"useImportExtensions": {
"level": "error",
"options": {
"suggestedExtensions": {
"ts": {
"module": "js",
"component": "jsx"
}
}
}
}
},
"performance": {
// This rule should be enabled but with considerations and careful review
"noDelete": "off"
},
"style": {
// The code usage looks suspicious so it should be enabled in a separate PR
"noCommaOperator": "off",
// There are a lot of places we mutate params, should be fixed in an independent PR.
"noParameterAssign": "off",
"noRestrictedGlobals": {
"level": "error",
"options": {
"deniedGlobals": ["fetch"]
}
},
// In some cases the enums are initialized with values of other enums
"useLiteralEnumMembers": "off",
// We use `+` operator for string concatenation a lot
"useTemplate": "off",
// We use to export types and object without differentiating
"useExportType": "off",
// We use to import types and object without differentiating
"useImportType": "off",
// We prefer to auto-initialize enums
"useEnumInitializers": "off",
"useNamingConvention": {
"level": "error",
"options": {
"strictCase": false,
"requireAscii": true,
"conventions": [
// Skip __dirname and any variable starting with _, for rest check next convention
{
"selector": {
"kind": "variable"
},
"match": "(?:__dirname)|(?:_.*)|(.*)"
},
{
"selector": {
"kind": "variable"
},
"formats": ["camelCase", "PascalCase", "CONSTANT_CASE"]
},
{
"selector": {
"kind": "typeLike"
},
"formats": ["camelCase", "snake_case", "PascalCase", "CONSTANT_CASE"]
},
{
"selector": {
"kind": "objectLiteralProperty"
},
"formats": ["camelCase", "snake_case", "PascalCase", "CONSTANT_CASE"]
},
{
"selector": {
"kind": "objectLiteralMethod"
},
"formats": ["camelCase", "snake_case", "PascalCase", "CONSTANT_CASE"]
},
// Skip any property starting with _ and then check for next convention
{
"selector": {
"kind": "classProperty"
},
"match": "(?:_.*)|(.*)"
},
{
"selector": {
"kind": "classProperty"
},
"formats": ["camelCase", "snake_case", "PascalCase", "CONSTANT_CASE"]
},
{
"selector": {
"kind": "typeProperty"
},
"formats": ["camelCase", "snake_case", "PascalCase", "CONSTANT_CASE"]
},
{
"selector": {
"kind": "typeMethod"
},
"formats": ["camelCase", "snake_case", "PascalCase", "CONSTANT_CASE"]
},
{
"selector": {
"kind": "enumMember"
},
"formats": ["camelCase", "snake_case", "PascalCase", "CONSTANT_CASE"]
},
{
"selector": {
"kind": "indexParameter"
},
"formats": ["camelCase", "PascalCase"]
},
{
"selector": {
"kind": "function"
},
"formats": ["camelCase", "PascalCase"]
}
]
}
}
},
"suspicious": {
// There is a lot of empty code blocks, should be enabled and clean up separately.
"noEmptyBlockStatements": "off"
},
"nursery": {
// Need to enable this rule with exception to anonymous functions
"useExplicitType": "off"
}
}
},
"overrides": [
// Code using console output
{
"include": ["packages/cli/src/", "packages/test-utils/src", "packages/flare/src"],
"linter": {
"rules": {
"suspicious": {
"noConsole": "off"
}
}
}
},
// All test files
{
"include": ["**/test/**/*.ts", "packages/spec-test-util/src"],
"linter": {
"rules": {
"complexity": {
// During tests we often need to use private/protected attributes, which is only possible with literal keys
"useLiteralKeys": "off"
},
"suspicious": {
// During tests it's quicker to define variables with `let` without specifying types
"noImplicitAnyLet": "off",
// During testing we use `any` type for quick assignments
"noExplicitAny": "off",
// Console logging is often used in tests
"noConsole": "off"
}
}
}
},
{
"include": [
// These files are using mix cases e.g. `engine_newPayloadV4`
// It's a mix of snake_case and camelCase, which can't validated by biome
"packages/beacon-node/src/db/buckets.ts",
"packages/beacon-node/src/execution/engine/mock.ts",
"packages/beacon-node/src/execution/engine/types.ts",
"packages/beacon-node/src/eth1/provider/eth1Provider.ts",
"packages/validator/src/buckets.ts",
"packages/prover/src/types.ts",
"prover/src/utils/process.ts",
"prover/src/verified_requests/**/*.ts",
"packages/types/src/utils/**/*.ts",
// This file is using snake_case function names
"packages/beacon-node/test/spec/bls/bls.ts"
],
"linter": {
"rules": {
"style": {
"useNamingConvention": {
"level": "off",
"options": {}
}
}
}
}
}
]
}