+1
-2
package.json
+1
-2
package.json
···
21
21
},
22
22
"dependencies": {
23
23
"@atcute/atproto": "^3.1.10",
24
-
"@atcute/car": "^5.0.0",
25
-
"@atcute/cbor": "^2.2.8",
26
24
"@atcute/client": "^4.2.1",
27
25
"@atcute/identity": "^1.1.3",
28
26
"@atcute/identity-resolver": "^1.2.2",
29
27
"@atcute/lexicons": "^1.2.6",
28
+
"@atcute/repo": "^0.1.1",
30
29
"@eslint/compat": "^2.0.0",
31
30
"@eslint/js": "^9.39.2",
32
31
"eslint": "^9.39.2",
+39
pnpm-lock.yaml
+39
pnpm-lock.yaml
···
29
29
'@atcute/lexicons':
30
30
specifier: ^1.2.6
31
31
version: 1.2.6
32
+
'@atcute/repo':
33
+
specifier: ^0.1.1
34
+
version: 0.1.1
32
35
'@eslint/compat':
33
36
specifier: ^2.0.0
34
37
version: 2.0.0(eslint@9.39.2)
···
87
90
'@atcute/client@4.2.1':
88
91
resolution: {integrity: sha512-ZBFM2pW075JtgGFu5g7HHZBecrClhlcNH8GVP9Zz1aViWR+cjjBsTpeE63rJs+FCOHFYlirUyo5L8SGZ4kMINw==}
89
92
93
+
'@atcute/crypto@2.3.0':
94
+
resolution: {integrity: sha512-w5pkJKCjbNMQu+F4JRHbR3ROQyhi1wbn+GSC6WDQamcYHkZmEZk1/eoI354bIQOOfkEM6aFLv718iskrkon4GQ==}
95
+
90
96
'@atcute/identity-resolver@1.2.2':
91
97
resolution: {integrity: sha512-eUh/UH4bFvuXS0X7epYCeJC/kj4rbBXfSRumLEH4smMVwNOgTo7cL/0Srty+P/qVPoZEyXdfEbS0PHJyzoXmHw==}
92
98
peerDependencies:
···
98
104
'@atcute/lexicons@1.2.6':
99
105
resolution: {integrity: sha512-s76UQd8D+XmHIzrjD9CJ9SOOeeLPHc+sMmcj7UFakAW/dDFXc579fcRdRfuUKvXBL5v1Gs2VgDdlh/IvvQZAwA==}
100
106
107
+
'@atcute/mst@0.1.1':
108
+
resolution: {integrity: sha512-NZ/lZ68GOjmAgBSeGf6WHyKM5wo1Hhc7PNt9uwsViswGPMNEEKNj9cw+0YGziXee/Qbnvc+CKqbRSPwruhXFQg==}
109
+
101
110
'@atcute/multibase@1.1.6':
102
111
resolution: {integrity: sha512-HBxuCgYLKPPxETV0Rot4VP9e24vKl8JdzGCZOVsDaOXJgbRZoRIF67Lp0H/OgnJeH/Xpva8Z5ReoTNJE5dn3kg==}
112
+
113
+
'@atcute/repo@0.1.1':
114
+
resolution: {integrity: sha512-P5aWjt3bvcquUkUmGPslF0naAfLGRHse5Qdz9/RJYrFuoH0iiEMyRnW6M+3ksOe20GPsMnbq71WbzzFkRFPBtg==}
103
115
104
116
'@atcute/uint8array@1.0.6':
105
117
resolution: {integrity: sha512-ucfRBQc7BFT8n9eCyGOzDHEMKF/nZwhS2pPao4Xtab1ML3HdFYcX2DM1tadCzas85QTGxHe5urnUAAcNKGRi9A==}
···
355
367
356
368
'@jridgewell/trace-mapping@0.3.31':
357
369
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
370
+
371
+
'@noble/secp256k1@3.0.0':
372
+
resolution: {integrity: sha512-NJBaR352KyIvj3t6sgT/+7xrNyF9Xk9QlLSIqUGVUYlsnDTAUqY8LOmwpcgEx4AMJXRITQ5XEVHD+mMaPfr3mg==}
358
373
359
374
'@rollup/rollup-android-arm-eabi@4.55.1':
360
375
resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==}
···
1155
1170
'@atcute/identity': 1.1.3
1156
1171
'@atcute/lexicons': 1.2.6
1157
1172
1173
+
'@atcute/crypto@2.3.0':
1174
+
dependencies:
1175
+
'@atcute/multibase': 1.1.6
1176
+
'@atcute/uint8array': 1.0.6
1177
+
'@noble/secp256k1': 3.0.0
1178
+
1158
1179
'@atcute/identity-resolver@1.2.2(@atcute/identity@1.1.3)':
1159
1180
dependencies:
1160
1181
'@atcute/identity': 1.1.3
···
1174
1195
'@standard-schema/spec': 1.1.0
1175
1196
esm-env: 1.2.2
1176
1197
1198
+
'@atcute/mst@0.1.1':
1199
+
dependencies:
1200
+
'@atcute/cbor': 2.2.8
1201
+
'@atcute/cid': 2.3.0
1202
+
'@atcute/uint8array': 1.0.6
1203
+
1177
1204
'@atcute/multibase@1.1.6':
1178
1205
dependencies:
1206
+
'@atcute/uint8array': 1.0.6
1207
+
1208
+
'@atcute/repo@0.1.1':
1209
+
dependencies:
1210
+
'@atcute/car': 5.0.0
1211
+
'@atcute/cbor': 2.2.8
1212
+
'@atcute/cid': 2.3.0
1213
+
'@atcute/crypto': 2.3.0
1214
+
'@atcute/lexicons': 1.2.6
1215
+
'@atcute/mst': 0.1.1
1179
1216
'@atcute/uint8array': 1.0.6
1180
1217
1181
1218
'@atcute/uint8array@1.0.6': {}
···
1355
1392
dependencies:
1356
1393
'@jridgewell/resolve-uri': 3.1.2
1357
1394
'@jridgewell/sourcemap-codec': 1.5.5
1395
+
1396
+
'@noble/secp256k1@3.0.0': {}
1358
1397
1359
1398
'@rollup/rollup-android-arm-eabi@4.55.1':
1360
1399
optional: true
+4
-10
src/lib/RepoStats.svelte
+4
-10
src/lib/RepoStats.svelte
···
1
1
<script lang="ts">
2
-
import { fromStream } from '@atcute/car';
3
-
import * as CBOR from '@atcute/cbor';
2
+
import { fromStream } from '@atcute/repo';
4
3
import { onMount } from 'svelte';
5
4
import { Client, simpleFetchHandler } from '@atcute/client';
6
5
import type {} from '@atcute/atproto';
···
72
71
73
72
try {
74
73
for await (const entry of car) {
75
-
const record = CBOR.decode(entry.bytes);
76
-
if (!record.$type) {
77
-
//Is not a record
78
-
continue;
79
-
}
80
74
81
-
let checkForCollection = collections.find(c => c.collection === record.$type);
75
+
let checkForCollection = collections.find(c => c.collection === entry.collection);
82
76
if (!checkForCollection) {
83
-
collections.push({ collection: record.$type, count: 1 });
77
+
collections.push({ collection: entry.collection, count: 1 });
84
78
} else {
85
79
checkForCollection.count++;
86
80
}
87
-
downloadedBytes = entry.entryEnd;
81
+
downloadedBytes = entry.carEntry.entryEnd;
88
82
totalRecords++;
89
83
}
90
84
} finally {