Skip to content

Commit 8b98edd

Browse files
committed
refactor(m0): finalize Biome migration and config structure
- Move Biome rules to @evolu/biome-config - Update root biome.json to extend shared config and ignore workspaces - Fix ErasableSyntaxOnly TS error - Fix React Electron accessibility issues - Apply Biome formatting across remaining packages
1 parent 28d3819 commit 8b98edd

77 files changed

Lines changed: 19417 additions & 20683 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/relay/biome.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"extends": ["@evolu/biome-config"]}
1+
{ "extends": ["@evolu/biome-config"] }

apps/relay/package.json

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
{
2-
"name": "@evolu/relay",
3-
"version": "2.0.8",
4-
"private": true,
5-
"type": "module",
6-
"scripts": {
7-
"dev": "bun --watch src/index.ts",
8-
"build": "tsc",
9-
"start": "bun dist/index.js",
10-
"clean": "rimraf .turbo node_modules dist data/evolu-relay.db",
11-
"format": "biome check . --write",
12-
"lint": "biome check ."
13-
},
14-
"files": [
15-
"dist",
16-
"README.md"
17-
],
18-
"dependencies": {
19-
"@evolu/common": "workspace:*",
20-
"@evolu/nodejs": "workspace:*"
21-
},
22-
"devDependencies": {
23-
"@evolu/biome-config": "workspace:*",
24-
"@evolu/tsconfig": "workspace:*",
25-
"@types/node": "^24.10.3",
26-
"typescript": "^5.9.3"
27-
},
28-
"engines": {
29-
"node": ">=24.0.0"
30-
}
2+
"name": "@evolu/relay",
3+
"version": "2.0.8",
4+
"private": true,
5+
"type": "module",
6+
"scripts": {
7+
"dev": "bun --watch src/index.ts",
8+
"build": "tsc",
9+
"start": "bun dist/index.js",
10+
"clean": "rimraf .turbo node_modules dist data/evolu-relay.db",
11+
"format": "biome check . --write",
12+
"lint": "biome check ."
13+
},
14+
"files": [
15+
"dist",
16+
"README.md"
17+
],
18+
"dependencies": {
19+
"@evolu/common": "workspace:*",
20+
"@evolu/nodejs": "workspace:*"
21+
},
22+
"devDependencies": {
23+
"@evolu/biome-config": "workspace:*",
24+
"@evolu/tsconfig": "workspace:*",
25+
"@types/node": "^24.10.3",
26+
"typescript": "^5.9.3"
27+
},
28+
"engines": {
29+
"node": ">=24.0.0"
30+
}
3131
}

apps/relay/src/index.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,24 @@ mkdirSync("data", { recursive: true });
77
process.chdir("data");
88

99
const relay = await createNodeJsRelay({
10-
console: createConsole(),
10+
console: createConsole(),
1111
})({
12-
port: 4000,
13-
enableLogging: false,
12+
port: 4000,
13+
enableLogging: false,
1414

15-
// Note: Relay requires URL in format ws://host:port/<ownerId>
16-
// isOwnerAllowed: (_ownerId) => true,
15+
// Note: Relay requires URL in format ws://host:port/<ownerId>
16+
// isOwnerAllowed: (_ownerId) => true,
1717

18-
isOwnerWithinQuota: (_ownerId, requiredBytes) => {
19-
const maxBytes = 1024 * 1024; // 1MB
20-
return requiredBytes <= maxBytes;
21-
},
18+
isOwnerWithinQuota: (_ownerId, requiredBytes) => {
19+
const maxBytes = 1024 * 1024; // 1MB
20+
return requiredBytes <= maxBytes;
21+
},
2222
});
2323

2424
if (relay.ok) {
25-
process.once("SIGINT", relay.value[Symbol.dispose]);
26-
process.once("SIGTERM", relay.value[Symbol.dispose]);
25+
process.once("SIGINT", relay.value[Symbol.dispose]);
26+
process.once("SIGTERM", relay.value[Symbol.dispose]);
2727
} else {
28-
// eslint-disable-next-line no-console
29-
console.error(relay.error);
28+
// eslint-disable-next-line no-console
29+
console.error(relay.error);
3030
}

apps/relay/tsconfig.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
2-
"extends": "@evolu/tsconfig/universal-esm.json",
3-
"compilerOptions": {
4-
"outDir": "dist",
5-
"module": "Node16"
6-
},
7-
"include": ["src"],
8-
"exclude": ["node_modules"]
2+
"extends": "@evolu/tsconfig/universal-esm.json",
3+
"compilerOptions": {
4+
"outDir": "dist",
5+
"module": "Node16"
6+
},
7+
"include": ["src"],
8+
"exclude": ["node_modules"]
99
}

biome.json

Lines changed: 2 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,13 @@
11
{
22
"$schema": "https://biomejs.dev/schemas/2.3.10/schema.json",
3+
"extends": ["@evolu/biome-config"],
34
"vcs": {
45
"enabled": true,
56
"clientKind": "git",
67
"useIgnoreFile": true
78
},
89
"files": {
910
"ignoreUnknown": false,
10-
"includes": ["**", "!!apps/web", "!!examples"]
11-
},
12-
"formatter": {
13-
"enabled": false,
14-
"indentStyle": "tab"
15-
},
16-
"linter": {
17-
"enabled": true,
18-
"rules": {
19-
"recommended": false,
20-
"suspicious": {
21-
"noShadowRestrictedNames": "off",
22-
"noExplicitAny": "off",
23-
"noImplicitAnyLet": "off",
24-
"useIterableCallbackReturn": "off"
25-
},
26-
"correctness": {
27-
"noConstantCondition": "off",
28-
"noUnusedFunctionParameters": "off"
29-
},
30-
"style": {
31-
"useImportType": "off"
32-
},
33-
"nursery": {
34-
"noImportCycles": {
35-
"level": "error",
36-
"options": {
37-
"ignoreTypes": true
38-
}
39-
}
40-
}
41-
}
42-
},
43-
"javascript": {
44-
"formatter": {
45-
"quoteStyle": "double"
46-
}
47-
},
48-
"css": {
49-
"parser": {
50-
"tailwindDirectives": true
51-
}
52-
},
53-
"assist": {
54-
"enabled": false,
55-
"actions": {
56-
"source": {
57-
"organizeImports": "on"
58-
}
59-
}
11+
"includes": ["**", "!!packages", "!!apps", "!!examples"]
6012
}
6113
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"extends": ["@evolu/biome-config"]}
1+
{ "extends": ["@evolu/biome-config"] }
Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
{
2-
"name": "@example/angular-vite-pwa",
3-
"version": "0.0.0",
4-
"private": true,
5-
"type": "module",
6-
"scripts": {
7-
"build": "tsc && vite build",
8-
"dev": "vite",
9-
"generate-pwa-assets": "pwa-assets-generator",
10-
"lint": "biome check .",
11-
"format": "biome check . --write"
12-
},
13-
"dependencies": {
14-
"@angular/core": "^21.0.5",
15-
"@angular/platform-browser": "^21.0.5",
16-
"@evolu/common": "latest",
17-
"@evolu/web": "latest"
18-
},
19-
"devDependencies": {
20-
"@evolu/biome-config": "workspace:*",
21-
"@analogjs/vite-plugin-angular": "^2.2.0",
22-
"@angular/build": "^21.0.3",
23-
"@angular/compiler-cli": "^21.0.5",
24-
"@tailwindcss/vite": "^4.1.18",
25-
"@vite-pwa/assets-generator": "^1.0.0",
26-
"tailwindcss": "^4.1.18",
27-
"typescript": "^5.9.3",
28-
"vite": "^7.2.7",
29-
"vite-plugin-pwa": "^1.0.2"
30-
}
2+
"name": "@example/angular-vite-pwa",
3+
"version": "0.0.0",
4+
"private": true,
5+
"type": "module",
6+
"scripts": {
7+
"build": "tsc && vite build",
8+
"dev": "vite",
9+
"generate-pwa-assets": "pwa-assets-generator",
10+
"lint": "biome check .",
11+
"format": "biome check . --write"
12+
},
13+
"dependencies": {
14+
"@angular/core": "^21.0.5",
15+
"@angular/platform-browser": "^21.0.5",
16+
"@evolu/common": "latest",
17+
"@evolu/web": "latest"
18+
},
19+
"devDependencies": {
20+
"@evolu/biome-config": "workspace:*",
21+
"@analogjs/vite-plugin-angular": "^2.2.0",
22+
"@angular/build": "^21.0.3",
23+
"@angular/compiler-cli": "^21.0.5",
24+
"@tailwindcss/vite": "^4.1.18",
25+
"@vite-pwa/assets-generator": "^1.0.0",
26+
"tailwindcss": "^4.1.18",
27+
"typescript": "^5.9.3",
28+
"vite": "^7.2.7",
29+
"vite-plugin-pwa": "^1.0.2"
30+
}
3131
}
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import {
2-
defineConfig,
3-
minimal2023Preset as preset,
2+
defineConfig,
3+
minimal2023Preset as preset,
44
} from "@vite-pwa/assets-generator/config";
55

66
export default defineConfig({
7-
headLinkOptions: {
8-
preset: "2023",
9-
},
10-
preset,
11-
images: ["public/favicon.svg"],
7+
headLinkOptions: {
8+
preset: "2023",
9+
},
10+
preset,
11+
images: ["public/favicon.svg"],
1212
});

examples/angular-vite-pwa/src/app/app.component.ts

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import { AppService } from "./app.service";
33
import { PwaBadgeComponent } from "./pwa-badge.component";
44

55
@Component({
6-
selector: "app-root",
7-
imports: [PwaBadgeComponent],
8-
template: `
6+
selector: "app-root",
7+
imports: [PwaBadgeComponent],
8+
template: `
99
<div class="min-h-screen px-8 py-8">
1010
<div class="mx-auto max-w-md">
1111
<div class="mb-2 flex items-center justify-between pb-4">
@@ -149,62 +149,62 @@ import { PwaBadgeComponent } from "./pwa-badge.component";
149149
`,
150150
})
151151
export class App {
152-
protected readonly appService = inject(AppService);
152+
protected readonly appService = inject(AppService);
153153

154-
protected readonly showMnemonic = signal(false);
155-
protected readonly newTodoTitle = signal("");
154+
protected readonly showMnemonic = signal(false);
155+
protected readonly newTodoTitle = signal("");
156156

157-
/** Todos */
157+
/** Todos */
158158

159-
protected setNewTodoTitle(value: string) {
160-
this.newTodoTitle.set(value);
161-
}
159+
protected setNewTodoTitle(value: string) {
160+
this.newTodoTitle.set(value);
161+
}
162162

163-
protected handleKeyDown(event: KeyboardEvent) {
164-
if (event.key === "Enter") {
165-
this.handleAddTodo();
166-
}
167-
}
163+
protected handleKeyDown(event: KeyboardEvent) {
164+
if (event.key === "Enter") {
165+
this.handleAddTodo();
166+
}
167+
}
168168

169-
protected handleAddTodo() {
170-
const title = this.newTodoTitle().trim();
171-
if (!title) return;
169+
protected handleAddTodo() {
170+
const title = this.newTodoTitle().trim();
171+
if (!title) return;
172172

173-
this.appService.addTodo(title);
174-
this.newTodoTitle.set("");
175-
}
173+
this.appService.addTodo(title);
174+
this.newTodoTitle.set("");
175+
}
176176

177-
protected handleRenameTodo(id: string, currentTitle: string) {
178-
const title = window.prompt("Todo Name", currentTitle);
179-
if (title == null) return;
177+
protected handleRenameTodo(id: string, currentTitle: string) {
178+
const title = window.prompt("Todo Name", currentTitle);
179+
if (title == null) return;
180180

181-
this.appService.renameTodo(id, title);
182-
}
181+
this.appService.renameTodo(id, title);
182+
}
183183

184-
protected handleDeleteTodo(id: string) {
185-
this.appService.deleteTodo(id);
186-
}
184+
protected handleDeleteTodo(id: string) {
185+
this.appService.deleteTodo(id);
186+
}
187187

188-
/** Footer button handlers */
188+
/** Footer button handlers */
189189

190-
protected handleShowMnemonic() {
191-
this.showMnemonic.update((show) => !show);
192-
}
190+
protected handleShowMnemonic() {
191+
this.showMnemonic.update((show) => !show);
192+
}
193193

194-
protected handleRestoreOwner() {
195-
const mnemonic = window.prompt("Your Mnemonic");
196-
if (mnemonic == null) return;
194+
protected handleRestoreOwner() {
195+
const mnemonic = window.prompt("Your Mnemonic");
196+
if (mnemonic == null) return;
197197

198-
void this.appService.restoreFromMnemonic(mnemonic);
199-
}
198+
void this.appService.restoreFromMnemonic(mnemonic);
199+
}
200200

201-
protected handleResetOwner() {
202-
if (confirm("Are you sure? It will delete all your local data.")) {
203-
void this.appService.resetAppOwner();
204-
}
205-
}
201+
protected handleResetOwner() {
202+
if (confirm("Are you sure? It will delete all your local data.")) {
203+
void this.appService.resetAppOwner();
204+
}
205+
}
206206

207-
protected handleDownloadDatabase() {
208-
void this.appService.downloadDatabase();
209-
}
207+
protected handleDownloadDatabase() {
208+
void this.appService.downloadDatabase();
209+
}
210210
}

0 commit comments

Comments
 (0)