tangled
alpha
login
or
join now
baileytownsend.dev
/
repo-walk-example
3
fork
atom
Shows how to get repo export and walk it in TypeScript
walktherepo.wisp.place
3
fork
atom
overview
issues
pulls
pipelines
timer im not sure it works while downloading
baileytownsend.dev
2 months ago
41048e89
8fb5b63c
+13
-2
1 changed file
expand all
collapse all
unified
split
src
lib
RepoStats.svelte
+13
-2
src/lib/RepoStats.svelte
···
16
16
let collections = $state(new Array<CountedCollection>());
17
17
let collectionsOrdered: Array<CountedCollection> = $derived([...collections].sort((a, b) => b.count - a.count))
18
18
let totalRecords = $state(0)
19
19
+
let startTime = $state<number | null>(null)
20
20
+
let endTime = $state<number | null>(null)
21
21
+
let elapsedTime = $derived.by(() => {
22
22
+
if (!startTime) return "0.00"
23
23
+
const end = endTime ?? Date.now()
24
24
+
return ((end - startTime) / 1000).toFixed(2)
25
25
+
})
19
26
20
27
const getRepoStats = async () => {
21
28
const endPoint = `${pdsUrl}/xrpc/com.atproto.sync.getRepo?did=${did}`
22
29
30
30
+
startTime = Date.now()
31
31
+
endTime = null
23
32
try {
24
33
const response = await fetch(endPoint)
25
34
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`)
···
46
55
await car.dispose()
47
56
}
48
57
58
58
+
endTime = Date.now()
49
59
loading = false;
50
60
} catch (err) {
61
61
+
endTime = Date.now()
51
62
console.error('Error fetching repo stats:', err)
52
63
error = err.message
53
64
loading = false
···
65
76
<p style="color: red">{error}</p>
66
77
{/if}
67
78
{#if loading}
68
68
-
Loading... ({downloadedMB} MB downloaded)
79
79
+
Loading... ({downloadedMB} MB downloaded, {elapsedTime}s)
69
80
{:else}
70
70
-
<span>Repo size {downloadedMB} MB</span>
81
81
+
<span>Repo size {downloadedMB} MB (fetched in {elapsedTime}s)</span>
71
82
{/if}
72
83
{#if collectionsOrdered.length > 0}
73
84