diff --git a/biome.json b/biome.json new file mode 100644 index 00000000000..457e88ee31b --- /dev/null +++ b/biome.json @@ -0,0 +1,46 @@ +{ + "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", + "vcs": { + "enabled": true, + "clientKind": "git", + "root": ".", + "useIgnoreFile": true + }, + "files": { + "ignoreUnknown": true, + "ignore": [ + "**/*.generated.*", + "**/_api-extractor-temp/**", + "**/test/snapshots/content/**", + "**/localOdspSnapshots/**", + "**/biome.jsonc" + ], + "maxSize": 2097152 + }, + "organizeImports": { + "enabled": true + }, + "linter": { + "enabled": false, + "rules": { + "recommended": true + } + }, + "formatter": { + "enabled": false + }, + "overrides": [ + { + "include": ["**/.vscode/**", "**/tsconfig*.json", "**/api-extractor*.json"], + "json": { + "parser": { + "allowComments": true, + "allowTrailingCommas": true + }, + "formatter": { + "trailingCommas": "all" + } + } + } + ] +} diff --git a/fluidBuild.config.cjs b/fluidBuild.config.cjs index c37e0454392..4de13ad54e7 100644 --- a/fluidBuild.config.cjs +++ b/fluidBuild.config.cjs @@ -107,7 +107,7 @@ module.exports = { script: false, }, "format": { - dependsOn: ["format:prettier", "format:biome"], + dependsOn: ["prettier:fix", "format:prettier", "format:biome"], script: false, }, "check:biome": [], @@ -252,8 +252,8 @@ module.exports = { "tools/telemetry-generator/package-lock.json", // Workaround to allow version 2 while we move it to pnpm ], "npm-package-json-prettier": [ - // These packages use biome for formatting - "build-tools/", + // This rule is temporarily disabled for all projects while we update the repo to use different formatting + ".*", ], "npm-package-json-scripts-args": [ // server/routerlicious and server/routerlicious/packages/routerlicious use diff --git a/package.json b/package.json index c11292ed074..ab6f52fb570 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,8 @@ "clean:root": "rimraf --glob \"*.done.build.log\"", "eslint": "fluid-build --task eslint", "eslint:fix": "fluid-build --task eslint:fix", - "format": "npm run prettier:root:fix && pnpm run -r --no-sort --stream format", + "format": "fluid-build --task format", + "format:biome": "fluid-build --task format:biome", "format:changed": "npm run format:changed:main", "format:changed:main": "pretty-quick --branch main", "format:changed:next": "pretty-quick --branch next", @@ -155,6 +156,7 @@ "temp-directory": "nyc/.nyc_output" }, "devDependencies": { + "@biomejs/biome": "^1.6.1", "@changesets/cli": "^2.26.1", "@fluid-private/changelog-generator-wrapper": "file:tools/changelog-generator-wrapper", "@fluid-tools/build-cli": "^0.34.0", @@ -254,6 +256,7 @@ "checks": { "dependsOn": [ "^checks", + "check:format", "generate:packageList", "policy-check", "layer-check", @@ -267,6 +270,7 @@ "checks:fix": { "dependsOn": [ "^checks:fix", + "format", "generate:packageList", "policy-check:fix", "syncpack:deps:fix", @@ -309,6 +313,15 @@ "*" ] }, + "format": { + "dependsOn": [ + "prettier:root:fix", + "^prettier:fix", + "^format:prettier", + "^format:biome" + ], + "script": false + }, "generate:packageList": { "dependsOn": [ "generate:packageList:internal-build", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3a0ac703d51..f1911472ca3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,6 +19,7 @@ importers: .: specifiers: + '@biomejs/biome': ^1.6.1 '@changesets/cli': ^2.26.1 '@fluid-private/changelog-generator-wrapper': file:tools/changelog-generator-wrapper '@fluid-tools/build-cli': ^0.34.0 @@ -48,6 +49,7 @@ importers: ts2esm: ^1.4.0 typescript: ~5.1.6 devDependencies: + '@biomejs/biome': 1.6.1 '@changesets/cli': 2.26.2 '@fluid-private/changelog-generator-wrapper': file:tools/changelog-generator-wrapper '@fluid-tools/build-cli': 0.34.0_bpztyfltmpuv6lhsgzfwtmxhte @@ -12992,6 +12994,94 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true + /@biomejs/biome/1.6.1: + resolution: {integrity: sha512-SILQvA2S0XeaOuu1bivv6fQmMo7zMfr2xqDEN+Sz78pGbAKZnGmg0emsXjQWoBY/RVm9kPCgX+aGEpZZTYaM7w==} + engines: {node: '>=14.*'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@biomejs/cli-darwin-arm64': 1.6.1 + '@biomejs/cli-darwin-x64': 1.6.1 + '@biomejs/cli-linux-arm64': 1.6.1 + '@biomejs/cli-linux-arm64-musl': 1.6.1 + '@biomejs/cli-linux-x64': 1.6.1 + '@biomejs/cli-linux-x64-musl': 1.6.1 + '@biomejs/cli-win32-arm64': 1.6.1 + '@biomejs/cli-win32-x64': 1.6.1 + dev: true + + /@biomejs/cli-darwin-arm64/1.6.1: + resolution: {integrity: sha512-KlvY00iB9T/vFi4m/GXxEyYkYnYy6aw06uapzUIIdiMMj7I/pmZu7CsZlzWdekVD0j+SsQbxdZMsb0wPhnRSsg==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-darwin-x64/1.6.1: + resolution: {integrity: sha512-jP4E8TXaQX5e3nvRJSzB+qicZrdIDCrjR0sSb1DaDTx4JPZH5WXq/BlTqAyWi3IijM+IYMjWqAAK4kOHsSCzxw==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-arm64-musl/1.6.1: + resolution: {integrity: sha512-YdkDgFecdHJg7PJxAMaZIixVWGB6St4yH08BHagO0fEhNNiY8cAKEVo2mcXlsnEiTMpeSEAY9VxLUrVT3IVxpw==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-arm64/1.6.1: + resolution: {integrity: sha512-nxD1UyX3bWSl/RSKlib/JsOmt+652/9yieogdSC/UTLgVCZYOF7u8L/LK7kAa0Y4nA8zSPavAQTgko7mHC2ObA==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-x64-musl/1.6.1: + resolution: {integrity: sha512-aSISIDmxq04NNy7tm4x9rBk2vH0ub2VDIE4outEmdC2LBtEJoINiphlZagx/FvjbsqUfygent9QUSn0oREnAXg==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-x64/1.6.1: + resolution: {integrity: sha512-BYAzenlMF3QdngjNFw9QVBXKGNzeecqwF3pwDgUGEvU7OJpn1/lyVkJVxYPtVGRNdjQ9e6l/s8NjKuBpW/ZR4Q==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-win32-arm64/1.6.1: + resolution: {integrity: sha512-/eCHQKZ1kEawUpkSuXq4urtxMsD1P1678OPG3zNKt3ru16AqqspLdO3jzBe3k74xCPYnQ36e9Yqc97Mo0qgPtg==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-win32-x64/1.6.1: + resolution: {integrity: sha512-5TUZbzBwnDLFxLVGEPsorNi6eC2Gt+z4Oei9Qvq0M/4c4/mjZ96ABgwao/tMxf4ZBr/qyy2YdvF+gX9Rc+xC0A==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@cerner/duplicate-package-checker-webpack-plugin/2.3.0_webpack@5.89.0: resolution: {integrity: sha512-2FdUL/10qOjXzPTt/2dcjQPHDcsI+svvdU3KERGZaUvH5IwDdzE+nGLAx1+ICxhr6cqU29zvWR6GHGOFp+fbWA==} engines: {node: '>=10'}