.tangled/images/apiWalk.jpg
.tangled/images/apiWalk.jpg
This is a binary file and will not be displayed.
.tangled/images/carWalk.jpg
.tangled/images/carWalk.jpg
This is a binary file and will not be displayed.
+13
-2
README.md
+13
-2
README.md
···
1
-
# WIP
1
+
# Walk The Repo
2
+
3
+
demo: [https://walktherepo.wisp.place](https://walktherepo.wisp.place/)
4
+
5
+
A demo showing how to use [@atcute](https://github.com/mary-ext/atcute) to download a user's repo and "walk" it to access all the records inside of it faster than you would via multiple api calls.
6
+
If you're just wanting to see that code directly it's [here](https://tangled.org/baileytownsend.dev/repo-walk-example/blob/main/src/lib/RepoStats.svelte#L56).
7
+
8
+
Comparisons using my repo as an example.
9
+
10
+
Repo Export
11
+

2
12
3
-
Will show how to get a users repo and walk it so you don't do 10 billion list records calls
13
+
API Calls
14
+

+6
-4
index.html
+6
-4
index.html
···
1
1
<!doctype html>
2
2
<html lang="en">
3
-
<head>
3
+
<head data-theme="forest">
4
4
<meta charset="UTF-8" />
5
-
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
5
+
<link rel="icon" type="image/svg+xml" href="/dude.png" />
6
6
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
<title>Repo Walking</title>
8
-
<meta name="description" content="Walk the repo, count the steps.">
9
-
<meta name="og:description" content="Walk the repo, count the steps.">
8
+
<meta name="og:title" content="Repo Walking">
9
+
<meta name="description" content="Walk the repo, count the records.">
10
+
<meta name="og:description" content="Walk the repo, count the records.">
11
+
10
12
</head>
11
13
<body>
12
14
<div id="app"></div>
+7
-5
package.json
+7
-5
package.json
···
14
14
"@sveltejs/vite-plugin-svelte": "^6.2.1",
15
15
"@tsconfig/svelte": "^5.0.6",
16
16
"@types/node": "^24.10.1",
17
+
"daisyui": "^5.5.14",
17
18
"svelte": "^5.43.8",
18
19
"svelte-check": "^4.3.4",
19
20
"typescript": "~5.9.3",
···
21
22
},
22
23
"dependencies": {
23
24
"@atcute/atproto": "^3.1.10",
24
-
"@atcute/car": "^5.0.0",
25
-
"@atcute/cbor": "^2.2.8",
26
25
"@atcute/client": "^4.2.1",
27
-
"@atproto-labs/handle-resolver": "^0.3.5",
28
-
"@atproto/identity": "^0.4.10",
29
-
"@atproto/lex": "^0.0.10",
26
+
"@atcute/identity": "^1.1.3",
27
+
"@atcute/identity-resolver": "^1.2.2",
28
+
"@atcute/lexicons": "^1.2.6",
29
+
"@atcute/repo": "^0.1.1",
30
30
"@eslint/compat": "^2.0.0",
31
31
"@eslint/js": "^9.39.2",
32
+
"@tailwindcss/vite": "^4.1.18",
32
33
"eslint": "^9.39.2",
33
34
"eslint-plugin-svelte": "^3.14.0",
34
35
"globals": "^17.0.0",
36
+
"tailwindcss": "^4.1.18",
35
37
"typescript-eslint": "^8.52.0"
36
38
}
37
39
}
+431
-668
pnpm-lock.yaml
+431
-668
pnpm-lock.yaml
···
11
11
'@atcute/atproto':
12
12
specifier: ^3.1.10
13
13
version: 3.1.10
14
-
'@atcute/car':
15
-
specifier: ^5.0.0
16
-
version: 5.0.0
17
-
'@atcute/cbor':
18
-
specifier: ^2.2.8
19
-
version: 2.2.8
20
14
'@atcute/client':
21
15
specifier: ^4.2.1
22
16
version: 4.2.1
23
-
'@atproto-labs/handle-resolver':
24
-
specifier: ^0.3.5
25
-
version: 0.3.5
26
-
'@atproto/identity':
27
-
specifier: ^0.4.10
28
-
version: 0.4.10
29
-
'@atproto/lex':
30
-
specifier: ^0.0.10
31
-
version: 0.0.10
17
+
'@atcute/identity':
18
+
specifier: ^1.1.3
19
+
version: 1.1.3
20
+
'@atcute/identity-resolver':
21
+
specifier: ^1.2.2
22
+
version: 1.2.2(@atcute/identity@1.1.3)
23
+
'@atcute/lexicons':
24
+
specifier: ^1.2.6
25
+
version: 1.2.6
26
+
'@atcute/repo':
27
+
specifier: ^0.1.1
28
+
version: 0.1.1
32
29
'@eslint/compat':
33
30
specifier: ^2.0.0
34
-
version: 2.0.0(eslint@9.39.2)
31
+
version: 2.0.0(eslint@9.39.2(jiti@2.6.1))
35
32
'@eslint/js':
36
33
specifier: ^9.39.2
37
34
version: 9.39.2
35
+
'@tailwindcss/vite':
36
+
specifier: ^4.1.18
37
+
version: 4.1.18(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2))
38
38
eslint:
39
39
specifier: ^9.39.2
40
-
version: 9.39.2
40
+
version: 9.39.2(jiti@2.6.1)
41
41
eslint-plugin-svelte:
42
42
specifier: ^3.14.0
43
-
version: 3.14.0(eslint@9.39.2)(svelte@5.46.1)
43
+
version: 3.14.0(eslint@9.39.2(jiti@2.6.1))(svelte@5.46.1)
44
44
globals:
45
45
specifier: ^17.0.0
46
46
version: 17.0.0
47
+
tailwindcss:
48
+
specifier: ^4.1.18
49
+
version: 4.1.18
50
+
typescript-eslint:
51
+
specifier: ^8.52.0
52
+
version: 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
47
53
devDependencies:
48
54
'@sveltejs/vite-plugin-svelte':
49
55
specifier: ^6.2.1
50
-
version: 6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4))
56
+
version: 6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2))
51
57
'@tsconfig/svelte':
52
58
specifier: ^5.0.6
53
59
version: 5.0.6
54
60
'@types/node':
55
61
specifier: ^24.10.1
56
62
version: 24.10.4
63
+
daisyui:
64
+
specifier: ^5.5.14
65
+
version: 5.5.14
57
66
svelte:
58
67
specifier: ^5.43.8
59
68
version: 5.46.1
···
63
72
typescript:
64
73
specifier: ~5.9.3
65
74
version: 5.9.3
66
-
typescript-eslint:
67
-
specifier: ^8.52.0
68
-
version: 8.52.0(eslint@9.39.2)(typescript@5.9.3)
69
75
vite:
70
76
specifier: ^7.2.4
71
-
version: 7.3.1(@types/node@24.10.4)
77
+
version: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)
72
78
73
79
packages:
74
80
···
87
93
'@atcute/client@4.2.1':
88
94
resolution: {integrity: sha512-ZBFM2pW075JtgGFu5g7HHZBecrClhlcNH8GVP9Zz1aViWR+cjjBsTpeE63rJs+FCOHFYlirUyo5L8SGZ4kMINw==}
89
95
96
+
'@atcute/crypto@2.3.0':
97
+
resolution: {integrity: sha512-w5pkJKCjbNMQu+F4JRHbR3ROQyhi1wbn+GSC6WDQamcYHkZmEZk1/eoI354bIQOOfkEM6aFLv718iskrkon4GQ==}
98
+
99
+
'@atcute/identity-resolver@1.2.2':
100
+
resolution: {integrity: sha512-eUh/UH4bFvuXS0X7epYCeJC/kj4rbBXfSRumLEH4smMVwNOgTo7cL/0Srty+P/qVPoZEyXdfEbS0PHJyzoXmHw==}
101
+
peerDependencies:
102
+
'@atcute/identity': ^1.0.0
103
+
90
104
'@atcute/identity@1.1.3':
91
105
resolution: {integrity: sha512-oIqPoI8TwWeQxvcLmFEZLdN2XdWcaLVtlm8pNk0E72As9HNzzD9pwKPrLr3rmTLRIoULPPFmq9iFNsTeCIU9ng==}
92
106
93
107
'@atcute/lexicons@1.2.6':
94
108
resolution: {integrity: sha512-s76UQd8D+XmHIzrjD9CJ9SOOeeLPHc+sMmcj7UFakAW/dDFXc579fcRdRfuUKvXBL5v1Gs2VgDdlh/IvvQZAwA==}
95
109
110
+
'@atcute/mst@0.1.1':
111
+
resolution: {integrity: sha512-NZ/lZ68GOjmAgBSeGf6WHyKM5wo1Hhc7PNt9uwsViswGPMNEEKNj9cw+0YGziXee/Qbnvc+CKqbRSPwruhXFQg==}
112
+
96
113
'@atcute/multibase@1.1.6':
97
114
resolution: {integrity: sha512-HBxuCgYLKPPxETV0Rot4VP9e24vKl8JdzGCZOVsDaOXJgbRZoRIF67Lp0H/OgnJeH/Xpva8Z5ReoTNJE5dn3kg==}
98
115
116
+
'@atcute/repo@0.1.1':
117
+
resolution: {integrity: sha512-P5aWjt3bvcquUkUmGPslF0naAfLGRHse5Qdz9/RJYrFuoH0iiEMyRnW6M+3ksOe20GPsMnbq71WbzzFkRFPBtg==}
118
+
99
119
'@atcute/uint8array@1.0.6':
100
120
resolution: {integrity: sha512-ucfRBQc7BFT8n9eCyGOzDHEMKF/nZwhS2pPao4Xtab1ML3HdFYcX2DM1tadCzas85QTGxHe5urnUAAcNKGRi9A==}
121
+
122
+
'@atcute/util-fetch@1.0.5':
123
+
resolution: {integrity: sha512-qjHj01BGxjSjIFdPiAjSARnodJIIyKxnCMMEcXMESo9TAyND6XZQqrie5fia+LlYWVXdpsTds8uFQwc9jdKTig==}
101
124
102
125
'@atcute/util-text@0.0.1':
103
126
resolution: {integrity: sha512-t1KZqvn0AYy+h2KcJyHnKF9aEqfRfMUmyY8j1ELtAEIgqN9CxINAjxnoRCJIFUlvWzb+oY3uElQL/Vyk3yss0g==}
···
105
128
'@atcute/varint@1.0.3':
106
129
resolution: {integrity: sha512-fdvMPyBB+McDT+Ai5e9RwEbwYV4yjZ60S2Dn5PTjGqUyxvoCH1z42viuheDZRUDkmfQehXJTZ5az7dSozVNtog==}
107
130
108
-
'@atproto-labs/did-resolver@0.2.5':
109
-
resolution: {integrity: sha512-he7EC6OMSifNs01a4RT9mta/yYitoKDzlK9ty2TFV5Uj/+HpB4vYMRdIDFrRW0Hcsehy90E2t/dw0t7361MEKQ==}
110
-
111
-
'@atproto-labs/fetch@0.2.3':
112
-
resolution: {integrity: sha512-NZtbJOCbxKUFRFKMpamT38PUQMY0hX0p7TG5AEYOPhZKZEP7dHZ1K2s1aB8MdVH0qxmqX7nQleNrrvLf09Zfdw==}
113
-
114
-
'@atproto-labs/handle-resolver@0.3.5':
115
-
resolution: {integrity: sha512-r3b+plCh/0arN535Aool9gL6yTSbAPDOyReURbA2TWAaeW4vrSJPwR6yYUx0k0vmVPjkZPIdUVd63bG/+VG5MA==}
116
-
117
-
'@atproto-labs/pipe@0.1.1':
118
-
resolution: {integrity: sha512-hdNw2oUs2B6BN1lp+32pF7cp8EMKuIN5Qok2Vvv/aOpG/3tNSJ9YkvfI0k6Zd188LeDDYRUpYpxcoFIcGH/FNg==}
119
-
120
-
'@atproto-labs/simple-store-memory@0.1.4':
121
-
resolution: {integrity: sha512-3mKY4dP8I7yKPFj9VKpYyCRzGJOi5CEpOLPlRhoJyLmgs3J4RzDrjn323Oakjz2Aj2JzRU/AIvWRAZVhpYNJHw==}
122
-
123
-
'@atproto-labs/simple-store@0.3.0':
124
-
resolution: {integrity: sha512-nOb6ONKBRJHRlukW1sVawUkBqReLlLx6hT35VS3imaNPwiXDxLnTK7lxw3Lrl9k5yugSBDQAkZAq3MPTEFSUBQ==}
125
-
126
-
'@atproto/common-web@0.4.11':
127
-
resolution: {integrity: sha512-VHejNmSABU8/03VrQ3e36AmT5U3UIeio+qSUqCrO1oNgrJcWfGy1rpj0FVtUugWF8Un29+yzkukzWGZfXL70rQ==}
128
-
129
-
'@atproto/common@0.5.7':
130
-
resolution: {integrity: sha512-SSdXo8s1PtyeJyZd/AOocwlMloNQn+6WMwF4DzYihn/dT3Dx+6+WSOx8/Q/xCK4bIG15OTTEyLV+RxpOHmmUnQ==}
131
-
engines: {node: '>=18.7.0'}
132
-
133
-
'@atproto/crypto@0.4.5':
134
-
resolution: {integrity: sha512-n40aKkMoCatP0u9Yvhrdk6fXyOHFDDbkdm4h4HCyWW+KlKl8iXfD5iV+ECq+w5BM+QH25aIpt3/j6EUNerhLxw==}
135
-
engines: {node: '>=18.7.0'}
136
-
137
-
'@atproto/did@0.2.4':
138
-
resolution: {integrity: sha512-nxNiCgXeo7pfjojq9fpfZxCO0X0xUipNVKW+AHNZwQKiUDt6zYL0VXEfm8HBUwQOCmKvj2pRRSM1Cur+tUWk3g==}
139
-
140
-
'@atproto/identity@0.4.10':
141
-
resolution: {integrity: sha512-nQbzDLXOhM8p/wo0cTh5DfMSOSHzj6jizpodX37LJ4S1TZzumSxAjHEZa5Rev3JaoD5uSWMVE0MmKEGWkPPvfQ==}
142
-
engines: {node: '>=18.7.0'}
143
-
144
-
'@atproto/lex-builder@0.0.10':
145
-
resolution: {integrity: sha512-vQ7l9yWdqBxFclNllxWhR38/PNLaPHuLaKcb/qpt5Xh7fw1+dMQwYNG8TYUjdXd1DbAWhWzmG4iejbZcoWP05g==}
146
-
147
-
'@atproto/lex-cbor@0.0.7':
148
-
resolution: {integrity: sha512-thpjx0anzMi4J+o8JuKtyVQNFE+XStFhmYR4qf6mPWFC16MGbvoWnzONwJPTTP2kl6MiFVlQMnsUX7k9XGvxQg==}
149
-
150
-
'@atproto/lex-client@0.0.8':
151
-
resolution: {integrity: sha512-KnqpEzJl8WUQ8u7tTp38FXzYl5namHhB1Ez9rWGq1RqqLQE5dGDtWjSt5Eksx1Pcvi/TEGdZR6BoKakF6Z9P5Q==}
152
-
153
-
'@atproto/lex-data@0.0.7':
154
-
resolution: {integrity: sha512-W/Q5o9o7n2Sv3UywckChu01X5lwQUtaiiOkGJLnRsdkQTyC6813nPgY+p2sG7NwwM+82lu+FUV9fE/Ul3VqaJw==}
155
-
156
-
'@atproto/lex-document@0.0.9':
157
-
resolution: {integrity: sha512-f6vcLvBS3tn/aJf3gv/c2a/FVIulpIZWrXQkNjb6jo2jg2DOJkKBel+6nm4ygaBDUQjSDngZGFMe1eq4e6JJmg==}
158
-
159
-
'@atproto/lex-installer@0.0.10':
160
-
resolution: {integrity: sha512-JpP+Jcf/gXlV+ClkBC972sJmdXsxi3W65PA3A8DQJCtC95kqm/PLoEwGW/YsQEuBcIlWjx3Dc8NVpgiAfp4qTQ==}
161
-
162
-
'@atproto/lex-json@0.0.7':
163
-
resolution: {integrity: sha512-bjNPD5M/MhLfjNM7tcxuls80UgXpHqxdOxDXEUouAtZQV/nIDhGjmNUvKxOmOgnDsiZRnT2g5y3onrnjH3a44g==}
164
-
165
-
'@atproto/lex-resolver@0.0.9':
166
-
resolution: {integrity: sha512-vysKmRCQOdEmys1WUQWNYdwKCmckbFGsIAbyKKCk4oBNz6TkksZKd8ifsW+OIh0a+68lMZZIDiGxeXFgZSdFrA==}
167
-
168
-
'@atproto/lex-schema@0.0.8':
169
-
resolution: {integrity: sha512-Dfx+n0bFJsFofN7sDhftOXXrJ+YRN8q/JXlGFuS9p72ZdrwahNU5Yp1X7yga3vyeEftffxlw0gw8NXIpNbDQmg==}
170
-
171
-
'@atproto/lex@0.0.10':
172
-
resolution: {integrity: sha512-ajmMw4uks1BNO2nS4yMeox08dB7lTPXFTZhGY13OMWSBYetsU42iM0Cm0bw3DJ7gSrS6sRcHgTvSJAKNNpLNqg==}
173
-
hasBin: true
174
-
175
-
'@atproto/lexicon@0.6.0':
176
-
resolution: {integrity: sha512-5veb8aD+J5M0qszLJ+73KSFsFrJBgAY/nM1TSAJvGY7fNc9ZAT+PSUlmIyrdye9YznAZ07yktalls/TwNV7cHQ==}
177
-
178
-
'@atproto/repo@0.8.12':
179
-
resolution: {integrity: sha512-QpVTVulgfz5PUiCTELlDBiRvnsnwrFWi+6CfY88VwXzrRHd9NE8GItK7sfxQ6U65vD/idH8ddCgFrlrsn1REPQ==}
180
-
engines: {node: '>=18.7.0'}
181
-
182
-
'@atproto/syntax@0.4.2':
183
-
resolution: {integrity: sha512-X9XSRPinBy/0VQ677j8VXlBsYSsUXaiqxWVpGGxJYsAhugdQRb0jqaVKJFtm6RskeNkV6y9xclSUi9UYG/COrA==}
184
-
185
131
'@badrap/valita@0.4.6':
186
132
resolution: {integrity: sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==}
187
133
engines: {node: '>= 18'}
···
409
355
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
410
356
engines: {node: '>=18.18'}
411
357
412
-
'@ipld/dag-cbor@7.0.3':
413
-
resolution: {integrity: sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==}
414
-
415
-
'@isaacs/balanced-match@4.0.1':
416
-
resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==}
417
-
engines: {node: 20 || >=22}
418
-
419
-
'@isaacs/brace-expansion@5.0.0':
420
-
resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==}
421
-
engines: {node: 20 || >=22}
422
-
423
358
'@jridgewell/gen-mapping@0.3.13':
424
359
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
425
360
···
436
371
'@jridgewell/trace-mapping@0.3.31':
437
372
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
438
373
439
-
'@noble/curves@1.9.7':
440
-
resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==}
441
-
engines: {node: ^14.21.3 || >=16}
442
-
443
-
'@noble/hashes@1.8.0':
444
-
resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==}
445
-
engines: {node: ^14.21.3 || >=16}
374
+
'@noble/secp256k1@3.0.0':
375
+
resolution: {integrity: sha512-NJBaR352KyIvj3t6sgT/+7xrNyF9Xk9QlLSIqUGVUYlsnDTAUqY8LOmwpcgEx4AMJXRITQ5XEVHD+mMaPfr3mg==}
446
376
447
377
'@rollup/rollup-android-arm-eabi@4.55.1':
448
378
resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==}
···
592
522
svelte: ^5.0.0
593
523
vite: ^6.3.0 || ^7.0.0
594
524
595
-
'@ts-morph/common@0.28.1':
596
-
resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==}
525
+
'@tailwindcss/node@4.1.18':
526
+
resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==}
527
+
528
+
'@tailwindcss/oxide-android-arm64@4.1.18':
529
+
resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==}
530
+
engines: {node: '>= 10'}
531
+
cpu: [arm64]
532
+
os: [android]
533
+
534
+
'@tailwindcss/oxide-darwin-arm64@4.1.18':
535
+
resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==}
536
+
engines: {node: '>= 10'}
537
+
cpu: [arm64]
538
+
os: [darwin]
539
+
540
+
'@tailwindcss/oxide-darwin-x64@4.1.18':
541
+
resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==}
542
+
engines: {node: '>= 10'}
543
+
cpu: [x64]
544
+
os: [darwin]
545
+
546
+
'@tailwindcss/oxide-freebsd-x64@4.1.18':
547
+
resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==}
548
+
engines: {node: '>= 10'}
549
+
cpu: [x64]
550
+
os: [freebsd]
551
+
552
+
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18':
553
+
resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==}
554
+
engines: {node: '>= 10'}
555
+
cpu: [arm]
556
+
os: [linux]
557
+
558
+
'@tailwindcss/oxide-linux-arm64-gnu@4.1.18':
559
+
resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==}
560
+
engines: {node: '>= 10'}
561
+
cpu: [arm64]
562
+
os: [linux]
563
+
564
+
'@tailwindcss/oxide-linux-arm64-musl@4.1.18':
565
+
resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==}
566
+
engines: {node: '>= 10'}
567
+
cpu: [arm64]
568
+
os: [linux]
569
+
570
+
'@tailwindcss/oxide-linux-x64-gnu@4.1.18':
571
+
resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==}
572
+
engines: {node: '>= 10'}
573
+
cpu: [x64]
574
+
os: [linux]
575
+
576
+
'@tailwindcss/oxide-linux-x64-musl@4.1.18':
577
+
resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==}
578
+
engines: {node: '>= 10'}
579
+
cpu: [x64]
580
+
os: [linux]
581
+
582
+
'@tailwindcss/oxide-wasm32-wasi@4.1.18':
583
+
resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==}
584
+
engines: {node: '>=14.0.0'}
585
+
cpu: [wasm32]
586
+
bundledDependencies:
587
+
- '@napi-rs/wasm-runtime'
588
+
- '@emnapi/core'
589
+
- '@emnapi/runtime'
590
+
- '@tybys/wasm-util'
591
+
- '@emnapi/wasi-threads'
592
+
- tslib
593
+
594
+
'@tailwindcss/oxide-win32-arm64-msvc@4.1.18':
595
+
resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==}
596
+
engines: {node: '>= 10'}
597
+
cpu: [arm64]
598
+
os: [win32]
599
+
600
+
'@tailwindcss/oxide-win32-x64-msvc@4.1.18':
601
+
resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==}
602
+
engines: {node: '>= 10'}
603
+
cpu: [x64]
604
+
os: [win32]
605
+
606
+
'@tailwindcss/oxide@4.1.18':
607
+
resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==}
608
+
engines: {node: '>= 10'}
609
+
610
+
'@tailwindcss/vite@4.1.18':
611
+
resolution: {integrity: sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==}
612
+
peerDependencies:
613
+
vite: ^5.2.0 || ^6 || ^7
597
614
598
615
'@tsconfig/svelte@5.0.6':
599
616
resolution: {integrity: sha512-yGxYL0I9eETH1/DR9qVJey4DAsCdeau4a9wYPKuXfEhm8lFO8wg+LLYJjIpAm6Fw7HSlhepPhYPDop75485yWQ==}
···
666
683
resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==}
667
684
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
668
685
669
-
abort-controller@3.0.0:
670
-
resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
671
-
engines: {node: '>=6.5'}
672
-
673
686
acorn-jsx@5.3.2:
674
687
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
675
688
peerDependencies:
···
683
696
ajv@6.12.6:
684
697
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
685
698
686
-
ansi-regex@5.0.1:
687
-
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
688
-
engines: {node: '>=8'}
689
-
690
699
ansi-styles@4.3.0:
691
700
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
692
701
engines: {node: '>=8'}
···
698
707
resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
699
708
engines: {node: '>= 0.4'}
700
709
701
-
atomic-sleep@1.0.0:
702
-
resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
703
-
engines: {node: '>=8.0.0'}
704
-
705
710
axobject-query@4.1.0:
706
711
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
707
712
engines: {node: '>= 0.4'}
···
709
714
balanced-match@1.0.2:
710
715
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
711
716
712
-
base64-js@1.5.1:
713
-
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
714
-
715
717
brace-expansion@1.1.12:
716
718
resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
717
719
718
720
brace-expansion@2.0.2:
719
721
resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
720
-
721
-
buffer@6.0.3:
722
-
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
723
722
724
723
callsites@3.1.0:
725
724
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
726
725
engines: {node: '>=6'}
727
726
728
-
cborg@1.10.2:
729
-
resolution: {integrity: sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==}
730
-
hasBin: true
731
-
732
727
chalk@4.1.2:
733
728
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
734
729
engines: {node: '>=10'}
···
737
732
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
738
733
engines: {node: '>= 14.16.0'}
739
734
740
-
cliui@8.0.1:
741
-
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
742
-
engines: {node: '>=12'}
743
-
744
735
clsx@2.1.1:
745
736
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
746
737
engines: {node: '>=6'}
747
738
748
-
code-block-writer@13.0.3:
749
-
resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==}
750
-
751
739
color-convert@2.0.1:
752
740
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
753
741
engines: {node: '>=7.0.0'}
···
757
745
758
746
concat-map@0.0.1:
759
747
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
760
-
761
-
core-js@3.47.0:
762
-
resolution: {integrity: sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==}
763
748
764
749
cross-spawn@7.0.6:
765
750
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
···
770
755
engines: {node: '>=4'}
771
756
hasBin: true
772
757
758
+
daisyui@5.5.14:
759
+
resolution: {integrity: sha512-L47rvw7I7hK68TA97VB8Ee0woHew+/ohR6Lx6Ah/krfISOqcG4My7poNpX5Mo5/ytMxiR40fEaz6njzDi7cuSg==}
760
+
773
761
debug@4.4.3:
774
762
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
775
763
engines: {node: '>=6.0'}
···
786
774
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
787
775
engines: {node: '>=0.10.0'}
788
776
777
+
detect-libc@2.1.2:
778
+
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
779
+
engines: {node: '>=8'}
780
+
789
781
devalue@5.6.1:
790
782
resolution: {integrity: sha512-jDwizj+IlEZBunHcOuuFVBnIMPAEHvTsJj0BcIp94xYguLRVBcXO853px/MyIJvbVzWdsGvrRweIUWJw8hBP7A==}
791
783
792
-
emoji-regex@8.0.0:
793
-
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
784
+
enhanced-resolve@5.18.4:
785
+
resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==}
786
+
engines: {node: '>=10.13.0'}
794
787
795
788
esbuild@0.27.2:
796
789
resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==}
797
790
engines: {node: '>=18'}
798
791
hasBin: true
799
-
800
-
escalade@3.2.0:
801
-
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
802
-
engines: {node: '>=6'}
803
792
804
793
escape-string-regexp@4.0.0:
805
794
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
···
863
852
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
864
853
engines: {node: '>=0.10.0'}
865
854
866
-
event-target-shim@5.0.1:
867
-
resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
868
-
engines: {node: '>=6'}
869
-
870
-
events@3.3.0:
871
-
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
872
-
engines: {node: '>=0.8.x'}
873
-
874
855
fast-deep-equal@3.1.3:
875
856
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
876
857
···
879
860
880
861
fast-levenshtein@2.0.6:
881
862
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
882
-
883
-
fast-redact@3.5.0:
884
-
resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==}
885
-
engines: {node: '>=6'}
886
863
887
864
fdir@6.5.0:
888
865
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
···
913
890
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
914
891
os: [darwin]
915
892
916
-
get-caller-file@2.0.5:
917
-
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
918
-
engines: {node: 6.* || 8.* || >= 10.*}
919
-
920
893
glob-parent@6.0.2:
921
894
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
922
895
engines: {node: '>=10.13.0'}
···
933
906
resolution: {integrity: sha512-gv5BeD2EssA793rlFWVPMMCqefTlpusw6/2TbAVMy0FzcG8wKJn4O+NqJ4+XWmmwrayJgw5TzrmWjFgmz1XPqw==}
934
907
engines: {node: '>=18'}
935
908
909
+
graceful-fs@4.2.11:
910
+
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
911
+
936
912
has-flag@4.0.0:
937
913
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
938
914
engines: {node: '>=8'}
939
-
940
-
ieee754@1.2.1:
941
-
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
942
915
943
916
ignore@5.3.2:
944
917
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
···
960
933
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
961
934
engines: {node: '>=0.10.0'}
962
935
963
-
is-fullwidth-code-point@3.0.0:
964
-
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
965
-
engines: {node: '>=8'}
966
-
967
936
is-glob@4.0.3:
968
937
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
969
938
engines: {node: '>=0.10.0'}
···
974
943
isexe@2.0.0:
975
944
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
976
945
977
-
iso-datestring-validator@2.2.2:
978
-
resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==}
946
+
jiti@2.6.1:
947
+
resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
948
+
hasBin: true
979
949
980
950
js-yaml@4.1.1:
981
951
resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
···
1000
970
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1001
971
engines: {node: '>= 0.8.0'}
1002
972
973
+
lightningcss-android-arm64@1.30.2:
974
+
resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==}
975
+
engines: {node: '>= 12.0.0'}
976
+
cpu: [arm64]
977
+
os: [android]
978
+
979
+
lightningcss-darwin-arm64@1.30.2:
980
+
resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==}
981
+
engines: {node: '>= 12.0.0'}
982
+
cpu: [arm64]
983
+
os: [darwin]
984
+
985
+
lightningcss-darwin-x64@1.30.2:
986
+
resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==}
987
+
engines: {node: '>= 12.0.0'}
988
+
cpu: [x64]
989
+
os: [darwin]
990
+
991
+
lightningcss-freebsd-x64@1.30.2:
992
+
resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==}
993
+
engines: {node: '>= 12.0.0'}
994
+
cpu: [x64]
995
+
os: [freebsd]
996
+
997
+
lightningcss-linux-arm-gnueabihf@1.30.2:
998
+
resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==}
999
+
engines: {node: '>= 12.0.0'}
1000
+
cpu: [arm]
1001
+
os: [linux]
1002
+
1003
+
lightningcss-linux-arm64-gnu@1.30.2:
1004
+
resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
1005
+
engines: {node: '>= 12.0.0'}
1006
+
cpu: [arm64]
1007
+
os: [linux]
1008
+
1009
+
lightningcss-linux-arm64-musl@1.30.2:
1010
+
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
1011
+
engines: {node: '>= 12.0.0'}
1012
+
cpu: [arm64]
1013
+
os: [linux]
1014
+
1015
+
lightningcss-linux-x64-gnu@1.30.2:
1016
+
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
1017
+
engines: {node: '>= 12.0.0'}
1018
+
cpu: [x64]
1019
+
os: [linux]
1020
+
1021
+
lightningcss-linux-x64-musl@1.30.2:
1022
+
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
1023
+
engines: {node: '>= 12.0.0'}
1024
+
cpu: [x64]
1025
+
os: [linux]
1026
+
1027
+
lightningcss-win32-arm64-msvc@1.30.2:
1028
+
resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
1029
+
engines: {node: '>= 12.0.0'}
1030
+
cpu: [arm64]
1031
+
os: [win32]
1032
+
1033
+
lightningcss-win32-x64-msvc@1.30.2:
1034
+
resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==}
1035
+
engines: {node: '>= 12.0.0'}
1036
+
cpu: [x64]
1037
+
os: [win32]
1038
+
1039
+
lightningcss@1.30.2:
1040
+
resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==}
1041
+
engines: {node: '>= 12.0.0'}
1042
+
1003
1043
lilconfig@2.1.0:
1004
1044
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
1005
1045
engines: {node: '>=10'}
···
1014
1054
lodash.merge@4.6.2:
1015
1055
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1016
1056
1017
-
lru-cache@10.4.3:
1018
-
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
1019
-
1020
1057
magic-string@0.30.21:
1021
1058
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
1022
-
1023
-
minimatch@10.1.1:
1024
-
resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==}
1025
-
engines: {node: 20 || >=22}
1026
1059
1027
1060
minimatch@3.1.2:
1028
1061
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
···
1038
1071
ms@2.1.3:
1039
1072
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1040
1073
1041
-
multiformats@9.9.0:
1042
-
resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==}
1043
-
1044
1074
nanoid@3.3.11:
1045
1075
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
1046
1076
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
···
1052
1082
obug@2.1.1:
1053
1083
resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
1054
1084
1055
-
on-exit-leak-free@2.1.2:
1056
-
resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
1057
-
engines: {node: '>=14.0.0'}
1058
-
1059
1085
optionator@0.9.4:
1060
1086
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
1061
1087
engines: {node: '>= 0.8.0'}
···
1072
1098
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1073
1099
engines: {node: '>=6'}
1074
1100
1075
-
path-browserify@1.0.1:
1076
-
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
1077
-
1078
1101
path-exists@4.0.0:
1079
1102
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1080
1103
engines: {node: '>=8'}
···
1090
1113
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
1091
1114
engines: {node: '>=12'}
1092
1115
1093
-
pino-abstract-transport@1.2.0:
1094
-
resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==}
1095
-
1096
-
pino-std-serializers@6.2.2:
1097
-
resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==}
1098
-
1099
-
pino@8.21.0:
1100
-
resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==}
1101
-
hasBin: true
1102
-
1103
1116
postcss-load-config@3.1.4:
1104
1117
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
1105
1118
engines: {node: '>= 10'}
···
1136
1149
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1137
1150
engines: {node: '>= 0.8.0'}
1138
1151
1139
-
prettier@3.7.4:
1140
-
resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==}
1141
-
engines: {node: '>=14'}
1142
-
hasBin: true
1143
-
1144
-
process-warning@3.0.0:
1145
-
resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==}
1146
-
1147
-
process@0.11.10:
1148
-
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
1149
-
engines: {node: '>= 0.6.0'}
1150
-
1151
1152
punycode@2.3.1:
1152
1153
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1153
1154
engines: {node: '>=6'}
1154
1155
1155
-
quick-format-unescaped@4.0.4:
1156
-
resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
1157
-
1158
-
readable-stream@4.7.0:
1159
-
resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==}
1160
-
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1161
-
1162
1156
readdirp@4.1.2:
1163
1157
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
1164
1158
engines: {node: '>= 14.18.0'}
1165
1159
1166
-
real-require@0.2.0:
1167
-
resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
1168
-
engines: {node: '>= 12.13.0'}
1169
-
1170
-
require-directory@2.1.1:
1171
-
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
1172
-
engines: {node: '>=0.10.0'}
1173
-
1174
1160
resolve-from@4.0.0:
1175
1161
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1176
1162
engines: {node: '>=4'}
···
1184
1170
resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
1185
1171
engines: {node: '>=6'}
1186
1172
1187
-
safe-buffer@5.2.1:
1188
-
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
1189
-
1190
-
safe-stable-stringify@2.5.0:
1191
-
resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
1192
-
engines: {node: '>=10'}
1193
-
1194
1173
semver@7.7.3:
1195
1174
resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
1196
1175
engines: {node: '>=10'}
···
1204
1183
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1205
1184
engines: {node: '>=8'}
1206
1185
1207
-
sonic-boom@3.8.1:
1208
-
resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==}
1209
-
1210
1186
source-map-js@1.2.1:
1211
1187
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
1212
1188
engines: {node: '>=0.10.0'}
1213
1189
1214
-
split2@4.2.0:
1215
-
resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
1216
-
engines: {node: '>= 10.x'}
1217
-
1218
-
string-width@4.2.3:
1219
-
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1220
-
engines: {node: '>=8'}
1221
-
1222
-
string_decoder@1.3.0:
1223
-
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
1224
-
1225
-
strip-ansi@6.0.1:
1226
-
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1227
-
engines: {node: '>=8'}
1228
-
1229
1190
strip-json-comments@3.1.1:
1230
1191
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1231
1192
engines: {node: '>=8'}
···
1255
1216
resolution: {integrity: sha512-ynjfCHD3nP2el70kN5Pmg37sSi0EjOm9FgHYQdC4giWG/hzO3AatzXXJJgP305uIhGQxSufJLuYWtkY8uK/8RA==}
1256
1217
engines: {node: '>=18'}
1257
1218
1258
-
thread-stream@2.7.0:
1259
-
resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==}
1219
+
tailwindcss@4.1.18:
1220
+
resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==}
1221
+
1222
+
tapable@2.3.0:
1223
+
resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==}
1224
+
engines: {node: '>=6'}
1260
1225
1261
1226
tinyglobby@0.2.15:
1262
1227
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
···
1267
1232
engines: {node: '>=18.12'}
1268
1233
peerDependencies:
1269
1234
typescript: '>=4.8.4'
1270
-
1271
-
ts-morph@27.0.2:
1272
-
resolution: {integrity: sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==}
1273
-
1274
-
tslib@2.8.1:
1275
-
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
1276
1235
1277
1236
type-check@0.4.0:
1278
1237
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
···
1290
1249
engines: {node: '>=14.17'}
1291
1250
hasBin: true
1292
1251
1293
-
uint8arrays@3.0.0:
1294
-
resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==}
1295
-
1296
1252
undici-types@7.16.0:
1297
1253
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
1298
1254
···
1304
1260
1305
1261
util-deprecate@1.0.2:
1306
1262
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1307
-
1308
-
varint@6.0.0:
1309
-
resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==}
1310
1263
1311
1264
vite@7.3.1:
1312
1265
resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==}
···
1365
1318
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
1366
1319
engines: {node: '>=0.10.0'}
1367
1320
1368
-
wrap-ansi@7.0.0:
1369
-
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
1370
-
engines: {node: '>=10'}
1371
-
1372
-
y18n@5.0.8:
1373
-
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
1374
-
engines: {node: '>=10'}
1375
-
1376
1321
yaml@1.10.2:
1377
1322
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
1378
1323
engines: {node: '>= 6'}
1379
1324
1380
-
yargs-parser@21.1.1:
1381
-
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
1382
-
engines: {node: '>=12'}
1383
-
1384
-
yargs@17.7.2:
1385
-
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
1386
-
engines: {node: '>=12'}
1387
-
1388
1325
yocto-queue@0.1.0:
1389
1326
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1390
1327
engines: {node: '>=10'}
1391
1328
1392
1329
zimmerframe@1.1.4:
1393
1330
resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==}
1394
-
1395
-
zod@3.25.76:
1396
-
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
1397
1331
1398
1332
snapshots:
1399
1333
···
1424
1358
'@atcute/identity': 1.1.3
1425
1359
'@atcute/lexicons': 1.2.6
1426
1360
1361
+
'@atcute/crypto@2.3.0':
1362
+
dependencies:
1363
+
'@atcute/multibase': 1.1.6
1364
+
'@atcute/uint8array': 1.0.6
1365
+
'@noble/secp256k1': 3.0.0
1366
+
1367
+
'@atcute/identity-resolver@1.2.2(@atcute/identity@1.1.3)':
1368
+
dependencies:
1369
+
'@atcute/identity': 1.1.3
1370
+
'@atcute/lexicons': 1.2.6
1371
+
'@atcute/util-fetch': 1.0.5
1372
+
'@badrap/valita': 0.4.6
1373
+
1427
1374
'@atcute/identity@1.1.3':
1428
1375
dependencies:
1429
1376
'@atcute/lexicons': 1.2.6
···
1436
1383
'@standard-schema/spec': 1.1.0
1437
1384
esm-env: 1.2.2
1438
1385
1439
-
'@atcute/multibase@1.1.6':
1386
+
'@atcute/mst@0.1.1':
1440
1387
dependencies:
1388
+
'@atcute/cbor': 2.2.8
1389
+
'@atcute/cid': 2.3.0
1441
1390
'@atcute/uint8array': 1.0.6
1442
1391
1443
-
'@atcute/uint8array@1.0.6': {}
1444
-
1445
-
'@atcute/util-text@0.0.1':
1392
+
'@atcute/multibase@1.1.6':
1446
1393
dependencies:
1447
-
unicode-segmenter: 0.14.5
1448
-
1449
-
'@atcute/varint@1.0.3': {}
1394
+
'@atcute/uint8array': 1.0.6
1450
1395
1451
-
'@atproto-labs/did-resolver@0.2.5':
1396
+
'@atcute/repo@0.1.1':
1452
1397
dependencies:
1453
-
'@atproto-labs/fetch': 0.2.3
1454
-
'@atproto-labs/pipe': 0.1.1
1455
-
'@atproto-labs/simple-store': 0.3.0
1456
-
'@atproto-labs/simple-store-memory': 0.1.4
1457
-
'@atproto/did': 0.2.4
1458
-
zod: 3.25.76
1459
-
1460
-
'@atproto-labs/fetch@0.2.3':
1461
-
dependencies:
1462
-
'@atproto-labs/pipe': 0.1.1
1463
-
1464
-
'@atproto-labs/handle-resolver@0.3.5':
1465
-
dependencies:
1466
-
'@atproto-labs/simple-store': 0.3.0
1467
-
'@atproto-labs/simple-store-memory': 0.1.4
1468
-
'@atproto/did': 0.2.4
1469
-
zod: 3.25.76
1470
-
1471
-
'@atproto-labs/pipe@0.1.1': {}
1472
-
1473
-
'@atproto-labs/simple-store-memory@0.1.4':
1474
-
dependencies:
1475
-
'@atproto-labs/simple-store': 0.3.0
1476
-
lru-cache: 10.4.3
1477
-
1478
-
'@atproto-labs/simple-store@0.3.0': {}
1479
-
1480
-
'@atproto/common-web@0.4.11':
1481
-
dependencies:
1482
-
'@atproto/lex-data': 0.0.7
1483
-
'@atproto/lex-json': 0.0.7
1484
-
zod: 3.25.76
1485
-
1486
-
'@atproto/common@0.5.7':
1487
-
dependencies:
1488
-
'@atproto/common-web': 0.4.11
1489
-
'@atproto/lex-cbor': 0.0.7
1490
-
'@atproto/lex-data': 0.0.7
1491
-
iso-datestring-validator: 2.2.2
1492
-
multiformats: 9.9.0
1493
-
pino: 8.21.0
1494
-
1495
-
'@atproto/crypto@0.4.5':
1496
-
dependencies:
1497
-
'@noble/curves': 1.9.7
1498
-
'@noble/hashes': 1.8.0
1499
-
uint8arrays: 3.0.0
1500
-
1501
-
'@atproto/did@0.2.4':
1502
-
dependencies:
1503
-
zod: 3.25.76
1504
-
1505
-
'@atproto/identity@0.4.10':
1506
-
dependencies:
1507
-
'@atproto/common-web': 0.4.11
1508
-
'@atproto/crypto': 0.4.5
1509
-
1510
-
'@atproto/lex-builder@0.0.10':
1511
-
dependencies:
1512
-
'@atproto/lex-document': 0.0.9
1513
-
'@atproto/lex-schema': 0.0.8
1514
-
prettier: 3.7.4
1515
-
ts-morph: 27.0.2
1516
-
tslib: 2.8.1
1398
+
'@atcute/car': 5.0.0
1399
+
'@atcute/cbor': 2.2.8
1400
+
'@atcute/cid': 2.3.0
1401
+
'@atcute/crypto': 2.3.0
1402
+
'@atcute/lexicons': 1.2.6
1403
+
'@atcute/mst': 0.1.1
1404
+
'@atcute/uint8array': 1.0.6
1517
1405
1518
-
'@atproto/lex-cbor@0.0.7':
1519
-
dependencies:
1520
-
'@atproto/lex-data': 0.0.7
1521
-
tslib: 2.8.1
1406
+
'@atcute/uint8array@1.0.6': {}
1522
1407
1523
-
'@atproto/lex-client@0.0.8':
1408
+
'@atcute/util-fetch@1.0.5':
1524
1409
dependencies:
1525
-
'@atproto/lex-data': 0.0.7
1526
-
'@atproto/lex-json': 0.0.7
1527
-
'@atproto/lex-schema': 0.0.8
1528
-
tslib: 2.8.1
1410
+
'@badrap/valita': 0.4.6
1529
1411
1530
-
'@atproto/lex-data@0.0.7':
1412
+
'@atcute/util-text@0.0.1':
1531
1413
dependencies:
1532
-
'@atproto/syntax': 0.4.2
1533
-
multiformats: 9.9.0
1534
-
tslib: 2.8.1
1535
-
uint8arrays: 3.0.0
1536
1414
unicode-segmenter: 0.14.5
1537
1415
1538
-
'@atproto/lex-document@0.0.9':
1539
-
dependencies:
1540
-
'@atproto/lex-schema': 0.0.8
1541
-
core-js: 3.47.0
1542
-
tslib: 2.8.1
1543
-
1544
-
'@atproto/lex-installer@0.0.10':
1545
-
dependencies:
1546
-
'@atproto/lex-builder': 0.0.10
1547
-
'@atproto/lex-cbor': 0.0.7
1548
-
'@atproto/lex-data': 0.0.7
1549
-
'@atproto/lex-document': 0.0.9
1550
-
'@atproto/lex-resolver': 0.0.9
1551
-
'@atproto/lex-schema': 0.0.8
1552
-
'@atproto/syntax': 0.4.2
1553
-
tslib: 2.8.1
1554
-
1555
-
'@atproto/lex-json@0.0.7':
1556
-
dependencies:
1557
-
'@atproto/lex-data': 0.0.7
1558
-
tslib: 2.8.1
1559
-
1560
-
'@atproto/lex-resolver@0.0.9':
1561
-
dependencies:
1562
-
'@atproto-labs/did-resolver': 0.2.5
1563
-
'@atproto/crypto': 0.4.5
1564
-
'@atproto/lex-client': 0.0.8
1565
-
'@atproto/lex-data': 0.0.7
1566
-
'@atproto/lex-document': 0.0.9
1567
-
'@atproto/lex-schema': 0.0.8
1568
-
'@atproto/repo': 0.8.12
1569
-
'@atproto/syntax': 0.4.2
1570
-
tslib: 2.8.1
1571
-
1572
-
'@atproto/lex-schema@0.0.8':
1573
-
dependencies:
1574
-
'@atproto/lex-data': 0.0.7
1575
-
'@atproto/syntax': 0.4.2
1576
-
tslib: 2.8.1
1577
-
1578
-
'@atproto/lex@0.0.10':
1579
-
dependencies:
1580
-
'@atproto/lex-builder': 0.0.10
1581
-
'@atproto/lex-client': 0.0.8
1582
-
'@atproto/lex-data': 0.0.7
1583
-
'@atproto/lex-installer': 0.0.10
1584
-
'@atproto/lex-json': 0.0.7
1585
-
'@atproto/lex-schema': 0.0.8
1586
-
tslib: 2.8.1
1587
-
yargs: 17.7.2
1588
-
1589
-
'@atproto/lexicon@0.6.0':
1590
-
dependencies:
1591
-
'@atproto/common-web': 0.4.11
1592
-
'@atproto/syntax': 0.4.2
1593
-
iso-datestring-validator: 2.2.2
1594
-
multiformats: 9.9.0
1595
-
zod: 3.25.76
1596
-
1597
-
'@atproto/repo@0.8.12':
1598
-
dependencies:
1599
-
'@atproto/common': 0.5.7
1600
-
'@atproto/common-web': 0.4.11
1601
-
'@atproto/crypto': 0.4.5
1602
-
'@atproto/lexicon': 0.6.0
1603
-
'@ipld/dag-cbor': 7.0.3
1604
-
multiformats: 9.9.0
1605
-
uint8arrays: 3.0.0
1606
-
varint: 6.0.0
1607
-
zod: 3.25.76
1608
-
1609
-
'@atproto/syntax@0.4.2': {}
1416
+
'@atcute/varint@1.0.3': {}
1610
1417
1611
1418
'@badrap/valita@0.4.6': {}
1612
1419
···
1688
1495
'@esbuild/win32-x64@0.27.2':
1689
1496
optional: true
1690
1497
1691
-
'@eslint-community/eslint-utils@4.9.1(eslint@9.39.2)':
1498
+
'@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))':
1692
1499
dependencies:
1693
-
eslint: 9.39.2
1500
+
eslint: 9.39.2(jiti@2.6.1)
1694
1501
eslint-visitor-keys: 3.4.3
1695
1502
1696
1503
'@eslint-community/regexpp@4.12.2': {}
1697
1504
1698
-
'@eslint/compat@2.0.0(eslint@9.39.2)':
1505
+
'@eslint/compat@2.0.0(eslint@9.39.2(jiti@2.6.1))':
1699
1506
dependencies:
1700
1507
'@eslint/core': 1.0.0
1701
1508
optionalDependencies:
1702
-
eslint: 9.39.2
1509
+
eslint: 9.39.2(jiti@2.6.1)
1703
1510
1704
1511
'@eslint/config-array@0.21.1':
1705
1512
dependencies:
···
1755
1562
1756
1563
'@humanwhocodes/retry@0.4.3': {}
1757
1564
1758
-
'@ipld/dag-cbor@7.0.3':
1759
-
dependencies:
1760
-
cborg: 1.10.2
1761
-
multiformats: 9.9.0
1762
-
1763
-
'@isaacs/balanced-match@4.0.1': {}
1764
-
1765
-
'@isaacs/brace-expansion@5.0.0':
1766
-
dependencies:
1767
-
'@isaacs/balanced-match': 4.0.1
1768
-
1769
1565
'@jridgewell/gen-mapping@0.3.13':
1770
1566
dependencies:
1771
1567
'@jridgewell/sourcemap-codec': 1.5.5
···
1785
1581
'@jridgewell/resolve-uri': 3.1.2
1786
1582
'@jridgewell/sourcemap-codec': 1.5.5
1787
1583
1788
-
'@noble/curves@1.9.7':
1789
-
dependencies:
1790
-
'@noble/hashes': 1.8.0
1791
-
1792
-
'@noble/hashes@1.8.0': {}
1584
+
'@noble/secp256k1@3.0.0': {}
1793
1585
1794
1586
'@rollup/rollup-android-arm-eabi@4.55.1':
1795
1587
optional: true
···
1872
1664
dependencies:
1873
1665
acorn: 8.15.0
1874
1666
1875
-
'@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)))(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4))':
1667
+
'@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2))':
1876
1668
dependencies:
1877
-
'@sveltejs/vite-plugin-svelte': 6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4))
1669
+
'@sveltejs/vite-plugin-svelte': 6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2))
1878
1670
obug: 2.1.1
1879
1671
svelte: 5.46.1
1880
-
vite: 7.3.1(@types/node@24.10.4)
1672
+
vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)
1881
1673
1882
-
'@sveltejs/vite-plugin-svelte@6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4))':
1674
+
'@sveltejs/vite-plugin-svelte@6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2))':
1883
1675
dependencies:
1884
-
'@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)))(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4))
1676
+
'@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2))
1885
1677
deepmerge: 4.3.1
1886
1678
magic-string: 0.30.21
1887
1679
obug: 2.1.1
1888
1680
svelte: 5.46.1
1889
-
vite: 7.3.1(@types/node@24.10.4)
1890
-
vitefu: 1.1.1(vite@7.3.1(@types/node@24.10.4))
1681
+
vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)
1682
+
vitefu: 1.1.1(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2))
1683
+
1684
+
'@tailwindcss/node@4.1.18':
1685
+
dependencies:
1686
+
'@jridgewell/remapping': 2.3.5
1687
+
enhanced-resolve: 5.18.4
1688
+
jiti: 2.6.1
1689
+
lightningcss: 1.30.2
1690
+
magic-string: 0.30.21
1691
+
source-map-js: 1.2.1
1692
+
tailwindcss: 4.1.18
1693
+
1694
+
'@tailwindcss/oxide-android-arm64@4.1.18':
1695
+
optional: true
1696
+
1697
+
'@tailwindcss/oxide-darwin-arm64@4.1.18':
1698
+
optional: true
1891
1699
1892
-
'@ts-morph/common@0.28.1':
1700
+
'@tailwindcss/oxide-darwin-x64@4.1.18':
1701
+
optional: true
1702
+
1703
+
'@tailwindcss/oxide-freebsd-x64@4.1.18':
1704
+
optional: true
1705
+
1706
+
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18':
1707
+
optional: true
1708
+
1709
+
'@tailwindcss/oxide-linux-arm64-gnu@4.1.18':
1710
+
optional: true
1711
+
1712
+
'@tailwindcss/oxide-linux-arm64-musl@4.1.18':
1713
+
optional: true
1714
+
1715
+
'@tailwindcss/oxide-linux-x64-gnu@4.1.18':
1716
+
optional: true
1717
+
1718
+
'@tailwindcss/oxide-linux-x64-musl@4.1.18':
1719
+
optional: true
1720
+
1721
+
'@tailwindcss/oxide-wasm32-wasi@4.1.18':
1722
+
optional: true
1723
+
1724
+
'@tailwindcss/oxide-win32-arm64-msvc@4.1.18':
1725
+
optional: true
1726
+
1727
+
'@tailwindcss/oxide-win32-x64-msvc@4.1.18':
1728
+
optional: true
1729
+
1730
+
'@tailwindcss/oxide@4.1.18':
1731
+
optionalDependencies:
1732
+
'@tailwindcss/oxide-android-arm64': 4.1.18
1733
+
'@tailwindcss/oxide-darwin-arm64': 4.1.18
1734
+
'@tailwindcss/oxide-darwin-x64': 4.1.18
1735
+
'@tailwindcss/oxide-freebsd-x64': 4.1.18
1736
+
'@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18
1737
+
'@tailwindcss/oxide-linux-arm64-gnu': 4.1.18
1738
+
'@tailwindcss/oxide-linux-arm64-musl': 4.1.18
1739
+
'@tailwindcss/oxide-linux-x64-gnu': 4.1.18
1740
+
'@tailwindcss/oxide-linux-x64-musl': 4.1.18
1741
+
'@tailwindcss/oxide-wasm32-wasi': 4.1.18
1742
+
'@tailwindcss/oxide-win32-arm64-msvc': 4.1.18
1743
+
'@tailwindcss/oxide-win32-x64-msvc': 4.1.18
1744
+
1745
+
'@tailwindcss/vite@4.1.18(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2))':
1893
1746
dependencies:
1894
-
minimatch: 10.1.1
1895
-
path-browserify: 1.0.1
1896
-
tinyglobby: 0.2.15
1747
+
'@tailwindcss/node': 4.1.18
1748
+
'@tailwindcss/oxide': 4.1.18
1749
+
tailwindcss: 4.1.18
1750
+
vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)
1897
1751
1898
1752
'@tsconfig/svelte@5.0.6': {}
1899
1753
···
1905
1759
dependencies:
1906
1760
undici-types: 7.16.0
1907
1761
1908
-
'@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)':
1762
+
'@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
1909
1763
dependencies:
1910
1764
'@eslint-community/regexpp': 4.12.2
1911
-
'@typescript-eslint/parser': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
1765
+
'@typescript-eslint/parser': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
1912
1766
'@typescript-eslint/scope-manager': 8.52.0
1913
-
'@typescript-eslint/type-utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
1914
-
'@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
1767
+
'@typescript-eslint/type-utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
1768
+
'@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
1915
1769
'@typescript-eslint/visitor-keys': 8.52.0
1916
-
eslint: 9.39.2
1770
+
eslint: 9.39.2(jiti@2.6.1)
1917
1771
ignore: 7.0.5
1918
1772
natural-compare: 1.4.0
1919
1773
ts-api-utils: 2.4.0(typescript@5.9.3)
···
1921
1775
transitivePeerDependencies:
1922
1776
- supports-color
1923
1777
1924
-
'@typescript-eslint/parser@8.52.0(eslint@9.39.2)(typescript@5.9.3)':
1778
+
'@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
1925
1779
dependencies:
1926
1780
'@typescript-eslint/scope-manager': 8.52.0
1927
1781
'@typescript-eslint/types': 8.52.0
1928
1782
'@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3)
1929
1783
'@typescript-eslint/visitor-keys': 8.52.0
1930
1784
debug: 4.4.3
1931
-
eslint: 9.39.2
1785
+
eslint: 9.39.2(jiti@2.6.1)
1932
1786
typescript: 5.9.3
1933
1787
transitivePeerDependencies:
1934
1788
- supports-color
···
1951
1805
dependencies:
1952
1806
typescript: 5.9.3
1953
1807
1954
-
'@typescript-eslint/type-utils@8.52.0(eslint@9.39.2)(typescript@5.9.3)':
1808
+
'@typescript-eslint/type-utils@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
1955
1809
dependencies:
1956
1810
'@typescript-eslint/types': 8.52.0
1957
1811
'@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3)
1958
-
'@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
1812
+
'@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
1959
1813
debug: 4.4.3
1960
-
eslint: 9.39.2
1814
+
eslint: 9.39.2(jiti@2.6.1)
1961
1815
ts-api-utils: 2.4.0(typescript@5.9.3)
1962
1816
typescript: 5.9.3
1963
1817
transitivePeerDependencies:
···
1980
1834
transitivePeerDependencies:
1981
1835
- supports-color
1982
1836
1983
-
'@typescript-eslint/utils@8.52.0(eslint@9.39.2)(typescript@5.9.3)':
1837
+
'@typescript-eslint/utils@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
1984
1838
dependencies:
1985
-
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2)
1839
+
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1))
1986
1840
'@typescript-eslint/scope-manager': 8.52.0
1987
1841
'@typescript-eslint/types': 8.52.0
1988
1842
'@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3)
1989
-
eslint: 9.39.2
1843
+
eslint: 9.39.2(jiti@2.6.1)
1990
1844
typescript: 5.9.3
1991
1845
transitivePeerDependencies:
1992
1846
- supports-color
···
1995
1849
dependencies:
1996
1850
'@typescript-eslint/types': 8.52.0
1997
1851
eslint-visitor-keys: 4.2.1
1998
-
1999
-
abort-controller@3.0.0:
2000
-
dependencies:
2001
-
event-target-shim: 5.0.1
2002
1852
2003
1853
acorn-jsx@5.3.2(acorn@8.15.0):
2004
1854
dependencies:
···
2013
1863
json-schema-traverse: 0.4.1
2014
1864
uri-js: 4.4.1
2015
1865
2016
-
ansi-regex@5.0.1: {}
2017
-
2018
1866
ansi-styles@4.3.0:
2019
1867
dependencies:
2020
1868
color-convert: 2.0.1
···
2022
1870
argparse@2.0.1: {}
2023
1871
2024
1872
aria-query@5.3.2: {}
2025
-
2026
-
atomic-sleep@1.0.0: {}
2027
1873
2028
1874
axobject-query@4.1.0: {}
2029
1875
2030
1876
balanced-match@1.0.2: {}
2031
1877
2032
-
base64-js@1.5.1: {}
2033
-
2034
1878
brace-expansion@1.1.12:
2035
1879
dependencies:
2036
1880
balanced-match: 1.0.2
···
2040
1884
dependencies:
2041
1885
balanced-match: 1.0.2
2042
1886
2043
-
buffer@6.0.3:
2044
-
dependencies:
2045
-
base64-js: 1.5.1
2046
-
ieee754: 1.2.1
2047
-
2048
1887
callsites@3.1.0: {}
2049
-
2050
-
cborg@1.10.2: {}
2051
1888
2052
1889
chalk@4.1.2:
2053
1890
dependencies:
···
2058
1895
dependencies:
2059
1896
readdirp: 4.1.2
2060
1897
2061
-
cliui@8.0.1:
2062
-
dependencies:
2063
-
string-width: 4.2.3
2064
-
strip-ansi: 6.0.1
2065
-
wrap-ansi: 7.0.0
2066
-
2067
1898
clsx@2.1.1: {}
2068
-
2069
-
code-block-writer@13.0.3: {}
2070
1899
2071
1900
color-convert@2.0.1:
2072
1901
dependencies:
···
2076
1905
2077
1906
concat-map@0.0.1: {}
2078
1907
2079
-
core-js@3.47.0: {}
2080
-
2081
1908
cross-spawn@7.0.6:
2082
1909
dependencies:
2083
1910
path-key: 3.1.1
···
2085
1912
which: 2.0.2
2086
1913
2087
1914
cssesc@3.0.0: {}
1915
+
1916
+
daisyui@5.5.14: {}
2088
1917
2089
1918
debug@4.4.3:
2090
1919
dependencies:
···
2094
1923
2095
1924
deepmerge@4.3.1: {}
2096
1925
1926
+
detect-libc@2.1.2: {}
1927
+
2097
1928
devalue@5.6.1: {}
2098
1929
2099
-
emoji-regex@8.0.0: {}
1930
+
enhanced-resolve@5.18.4:
1931
+
dependencies:
1932
+
graceful-fs: 4.2.11
1933
+
tapable: 2.3.0
2100
1934
2101
1935
esbuild@0.27.2:
2102
1936
optionalDependencies:
···
2126
1960
'@esbuild/win32-arm64': 0.27.2
2127
1961
'@esbuild/win32-ia32': 0.27.2
2128
1962
'@esbuild/win32-x64': 0.27.2
2129
-
2130
-
escalade@3.2.0: {}
2131
1963
2132
1964
escape-string-regexp@4.0.0: {}
2133
1965
2134
-
eslint-plugin-svelte@3.14.0(eslint@9.39.2)(svelte@5.46.1):
1966
+
eslint-plugin-svelte@3.14.0(eslint@9.39.2(jiti@2.6.1))(svelte@5.46.1):
2135
1967
dependencies:
2136
-
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2)
1968
+
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1))
2137
1969
'@jridgewell/sourcemap-codec': 1.5.5
2138
-
eslint: 9.39.2
1970
+
eslint: 9.39.2(jiti@2.6.1)
2139
1971
esutils: 2.0.3
2140
1972
globals: 16.5.0
2141
1973
known-css-properties: 0.37.0
···
2158
1990
2159
1991
eslint-visitor-keys@4.2.1: {}
2160
1992
2161
-
eslint@9.39.2:
1993
+
eslint@9.39.2(jiti@2.6.1):
2162
1994
dependencies:
2163
-
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2)
1995
+
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1))
2164
1996
'@eslint-community/regexpp': 4.12.2
2165
1997
'@eslint/config-array': 0.21.1
2166
1998
'@eslint/config-helpers': 0.4.2
···
2194
2026
minimatch: 3.1.2
2195
2027
natural-compare: 1.4.0
2196
2028
optionator: 0.9.4
2029
+
optionalDependencies:
2030
+
jiti: 2.6.1
2197
2031
transitivePeerDependencies:
2198
2032
- supports-color
2199
2033
···
2221
2055
2222
2056
esutils@2.0.3: {}
2223
2057
2224
-
event-target-shim@5.0.1: {}
2225
-
2226
-
events@3.3.0: {}
2227
-
2228
2058
fast-deep-equal@3.1.3: {}
2229
2059
2230
2060
fast-json-stable-stringify@2.1.0: {}
2231
2061
2232
2062
fast-levenshtein@2.0.6: {}
2233
2063
2234
-
fast-redact@3.5.0: {}
2235
-
2236
2064
fdir@6.5.0(picomatch@4.0.3):
2237
2065
optionalDependencies:
2238
2066
picomatch: 4.0.3
···
2256
2084
fsevents@2.3.3:
2257
2085
optional: true
2258
2086
2259
-
get-caller-file@2.0.5: {}
2260
-
2261
2087
glob-parent@6.0.2:
2262
2088
dependencies:
2263
2089
is-glob: 4.0.3
···
2268
2094
2269
2095
globals@17.0.0: {}
2270
2096
2271
-
has-flag@4.0.0: {}
2097
+
graceful-fs@4.2.11: {}
2272
2098
2273
-
ieee754@1.2.1: {}
2099
+
has-flag@4.0.0: {}
2274
2100
2275
2101
ignore@5.3.2: {}
2276
2102
···
2285
2111
2286
2112
is-extglob@2.1.1: {}
2287
2113
2288
-
is-fullwidth-code-point@3.0.0: {}
2289
-
2290
2114
is-glob@4.0.3:
2291
2115
dependencies:
2292
2116
is-extglob: 2.1.1
···
2297
2121
2298
2122
isexe@2.0.0: {}
2299
2123
2300
-
iso-datestring-validator@2.2.2: {}
2124
+
jiti@2.6.1: {}
2301
2125
2302
2126
js-yaml@4.1.1:
2303
2127
dependencies:
···
2320
2144
prelude-ls: 1.2.1
2321
2145
type-check: 0.4.0
2322
2146
2147
+
lightningcss-android-arm64@1.30.2:
2148
+
optional: true
2149
+
2150
+
lightningcss-darwin-arm64@1.30.2:
2151
+
optional: true
2152
+
2153
+
lightningcss-darwin-x64@1.30.2:
2154
+
optional: true
2155
+
2156
+
lightningcss-freebsd-x64@1.30.2:
2157
+
optional: true
2158
+
2159
+
lightningcss-linux-arm-gnueabihf@1.30.2:
2160
+
optional: true
2161
+
2162
+
lightningcss-linux-arm64-gnu@1.30.2:
2163
+
optional: true
2164
+
2165
+
lightningcss-linux-arm64-musl@1.30.2:
2166
+
optional: true
2167
+
2168
+
lightningcss-linux-x64-gnu@1.30.2:
2169
+
optional: true
2170
+
2171
+
lightningcss-linux-x64-musl@1.30.2:
2172
+
optional: true
2173
+
2174
+
lightningcss-win32-arm64-msvc@1.30.2:
2175
+
optional: true
2176
+
2177
+
lightningcss-win32-x64-msvc@1.30.2:
2178
+
optional: true
2179
+
2180
+
lightningcss@1.30.2:
2181
+
dependencies:
2182
+
detect-libc: 2.1.2
2183
+
optionalDependencies:
2184
+
lightningcss-android-arm64: 1.30.2
2185
+
lightningcss-darwin-arm64: 1.30.2
2186
+
lightningcss-darwin-x64: 1.30.2
2187
+
lightningcss-freebsd-x64: 1.30.2
2188
+
lightningcss-linux-arm-gnueabihf: 1.30.2
2189
+
lightningcss-linux-arm64-gnu: 1.30.2
2190
+
lightningcss-linux-arm64-musl: 1.30.2
2191
+
lightningcss-linux-x64-gnu: 1.30.2
2192
+
lightningcss-linux-x64-musl: 1.30.2
2193
+
lightningcss-win32-arm64-msvc: 1.30.2
2194
+
lightningcss-win32-x64-msvc: 1.30.2
2195
+
2323
2196
lilconfig@2.1.0: {}
2324
2197
2325
2198
locate-character@3.0.0: {}
···
2330
2203
2331
2204
lodash.merge@4.6.2: {}
2332
2205
2333
-
lru-cache@10.4.3: {}
2334
-
2335
2206
magic-string@0.30.21:
2336
2207
dependencies:
2337
2208
'@jridgewell/sourcemap-codec': 1.5.5
2338
2209
2339
-
minimatch@10.1.1:
2340
-
dependencies:
2341
-
'@isaacs/brace-expansion': 5.0.0
2342
-
2343
2210
minimatch@3.1.2:
2344
2211
dependencies:
2345
2212
brace-expansion: 1.1.12
···
2351
2218
mri@1.2.0: {}
2352
2219
2353
2220
ms@2.1.3: {}
2354
-
2355
-
multiformats@9.9.0: {}
2356
2221
2357
2222
nanoid@3.3.11: {}
2358
2223
···
2360
2225
2361
2226
obug@2.1.1: {}
2362
2227
2363
-
on-exit-leak-free@2.1.2: {}
2364
-
2365
2228
optionator@0.9.4:
2366
2229
dependencies:
2367
2230
deep-is: 0.1.4
···
2383
2246
dependencies:
2384
2247
callsites: 3.1.0
2385
2248
2386
-
path-browserify@1.0.1: {}
2387
-
2388
2249
path-exists@4.0.0: {}
2389
2250
2390
2251
path-key@3.1.1: {}
···
2393
2254
2394
2255
picomatch@4.0.3: {}
2395
2256
2396
-
pino-abstract-transport@1.2.0:
2397
-
dependencies:
2398
-
readable-stream: 4.7.0
2399
-
split2: 4.2.0
2400
-
2401
-
pino-std-serializers@6.2.2: {}
2402
-
2403
-
pino@8.21.0:
2404
-
dependencies:
2405
-
atomic-sleep: 1.0.0
2406
-
fast-redact: 3.5.0
2407
-
on-exit-leak-free: 2.1.2
2408
-
pino-abstract-transport: 1.2.0
2409
-
pino-std-serializers: 6.2.2
2410
-
process-warning: 3.0.0
2411
-
quick-format-unescaped: 4.0.4
2412
-
real-require: 0.2.0
2413
-
safe-stable-stringify: 2.5.0
2414
-
sonic-boom: 3.8.1
2415
-
thread-stream: 2.7.0
2416
-
2417
2257
postcss-load-config@3.1.4(postcss@8.5.6):
2418
2258
dependencies:
2419
2259
lilconfig: 2.1.0
···
2442
2282
2443
2283
prelude-ls@1.2.1: {}
2444
2284
2445
-
prettier@3.7.4: {}
2446
-
2447
-
process-warning@3.0.0: {}
2448
-
2449
-
process@0.11.10: {}
2450
-
2451
2285
punycode@2.3.1: {}
2452
2286
2453
-
quick-format-unescaped@4.0.4: {}
2454
-
2455
-
readable-stream@4.7.0:
2456
-
dependencies:
2457
-
abort-controller: 3.0.0
2458
-
buffer: 6.0.3
2459
-
events: 3.3.0
2460
-
process: 0.11.10
2461
-
string_decoder: 1.3.0
2462
-
2463
2287
readdirp@4.1.2: {}
2464
2288
2465
-
real-require@0.2.0: {}
2466
-
2467
-
require-directory@2.1.1: {}
2468
-
2469
2289
resolve-from@4.0.0: {}
2470
2290
2471
2291
rollup@4.55.1:
···
2503
2323
dependencies:
2504
2324
mri: 1.2.0
2505
2325
2506
-
safe-buffer@5.2.1: {}
2507
-
2508
-
safe-stable-stringify@2.5.0: {}
2509
-
2510
2326
semver@7.7.3: {}
2511
2327
2512
2328
shebang-command@2.0.0:
···
2514
2330
shebang-regex: 3.0.0
2515
2331
2516
2332
shebang-regex@3.0.0: {}
2517
-
2518
-
sonic-boom@3.8.1:
2519
-
dependencies:
2520
-
atomic-sleep: 1.0.0
2521
2333
2522
2334
source-map-js@1.2.1: {}
2523
2335
2524
-
split2@4.2.0: {}
2525
-
2526
-
string-width@4.2.3:
2527
-
dependencies:
2528
-
emoji-regex: 8.0.0
2529
-
is-fullwidth-code-point: 3.0.0
2530
-
strip-ansi: 6.0.1
2531
-
2532
-
string_decoder@1.3.0:
2533
-
dependencies:
2534
-
safe-buffer: 5.2.1
2535
-
2536
-
strip-ansi@6.0.1:
2537
-
dependencies:
2538
-
ansi-regex: 5.0.1
2539
-
2540
2336
strip-json-comments@3.1.1: {}
2541
2337
2542
2338
supports-color@7.2.0:
···
2584
2380
magic-string: 0.30.21
2585
2381
zimmerframe: 1.1.4
2586
2382
2587
-
thread-stream@2.7.0:
2588
-
dependencies:
2589
-
real-require: 0.2.0
2383
+
tailwindcss@4.1.18: {}
2384
+
2385
+
tapable@2.3.0: {}
2590
2386
2591
2387
tinyglobby@0.2.15:
2592
2388
dependencies:
···
2597
2393
dependencies:
2598
2394
typescript: 5.9.3
2599
2395
2600
-
ts-morph@27.0.2:
2601
-
dependencies:
2602
-
'@ts-morph/common': 0.28.1
2603
-
code-block-writer: 13.0.3
2604
-
2605
-
tslib@2.8.1: {}
2606
-
2607
2396
type-check@0.4.0:
2608
2397
dependencies:
2609
2398
prelude-ls: 1.2.1
2610
2399
2611
-
typescript-eslint@8.52.0(eslint@9.39.2)(typescript@5.9.3):
2400
+
typescript-eslint@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3):
2612
2401
dependencies:
2613
-
'@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)
2614
-
'@typescript-eslint/parser': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
2402
+
'@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
2403
+
'@typescript-eslint/parser': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
2615
2404
'@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3)
2616
-
'@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3)
2617
-
eslint: 9.39.2
2405
+
'@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
2406
+
eslint: 9.39.2(jiti@2.6.1)
2618
2407
typescript: 5.9.3
2619
2408
transitivePeerDependencies:
2620
2409
- supports-color
2621
2410
2622
2411
typescript@5.9.3: {}
2623
2412
2624
-
uint8arrays@3.0.0:
2625
-
dependencies:
2626
-
multiformats: 9.9.0
2627
-
2628
2413
undici-types@7.16.0: {}
2629
2414
2630
2415
unicode-segmenter@0.14.5: {}
···
2635
2420
2636
2421
util-deprecate@1.0.2: {}
2637
2422
2638
-
varint@6.0.0: {}
2639
-
2640
-
vite@7.3.1(@types/node@24.10.4):
2423
+
vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2):
2641
2424
dependencies:
2642
2425
esbuild: 0.27.2
2643
2426
fdir: 6.5.0(picomatch@4.0.3)
···
2648
2431
optionalDependencies:
2649
2432
'@types/node': 24.10.4
2650
2433
fsevents: 2.3.3
2434
+
jiti: 2.6.1
2435
+
lightningcss: 1.30.2
2651
2436
2652
-
vitefu@1.1.1(vite@7.3.1(@types/node@24.10.4)):
2437
+
vitefu@1.1.1(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)):
2653
2438
optionalDependencies:
2654
-
vite: 7.3.1(@types/node@24.10.4)
2439
+
vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)
2655
2440
2656
2441
which@2.0.2:
2657
2442
dependencies:
···
2659
2444
2660
2445
word-wrap@1.2.5: {}
2661
2446
2662
-
wrap-ansi@7.0.0:
2663
-
dependencies:
2664
-
ansi-styles: 4.3.0
2665
-
string-width: 4.2.3
2666
-
strip-ansi: 6.0.1
2667
-
2668
-
y18n@5.0.8: {}
2669
-
2670
2447
yaml@1.10.2: {}
2671
2448
2672
-
yargs-parser@21.1.1: {}
2673
-
2674
-
yargs@17.7.2:
2675
-
dependencies:
2676
-
cliui: 8.0.1
2677
-
escalade: 3.2.0
2678
-
get-caller-file: 2.0.5
2679
-
require-directory: 2.1.1
2680
-
string-width: 4.2.3
2681
-
y18n: 5.0.8
2682
-
yargs-parser: 21.1.1
2683
-
2684
2449
yocto-queue@0.1.0: {}
2685
2450
2686
2451
zimmerframe@1.1.4: {}
2687
-
2688
-
zod@3.25.76: {}
public/dude.png
public/dude.png
This is a binary file and will not be displayed.
public/slowPoke.png
public/slowPoke.png
This is a binary file and will not be displayed.
-1
public/vite.svg
-1
public/vite.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
+40
-24
src/App.svelte
+40
-24
src/App.svelte
···
1
1
<script lang="ts">
2
2
3
-
import SearchForm from './lib/SearchForm.svelte';
4
-
import RepoStats from './lib/RepoStats.svelte';
5
-
6
-
let showRepoStats = $state(false);
7
-
let did = $state('');
8
-
let pdsUrl = $state('');
3
+
import SearchForm from './lib/SearchForm.svelte';
4
+
import RepoStats from './lib/RepoStats.svelte';
9
5
10
-
const resolvedResult = (didResult: string, pdsUrlResult: string) => {
11
-
did = didResult;
12
-
pdsUrl = pdsUrlResult;
13
-
showRepoStats = true;
14
-
};
6
+
let showRepoStats = $state(false);
7
+
let searchResults = $state({
8
+
did: '',
9
+
handle: '',
10
+
pdsUrl: '',
11
+
slowPoke: false
12
+
});
15
13
14
+
const resolvedResult = (didResult: string, handle: string, pdsUrlResult: string, slowPokeResult: boolean) => {
15
+
searchResults = { did: didResult, handle: handle, pdsUrl: pdsUrlResult, slowPoke: slowPokeResult };
16
+
showRepoStats = true;
17
+
};
16
18
17
19
</script>
18
20
19
-
<main>
20
-
<h1>Repo Walk Example</h1>
21
+
<a href="https://tangled.org/baileytownsend.dev/repo-walk-example" target="_blank" rel="noopener noreferrer" class="fixed top-4 right-4 z-50 btn btn-ghost btn-sm gap-2 hover:scale-110 transition-transform shadow-lg">
22
+
<svg version="1.1" class="size-6" width="25" height="25" viewBox="0 0 25 25" xmlns="http://www.w3.org/2000/svg">
23
+
<g transform="translate(-0.42924038,-0.87777209)">
24
+
<path fill="currentColor" style="stroke-width:0.111183;" d="m 16.775491,24.987061 c -0.78517,-0.0064 -1.384202,-0.234614 -2.033994,-0.631295 -0.931792,-0.490188 -1.643475,-1.31368 -2.152014,-2.221647 C 11.781409,23.136647 10.701392,23.744942 9.4922931,24.0886 8.9774725,24.238111 8.0757679,24.389777 6.5811304,23.84827 4.4270703,23.124679 2.8580086,20.883331 3.0363279,18.599583 3.0037061,17.652919 3.3488675,16.723769 3.8381157,15.925061 2.5329485,15.224503 1.4686756,14.048584 1.0611184,12.606459 0.81344502,11.816973 0.82385989,10.966486 0.91519098,10.154906 1.2422711,8.2387903 2.6795811,6.5725716 4.5299585,5.9732484 5.2685364,4.290122 6.8802592,3.0349975 8.706276,2.7794663 c 1.2124148,-0.1688264 2.46744,0.084987 3.52811,0.7011837 1.545426,-1.7139736 4.237779,-2.2205077 6.293579,-1.1676231 1.568222,0.7488935 2.689625,2.3113526 2.961888,4.0151464 1.492195,0.5977882 2.749007,1.8168898 3.242225,3.3644951 0.329805,0.9581836 0.340709,2.0135956 0.127128,2.9974286 -0.381606,1.535184 -1.465322,2.842146 -2.868035,3.556463 0.0034,0.273204 0.901506,2.243045 0.751284,3.729647 -0.03281,1.858525 -1.211631,3.619894 -2.846433,4.475452 -0.953967,0.556812 -2.084452,0.546309 -3.120531,0.535398 z m -4.470079,-5.349839 c 1.322246,-0.147248 2.189053,-1.300106 2.862307,-2.338363 0.318287,-0.472954 0.561404,-1.002348 0.803,-1.505815 0.313265,0.287151 0.578698,0.828085 1.074141,0.956909 0.521892,0.162542 1.133743,0.03052 1.45325,-0.443554 0.611414,-1.140449 0.31004,-2.516537 -0.04602,-3.698347 C 18.232844,11.92927 17.945151,11.232927 17.397785,10.751793 17.514522,9.9283111 17.026575,9.0919791 16.332883,8.6609491 15.741721,9.1323278 14.842258,9.1294949 14.271975,8.6252369 13.178927,9.7400102 12.177239,9.7029996 11.209704,8.8195135 10.992255,8.6209543 10.577326,10.031484 9.1211947,9.2324497 8.2846288,9.9333947 7.6359672,10.607693 7.0611981,11.578553 6.5026891,12.62523 5.9177873,13.554793 5.867393,14.69141 c -0.024234,0.66432 0.4948601,1.360337 1.1982269,1.306329 0.702996,0.06277 1.1815208,-0.629091 1.7138087,-0.916491 0.079382,0.927141 0.1688108,1.923227 0.4821259,2.828358 0.3596254,1.171275 1.6262605,1.915695 2.8251855,1.745211 0.08481,-0.0066 0.218672,-0.01769 0.218672,-0.0176 z m 0.686342,-3.497495 c -0.643126,-0.394168 -0.33365,-1.249599 -0.359402,-1.870938 0.064,-0.749774 0.115321,-1.538054 0.452402,-2.221125 0.356724,-0.487008 1.226721,-0.299139 1.265134,0.325689 -0.02558,0.628509 -0.314101,1.25416 -0.279646,1.9057 -0.07482,0.544043 0.05418,1.155133 -0.186476,1.652391 -0.197455,0.275121 -0.599638,0.355105 -0.892012,0.208283 z m -2.808766,-0.358124 c -0.605767,-0.328664 -0.4133176,-1.155655 -0.5083256,-1.73063 0.078762,-0.66567 0.013203,-1.510085 0.5705316,-1.976886 0.545037,-0.380109 1.286917,0.270803 1.029164,0.868384 -0.274913,0.755214 -0.09475,1.580345 -0.08893,2.34609 -0.104009,0.451702 -0.587146,0.691508 -1.002445,0.493042 z"></path>
25
+
</g>
26
+
</svg>
27
+
<span class="hidden sm:inline">View on Tangled</span>
28
+
</a>
21
29
22
-
<div class="card">
23
-
{#if showRepoStats}
24
-
<RepoStats did={did} pdsUrl={pdsUrl}/>
25
-
{:else}
26
-
<SearchForm resolvedResult={resolvedResult} />
27
-
{/if}
28
-
</div>
30
+
<main class="container mx-auto px-4 py-8 max-w-4xl">
31
+
<div class="text-center mb-8">
32
+
{#if showRepoStats}
33
+
<h2 class="text-2xl font-bold text-primary">Walking <a class="link link-info" href="https://pdsls.dev/at://{searchResults.did}" target="_blank">{searchResults.handle}</a>'s repo {searchResults.slowPoke ? 'via api calls' : 'via export'}</h2>
34
+
{:else}
35
+
<h1 class="text-5xl font-bold mb-4">Walk The Repo</h1>
36
+
<p class="text-lg mb-2">Demo showing why you may rather export the users whole repo instead of walking it via api calls if you want to access all the user's records.</p>
37
+
<p class="text-sm opacity-70">Also shows how many records you have and how many of each kind if you're into that kind of thing...</p>
38
+
{/if}
39
+
</div>
29
40
41
+
<div class="card bg-base-200 shadow-xl">
42
+
<div class="card-body">
43
+
{#if showRepoStats}
44
+
<RepoStats did={searchResults.did} pdsUrl={searchResults.pdsUrl} slowPokeMode={searchResults.slowPoke} handle={searchResults.handle}/>
45
+
{:else}
46
+
<SearchForm resolvedResult={resolvedResult}/>
47
+
{/if}
48
+
</div>
49
+
</div>
30
50
</main>
31
-
32
-
<style>
33
-
34
-
</style>
+3
-78
src/app.css
+3
-78
src/app.css
···
1
-
:root {
2
-
font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
3
-
line-height: 1.5;
4
-
font-weight: 400;
5
-
6
-
color-scheme: light dark;
7
-
color: rgba(255, 255, 255, 0.87);
8
-
background-color: #242424;
9
-
10
-
font-synthesis: none;
11
-
text-rendering: optimizeLegibility;
12
-
-webkit-font-smoothing: antialiased;
13
-
-moz-osx-font-smoothing: grayscale;
14
-
}
15
-
16
-
a {
17
-
font-weight: 500;
18
-
color: #646cff;
19
-
text-decoration: inherit;
20
-
}
21
-
a:hover {
22
-
color: #535bf2;
23
-
}
24
-
25
-
body {
26
-
margin: 0;
27
-
display: flex;
28
-
place-items: start;
29
-
min-width: 320px;
30
-
min-height: 100vh;
31
-
}
32
-
33
-
h1 {
34
-
font-size: 3.2em;
35
-
line-height: 1.1;
36
-
}
37
-
38
-
.card {
39
-
padding: 2em;
40
-
}
41
-
42
-
#app {
43
-
max-width: 1280px;
44
-
margin: 0 auto;
45
-
padding: 2rem;
46
-
text-align: center;
47
-
}
48
-
49
-
button {
50
-
border-radius: 8px;
51
-
border: 1px solid transparent;
52
-
padding: 0.6em 1.2em;
53
-
font-size: 1em;
54
-
font-weight: 500;
55
-
font-family: inherit;
56
-
background-color: #1a1a1a;
57
-
cursor: pointer;
58
-
transition: border-color 0.25s;
59
-
}
60
-
button:hover {
61
-
border-color: #646cff;
62
-
}
63
-
button:focus,
64
-
button:focus-visible {
65
-
outline: 4px auto -webkit-focus-ring-color;
66
-
}
67
-
68
-
@media (prefers-color-scheme: light) {
69
-
:root {
70
-
color: #213547;
71
-
background-color: #ffffff;
72
-
}
73
-
a:hover {
74
-
color: #747bff;
75
-
}
76
-
button {
77
-
background-color: #f9f9f9;
78
-
}
1
+
@import "tailwindcss";
2
+
@plugin "daisyui" {
3
+
themes: forest --default;
79
4
}
-1
src/assets/svelte.svg
-1
src/assets/svelte.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="26.6" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 308"><path fill="#FF3E00" d="M239.682 40.707C211.113-.182 154.69-12.301 113.895 13.69L42.247 59.356a82.198 82.198 0 0 0-37.135 55.056a86.566 86.566 0 0 0 8.536 55.576a82.425 82.425 0 0 0-12.296 30.719a87.596 87.596 0 0 0 14.964 66.244c28.574 40.893 84.997 53.007 125.787 27.016l71.648-45.664a82.182 82.182 0 0 0 37.135-55.057a86.601 86.601 0 0 0-8.53-55.577a82.409 82.409 0 0 0 12.29-30.718a87.573 87.573 0 0 0-14.963-66.244"></path><path fill="#FFF" d="M106.889 270.841c-23.102 6.007-47.497-3.036-61.103-22.648a52.685 52.685 0 0 1-9.003-39.85a49.978 49.978 0 0 1 1.713-6.693l1.35-4.115l3.671 2.697a92.447 92.447 0 0 0 28.036 14.007l2.663.808l-.245 2.659a16.067 16.067 0 0 0 2.89 10.656a17.143 17.143 0 0 0 18.397 6.828a15.786 15.786 0 0 0 4.403-1.935l71.67-45.672a14.922 14.922 0 0 0 6.734-9.977a15.923 15.923 0 0 0-2.713-12.011a17.156 17.156 0 0 0-18.404-6.832a15.78 15.78 0 0 0-4.396 1.933l-27.35 17.434a52.298 52.298 0 0 1-14.553 6.391c-23.101 6.007-47.497-3.036-61.101-22.649a52.681 52.681 0 0 1-9.004-39.849a49.428 49.428 0 0 1 22.34-33.114l71.664-45.677a52.218 52.218 0 0 1 14.563-6.398c23.101-6.007 47.497 3.036 61.101 22.648a52.685 52.685 0 0 1 9.004 39.85a50.559 50.559 0 0 1-1.713 6.692l-1.35 4.116l-3.67-2.693a92.373 92.373 0 0 0-28.037-14.013l-2.664-.809l.246-2.658a16.099 16.099 0 0 0-2.89-10.656a17.143 17.143 0 0 0-18.398-6.828a15.786 15.786 0 0 0-4.402 1.935l-71.67 45.674a14.898 14.898 0 0 0-6.73 9.975a15.9 15.9 0 0 0 2.709 12.012a17.156 17.156 0 0 0 18.404 6.832a15.841 15.841 0 0 0 4.402-1.935l27.345-17.427a52.147 52.147 0 0 1 14.552-6.397c23.101-6.006 47.497 3.037 61.102 22.65a52.681 52.681 0 0 1 9.003 39.848a49.453 49.453 0 0 1-22.34 33.12l-71.664 45.673a52.218 52.218 0 0 1-14.563 6.398"></path></svg>
+218
-61
src/lib/RepoStats.svelte
+218
-61
src/lib/RepoStats.svelte
···
1
1
<script lang="ts">
2
-
import { fromStream } from '@atcute/car';
3
-
import * as CBOR from '@atcute/cbor';
4
2
import { onMount } from 'svelte';
5
3
import { Client, simpleFetchHandler } from '@atcute/client';
6
4
import type {} from '@atcute/atproto';
5
+
import { fromStream } from '@atcute/repo';
7
6
8
-
const { did, pdsUrl } = $props();
7
+
const { did, handle, pdsUrl, slowPokeMode } = $props();
9
8
10
9
interface CountedCollection {
11
-
collection: string;
12
-
count: number;
10
+
collection: string;
11
+
count: number;
13
12
}
14
13
14
+
//Shared State
15
15
let loading = $state(true);
16
+
let error: string | null = $state(null);
17
+
//Download info stuff
16
18
let downloadedBytes = $state(0);
17
19
let downloadedMB = $derived((downloadedBytes / (1024 * 1024)).toFixed(2));
18
-
let error: string | null = $state(null);
20
+
//Ui counts for collections
19
21
let collections = $state(new Array<CountedCollection>());
20
22
let collectionsOrdered: Array<CountedCollection> = $derived([...collections].sort((a, b) => b.count - a.count));
21
23
let totalRecords = $state(0);
24
+
let currentCollection: string | null = $state(null);
25
+
//Timer stuff
22
26
let startTime = $state<number | null>(null);
23
27
let endTime = $state<number | null>(null);
24
28
let elapsedTime = $state('');
25
-
26
29
let interval = $state<number | null>(null);
30
+
//Just for the slow pokes
31
+
let webCalls = $state(0);
27
32
28
33
const calculateElapsedTime = () => {
29
34
if (!startTime) return '0.00';
30
35
const end = endTime ?? Date.now();
31
-
elapsedTime = ((end - startTime) / 1000).toFixed(2);
36
+
elapsedTime = ((end - startTime) / 1000).toFixed(2);
32
37
};
33
38
34
39
const startTimer = () => {
40
+
endTime = null;
41
+
startTime = Date.now();
35
42
interval = setInterval(() => {
36
43
calculateElapsedTime();
37
44
}, 250);
38
45
};
39
46
40
-
const getRepoStats = async () => {
41
-
const rpc = new Client({ handler: simpleFetchHandler({ service: pdsUrl }) });
47
+
const stopTimer = () => {
48
+
if (interval) {
49
+
clearInterval(interval);
50
+
}
51
+
endTime = Date.now();
52
+
calculateElapsedTime();
53
+
};
42
54
43
-
startTime = Date.now();
44
-
endTime = null;
55
+
// Calls the getRepo endpoint to get a .car export to walk the repo. allows you to stream and access records as they are downloaded
56
+
const getRepoStatsViaExport = async () => {
57
+
const rpc = new Client({ handler: simpleFetchHandler({ service: pdsUrl }) });
45
58
startTimer();
46
59
try {
47
60
const result = await rpc.get('com.atproto.sync.getRepo', {
···
49
62
as: 'stream',
50
63
});
51
64
52
-
if (!result.ok ){
65
+
if (!result.ok) {
53
66
throw new Error(`HTTP error! status: ${result.status}`);
54
67
}
68
+
const repo = fromStream(result.data);
55
69
56
-
let stream = result.data;
57
-
70
+
try {
71
+
//This reads the repo as it is downloaded. which was very cool and I didn't know it would do that
72
+
for await (const entry of repo) {
73
+
// record here is the content of the atproto record
74
+
// console.log(entry.record);
75
+
let checkForCollection = collections.find(c => c.collection === entry.collection);
76
+
if (!checkForCollection) {
77
+
collections.push({ collection: entry.collection, count: 1 });
78
+
} else {
79
+
checkForCollection.count++;
80
+
}
81
+
downloadedBytes = entry.carEntry.entryEnd;
82
+
totalRecords++;
83
+
}
84
+
} finally {
85
+
stopTimer();
86
+
}
87
+
loading = false;
88
+
} catch (err) {
89
+
stopTimer();
90
+
console.log(err);
91
+
console.error('Error fetching repo stats:', err);
92
+
if (err instanceof Error) {
93
+
error = err.message;
94
+
} else {
95
+
error = 'Unknown error: can check the console for more details';
96
+
}
97
+
loading = false;
98
+
}
99
+
};
58
100
59
-
const car = fromStream(stream);
101
+
//An ungodly amount of api calls showing the speed difference between getting an export and walking the repo
102
+
//via api calls
103
+
const getRepoStatsTheLongWay = async () => {
104
+
try {
105
+
const rpc = new Client({ handler: simpleFetchHandler({ service: pdsUrl }) });
106
+
startTimer();
107
+
//We can make a call to get a list of collections in the repo
108
+
let describeRepo = await rpc.get('com.atproto.repo.describeRepo', {
109
+
params: {
110
+
repo: did
111
+
}
112
+
});
113
+
if(!describeRepo.ok){
114
+
throw new Error(`HTTP error! status: ${describeRepo.status}`);
115
+
}
116
+
webCalls++;
117
+
//We go through each collection and get a list of records in it
118
+
for (const collection of describeRepo.data.collections) {
119
+
let totalRecordsInCollection = 0;
120
+
currentCollection = collection;
121
+
//Do the first call to get a cursor
122
+
const firstCollectionList = await rpc.get('com.atproto.repo.listRecords', {
123
+
params: {
124
+
collection,
125
+
repo: did,
126
+
limit: 100,
127
+
}
128
+
});
129
+
webCalls++;
130
+
if(!firstCollectionList.ok){
131
+
console.error(`HTTP error! status: ${firstCollectionList.status}`);
132
+
continue;
133
+
}
134
+
totalRecords += firstCollectionList.data.records.length;
135
+
totalRecordsInCollection += firstCollectionList.data.records.length;
60
136
61
-
try {
62
-
for await (const entry of car) {
63
-
const data = CBOR.decode(entry.bytes);
64
-
if (!data.$type) {
65
-
continue;
66
-
}
137
+
let cursor = firstCollectionList.data.cursor;
138
+
//Walk the collection till the cursor is undefined meaning no more records
139
+
do {
140
+
const nextCollectionList = await rpc.get('com.atproto.repo.listRecords', {
141
+
params: {
142
+
collection,
143
+
repo: did,
144
+
limit: 100,
145
+
cursor
146
+
}
147
+
});
148
+
webCalls++;
149
+
if(!nextCollectionList.ok){
150
+
console.error(`HTTP error! status: ${nextCollectionList.status}`);
151
+
continue;
152
+
}
153
+
totalRecordsInCollection += nextCollectionList.data.records.length;
154
+
cursor = nextCollectionList.data.cursor;
155
+
totalRecords += nextCollectionList.data.records.length;
67
156
68
-
let checkForCollection = collections.find(c => c.collection === data.$type);
69
-
if (!checkForCollection) {
70
-
collections.push({ collection: data.$type, count: 1 });
71
-
}else{
72
-
checkForCollection.count++;
73
-
}
74
-
downloadedBytes = entry.entryEnd;
75
-
totalRecords++;
157
+
} while (cursor !== undefined);
158
+
collections.push({ collection: collection, count:totalRecordsInCollection });
76
159
}
77
-
}finally{
78
-
if (interval){
79
-
clearInterval(interval);
80
-
interval = null;
81
-
calculateElapsedTime();
82
-
}
83
-
await car.dispose();
84
-
}
85
-
86
-
endTime = Date.now();
160
+
loading = false;
161
+
stopTimer();
162
+
}
163
+
catch (err) {
87
164
loading = false;
88
-
} catch (err) {
89
-
endTime = Date.now();
165
+
stopTimer();
90
166
console.error('Error fetching repo stats:', err);
91
-
if (err instanceof Error){
167
+
if (err instanceof Error) {
92
168
error = err.message;
93
-
}else{
169
+
} else {
94
170
error = 'Unknown error: can check the console for more details';
95
171
}
96
-
loading = false;
97
172
}
98
173
};
99
174
100
175
onMount(() => {
101
-
getRepoStats();
176
+
if (slowPokeMode) {
177
+
getRepoStatsTheLongWay();
178
+
} else {
179
+
getRepoStatsViaExport();
180
+
}
181
+
102
182
});
103
183
104
184
</script>
105
185
106
-
<div>
186
+
<div class="flex flex-col items-center gap-4">
187
+
<div class="w-full flex justify-center">
188
+
{#if slowPokeMode}
189
+
<img
190
+
alt="A Shellder biting a Slowpoke's tail, as seen in the Pokรฉmon anime"
191
+
src="/slowPoke.png"
192
+
class="max-w-sm rounded-lg shadow-lg"
193
+
>
194
+
{:else}
195
+
<img
196
+
alt="text in a speech bubble that says 'Dude, wheres my car'"
197
+
src="/dude.png"
198
+
class="max-w-sm rounded-lg shadow-lg"
199
+
>
200
+
{/if}
201
+
</div>
202
+
107
203
{#if error}
108
-
<p style="color: red">{error}</p>
204
+
<div class="alert alert-error w-full">
205
+
<svg xmlns="http://www.w3.org/2000/svg" class="stroke-current shrink-0 h-6 w-6" fill="none" viewBox="0 0 24 24">
206
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" />
207
+
</svg>
208
+
<span>{error}</span>
209
+
</div>
109
210
{/if}
110
-
{#if loading}
111
-
Loading... ({downloadedMB} MB downloaded, {elapsedTime}s)
211
+
212
+
{#if loading && !slowPokeMode}
213
+
<div class="flex items-center gap-3">
214
+
<span class="loading loading-spinner loading-lg text-primary"></span>
215
+
<div class="text-lg">
216
+
<div class="font-semibold">Loading...</div>
217
+
<div class="text-sm opacity-70">
218
+
<span class="badge badge-info">{downloadedMB} MB</span> downloaded in
219
+
<span class="badge badge-ghost">{elapsedTime}s</span>
220
+
</div>
221
+
</div>
222
+
</div>
223
+
{:else if loading && slowPokeMode}
224
+
<div class="flex items-center gap-3">
225
+
<span class="loading loading-spinner loading-lg text-primary"></span>
226
+
<div class="text-lg">
227
+
<div class="font-semibold">Loading...</div>
228
+
<div class="text-sm opacity-70">
229
+
<span class="badge badge-info">{webCalls.toLocaleString()} web calls</span> made in
230
+
<span class="badge badge-ghost">{elapsedTime}s</span>
231
+
</div>
232
+
</div>
233
+
</div>
112
234
{:else}
113
-
<span>Repo size {downloadedMB} MB (fetched in {elapsedTime}s)</span>
235
+
<div class="stats shadow bg-base-300">
236
+
<div class="stat">
237
+
<div class="stat-title">{slowPokeMode ? 'Web Calls Made' : 'Repo Size'}</div>
238
+
<div class="stat-value text-primary">
239
+
{#if !slowPokeMode}
240
+
{downloadedMB} MB
241
+
{:else}
242
+
{webCalls.toLocaleString()}
243
+
{/if}
244
+
</div>
245
+
<div class="stat-desc">Fetched in {elapsedTime}s</div>
246
+
</div>
247
+
</div>
248
+
{/if}
249
+
250
+
{#if loading && currentCollection !== null}
251
+
<div class="alert alert-info">
252
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" class="stroke-current shrink-0 w-6 h-6">
253
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
254
+
</svg>
255
+
<span>Currently walking collection: <strong>{currentCollection}</strong></span>
256
+
</div>
114
257
{/if}
258
+
115
259
{#if collectionsOrdered.length > 0}
260
+
<div class="stats stats-vertical lg:stats-horizontal shadow bg-base-300 w-full">
261
+
<div class="stat">
262
+
<div class="stat-title">Total Records</div>
263
+
<div class="stat-value text-secondary">{totalRecords.toLocaleString()}</div>
264
+
</div>
265
+
<div class="stat">
266
+
<div class="stat-title">Different Collections</div>
267
+
<div class="stat-value text-accent">{collectionsOrdered.length}</div>
268
+
</div>
269
+
</div>
116
270
117
-
<br>
118
-
<span>Total Records: {totalRecords.toLocaleString()}</span>
119
-
<br>
120
-
<span>Different Collections: {collectionsOrdered.length}</span>
121
-
<br>
122
-
<ol style="text-align: left;">
123
-
{#each collectionsOrdered as collection (collection.collection)}
124
-
<li>{collection.collection} ({collection.count.toLocaleString()} records)</li>
125
-
{/each}
126
-
</ol>
271
+
<div class="card bg-base-300 shadow-xl w-full">
272
+
<div class="card-body">
273
+
<h3 class="card-title">{handle}'s Collections Breakdown</h3>
274
+
<ol class="list-decimal list-inside space-y-2">
275
+
{#each collectionsOrdered as collection (collection.collection)}
276
+
<li class="text-sm">
277
+
<a class="link font-mono text-primary" href="https://pdsls.dev/at://{did}/{collection.collection}" target="_blank">{collection.collection}</a>
278
+
<span class="badge badge-sm ml-2">{collection.count.toLocaleString()} records</span>
279
+
</li>
280
+
{/each}
281
+
</ol>
282
+
</div>
283
+
</div>
127
284
{/if}
128
285
</div>
+79
-38
src/lib/SearchForm.svelte
+79
-38
src/lib/SearchForm.svelte
···
1
1
<script lang="ts">
2
-
import { AtprotoDohHandleResolver } from '@atproto-labs/handle-resolver';
3
-
import { DidResolver } from '@atproto/identity';
2
+
import {
3
+
CompositeHandleResolver,
4
+
DohJsonHandleResolver,
5
+
WellKnownHandleResolver,
6
+
CompositeDidDocumentResolver,
7
+
PlcDidDocumentResolver,
8
+
WebDidDocumentResolver,
9
+
} from '@atcute/identity-resolver';
10
+
import { isHandle } from '@atcute/lexicons/syntax';
11
+
import { getPdsEndpoint } from '@atcute/identity';
4
12
5
-
const didResolver = new DidResolver({});
6
-
const handleResolver = new AtprotoDohHandleResolver({ dohEndpoint: 'https://cloudflare-dns.com/dns-query' });
7
13
8
-
let handleToLookUp = $state('');
9
-
let error: string | null = $state(null);
14
+
const handleResolver = new CompositeHandleResolver({
15
+
methods: {
16
+
dns: new DohJsonHandleResolver({ dohUrl: 'https://cloudflare-dns.com/dns-query' }),
17
+
http: new WellKnownHandleResolver(),
18
+
},
19
+
});
20
+
21
+
22
+
const didResolver = new CompositeDidDocumentResolver({
23
+
methods: {
24
+
plc: new PlcDidDocumentResolver(),
25
+
web: new WebDidDocumentResolver(),
26
+
},
27
+
});
10
28
11
-
let { resolvedResult } = $props();
29
+
let handleToLookUp = $state('');
30
+
let error: string | null = $state(null);
31
+
let slowpoke = $state(false);
12
32
33
+
let { resolvedResult } = $props();
13
34
14
-
const searchForUser = async (event: Event) => {
15
-
event.preventDefault();
16
-
error = null;
17
35
18
-
let did = await handleResolver.resolve(handleToLookUp);
19
-
if (did === null) {
20
-
error = 'No result found';
21
-
return;
22
-
}
36
+
const searchForUser = async (event: Event) => {
37
+
event.preventDefault();
38
+
error = null;
39
+
try {
40
+
let handle = handleToLookUp.replace(/^@/, '').toLowerCase();
41
+
if (!isHandle(handle)) {
42
+
error = 'Not a valid handle';
43
+
return;
44
+
}
45
+
let did = await handleResolver.resolve(handle);
23
46
24
-
const didDoc = await didResolver.resolve(did);
25
-
if (!didDoc){
26
-
error = 'No did doc found';
27
-
return;
28
-
}
29
-
if (!didDoc.service){
30
-
error = 'No services?';
31
-
return;
32
-
}
33
-
const pds = didDoc?.service?.find(s => s.id === '#atproto_pds');
34
-
if (!pds){
35
-
error = 'No pds service found????';
36
-
return;
37
-
}
38
-
const pdsUrl = pds.serviceEndpoint;
39
-
resolvedResult(did, pdsUrl);
40
-
};
47
+
const didDoc = await didResolver.resolve(did);
48
+
const pdsUrl = getPdsEndpoint(didDoc);
41
49
50
+
resolvedResult(did, handle, pdsUrl, slowpoke);
51
+
}catch(e){
52
+
if (e instanceof Error) {
53
+
error = e.message;
54
+
}
55
+
}
56
+
};
42
57
43
58
44
59
</script>
45
60
46
-
<form onsubmit={searchForUser}>
47
-
<label for="search">ATProto Handle</label>
48
-
<input bind:value={handleToLookUp} id="search" type="text" placeholder="alice.bsky.social"/>
49
-
<button>Lookup</button>
50
-
<br>
61
+
<form onsubmit={searchForUser} class="space-y-4">
62
+
<fieldset class="fieldset w-full">
63
+
<label class="label" for="search">ATProto Handle</label>
64
+
<input
65
+
bind:value={handleToLookUp}
66
+
id="search"
67
+
type="text"
68
+
placeholder="alice.bsky.social"
69
+
class="input input-bordered w-full"
70
+
/>
71
+
</fieldset>
72
+
73
+
<fieldset class="fieldset bg-base-100 border-base-300 rounded-box w-64 border p-4">
74
+
<legend class="fieldset-legend">Slow Poke</legend>
75
+
<label class="label">
76
+
<input type="checkbox" bind:checked={slowpoke} class="toggle" />
77
+
uses web calls to walk the repo to show you the speed difference
78
+
</label>
79
+
</fieldset>
80
+
51
81
{#if error}
52
-
<p style="color: red;">Error: {error}</p>
82
+
<div class="alert alert-error">
83
+
<svg xmlns="http://www.w3.org/2000/svg" class="stroke-current shrink-0 h-6 w-6" fill="none" viewBox="0 0 24 24">
84
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" />
85
+
</svg>
86
+
<span>Error: {error}</span>
87
+
</div>
53
88
{/if}
89
+
90
+
<div class="form-control mt-6">
91
+
<button class="btn btn-primary">
92
+
Walk by {slowpoke ? 'API Calls' : 'Repo Export'}
93
+
</button>
94
+
</div>
54
95
</form>
+5
-1
vite.config.ts
+5
-1
vite.config.ts
···
1
1
import { defineConfig } from 'vite';
2
2
import { svelte } from '@sveltejs/vite-plugin-svelte';
3
+
import tailwindcss from '@tailwindcss/vite'
3
4
4
5
// https://vite.dev/config/
5
6
export default defineConfig({
6
-
plugins: [svelte()],
7
+
plugins: [
8
+
svelte(),
9
+
tailwindcss(),
10
+
],
7
11
});