Skip to content

Commit edcd926

Browse files
author
Abdelrahman
authored
Merge pull request #13 from abdel-17/setup-biome
Add Biome
2 parents 6272e89 + 8ebf6ed commit edcd926

File tree

20 files changed

+1753
-1744
lines changed

20 files changed

+1753
-1744
lines changed

.github/workflows/ci.yml

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: CI
33
on:
44
push:
55
branches:
6-
- main
6+
- master
77
pull_request:
88

99
concurrency:
@@ -12,8 +12,8 @@ concurrency:
1212

1313
jobs:
1414
check:
15-
name: Svelte Check
16-
runs-on: macos-latest
15+
name: Check
16+
runs-on: ubuntu-latest
1717
steps:
1818
- uses: actions/checkout@v4
1919
- uses: pnpm/action-setup@v4
@@ -28,12 +28,11 @@ jobs:
2828
- name: Build
2929
run: pnpm build
3030

31-
- name: Run svelte-check
32-
run: pnpm check
31+
- run: pnpm check
3332

3433
test:
35-
runs-on: macos-latest
3634
name: Test
35+
runs-on: ubuntu-latest
3736
steps:
3837
- uses: actions/checkout@v4
3938
- uses: pnpm/action-setup@v4
@@ -50,9 +49,9 @@ jobs:
5049

5150
- run: pnpm test
5251

53-
format:
54-
runs-on: macos-latest
55-
name: Format
52+
lint:
53+
name: Lint
54+
runs-on: ubuntu-latest
5655
steps:
5756
- uses: actions/checkout@v4
5857
- uses: pnpm/action-setup@v4
@@ -64,4 +63,4 @@ jobs:
6463
- name: Install dependencies
6564
run: pnpm install
6665

67-
- run: pnpm format:check
66+
- run: pnpm lint:ci

biome.json

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
3+
"formatter": {
4+
"enabled": true,
5+
"indentStyle": "tab",
6+
"lineWidth": 100
7+
},
8+
"linter": {
9+
"enabled": true,
10+
"rules": {
11+
"recommended": true,
12+
"style": {
13+
"noNonNullAssertion": "off"
14+
}
15+
}
16+
},
17+
"organizeImports": {
18+
"enabled": true
19+
},
20+
"overrides": [
21+
{
22+
"include": ["*.svelte"],
23+
"linter": {
24+
"rules": {
25+
"style": {
26+
"useConst": "off"
27+
}
28+
}
29+
}
30+
}
31+
],
32+
"vcs": {
33+
"enabled": true,
34+
"clientKind": "git",
35+
"useIgnoreFile": true
36+
}
37+
}

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66
"scripts": {
77
"build": "pnpm -r build",
88
"check": "pnpm -r check",
9-
"format": "pnpm -r format",
10-
"format:check": "pnpm -r format:check",
9+
"lint": "pnpm -r lint",
10+
"lint:fix": "pnpm -r lint:fix",
11+
"lint:ci": "pnpm -r lint:ci",
1112
"test": "pnpm -r test"
1213
},
1314
"devDependencies": {
15+
"@biomejs/biome": "1.9.4",
1416
"@changesets/cli": "^2.27.11",
1517
"playwright": "^1.49.0"
1618
},

packages/svelte-file-tree/.prettierrc.json

Lines changed: 0 additions & 5 deletions
This file was deleted.

packages/svelte-file-tree/biome.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
3+
"extends": ["../../biome.json"]
4+
}

packages/svelte-file-tree/package.json

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
1212
"format": "prettier --write .",
1313
"format:check": "prettier --check .",
14+
"lint": "biome check",
15+
"lint:fix": "biome check --fix",
16+
"lint:ci": "biome ci",
1417
"test": "vitest --run",
1518
"test:watch": "vitest --watch"
1619
},
@@ -20,14 +23,8 @@
2023
"svelte": "./dist/index.js"
2124
}
2225
},
23-
"sideEffects": [
24-
"**/*.css"
25-
],
26-
"files": [
27-
"dist",
28-
"!dist/**/*.spec.*",
29-
"!dist/**/*.test.*"
30-
],
26+
"sideEffects": ["**/*.css"],
27+
"files": ["dist", "!dist/**/*.spec.*", "!dist/**/*.test.*"],
3128
"repository": {
3229
"type": "git",
3330
"url": "https://github.com/abdel-17/svelte-file-tree",
@@ -40,12 +37,8 @@
4037
"@sveltejs/kit": "^2.9.0",
4138
"@sveltejs/package": "^2.3.7",
4239
"@sveltejs/vite-plugin-svelte": "4.0.2",
43-
"@types/node": "^22.10.1",
4440
"@vitest/browser": "^2.1.8",
4541
"jsdom": "^25.0.1",
46-
"playwright": "^1.49.0",
47-
"prettier": "^3.4.2",
48-
"prettier-plugin-svelte": "^3.3.2",
4942
"publint": "^0.2.12",
5043
"svelte": "5.7.0",
5144
"svelte-check": "^4.1.1",

packages/svelte-file-tree/src/lib/components/Tree/Tree.svelte

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,42 @@
11
<script lang="ts">
2-
import type { FileTreeNode } from "$lib/tree.svelte.js";
3-
import { TreeState } from "./context.svelte.js";
4-
import TreeItemProvider from "./TreeItemProvider.svelte";
5-
import type { TreeProps } from "./types.js";
2+
import type { FileTreeNode } from "$lib/tree.svelte.js";
3+
import TreeItemProvider from "./TreeItemProvider.svelte";
4+
import { TreeState } from "./context.svelte.js";
5+
import type { TreeProps } from "./types.js";
66
7-
let {
8-
tree,
9-
item,
10-
id = crypto.randomUUID(),
11-
element = $bindable(null),
12-
onMoveItems,
13-
onInsertItems,
14-
onDeleteItems,
15-
onRenameItem,
16-
onRenameError,
17-
...attributes
18-
}: TreeProps = $props();
7+
let {
8+
tree,
9+
item,
10+
id = crypto.randomUUID(),
11+
element = $bindable(null),
12+
onMoveItems,
13+
onInsertItems,
14+
onDeleteItems,
15+
onRenameItem,
16+
onRenameError,
17+
...attributes
18+
}: TreeProps = $props();
1919
20-
const treeState = new TreeState({
21-
getElementId: () => id,
22-
callbacks: {
23-
onMoveItems(nodes, start, count) {
24-
onMoveItems?.(nodes, start, count);
25-
},
26-
onInsertItems(nodes, start, count) {
27-
onInsertItems?.(nodes, start, count);
28-
},
29-
onDeleteItems(nodes) {
30-
onDeleteItems?.(nodes);
31-
},
32-
onRenameItem(node) {
33-
onRenameItem?.(node);
34-
},
35-
onRenameError(node, error) {
36-
onRenameError?.(node, error);
37-
},
20+
const treeState = new TreeState({
21+
getElementId: () => id,
22+
callbacks: {
23+
onMoveItems(nodes, start, count) {
24+
onMoveItems?.(nodes, start, count);
3825
},
39-
});
26+
onInsertItems(nodes, start, count) {
27+
onInsertItems?.(nodes, start, count);
28+
},
29+
onDeleteItems(nodes) {
30+
onDeleteItems?.(nodes);
31+
},
32+
onRenameItem(node) {
33+
onRenameItem?.(node);
34+
},
35+
onRenameError(node, error) {
36+
onRenameError?.(node, error);
37+
},
38+
},
39+
});
4040
</script>
4141

4242
{#snippet items(nodes: FileTreeNode[])}
Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
<script lang="ts">
2-
import type { FileTreeNode } from "$lib/tree.svelte.js";
3-
import type { Snippet } from "svelte";
4-
import { TreeItemContext, type TreeState } from "./context.svelte.js";
2+
import type { FileTreeNode } from "$lib/tree.svelte.js";
3+
import type { Snippet } from "svelte";
4+
import { TreeItemContext, type TreeState } from "./context.svelte.js";
55
6-
const {
7-
treeState,
8-
node,
9-
index,
10-
children,
11-
}: {
12-
treeState: TreeState;
13-
node: FileTreeNode;
14-
index: number;
15-
children: Snippet<[context: TreeItemContext]>;
16-
} = $props();
6+
const {
7+
treeState,
8+
node,
9+
index,
10+
children,
11+
}: {
12+
treeState: TreeState;
13+
node: FileTreeNode;
14+
index: number;
15+
children: Snippet<[context: TreeItemContext]>;
16+
} = $props();
1717
18-
const context = TreeItemContext.set(treeState, {
19-
getNode: () => node,
20-
getIndex: () => index,
21-
});
18+
const context = TreeItemContext.set(treeState, {
19+
getNode: () => node,
20+
getIndex: () => index,
21+
});
2222
</script>
2323

2424
{@render children(context)}

packages/svelte-file-tree/src/lib/components/Tree/context.svelte.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ export class TreeItemContext {
9292
static readonly #key = Symbol("TreeItemContext");
9393

9494
static get(): TreeItemContext {
95-
const context: TreeItemContext | undefined = getContext(this.#key);
95+
const context: TreeItemContext | undefined = getContext(TreeItemContext.#key);
9696
if (context === undefined) {
9797
throw new Error("No parent <Tree> found");
9898
}
@@ -101,7 +101,7 @@ export class TreeItemContext {
101101

102102
static set(treeState: TreeState, props: TreeItemContextProps): TreeItemContext {
103103
const context = new TreeItemContext(treeState, props);
104-
setContext(this.#key, context);
104+
setContext(TreeItemContext.#key, context);
105105

106106
$effect(() => {
107107
const node = context.getNode();
@@ -493,15 +493,15 @@ export class TreeItemContext {
493493
let focusTarget: EnumeratedTreeItem | undefined = { node, index };
494494
while (true) {
495495
let nearestUnselected: EnumeratedTreeItem | undefined = focusTarget;
496-
while (nearestUnselected !== undefined && nearestUnselected.node.selected) {
496+
while (nearestUnselected?.node.selected) {
497497
// The current item will be deleted, so we shouldn't traverse its children.
498498
tree.expanded.delete(nearestUnselected.node.id);
499499
nearestUnselected = treeState.getNextItem(nearestUnselected);
500500
}
501501

502502
if (nearestUnselected === undefined) {
503503
nearestUnselected = focusTarget;
504-
while (nearestUnselected !== undefined && nearestUnselected.node.selected) {
504+
while (nearestUnselected?.node.selected) {
505505
nearestUnselected = treeState.getPreviousItem(nearestUnselected);
506506
}
507507
}
@@ -897,11 +897,11 @@ function getDropPosition(node: FileTreeNode, rect: DOMRect, clientY: number): Tr
897897
case "folder": {
898898
if (clientY < rect.top + rect.height / 3) {
899899
return "before";
900-
} else if (clientY > rect.bottom - rect.height / 3) {
900+
}
901+
if (clientY > rect.bottom - rect.height / 3) {
901902
return "after";
902-
} else {
903-
return "inside";
904903
}
904+
return "inside";
905905
}
906906
}
907907
}

0 commit comments

Comments
 (0)