Shows how to get repo export and walk it in TypeScript walktherepo.wisp.place

timer im not sure it works while downloading

+13 -2
+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) 19 20 const getRepoStats = async () => { 21 const endPoint = `${pdsUrl}/xrpc/com.atproto.sync.getRepo?did=${did}` 22 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 49 loading = false; 50 } catch (err) { 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