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
let collections = $state(new Array<CountedCollection>());
17
let collectionsOrdered: Array<CountedCollection> = $derived([...collections].sort((a, b) => b.count - a.count))
18
let totalRecords = $state(0)
0
0
0
0
0
0
0
19
20
const getRepoStats = async () => {
21
const endPoint = `${pdsUrl}/xrpc/com.atproto.sync.getRepo?did=${did}`
22
0
0
23
try {
24
const response = await fetch(endPoint)
25
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`)
···
46
await car.dispose()
47
}
48
0
49
loading = false;
50
} catch (err) {
0
51
console.error('Error fetching repo stats:', err)
52
error = err.message
53
loading = false
···
65
<p style="color: red">{error}</p>
66
{/if}
67
{#if loading}
68
-
Loading... ({downloadedMB} MB downloaded)
69
{:else}
70
-
<span>Repo size {downloadedMB} MB</span>
71
{/if}
72
{#if collectionsOrdered.length > 0}
73
···
16
let collections = $state(new Array<CountedCollection>());
17
let collectionsOrdered: Array<CountedCollection> = $derived([...collections].sort((a, b) => b.count - a.count))
18
let totalRecords = $state(0)
19
+
let startTime = $state<number | null>(null)
20
+
let endTime = $state<number | null>(null)
21
+
let elapsedTime = $derived.by(() => {
22
+
if (!startTime) return "0.00"
23
+
const end = endTime ?? Date.now()
24
+
return ((end - startTime) / 1000).toFixed(2)
25
+
})
26
27
const getRepoStats = async () => {
28
const endPoint = `${pdsUrl}/xrpc/com.atproto.sync.getRepo?did=${did}`
29
30
+
startTime = Date.now()
31
+
endTime = null
32
try {
33
const response = await fetch(endPoint)
34
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`)
···
55
await car.dispose()
56
}
57
58
+
endTime = Date.now()
59
loading = false;
60
} catch (err) {
61
+
endTime = Date.now()
62
console.error('Error fetching repo stats:', err)
63
error = err.message
64
loading = false
···
76
<p style="color: red">{error}</p>
77
{/if}
78
{#if loading}
79
+
Loading... ({downloadedMB} MB downloaded, {elapsedTime}s)
80
{:else}
81
+
<span>Repo size {downloadedMB} MB (fetched in {elapsedTime}s)</span>
82
{/if}
83
{#if collectionsOrdered.length > 0}
84