tangled
alpha
login
or
join now
ptr.pet
/
aturlist
0
fork
atom
aturi indexer with listRecords and countRecords endpoints
0
fork
atom
overview
issues
pulls
pipelines
initial impl
ptr.pet
1 month ago
34de0548
8c99eabc
verified
This commit was signed with the committer's
known signature
.
ptr.pet
SSH Key Fingerprint:
SHA256:Abmvag+juovVufZTxyWY8KcVgrznxvBjQpJesv071Aw=
+2721
7 changed files
expand all
collapse all
unified
split
.gitignore
Cargo.lock
Cargo.toml
default.nix
flake.nix
src
main.rs
verify_pds.nu
+5
.gitignore
···
2
2
.envrc
3
3
result
4
4
target
5
5
+
.scratchpad
6
6
+
aturlist_fjall
7
7
+
aturlist.log
8
8
+
tap.log
9
9
+
tap.db
+2259
Cargo.lock
···
1
1
+
# This file is automatically @generated by Cargo.
2
2
+
# It is not intended for manual editing.
3
3
+
version = 4
4
4
+
5
5
+
[[package]]
6
6
+
name = "android_system_properties"
7
7
+
version = "0.1.5"
8
8
+
source = "registry+https://github.com/rust-lang/crates.io-index"
9
9
+
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
10
10
+
dependencies = [
11
11
+
"libc",
12
12
+
]
13
13
+
14
14
+
[[package]]
15
15
+
name = "anyhow"
16
16
+
version = "1.0.100"
17
17
+
source = "registry+https://github.com/rust-lang/crates.io-index"
18
18
+
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
19
19
+
20
20
+
[[package]]
21
21
+
name = "async-trait"
22
22
+
version = "0.1.89"
23
23
+
source = "registry+https://github.com/rust-lang/crates.io-index"
24
24
+
checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
25
25
+
dependencies = [
26
26
+
"proc-macro2",
27
27
+
"quote",
28
28
+
"syn",
29
29
+
]
30
30
+
31
31
+
[[package]]
32
32
+
name = "atomic-waker"
33
33
+
version = "1.1.2"
34
34
+
source = "registry+https://github.com/rust-lang/crates.io-index"
35
35
+
checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
36
36
+
37
37
+
[[package]]
38
38
+
name = "aturlist"
39
39
+
version = "0.1.0"
40
40
+
dependencies = [
41
41
+
"anyhow",
42
42
+
"axum",
43
43
+
"chrono",
44
44
+
"fjall",
45
45
+
"futures",
46
46
+
"serde",
47
47
+
"serde_json",
48
48
+
"tapped",
49
49
+
"tokio",
50
50
+
"tracing",
51
51
+
"tracing-subscriber",
52
52
+
]
53
53
+
54
54
+
[[package]]
55
55
+
name = "autocfg"
56
56
+
version = "1.5.0"
57
57
+
source = "registry+https://github.com/rust-lang/crates.io-index"
58
58
+
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
59
59
+
60
60
+
[[package]]
61
61
+
name = "axum"
62
62
+
version = "0.7.9"
63
63
+
source = "registry+https://github.com/rust-lang/crates.io-index"
64
64
+
checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f"
65
65
+
dependencies = [
66
66
+
"async-trait",
67
67
+
"axum-core",
68
68
+
"bytes",
69
69
+
"futures-util",
70
70
+
"http",
71
71
+
"http-body",
72
72
+
"http-body-util",
73
73
+
"hyper",
74
74
+
"hyper-util",
75
75
+
"itoa",
76
76
+
"matchit",
77
77
+
"memchr",
78
78
+
"mime",
79
79
+
"percent-encoding",
80
80
+
"pin-project-lite",
81
81
+
"rustversion",
82
82
+
"serde",
83
83
+
"serde_json",
84
84
+
"serde_path_to_error",
85
85
+
"serde_urlencoded",
86
86
+
"sync_wrapper",
87
87
+
"tokio",
88
88
+
"tower",
89
89
+
"tower-layer",
90
90
+
"tower-service",
91
91
+
"tracing",
92
92
+
]
93
93
+
94
94
+
[[package]]
95
95
+
name = "axum-core"
96
96
+
version = "0.4.5"
97
97
+
source = "registry+https://github.com/rust-lang/crates.io-index"
98
98
+
checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199"
99
99
+
dependencies = [
100
100
+
"async-trait",
101
101
+
"bytes",
102
102
+
"futures-util",
103
103
+
"http",
104
104
+
"http-body",
105
105
+
"http-body-util",
106
106
+
"mime",
107
107
+
"pin-project-lite",
108
108
+
"rustversion",
109
109
+
"sync_wrapper",
110
110
+
"tower-layer",
111
111
+
"tower-service",
112
112
+
"tracing",
113
113
+
]
114
114
+
115
115
+
[[package]]
116
116
+
name = "base64"
117
117
+
version = "0.22.1"
118
118
+
source = "registry+https://github.com/rust-lang/crates.io-index"
119
119
+
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
120
120
+
121
121
+
[[package]]
122
122
+
name = "bitflags"
123
123
+
version = "2.10.0"
124
124
+
source = "registry+https://github.com/rust-lang/crates.io-index"
125
125
+
checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
126
126
+
127
127
+
[[package]]
128
128
+
name = "block-buffer"
129
129
+
version = "0.10.4"
130
130
+
source = "registry+https://github.com/rust-lang/crates.io-index"
131
131
+
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
132
132
+
dependencies = [
133
133
+
"generic-array",
134
134
+
]
135
135
+
136
136
+
[[package]]
137
137
+
name = "bumpalo"
138
138
+
version = "3.19.1"
139
139
+
source = "registry+https://github.com/rust-lang/crates.io-index"
140
140
+
checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
141
141
+
142
142
+
[[package]]
143
143
+
name = "byteorder-lite"
144
144
+
version = "0.1.0"
145
145
+
source = "registry+https://github.com/rust-lang/crates.io-index"
146
146
+
checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
147
147
+
148
148
+
[[package]]
149
149
+
name = "bytes"
150
150
+
version = "1.11.0"
151
151
+
source = "registry+https://github.com/rust-lang/crates.io-index"
152
152
+
checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
153
153
+
154
154
+
[[package]]
155
155
+
name = "byteview"
156
156
+
version = "0.10.0"
157
157
+
source = "registry+https://github.com/rust-lang/crates.io-index"
158
158
+
checksum = "dda4398f387cc6395a3e93b3867cd9abda914c97a0b344d1eefb2e5c51785fca"
159
159
+
160
160
+
[[package]]
161
161
+
name = "cc"
162
162
+
version = "1.2.53"
163
163
+
source = "registry+https://github.com/rust-lang/crates.io-index"
164
164
+
checksum = "755d2fce177175ffca841e9a06afdb2c4ab0f593d53b4dee48147dfaade85932"
165
165
+
dependencies = [
166
166
+
"find-msvc-tools",
167
167
+
"shlex",
168
168
+
]
169
169
+
170
170
+
[[package]]
171
171
+
name = "cfg-if"
172
172
+
version = "1.0.4"
173
173
+
source = "registry+https://github.com/rust-lang/crates.io-index"
174
174
+
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
175
175
+
176
176
+
[[package]]
177
177
+
name = "cfg_aliases"
178
178
+
version = "0.2.1"
179
179
+
source = "registry+https://github.com/rust-lang/crates.io-index"
180
180
+
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
181
181
+
182
182
+
[[package]]
183
183
+
name = "chrono"
184
184
+
version = "0.4.43"
185
185
+
source = "registry+https://github.com/rust-lang/crates.io-index"
186
186
+
checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118"
187
187
+
dependencies = [
188
188
+
"iana-time-zone",
189
189
+
"js-sys",
190
190
+
"num-traits",
191
191
+
"wasm-bindgen",
192
192
+
"windows-link",
193
193
+
]
194
194
+
195
195
+
[[package]]
196
196
+
name = "compare"
197
197
+
version = "0.0.6"
198
198
+
source = "registry+https://github.com/rust-lang/crates.io-index"
199
199
+
checksum = "ea0095f6103c2a8b44acd6fd15960c801dafebf02e21940360833e0673f48ba7"
200
200
+
201
201
+
[[package]]
202
202
+
name = "core-foundation"
203
203
+
version = "0.10.1"
204
204
+
source = "registry+https://github.com/rust-lang/crates.io-index"
205
205
+
checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
206
206
+
dependencies = [
207
207
+
"core-foundation-sys",
208
208
+
"libc",
209
209
+
]
210
210
+
211
211
+
[[package]]
212
212
+
name = "core-foundation-sys"
213
213
+
version = "0.8.7"
214
214
+
source = "registry+https://github.com/rust-lang/crates.io-index"
215
215
+
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
216
216
+
217
217
+
[[package]]
218
218
+
name = "cpufeatures"
219
219
+
version = "0.2.17"
220
220
+
source = "registry+https://github.com/rust-lang/crates.io-index"
221
221
+
checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
222
222
+
dependencies = [
223
223
+
"libc",
224
224
+
]
225
225
+
226
226
+
[[package]]
227
227
+
name = "crossbeam-epoch"
228
228
+
version = "0.9.18"
229
229
+
source = "registry+https://github.com/rust-lang/crates.io-index"
230
230
+
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
231
231
+
dependencies = [
232
232
+
"crossbeam-utils",
233
233
+
]
234
234
+
235
235
+
[[package]]
236
236
+
name = "crossbeam-skiplist"
237
237
+
version = "0.1.3"
238
238
+
source = "registry+https://github.com/rust-lang/crates.io-index"
239
239
+
checksum = "df29de440c58ca2cc6e587ec3d22347551a32435fbde9d2bff64e78a9ffa151b"
240
240
+
dependencies = [
241
241
+
"crossbeam-epoch",
242
242
+
"crossbeam-utils",
243
243
+
]
244
244
+
245
245
+
[[package]]
246
246
+
name = "crossbeam-utils"
247
247
+
version = "0.8.21"
248
248
+
source = "registry+https://github.com/rust-lang/crates.io-index"
249
249
+
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
250
250
+
251
251
+
[[package]]
252
252
+
name = "crypto-common"
253
253
+
version = "0.1.7"
254
254
+
source = "registry+https://github.com/rust-lang/crates.io-index"
255
255
+
checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
256
256
+
dependencies = [
257
257
+
"generic-array",
258
258
+
"typenum",
259
259
+
]
260
260
+
261
261
+
[[package]]
262
262
+
name = "dashmap"
263
263
+
version = "6.1.0"
264
264
+
source = "registry+https://github.com/rust-lang/crates.io-index"
265
265
+
checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf"
266
266
+
dependencies = [
267
267
+
"cfg-if",
268
268
+
"crossbeam-utils",
269
269
+
"hashbrown 0.14.5",
270
270
+
"lock_api",
271
271
+
"once_cell",
272
272
+
"parking_lot_core",
273
273
+
]
274
274
+
275
275
+
[[package]]
276
276
+
name = "data-encoding"
277
277
+
version = "2.10.0"
278
278
+
source = "registry+https://github.com/rust-lang/crates.io-index"
279
279
+
checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea"
280
280
+
281
281
+
[[package]]
282
282
+
name = "digest"
283
283
+
version = "0.10.7"
284
284
+
source = "registry+https://github.com/rust-lang/crates.io-index"
285
285
+
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
286
286
+
dependencies = [
287
287
+
"block-buffer",
288
288
+
"crypto-common",
289
289
+
]
290
290
+
291
291
+
[[package]]
292
292
+
name = "displaydoc"
293
293
+
version = "0.2.5"
294
294
+
source = "registry+https://github.com/rust-lang/crates.io-index"
295
295
+
checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
296
296
+
dependencies = [
297
297
+
"proc-macro2",
298
298
+
"quote",
299
299
+
"syn",
300
300
+
]
301
301
+
302
302
+
[[package]]
303
303
+
name = "enum_dispatch"
304
304
+
version = "0.3.13"
305
305
+
source = "registry+https://github.com/rust-lang/crates.io-index"
306
306
+
checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd"
307
307
+
dependencies = [
308
308
+
"once_cell",
309
309
+
"proc-macro2",
310
310
+
"quote",
311
311
+
"syn",
312
312
+
]
313
313
+
314
314
+
[[package]]
315
315
+
name = "equivalent"
316
316
+
version = "1.0.2"
317
317
+
source = "registry+https://github.com/rust-lang/crates.io-index"
318
318
+
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
319
319
+
320
320
+
[[package]]
321
321
+
name = "errno"
322
322
+
version = "0.3.14"
323
323
+
source = "registry+https://github.com/rust-lang/crates.io-index"
324
324
+
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
325
325
+
dependencies = [
326
326
+
"libc",
327
327
+
"windows-sys 0.61.2",
328
328
+
]
329
329
+
330
330
+
[[package]]
331
331
+
name = "fastrand"
332
332
+
version = "2.3.0"
333
333
+
source = "registry+https://github.com/rust-lang/crates.io-index"
334
334
+
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
335
335
+
336
336
+
[[package]]
337
337
+
name = "find-msvc-tools"
338
338
+
version = "0.1.8"
339
339
+
source = "registry+https://github.com/rust-lang/crates.io-index"
340
340
+
checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db"
341
341
+
342
342
+
[[package]]
343
343
+
name = "fjall"
344
344
+
version = "3.0.1"
345
345
+
source = "registry+https://github.com/rust-lang/crates.io-index"
346
346
+
checksum = "4f69637c02d38ad1b0f003101d0195a60368130aa17d9ef78b1557d265a22093"
347
347
+
dependencies = [
348
348
+
"byteorder-lite",
349
349
+
"byteview",
350
350
+
"dashmap",
351
351
+
"flume",
352
352
+
"log",
353
353
+
"lsm-tree",
354
354
+
"lz4_flex",
355
355
+
"tempfile",
356
356
+
"xxhash-rust",
357
357
+
]
358
358
+
359
359
+
[[package]]
360
360
+
name = "flume"
361
361
+
version = "0.12.0"
362
362
+
source = "registry+https://github.com/rust-lang/crates.io-index"
363
363
+
checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be"
364
364
+
dependencies = [
365
365
+
"spin",
366
366
+
]
367
367
+
368
368
+
[[package]]
369
369
+
name = "form_urlencoded"
370
370
+
version = "1.2.2"
371
371
+
source = "registry+https://github.com/rust-lang/crates.io-index"
372
372
+
checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
373
373
+
dependencies = [
374
374
+
"percent-encoding",
375
375
+
]
376
376
+
377
377
+
[[package]]
378
378
+
name = "futures"
379
379
+
version = "0.3.31"
380
380
+
source = "registry+https://github.com/rust-lang/crates.io-index"
381
381
+
checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
382
382
+
dependencies = [
383
383
+
"futures-channel",
384
384
+
"futures-core",
385
385
+
"futures-executor",
386
386
+
"futures-io",
387
387
+
"futures-sink",
388
388
+
"futures-task",
389
389
+
"futures-util",
390
390
+
]
391
391
+
392
392
+
[[package]]
393
393
+
name = "futures-channel"
394
394
+
version = "0.3.31"
395
395
+
source = "registry+https://github.com/rust-lang/crates.io-index"
396
396
+
checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
397
397
+
dependencies = [
398
398
+
"futures-core",
399
399
+
"futures-sink",
400
400
+
]
401
401
+
402
402
+
[[package]]
403
403
+
name = "futures-core"
404
404
+
version = "0.3.31"
405
405
+
source = "registry+https://github.com/rust-lang/crates.io-index"
406
406
+
checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
407
407
+
408
408
+
[[package]]
409
409
+
name = "futures-executor"
410
410
+
version = "0.3.31"
411
411
+
source = "registry+https://github.com/rust-lang/crates.io-index"
412
412
+
checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
413
413
+
dependencies = [
414
414
+
"futures-core",
415
415
+
"futures-task",
416
416
+
"futures-util",
417
417
+
]
418
418
+
419
419
+
[[package]]
420
420
+
name = "futures-io"
421
421
+
version = "0.3.31"
422
422
+
source = "registry+https://github.com/rust-lang/crates.io-index"
423
423
+
checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
424
424
+
425
425
+
[[package]]
426
426
+
name = "futures-macro"
427
427
+
version = "0.3.31"
428
428
+
source = "registry+https://github.com/rust-lang/crates.io-index"
429
429
+
checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
430
430
+
dependencies = [
431
431
+
"proc-macro2",
432
432
+
"quote",
433
433
+
"syn",
434
434
+
]
435
435
+
436
436
+
[[package]]
437
437
+
name = "futures-sink"
438
438
+
version = "0.3.31"
439
439
+
source = "registry+https://github.com/rust-lang/crates.io-index"
440
440
+
checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
441
441
+
442
442
+
[[package]]
443
443
+
name = "futures-task"
444
444
+
version = "0.3.31"
445
445
+
source = "registry+https://github.com/rust-lang/crates.io-index"
446
446
+
checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
447
447
+
448
448
+
[[package]]
449
449
+
name = "futures-util"
450
450
+
version = "0.3.31"
451
451
+
source = "registry+https://github.com/rust-lang/crates.io-index"
452
452
+
checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
453
453
+
dependencies = [
454
454
+
"futures-channel",
455
455
+
"futures-core",
456
456
+
"futures-io",
457
457
+
"futures-macro",
458
458
+
"futures-sink",
459
459
+
"futures-task",
460
460
+
"memchr",
461
461
+
"pin-project-lite",
462
462
+
"pin-utils",
463
463
+
"slab",
464
464
+
]
465
465
+
466
466
+
[[package]]
467
467
+
name = "generic-array"
468
468
+
version = "0.14.7"
469
469
+
source = "registry+https://github.com/rust-lang/crates.io-index"
470
470
+
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
471
471
+
dependencies = [
472
472
+
"typenum",
473
473
+
"version_check",
474
474
+
]
475
475
+
476
476
+
[[package]]
477
477
+
name = "getrandom"
478
478
+
version = "0.2.17"
479
479
+
source = "registry+https://github.com/rust-lang/crates.io-index"
480
480
+
checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
481
481
+
dependencies = [
482
482
+
"cfg-if",
483
483
+
"js-sys",
484
484
+
"libc",
485
485
+
"wasi",
486
486
+
"wasm-bindgen",
487
487
+
]
488
488
+
489
489
+
[[package]]
490
490
+
name = "getrandom"
491
491
+
version = "0.3.4"
492
492
+
source = "registry+https://github.com/rust-lang/crates.io-index"
493
493
+
checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
494
494
+
dependencies = [
495
495
+
"cfg-if",
496
496
+
"js-sys",
497
497
+
"libc",
498
498
+
"r-efi",
499
499
+
"wasip2",
500
500
+
"wasm-bindgen",
501
501
+
]
502
502
+
503
503
+
[[package]]
504
504
+
name = "hashbrown"
505
505
+
version = "0.14.5"
506
506
+
source = "registry+https://github.com/rust-lang/crates.io-index"
507
507
+
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
508
508
+
509
509
+
[[package]]
510
510
+
name = "hashbrown"
511
511
+
version = "0.16.1"
512
512
+
source = "registry+https://github.com/rust-lang/crates.io-index"
513
513
+
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
514
514
+
515
515
+
[[package]]
516
516
+
name = "http"
517
517
+
version = "1.4.0"
518
518
+
source = "registry+https://github.com/rust-lang/crates.io-index"
519
519
+
checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
520
520
+
dependencies = [
521
521
+
"bytes",
522
522
+
"itoa",
523
523
+
]
524
524
+
525
525
+
[[package]]
526
526
+
name = "http-body"
527
527
+
version = "1.0.1"
528
528
+
source = "registry+https://github.com/rust-lang/crates.io-index"
529
529
+
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
530
530
+
dependencies = [
531
531
+
"bytes",
532
532
+
"http",
533
533
+
]
534
534
+
535
535
+
[[package]]
536
536
+
name = "http-body-util"
537
537
+
version = "0.1.3"
538
538
+
source = "registry+https://github.com/rust-lang/crates.io-index"
539
539
+
checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
540
540
+
dependencies = [
541
541
+
"bytes",
542
542
+
"futures-core",
543
543
+
"http",
544
544
+
"http-body",
545
545
+
"pin-project-lite",
546
546
+
]
547
547
+
548
548
+
[[package]]
549
549
+
name = "httparse"
550
550
+
version = "1.10.1"
551
551
+
source = "registry+https://github.com/rust-lang/crates.io-index"
552
552
+
checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
553
553
+
554
554
+
[[package]]
555
555
+
name = "httpdate"
556
556
+
version = "1.0.3"
557
557
+
source = "registry+https://github.com/rust-lang/crates.io-index"
558
558
+
checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
559
559
+
560
560
+
[[package]]
561
561
+
name = "hyper"
562
562
+
version = "1.8.1"
563
563
+
source = "registry+https://github.com/rust-lang/crates.io-index"
564
564
+
checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11"
565
565
+
dependencies = [
566
566
+
"atomic-waker",
567
567
+
"bytes",
568
568
+
"futures-channel",
569
569
+
"futures-core",
570
570
+
"http",
571
571
+
"http-body",
572
572
+
"httparse",
573
573
+
"httpdate",
574
574
+
"itoa",
575
575
+
"pin-project-lite",
576
576
+
"pin-utils",
577
577
+
"smallvec",
578
578
+
"tokio",
579
579
+
"want",
580
580
+
]
581
581
+
582
582
+
[[package]]
583
583
+
name = "hyper-rustls"
584
584
+
version = "0.27.7"
585
585
+
source = "registry+https://github.com/rust-lang/crates.io-index"
586
586
+
checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
587
587
+
dependencies = [
588
588
+
"http",
589
589
+
"hyper",
590
590
+
"hyper-util",
591
591
+
"rustls",
592
592
+
"rustls-pki-types",
593
593
+
"tokio",
594
594
+
"tokio-rustls",
595
595
+
"tower-service",
596
596
+
"webpki-roots",
597
597
+
]
598
598
+
599
599
+
[[package]]
600
600
+
name = "hyper-util"
601
601
+
version = "0.1.19"
602
602
+
source = "registry+https://github.com/rust-lang/crates.io-index"
603
603
+
checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f"
604
604
+
dependencies = [
605
605
+
"base64",
606
606
+
"bytes",
607
607
+
"futures-channel",
608
608
+
"futures-core",
609
609
+
"futures-util",
610
610
+
"http",
611
611
+
"http-body",
612
612
+
"hyper",
613
613
+
"ipnet",
614
614
+
"libc",
615
615
+
"percent-encoding",
616
616
+
"pin-project-lite",
617
617
+
"socket2",
618
618
+
"tokio",
619
619
+
"tower-service",
620
620
+
"tracing",
621
621
+
]
622
622
+
623
623
+
[[package]]
624
624
+
name = "iana-time-zone"
625
625
+
version = "0.1.64"
626
626
+
source = "registry+https://github.com/rust-lang/crates.io-index"
627
627
+
checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb"
628
628
+
dependencies = [
629
629
+
"android_system_properties",
630
630
+
"core-foundation-sys",
631
631
+
"iana-time-zone-haiku",
632
632
+
"js-sys",
633
633
+
"log",
634
634
+
"wasm-bindgen",
635
635
+
"windows-core",
636
636
+
]
637
637
+
638
638
+
[[package]]
639
639
+
name = "iana-time-zone-haiku"
640
640
+
version = "0.1.2"
641
641
+
source = "registry+https://github.com/rust-lang/crates.io-index"
642
642
+
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
643
643
+
dependencies = [
644
644
+
"cc",
645
645
+
]
646
646
+
647
647
+
[[package]]
648
648
+
name = "icu_collections"
649
649
+
version = "2.1.1"
650
650
+
source = "registry+https://github.com/rust-lang/crates.io-index"
651
651
+
checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
652
652
+
dependencies = [
653
653
+
"displaydoc",
654
654
+
"potential_utf",
655
655
+
"yoke",
656
656
+
"zerofrom",
657
657
+
"zerovec",
658
658
+
]
659
659
+
660
660
+
[[package]]
661
661
+
name = "icu_locale_core"
662
662
+
version = "2.1.1"
663
663
+
source = "registry+https://github.com/rust-lang/crates.io-index"
664
664
+
checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
665
665
+
dependencies = [
666
666
+
"displaydoc",
667
667
+
"litemap",
668
668
+
"tinystr",
669
669
+
"writeable",
670
670
+
"zerovec",
671
671
+
]
672
672
+
673
673
+
[[package]]
674
674
+
name = "icu_normalizer"
675
675
+
version = "2.1.1"
676
676
+
source = "registry+https://github.com/rust-lang/crates.io-index"
677
677
+
checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
678
678
+
dependencies = [
679
679
+
"icu_collections",
680
680
+
"icu_normalizer_data",
681
681
+
"icu_properties",
682
682
+
"icu_provider",
683
683
+
"smallvec",
684
684
+
"zerovec",
685
685
+
]
686
686
+
687
687
+
[[package]]
688
688
+
name = "icu_normalizer_data"
689
689
+
version = "2.1.1"
690
690
+
source = "registry+https://github.com/rust-lang/crates.io-index"
691
691
+
checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
692
692
+
693
693
+
[[package]]
694
694
+
name = "icu_properties"
695
695
+
version = "2.1.2"
696
696
+
source = "registry+https://github.com/rust-lang/crates.io-index"
697
697
+
checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec"
698
698
+
dependencies = [
699
699
+
"icu_collections",
700
700
+
"icu_locale_core",
701
701
+
"icu_properties_data",
702
702
+
"icu_provider",
703
703
+
"zerotrie",
704
704
+
"zerovec",
705
705
+
]
706
706
+
707
707
+
[[package]]
708
708
+
name = "icu_properties_data"
709
709
+
version = "2.1.2"
710
710
+
source = "registry+https://github.com/rust-lang/crates.io-index"
711
711
+
checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af"
712
712
+
713
713
+
[[package]]
714
714
+
name = "icu_provider"
715
715
+
version = "2.1.1"
716
716
+
source = "registry+https://github.com/rust-lang/crates.io-index"
717
717
+
checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
718
718
+
dependencies = [
719
719
+
"displaydoc",
720
720
+
"icu_locale_core",
721
721
+
"writeable",
722
722
+
"yoke",
723
723
+
"zerofrom",
724
724
+
"zerotrie",
725
725
+
"zerovec",
726
726
+
]
727
727
+
728
728
+
[[package]]
729
729
+
name = "idna"
730
730
+
version = "1.1.0"
731
731
+
source = "registry+https://github.com/rust-lang/crates.io-index"
732
732
+
checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
733
733
+
dependencies = [
734
734
+
"idna_adapter",
735
735
+
"smallvec",
736
736
+
"utf8_iter",
737
737
+
]
738
738
+
739
739
+
[[package]]
740
740
+
name = "idna_adapter"
741
741
+
version = "1.2.1"
742
742
+
source = "registry+https://github.com/rust-lang/crates.io-index"
743
743
+
checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
744
744
+
dependencies = [
745
745
+
"icu_normalizer",
746
746
+
"icu_properties",
747
747
+
]
748
748
+
749
749
+
[[package]]
750
750
+
name = "interval-heap"
751
751
+
version = "0.0.5"
752
752
+
source = "registry+https://github.com/rust-lang/crates.io-index"
753
753
+
checksum = "11274e5e8e89b8607cfedc2910b6626e998779b48a019151c7604d0adcb86ac6"
754
754
+
dependencies = [
755
755
+
"compare",
756
756
+
]
757
757
+
758
758
+
[[package]]
759
759
+
name = "ipnet"
760
760
+
version = "2.11.0"
761
761
+
source = "registry+https://github.com/rust-lang/crates.io-index"
762
762
+
checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
763
763
+
764
764
+
[[package]]
765
765
+
name = "iri-string"
766
766
+
version = "0.7.10"
767
767
+
source = "registry+https://github.com/rust-lang/crates.io-index"
768
768
+
checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a"
769
769
+
dependencies = [
770
770
+
"memchr",
771
771
+
"serde",
772
772
+
]
773
773
+
774
774
+
[[package]]
775
775
+
name = "itoa"
776
776
+
version = "1.0.17"
777
777
+
source = "registry+https://github.com/rust-lang/crates.io-index"
778
778
+
checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
779
779
+
780
780
+
[[package]]
781
781
+
name = "js-sys"
782
782
+
version = "0.3.85"
783
783
+
source = "registry+https://github.com/rust-lang/crates.io-index"
784
784
+
checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3"
785
785
+
dependencies = [
786
786
+
"once_cell",
787
787
+
"wasm-bindgen",
788
788
+
]
789
789
+
790
790
+
[[package]]
791
791
+
name = "lazy_static"
792
792
+
version = "1.5.0"
793
793
+
source = "registry+https://github.com/rust-lang/crates.io-index"
794
794
+
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
795
795
+
796
796
+
[[package]]
797
797
+
name = "libc"
798
798
+
version = "0.2.180"
799
799
+
source = "registry+https://github.com/rust-lang/crates.io-index"
800
800
+
checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc"
801
801
+
802
802
+
[[package]]
803
803
+
name = "linux-raw-sys"
804
804
+
version = "0.11.0"
805
805
+
source = "registry+https://github.com/rust-lang/crates.io-index"
806
806
+
checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
807
807
+
808
808
+
[[package]]
809
809
+
name = "litemap"
810
810
+
version = "0.8.1"
811
811
+
source = "registry+https://github.com/rust-lang/crates.io-index"
812
812
+
checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
813
813
+
814
814
+
[[package]]
815
815
+
name = "lock_api"
816
816
+
version = "0.4.14"
817
817
+
source = "registry+https://github.com/rust-lang/crates.io-index"
818
818
+
checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
819
819
+
dependencies = [
820
820
+
"scopeguard",
821
821
+
]
822
822
+
823
823
+
[[package]]
824
824
+
name = "log"
825
825
+
version = "0.4.29"
826
826
+
source = "registry+https://github.com/rust-lang/crates.io-index"
827
827
+
checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
828
828
+
829
829
+
[[package]]
830
830
+
name = "lru-slab"
831
831
+
version = "0.1.2"
832
832
+
source = "registry+https://github.com/rust-lang/crates.io-index"
833
833
+
checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
834
834
+
835
835
+
[[package]]
836
836
+
name = "lsm-tree"
837
837
+
version = "3.0.1"
838
838
+
source = "registry+https://github.com/rust-lang/crates.io-index"
839
839
+
checksum = "b875f1dfe14f557f805b167fb9b0fc54c5560c7a4bd6ae02535b2846f276a8cb"
840
840
+
dependencies = [
841
841
+
"byteorder-lite",
842
842
+
"byteview",
843
843
+
"crossbeam-skiplist",
844
844
+
"enum_dispatch",
845
845
+
"interval-heap",
846
846
+
"log",
847
847
+
"lz4_flex",
848
848
+
"quick_cache",
849
849
+
"rustc-hash",
850
850
+
"self_cell",
851
851
+
"sfa",
852
852
+
"tempfile",
853
853
+
"varint-rs",
854
854
+
"xxhash-rust",
855
855
+
]
856
856
+
857
857
+
[[package]]
858
858
+
name = "lz4_flex"
859
859
+
version = "0.11.5"
860
860
+
source = "registry+https://github.com/rust-lang/crates.io-index"
861
861
+
checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a"
862
862
+
dependencies = [
863
863
+
"twox-hash",
864
864
+
]
865
865
+
866
866
+
[[package]]
867
867
+
name = "matchit"
868
868
+
version = "0.7.3"
869
869
+
source = "registry+https://github.com/rust-lang/crates.io-index"
870
870
+
checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
871
871
+
872
872
+
[[package]]
873
873
+
name = "memchr"
874
874
+
version = "2.7.6"
875
875
+
source = "registry+https://github.com/rust-lang/crates.io-index"
876
876
+
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
877
877
+
878
878
+
[[package]]
879
879
+
name = "mime"
880
880
+
version = "0.3.17"
881
881
+
source = "registry+https://github.com/rust-lang/crates.io-index"
882
882
+
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
883
883
+
884
884
+
[[package]]
885
885
+
name = "mio"
886
886
+
version = "1.1.1"
887
887
+
source = "registry+https://github.com/rust-lang/crates.io-index"
888
888
+
checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc"
889
889
+
dependencies = [
890
890
+
"libc",
891
891
+
"wasi",
892
892
+
"windows-sys 0.61.2",
893
893
+
]
894
894
+
895
895
+
[[package]]
896
896
+
name = "nu-ansi-term"
897
897
+
version = "0.50.3"
898
898
+
source = "registry+https://github.com/rust-lang/crates.io-index"
899
899
+
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
900
900
+
dependencies = [
901
901
+
"windows-sys 0.61.2",
902
902
+
]
903
903
+
904
904
+
[[package]]
905
905
+
name = "num-traits"
906
906
+
version = "0.2.19"
907
907
+
source = "registry+https://github.com/rust-lang/crates.io-index"
908
908
+
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
909
909
+
dependencies = [
910
910
+
"autocfg",
911
911
+
]
912
912
+
913
913
+
[[package]]
914
914
+
name = "once_cell"
915
915
+
version = "1.21.3"
916
916
+
source = "registry+https://github.com/rust-lang/crates.io-index"
917
917
+
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
918
918
+
919
919
+
[[package]]
920
920
+
name = "openssl-probe"
921
921
+
version = "0.2.0"
922
922
+
source = "registry+https://github.com/rust-lang/crates.io-index"
923
923
+
checksum = "9f50d9b3dabb09ecd771ad0aa242ca6894994c130308ca3d7684634df8037391"
924
924
+
925
925
+
[[package]]
926
926
+
name = "parking_lot"
927
927
+
version = "0.12.5"
928
928
+
source = "registry+https://github.com/rust-lang/crates.io-index"
929
929
+
checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
930
930
+
dependencies = [
931
931
+
"lock_api",
932
932
+
"parking_lot_core",
933
933
+
]
934
934
+
935
935
+
[[package]]
936
936
+
name = "parking_lot_core"
937
937
+
version = "0.9.12"
938
938
+
source = "registry+https://github.com/rust-lang/crates.io-index"
939
939
+
checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
940
940
+
dependencies = [
941
941
+
"cfg-if",
942
942
+
"libc",
943
943
+
"redox_syscall",
944
944
+
"smallvec",
945
945
+
"windows-link",
946
946
+
]
947
947
+
948
948
+
[[package]]
949
949
+
name = "percent-encoding"
950
950
+
version = "2.3.2"
951
951
+
source = "registry+https://github.com/rust-lang/crates.io-index"
952
952
+
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
953
953
+
954
954
+
[[package]]
955
955
+
name = "pin-project-lite"
956
956
+
version = "0.2.16"
957
957
+
source = "registry+https://github.com/rust-lang/crates.io-index"
958
958
+
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
959
959
+
960
960
+
[[package]]
961
961
+
name = "pin-utils"
962
962
+
version = "0.1.0"
963
963
+
source = "registry+https://github.com/rust-lang/crates.io-index"
964
964
+
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
965
965
+
966
966
+
[[package]]
967
967
+
name = "potential_utf"
968
968
+
version = "0.1.4"
969
969
+
source = "registry+https://github.com/rust-lang/crates.io-index"
970
970
+
checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
971
971
+
dependencies = [
972
972
+
"zerovec",
973
973
+
]
974
974
+
975
975
+
[[package]]
976
976
+
name = "ppv-lite86"
977
977
+
version = "0.2.21"
978
978
+
source = "registry+https://github.com/rust-lang/crates.io-index"
979
979
+
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
980
980
+
dependencies = [
981
981
+
"zerocopy",
982
982
+
]
983
983
+
984
984
+
[[package]]
985
985
+
name = "proc-macro2"
986
986
+
version = "1.0.105"
987
987
+
source = "registry+https://github.com/rust-lang/crates.io-index"
988
988
+
checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7"
989
989
+
dependencies = [
990
990
+
"unicode-ident",
991
991
+
]
992
992
+
993
993
+
[[package]]
994
994
+
name = "quick_cache"
995
995
+
version = "0.6.18"
996
996
+
source = "registry+https://github.com/rust-lang/crates.io-index"
997
997
+
checksum = "7ada44a88ef953a3294f6eb55d2007ba44646015e18613d2f213016379203ef3"
998
998
+
dependencies = [
999
999
+
"equivalent",
1000
1000
+
"hashbrown 0.16.1",
1001
1001
+
]
1002
1002
+
1003
1003
+
[[package]]
1004
1004
+
name = "quinn"
1005
1005
+
version = "0.11.9"
1006
1006
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1007
1007
+
checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
1008
1008
+
dependencies = [
1009
1009
+
"bytes",
1010
1010
+
"cfg_aliases",
1011
1011
+
"pin-project-lite",
1012
1012
+
"quinn-proto",
1013
1013
+
"quinn-udp",
1014
1014
+
"rustc-hash",
1015
1015
+
"rustls",
1016
1016
+
"socket2",
1017
1017
+
"thiserror",
1018
1018
+
"tokio",
1019
1019
+
"tracing",
1020
1020
+
"web-time",
1021
1021
+
]
1022
1022
+
1023
1023
+
[[package]]
1024
1024
+
name = "quinn-proto"
1025
1025
+
version = "0.11.13"
1026
1026
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1027
1027
+
checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31"
1028
1028
+
dependencies = [
1029
1029
+
"bytes",
1030
1030
+
"getrandom 0.3.4",
1031
1031
+
"lru-slab",
1032
1032
+
"rand",
1033
1033
+
"ring",
1034
1034
+
"rustc-hash",
1035
1035
+
"rustls",
1036
1036
+
"rustls-pki-types",
1037
1037
+
"slab",
1038
1038
+
"thiserror",
1039
1039
+
"tinyvec",
1040
1040
+
"tracing",
1041
1041
+
"web-time",
1042
1042
+
]
1043
1043
+
1044
1044
+
[[package]]
1045
1045
+
name = "quinn-udp"
1046
1046
+
version = "0.5.14"
1047
1047
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1048
1048
+
checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
1049
1049
+
dependencies = [
1050
1050
+
"cfg_aliases",
1051
1051
+
"libc",
1052
1052
+
"once_cell",
1053
1053
+
"socket2",
1054
1054
+
"tracing",
1055
1055
+
"windows-sys 0.60.2",
1056
1056
+
]
1057
1057
+
1058
1058
+
[[package]]
1059
1059
+
name = "quote"
1060
1060
+
version = "1.0.43"
1061
1061
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1062
1062
+
checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a"
1063
1063
+
dependencies = [
1064
1064
+
"proc-macro2",
1065
1065
+
]
1066
1066
+
1067
1067
+
[[package]]
1068
1068
+
name = "r-efi"
1069
1069
+
version = "5.3.0"
1070
1070
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1071
1071
+
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
1072
1072
+
1073
1073
+
[[package]]
1074
1074
+
name = "rand"
1075
1075
+
version = "0.9.2"
1076
1076
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1077
1077
+
checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
1078
1078
+
dependencies = [
1079
1079
+
"rand_chacha",
1080
1080
+
"rand_core",
1081
1081
+
]
1082
1082
+
1083
1083
+
[[package]]
1084
1084
+
name = "rand_chacha"
1085
1085
+
version = "0.9.0"
1086
1086
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1087
1087
+
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
1088
1088
+
dependencies = [
1089
1089
+
"ppv-lite86",
1090
1090
+
"rand_core",
1091
1091
+
]
1092
1092
+
1093
1093
+
[[package]]
1094
1094
+
name = "rand_core"
1095
1095
+
version = "0.9.5"
1096
1096
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1097
1097
+
checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
1098
1098
+
dependencies = [
1099
1099
+
"getrandom 0.3.4",
1100
1100
+
]
1101
1101
+
1102
1102
+
[[package]]
1103
1103
+
name = "redox_syscall"
1104
1104
+
version = "0.5.18"
1105
1105
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1106
1106
+
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
1107
1107
+
dependencies = [
1108
1108
+
"bitflags",
1109
1109
+
]
1110
1110
+
1111
1111
+
[[package]]
1112
1112
+
name = "reqwest"
1113
1113
+
version = "0.12.28"
1114
1114
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1115
1115
+
checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
1116
1116
+
dependencies = [
1117
1117
+
"base64",
1118
1118
+
"bytes",
1119
1119
+
"futures-core",
1120
1120
+
"http",
1121
1121
+
"http-body",
1122
1122
+
"http-body-util",
1123
1123
+
"hyper",
1124
1124
+
"hyper-rustls",
1125
1125
+
"hyper-util",
1126
1126
+
"js-sys",
1127
1127
+
"log",
1128
1128
+
"percent-encoding",
1129
1129
+
"pin-project-lite",
1130
1130
+
"quinn",
1131
1131
+
"rustls",
1132
1132
+
"rustls-pki-types",
1133
1133
+
"serde",
1134
1134
+
"serde_json",
1135
1135
+
"serde_urlencoded",
1136
1136
+
"sync_wrapper",
1137
1137
+
"tokio",
1138
1138
+
"tokio-rustls",
1139
1139
+
"tower",
1140
1140
+
"tower-http",
1141
1141
+
"tower-service",
1142
1142
+
"url",
1143
1143
+
"wasm-bindgen",
1144
1144
+
"wasm-bindgen-futures",
1145
1145
+
"web-sys",
1146
1146
+
"webpki-roots",
1147
1147
+
]
1148
1148
+
1149
1149
+
[[package]]
1150
1150
+
name = "ring"
1151
1151
+
version = "0.17.14"
1152
1152
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1153
1153
+
checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
1154
1154
+
dependencies = [
1155
1155
+
"cc",
1156
1156
+
"cfg-if",
1157
1157
+
"getrandom 0.2.17",
1158
1158
+
"libc",
1159
1159
+
"untrusted",
1160
1160
+
"windows-sys 0.52.0",
1161
1161
+
]
1162
1162
+
1163
1163
+
[[package]]
1164
1164
+
name = "rustc-hash"
1165
1165
+
version = "2.1.1"
1166
1166
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1167
1167
+
checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
1168
1168
+
1169
1169
+
[[package]]
1170
1170
+
name = "rustix"
1171
1171
+
version = "1.1.3"
1172
1172
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1173
1173
+
checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34"
1174
1174
+
dependencies = [
1175
1175
+
"bitflags",
1176
1176
+
"errno",
1177
1177
+
"libc",
1178
1178
+
"linux-raw-sys",
1179
1179
+
"windows-sys 0.61.2",
1180
1180
+
]
1181
1181
+
1182
1182
+
[[package]]
1183
1183
+
name = "rustls"
1184
1184
+
version = "0.23.36"
1185
1185
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1186
1186
+
checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b"
1187
1187
+
dependencies = [
1188
1188
+
"once_cell",
1189
1189
+
"ring",
1190
1190
+
"rustls-pki-types",
1191
1191
+
"rustls-webpki",
1192
1192
+
"subtle",
1193
1193
+
"zeroize",
1194
1194
+
]
1195
1195
+
1196
1196
+
[[package]]
1197
1197
+
name = "rustls-native-certs"
1198
1198
+
version = "0.8.3"
1199
1199
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1200
1200
+
checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63"
1201
1201
+
dependencies = [
1202
1202
+
"openssl-probe",
1203
1203
+
"rustls-pki-types",
1204
1204
+
"schannel",
1205
1205
+
"security-framework",
1206
1206
+
]
1207
1207
+
1208
1208
+
[[package]]
1209
1209
+
name = "rustls-pki-types"
1210
1210
+
version = "1.14.0"
1211
1211
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1212
1212
+
checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"
1213
1213
+
dependencies = [
1214
1214
+
"web-time",
1215
1215
+
"zeroize",
1216
1216
+
]
1217
1217
+
1218
1218
+
[[package]]
1219
1219
+
name = "rustls-webpki"
1220
1220
+
version = "0.103.9"
1221
1221
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1222
1222
+
checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53"
1223
1223
+
dependencies = [
1224
1224
+
"ring",
1225
1225
+
"rustls-pki-types",
1226
1226
+
"untrusted",
1227
1227
+
]
1228
1228
+
1229
1229
+
[[package]]
1230
1230
+
name = "rustversion"
1231
1231
+
version = "1.0.22"
1232
1232
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1233
1233
+
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
1234
1234
+
1235
1235
+
[[package]]
1236
1236
+
name = "ryu"
1237
1237
+
version = "1.0.22"
1238
1238
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1239
1239
+
checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984"
1240
1240
+
1241
1241
+
[[package]]
1242
1242
+
name = "schannel"
1243
1243
+
version = "0.1.28"
1244
1244
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1245
1245
+
checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
1246
1246
+
dependencies = [
1247
1247
+
"windows-sys 0.61.2",
1248
1248
+
]
1249
1249
+
1250
1250
+
[[package]]
1251
1251
+
name = "scopeguard"
1252
1252
+
version = "1.2.0"
1253
1253
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1254
1254
+
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
1255
1255
+
1256
1256
+
[[package]]
1257
1257
+
name = "security-framework"
1258
1258
+
version = "3.5.1"
1259
1259
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1260
1260
+
checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef"
1261
1261
+
dependencies = [
1262
1262
+
"bitflags",
1263
1263
+
"core-foundation",
1264
1264
+
"core-foundation-sys",
1265
1265
+
"libc",
1266
1266
+
"security-framework-sys",
1267
1267
+
]
1268
1268
+
1269
1269
+
[[package]]
1270
1270
+
name = "security-framework-sys"
1271
1271
+
version = "2.15.0"
1272
1272
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1273
1273
+
checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
1274
1274
+
dependencies = [
1275
1275
+
"core-foundation-sys",
1276
1276
+
"libc",
1277
1277
+
]
1278
1278
+
1279
1279
+
[[package]]
1280
1280
+
name = "self_cell"
1281
1281
+
version = "1.2.2"
1282
1282
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1283
1283
+
checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89"
1284
1284
+
1285
1285
+
[[package]]
1286
1286
+
name = "serde"
1287
1287
+
version = "1.0.228"
1288
1288
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1289
1289
+
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
1290
1290
+
dependencies = [
1291
1291
+
"serde_core",
1292
1292
+
"serde_derive",
1293
1293
+
]
1294
1294
+
1295
1295
+
[[package]]
1296
1296
+
name = "serde_core"
1297
1297
+
version = "1.0.228"
1298
1298
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1299
1299
+
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
1300
1300
+
dependencies = [
1301
1301
+
"serde_derive",
1302
1302
+
]
1303
1303
+
1304
1304
+
[[package]]
1305
1305
+
name = "serde_derive"
1306
1306
+
version = "1.0.228"
1307
1307
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1308
1308
+
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
1309
1309
+
dependencies = [
1310
1310
+
"proc-macro2",
1311
1311
+
"quote",
1312
1312
+
"syn",
1313
1313
+
]
1314
1314
+
1315
1315
+
[[package]]
1316
1316
+
name = "serde_json"
1317
1317
+
version = "1.0.149"
1318
1318
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1319
1319
+
checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
1320
1320
+
dependencies = [
1321
1321
+
"itoa",
1322
1322
+
"memchr",
1323
1323
+
"serde",
1324
1324
+
"serde_core",
1325
1325
+
"zmij",
1326
1326
+
]
1327
1327
+
1328
1328
+
[[package]]
1329
1329
+
name = "serde_path_to_error"
1330
1330
+
version = "0.1.20"
1331
1331
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1332
1332
+
checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457"
1333
1333
+
dependencies = [
1334
1334
+
"itoa",
1335
1335
+
"serde",
1336
1336
+
"serde_core",
1337
1337
+
]
1338
1338
+
1339
1339
+
[[package]]
1340
1340
+
name = "serde_urlencoded"
1341
1341
+
version = "0.7.1"
1342
1342
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1343
1343
+
checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
1344
1344
+
dependencies = [
1345
1345
+
"form_urlencoded",
1346
1346
+
"itoa",
1347
1347
+
"ryu",
1348
1348
+
"serde",
1349
1349
+
]
1350
1350
+
1351
1351
+
[[package]]
1352
1352
+
name = "sfa"
1353
1353
+
version = "1.0.0"
1354
1354
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1355
1355
+
checksum = "a1296838937cab56cd6c4eeeb8718ec777383700c33f060e2869867bd01d1175"
1356
1356
+
dependencies = [
1357
1357
+
"byteorder-lite",
1358
1358
+
"log",
1359
1359
+
"xxhash-rust",
1360
1360
+
]
1361
1361
+
1362
1362
+
[[package]]
1363
1363
+
name = "sha1"
1364
1364
+
version = "0.10.6"
1365
1365
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1366
1366
+
checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
1367
1367
+
dependencies = [
1368
1368
+
"cfg-if",
1369
1369
+
"cpufeatures",
1370
1370
+
"digest",
1371
1371
+
]
1372
1372
+
1373
1373
+
[[package]]
1374
1374
+
name = "sharded-slab"
1375
1375
+
version = "0.1.7"
1376
1376
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1377
1377
+
checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
1378
1378
+
dependencies = [
1379
1379
+
"lazy_static",
1380
1380
+
]
1381
1381
+
1382
1382
+
[[package]]
1383
1383
+
name = "shlex"
1384
1384
+
version = "1.3.0"
1385
1385
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1386
1386
+
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
1387
1387
+
1388
1388
+
[[package]]
1389
1389
+
name = "signal-hook-registry"
1390
1390
+
version = "1.4.8"
1391
1391
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1392
1392
+
checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
1393
1393
+
dependencies = [
1394
1394
+
"errno",
1395
1395
+
"libc",
1396
1396
+
]
1397
1397
+
1398
1398
+
[[package]]
1399
1399
+
name = "slab"
1400
1400
+
version = "0.4.11"
1401
1401
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1402
1402
+
checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
1403
1403
+
1404
1404
+
[[package]]
1405
1405
+
name = "smallvec"
1406
1406
+
version = "1.15.1"
1407
1407
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1408
1408
+
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
1409
1409
+
1410
1410
+
[[package]]
1411
1411
+
name = "socket2"
1412
1412
+
version = "0.6.1"
1413
1413
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1414
1414
+
checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
1415
1415
+
dependencies = [
1416
1416
+
"libc",
1417
1417
+
"windows-sys 0.60.2",
1418
1418
+
]
1419
1419
+
1420
1420
+
[[package]]
1421
1421
+
name = "spin"
1422
1422
+
version = "0.9.8"
1423
1423
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1424
1424
+
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
1425
1425
+
dependencies = [
1426
1426
+
"lock_api",
1427
1427
+
]
1428
1428
+
1429
1429
+
[[package]]
1430
1430
+
name = "stable_deref_trait"
1431
1431
+
version = "1.2.1"
1432
1432
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1433
1433
+
checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
1434
1434
+
1435
1435
+
[[package]]
1436
1436
+
name = "subtle"
1437
1437
+
version = "2.6.1"
1438
1438
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1439
1439
+
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
1440
1440
+
1441
1441
+
[[package]]
1442
1442
+
name = "syn"
1443
1443
+
version = "2.0.114"
1444
1444
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1445
1445
+
checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
1446
1446
+
dependencies = [
1447
1447
+
"proc-macro2",
1448
1448
+
"quote",
1449
1449
+
"unicode-ident",
1450
1450
+
]
1451
1451
+
1452
1452
+
[[package]]
1453
1453
+
name = "sync_wrapper"
1454
1454
+
version = "1.0.2"
1455
1455
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1456
1456
+
checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
1457
1457
+
dependencies = [
1458
1458
+
"futures-core",
1459
1459
+
]
1460
1460
+
1461
1461
+
[[package]]
1462
1462
+
name = "synstructure"
1463
1463
+
version = "0.13.2"
1464
1464
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1465
1465
+
checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
1466
1466
+
dependencies = [
1467
1467
+
"proc-macro2",
1468
1468
+
"quote",
1469
1469
+
"syn",
1470
1470
+
]
1471
1471
+
1472
1472
+
[[package]]
1473
1473
+
name = "tapped"
1474
1474
+
version = "0.1.0"
1475
1475
+
source = "git+https://github.com/thombles/tapped#c7f38d365901218d35489175f711ce5495512ef7"
1476
1476
+
dependencies = [
1477
1477
+
"base64",
1478
1478
+
"futures-util",
1479
1479
+
"libc",
1480
1480
+
"reqwest",
1481
1481
+
"serde",
1482
1482
+
"serde_json",
1483
1483
+
"thiserror",
1484
1484
+
"tokio",
1485
1485
+
"tokio-tungstenite",
1486
1486
+
"tracing",
1487
1487
+
"url",
1488
1488
+
]
1489
1489
+
1490
1490
+
[[package]]
1491
1491
+
name = "tempfile"
1492
1492
+
version = "3.24.0"
1493
1493
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1494
1494
+
checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c"
1495
1495
+
dependencies = [
1496
1496
+
"fastrand",
1497
1497
+
"getrandom 0.3.4",
1498
1498
+
"once_cell",
1499
1499
+
"rustix",
1500
1500
+
"windows-sys 0.61.2",
1501
1501
+
]
1502
1502
+
1503
1503
+
[[package]]
1504
1504
+
name = "thiserror"
1505
1505
+
version = "2.0.18"
1506
1506
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1507
1507
+
checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
1508
1508
+
dependencies = [
1509
1509
+
"thiserror-impl",
1510
1510
+
]
1511
1511
+
1512
1512
+
[[package]]
1513
1513
+
name = "thiserror-impl"
1514
1514
+
version = "2.0.18"
1515
1515
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1516
1516
+
checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
1517
1517
+
dependencies = [
1518
1518
+
"proc-macro2",
1519
1519
+
"quote",
1520
1520
+
"syn",
1521
1521
+
]
1522
1522
+
1523
1523
+
[[package]]
1524
1524
+
name = "thread_local"
1525
1525
+
version = "1.1.9"
1526
1526
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1527
1527
+
checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
1528
1528
+
dependencies = [
1529
1529
+
"cfg-if",
1530
1530
+
]
1531
1531
+
1532
1532
+
[[package]]
1533
1533
+
name = "tinystr"
1534
1534
+
version = "0.8.2"
1535
1535
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1536
1536
+
checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
1537
1537
+
dependencies = [
1538
1538
+
"displaydoc",
1539
1539
+
"zerovec",
1540
1540
+
]
1541
1541
+
1542
1542
+
[[package]]
1543
1543
+
name = "tinyvec"
1544
1544
+
version = "1.10.0"
1545
1545
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1546
1546
+
checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
1547
1547
+
dependencies = [
1548
1548
+
"tinyvec_macros",
1549
1549
+
]
1550
1550
+
1551
1551
+
[[package]]
1552
1552
+
name = "tinyvec_macros"
1553
1553
+
version = "0.1.1"
1554
1554
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1555
1555
+
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
1556
1556
+
1557
1557
+
[[package]]
1558
1558
+
name = "tokio"
1559
1559
+
version = "1.49.0"
1560
1560
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1561
1561
+
checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86"
1562
1562
+
dependencies = [
1563
1563
+
"bytes",
1564
1564
+
"libc",
1565
1565
+
"mio",
1566
1566
+
"parking_lot",
1567
1567
+
"pin-project-lite",
1568
1568
+
"signal-hook-registry",
1569
1569
+
"socket2",
1570
1570
+
"tokio-macros",
1571
1571
+
"windows-sys 0.61.2",
1572
1572
+
]
1573
1573
+
1574
1574
+
[[package]]
1575
1575
+
name = "tokio-macros"
1576
1576
+
version = "2.6.0"
1577
1577
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1578
1578
+
checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
1579
1579
+
dependencies = [
1580
1580
+
"proc-macro2",
1581
1581
+
"quote",
1582
1582
+
"syn",
1583
1583
+
]
1584
1584
+
1585
1585
+
[[package]]
1586
1586
+
name = "tokio-rustls"
1587
1587
+
version = "0.26.4"
1588
1588
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1589
1589
+
checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
1590
1590
+
dependencies = [
1591
1591
+
"rustls",
1592
1592
+
"tokio",
1593
1593
+
]
1594
1594
+
1595
1595
+
[[package]]
1596
1596
+
name = "tokio-tungstenite"
1597
1597
+
version = "0.26.2"
1598
1598
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1599
1599
+
checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084"
1600
1600
+
dependencies = [
1601
1601
+
"futures-util",
1602
1602
+
"log",
1603
1603
+
"rustls",
1604
1604
+
"rustls-native-certs",
1605
1605
+
"rustls-pki-types",
1606
1606
+
"tokio",
1607
1607
+
"tokio-rustls",
1608
1608
+
"tungstenite",
1609
1609
+
]
1610
1610
+
1611
1611
+
[[package]]
1612
1612
+
name = "tower"
1613
1613
+
version = "0.5.3"
1614
1614
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1615
1615
+
checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"
1616
1616
+
dependencies = [
1617
1617
+
"futures-core",
1618
1618
+
"futures-util",
1619
1619
+
"pin-project-lite",
1620
1620
+
"sync_wrapper",
1621
1621
+
"tokio",
1622
1622
+
"tower-layer",
1623
1623
+
"tower-service",
1624
1624
+
"tracing",
1625
1625
+
]
1626
1626
+
1627
1627
+
[[package]]
1628
1628
+
name = "tower-http"
1629
1629
+
version = "0.6.8"
1630
1630
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1631
1631
+
checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
1632
1632
+
dependencies = [
1633
1633
+
"bitflags",
1634
1634
+
"bytes",
1635
1635
+
"futures-util",
1636
1636
+
"http",
1637
1637
+
"http-body",
1638
1638
+
"iri-string",
1639
1639
+
"pin-project-lite",
1640
1640
+
"tower",
1641
1641
+
"tower-layer",
1642
1642
+
"tower-service",
1643
1643
+
]
1644
1644
+
1645
1645
+
[[package]]
1646
1646
+
name = "tower-layer"
1647
1647
+
version = "0.3.3"
1648
1648
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1649
1649
+
checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
1650
1650
+
1651
1651
+
[[package]]
1652
1652
+
name = "tower-service"
1653
1653
+
version = "0.3.3"
1654
1654
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1655
1655
+
checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
1656
1656
+
1657
1657
+
[[package]]
1658
1658
+
name = "tracing"
1659
1659
+
version = "0.1.44"
1660
1660
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1661
1661
+
checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
1662
1662
+
dependencies = [
1663
1663
+
"log",
1664
1664
+
"pin-project-lite",
1665
1665
+
"tracing-attributes",
1666
1666
+
"tracing-core",
1667
1667
+
]
1668
1668
+
1669
1669
+
[[package]]
1670
1670
+
name = "tracing-attributes"
1671
1671
+
version = "0.1.31"
1672
1672
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1673
1673
+
checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
1674
1674
+
dependencies = [
1675
1675
+
"proc-macro2",
1676
1676
+
"quote",
1677
1677
+
"syn",
1678
1678
+
]
1679
1679
+
1680
1680
+
[[package]]
1681
1681
+
name = "tracing-core"
1682
1682
+
version = "0.1.36"
1683
1683
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1684
1684
+
checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
1685
1685
+
dependencies = [
1686
1686
+
"once_cell",
1687
1687
+
"valuable",
1688
1688
+
]
1689
1689
+
1690
1690
+
[[package]]
1691
1691
+
name = "tracing-log"
1692
1692
+
version = "0.2.0"
1693
1693
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1694
1694
+
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
1695
1695
+
dependencies = [
1696
1696
+
"log",
1697
1697
+
"once_cell",
1698
1698
+
"tracing-core",
1699
1699
+
]
1700
1700
+
1701
1701
+
[[package]]
1702
1702
+
name = "tracing-subscriber"
1703
1703
+
version = "0.3.22"
1704
1704
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1705
1705
+
checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e"
1706
1706
+
dependencies = [
1707
1707
+
"nu-ansi-term",
1708
1708
+
"sharded-slab",
1709
1709
+
"smallvec",
1710
1710
+
"thread_local",
1711
1711
+
"tracing-core",
1712
1712
+
"tracing-log",
1713
1713
+
]
1714
1714
+
1715
1715
+
[[package]]
1716
1716
+
name = "try-lock"
1717
1717
+
version = "0.2.5"
1718
1718
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1719
1719
+
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
1720
1720
+
1721
1721
+
[[package]]
1722
1722
+
name = "tungstenite"
1723
1723
+
version = "0.26.2"
1724
1724
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1725
1725
+
checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13"
1726
1726
+
dependencies = [
1727
1727
+
"bytes",
1728
1728
+
"data-encoding",
1729
1729
+
"http",
1730
1730
+
"httparse",
1731
1731
+
"log",
1732
1732
+
"rand",
1733
1733
+
"rustls",
1734
1734
+
"rustls-pki-types",
1735
1735
+
"sha1",
1736
1736
+
"thiserror",
1737
1737
+
"utf-8",
1738
1738
+
]
1739
1739
+
1740
1740
+
[[package]]
1741
1741
+
name = "twox-hash"
1742
1742
+
version = "2.1.2"
1743
1743
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1744
1744
+
checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c"
1745
1745
+
1746
1746
+
[[package]]
1747
1747
+
name = "typenum"
1748
1748
+
version = "1.19.0"
1749
1749
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1750
1750
+
checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
1751
1751
+
1752
1752
+
[[package]]
1753
1753
+
name = "unicode-ident"
1754
1754
+
version = "1.0.22"
1755
1755
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1756
1756
+
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
1757
1757
+
1758
1758
+
[[package]]
1759
1759
+
name = "untrusted"
1760
1760
+
version = "0.9.0"
1761
1761
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1762
1762
+
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
1763
1763
+
1764
1764
+
[[package]]
1765
1765
+
name = "url"
1766
1766
+
version = "2.5.8"
1767
1767
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1768
1768
+
checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
1769
1769
+
dependencies = [
1770
1770
+
"form_urlencoded",
1771
1771
+
"idna",
1772
1772
+
"percent-encoding",
1773
1773
+
"serde",
1774
1774
+
"serde_derive",
1775
1775
+
]
1776
1776
+
1777
1777
+
[[package]]
1778
1778
+
name = "utf-8"
1779
1779
+
version = "0.7.6"
1780
1780
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1781
1781
+
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
1782
1782
+
1783
1783
+
[[package]]
1784
1784
+
name = "utf8_iter"
1785
1785
+
version = "1.0.4"
1786
1786
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1787
1787
+
checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
1788
1788
+
1789
1789
+
[[package]]
1790
1790
+
name = "valuable"
1791
1791
+
version = "0.1.1"
1792
1792
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1793
1793
+
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
1794
1794
+
1795
1795
+
[[package]]
1796
1796
+
name = "varint-rs"
1797
1797
+
version = "2.2.0"
1798
1798
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1799
1799
+
checksum = "8f54a172d0620933a27a4360d3db3e2ae0dd6cceae9730751a036bbf182c4b23"
1800
1800
+
1801
1801
+
[[package]]
1802
1802
+
name = "version_check"
1803
1803
+
version = "0.9.5"
1804
1804
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1805
1805
+
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
1806
1806
+
1807
1807
+
[[package]]
1808
1808
+
name = "want"
1809
1809
+
version = "0.3.1"
1810
1810
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1811
1811
+
checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
1812
1812
+
dependencies = [
1813
1813
+
"try-lock",
1814
1814
+
]
1815
1815
+
1816
1816
+
[[package]]
1817
1817
+
name = "wasi"
1818
1818
+
version = "0.11.1+wasi-snapshot-preview1"
1819
1819
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1820
1820
+
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
1821
1821
+
1822
1822
+
[[package]]
1823
1823
+
name = "wasip2"
1824
1824
+
version = "1.0.2+wasi-0.2.9"
1825
1825
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1826
1826
+
checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
1827
1827
+
dependencies = [
1828
1828
+
"wit-bindgen",
1829
1829
+
]
1830
1830
+
1831
1831
+
[[package]]
1832
1832
+
name = "wasm-bindgen"
1833
1833
+
version = "0.2.108"
1834
1834
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1835
1835
+
checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566"
1836
1836
+
dependencies = [
1837
1837
+
"cfg-if",
1838
1838
+
"once_cell",
1839
1839
+
"rustversion",
1840
1840
+
"wasm-bindgen-macro",
1841
1841
+
"wasm-bindgen-shared",
1842
1842
+
]
1843
1843
+
1844
1844
+
[[package]]
1845
1845
+
name = "wasm-bindgen-futures"
1846
1846
+
version = "0.4.58"
1847
1847
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1848
1848
+
checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f"
1849
1849
+
dependencies = [
1850
1850
+
"cfg-if",
1851
1851
+
"futures-util",
1852
1852
+
"js-sys",
1853
1853
+
"once_cell",
1854
1854
+
"wasm-bindgen",
1855
1855
+
"web-sys",
1856
1856
+
]
1857
1857
+
1858
1858
+
[[package]]
1859
1859
+
name = "wasm-bindgen-macro"
1860
1860
+
version = "0.2.108"
1861
1861
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1862
1862
+
checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608"
1863
1863
+
dependencies = [
1864
1864
+
"quote",
1865
1865
+
"wasm-bindgen-macro-support",
1866
1866
+
]
1867
1867
+
1868
1868
+
[[package]]
1869
1869
+
name = "wasm-bindgen-macro-support"
1870
1870
+
version = "0.2.108"
1871
1871
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1872
1872
+
checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55"
1873
1873
+
dependencies = [
1874
1874
+
"bumpalo",
1875
1875
+
"proc-macro2",
1876
1876
+
"quote",
1877
1877
+
"syn",
1878
1878
+
"wasm-bindgen-shared",
1879
1879
+
]
1880
1880
+
1881
1881
+
[[package]]
1882
1882
+
name = "wasm-bindgen-shared"
1883
1883
+
version = "0.2.108"
1884
1884
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1885
1885
+
checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12"
1886
1886
+
dependencies = [
1887
1887
+
"unicode-ident",
1888
1888
+
]
1889
1889
+
1890
1890
+
[[package]]
1891
1891
+
name = "web-sys"
1892
1892
+
version = "0.3.85"
1893
1893
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1894
1894
+
checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598"
1895
1895
+
dependencies = [
1896
1896
+
"js-sys",
1897
1897
+
"wasm-bindgen",
1898
1898
+
]
1899
1899
+
1900
1900
+
[[package]]
1901
1901
+
name = "web-time"
1902
1902
+
version = "1.1.0"
1903
1903
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1904
1904
+
checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
1905
1905
+
dependencies = [
1906
1906
+
"js-sys",
1907
1907
+
"wasm-bindgen",
1908
1908
+
]
1909
1909
+
1910
1910
+
[[package]]
1911
1911
+
name = "webpki-roots"
1912
1912
+
version = "1.0.5"
1913
1913
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1914
1914
+
checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c"
1915
1915
+
dependencies = [
1916
1916
+
"rustls-pki-types",
1917
1917
+
]
1918
1918
+
1919
1919
+
[[package]]
1920
1920
+
name = "windows-core"
1921
1921
+
version = "0.62.2"
1922
1922
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1923
1923
+
checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
1924
1924
+
dependencies = [
1925
1925
+
"windows-implement",
1926
1926
+
"windows-interface",
1927
1927
+
"windows-link",
1928
1928
+
"windows-result",
1929
1929
+
"windows-strings",
1930
1930
+
]
1931
1931
+
1932
1932
+
[[package]]
1933
1933
+
name = "windows-implement"
1934
1934
+
version = "0.60.2"
1935
1935
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1936
1936
+
checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
1937
1937
+
dependencies = [
1938
1938
+
"proc-macro2",
1939
1939
+
"quote",
1940
1940
+
"syn",
1941
1941
+
]
1942
1942
+
1943
1943
+
[[package]]
1944
1944
+
name = "windows-interface"
1945
1945
+
version = "0.59.3"
1946
1946
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1947
1947
+
checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
1948
1948
+
dependencies = [
1949
1949
+
"proc-macro2",
1950
1950
+
"quote",
1951
1951
+
"syn",
1952
1952
+
]
1953
1953
+
1954
1954
+
[[package]]
1955
1955
+
name = "windows-link"
1956
1956
+
version = "0.2.1"
1957
1957
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1958
1958
+
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
1959
1959
+
1960
1960
+
[[package]]
1961
1961
+
name = "windows-result"
1962
1962
+
version = "0.4.1"
1963
1963
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1964
1964
+
checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
1965
1965
+
dependencies = [
1966
1966
+
"windows-link",
1967
1967
+
]
1968
1968
+
1969
1969
+
[[package]]
1970
1970
+
name = "windows-strings"
1971
1971
+
version = "0.5.1"
1972
1972
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1973
1973
+
checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
1974
1974
+
dependencies = [
1975
1975
+
"windows-link",
1976
1976
+
]
1977
1977
+
1978
1978
+
[[package]]
1979
1979
+
name = "windows-sys"
1980
1980
+
version = "0.52.0"
1981
1981
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1982
1982
+
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
1983
1983
+
dependencies = [
1984
1984
+
"windows-targets 0.52.6",
1985
1985
+
]
1986
1986
+
1987
1987
+
[[package]]
1988
1988
+
name = "windows-sys"
1989
1989
+
version = "0.60.2"
1990
1990
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1991
1991
+
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
1992
1992
+
dependencies = [
1993
1993
+
"windows-targets 0.53.5",
1994
1994
+
]
1995
1995
+
1996
1996
+
[[package]]
1997
1997
+
name = "windows-sys"
1998
1998
+
version = "0.61.2"
1999
1999
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2000
2000
+
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
2001
2001
+
dependencies = [
2002
2002
+
"windows-link",
2003
2003
+
]
2004
2004
+
2005
2005
+
[[package]]
2006
2006
+
name = "windows-targets"
2007
2007
+
version = "0.52.6"
2008
2008
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2009
2009
+
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
2010
2010
+
dependencies = [
2011
2011
+
"windows_aarch64_gnullvm 0.52.6",
2012
2012
+
"windows_aarch64_msvc 0.52.6",
2013
2013
+
"windows_i686_gnu 0.52.6",
2014
2014
+
"windows_i686_gnullvm 0.52.6",
2015
2015
+
"windows_i686_msvc 0.52.6",
2016
2016
+
"windows_x86_64_gnu 0.52.6",
2017
2017
+
"windows_x86_64_gnullvm 0.52.6",
2018
2018
+
"windows_x86_64_msvc 0.52.6",
2019
2019
+
]
2020
2020
+
2021
2021
+
[[package]]
2022
2022
+
name = "windows-targets"
2023
2023
+
version = "0.53.5"
2024
2024
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2025
2025
+
checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
2026
2026
+
dependencies = [
2027
2027
+
"windows-link",
2028
2028
+
"windows_aarch64_gnullvm 0.53.1",
2029
2029
+
"windows_aarch64_msvc 0.53.1",
2030
2030
+
"windows_i686_gnu 0.53.1",
2031
2031
+
"windows_i686_gnullvm 0.53.1",
2032
2032
+
"windows_i686_msvc 0.53.1",
2033
2033
+
"windows_x86_64_gnu 0.53.1",
2034
2034
+
"windows_x86_64_gnullvm 0.53.1",
2035
2035
+
"windows_x86_64_msvc 0.53.1",
2036
2036
+
]
2037
2037
+
2038
2038
+
[[package]]
2039
2039
+
name = "windows_aarch64_gnullvm"
2040
2040
+
version = "0.52.6"
2041
2041
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2042
2042
+
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
2043
2043
+
2044
2044
+
[[package]]
2045
2045
+
name = "windows_aarch64_gnullvm"
2046
2046
+
version = "0.53.1"
2047
2047
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2048
2048
+
checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
2049
2049
+
2050
2050
+
[[package]]
2051
2051
+
name = "windows_aarch64_msvc"
2052
2052
+
version = "0.52.6"
2053
2053
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2054
2054
+
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
2055
2055
+
2056
2056
+
[[package]]
2057
2057
+
name = "windows_aarch64_msvc"
2058
2058
+
version = "0.53.1"
2059
2059
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2060
2060
+
checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
2061
2061
+
2062
2062
+
[[package]]
2063
2063
+
name = "windows_i686_gnu"
2064
2064
+
version = "0.52.6"
2065
2065
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2066
2066
+
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
2067
2067
+
2068
2068
+
[[package]]
2069
2069
+
name = "windows_i686_gnu"
2070
2070
+
version = "0.53.1"
2071
2071
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2072
2072
+
checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
2073
2073
+
2074
2074
+
[[package]]
2075
2075
+
name = "windows_i686_gnullvm"
2076
2076
+
version = "0.52.6"
2077
2077
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2078
2078
+
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
2079
2079
+
2080
2080
+
[[package]]
2081
2081
+
name = "windows_i686_gnullvm"
2082
2082
+
version = "0.53.1"
2083
2083
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2084
2084
+
checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
2085
2085
+
2086
2086
+
[[package]]
2087
2087
+
name = "windows_i686_msvc"
2088
2088
+
version = "0.52.6"
2089
2089
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2090
2090
+
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
2091
2091
+
2092
2092
+
[[package]]
2093
2093
+
name = "windows_i686_msvc"
2094
2094
+
version = "0.53.1"
2095
2095
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2096
2096
+
checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
2097
2097
+
2098
2098
+
[[package]]
2099
2099
+
name = "windows_x86_64_gnu"
2100
2100
+
version = "0.52.6"
2101
2101
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2102
2102
+
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
2103
2103
+
2104
2104
+
[[package]]
2105
2105
+
name = "windows_x86_64_gnu"
2106
2106
+
version = "0.53.1"
2107
2107
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2108
2108
+
checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
2109
2109
+
2110
2110
+
[[package]]
2111
2111
+
name = "windows_x86_64_gnullvm"
2112
2112
+
version = "0.52.6"
2113
2113
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2114
2114
+
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
2115
2115
+
2116
2116
+
[[package]]
2117
2117
+
name = "windows_x86_64_gnullvm"
2118
2118
+
version = "0.53.1"
2119
2119
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2120
2120
+
checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
2121
2121
+
2122
2122
+
[[package]]
2123
2123
+
name = "windows_x86_64_msvc"
2124
2124
+
version = "0.52.6"
2125
2125
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2126
2126
+
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
2127
2127
+
2128
2128
+
[[package]]
2129
2129
+
name = "windows_x86_64_msvc"
2130
2130
+
version = "0.53.1"
2131
2131
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2132
2132
+
checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
2133
2133
+
2134
2134
+
[[package]]
2135
2135
+
name = "wit-bindgen"
2136
2136
+
version = "0.51.0"
2137
2137
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2138
2138
+
checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
2139
2139
+
2140
2140
+
[[package]]
2141
2141
+
name = "writeable"
2142
2142
+
version = "0.6.2"
2143
2143
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2144
2144
+
checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
2145
2145
+
2146
2146
+
[[package]]
2147
2147
+
name = "xxhash-rust"
2148
2148
+
version = "0.8.15"
2149
2149
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2150
2150
+
checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3"
2151
2151
+
2152
2152
+
[[package]]
2153
2153
+
name = "yoke"
2154
2154
+
version = "0.8.1"
2155
2155
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2156
2156
+
checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
2157
2157
+
dependencies = [
2158
2158
+
"stable_deref_trait",
2159
2159
+
"yoke-derive",
2160
2160
+
"zerofrom",
2161
2161
+
]
2162
2162
+
2163
2163
+
[[package]]
2164
2164
+
name = "yoke-derive"
2165
2165
+
version = "0.8.1"
2166
2166
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2167
2167
+
checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
2168
2168
+
dependencies = [
2169
2169
+
"proc-macro2",
2170
2170
+
"quote",
2171
2171
+
"syn",
2172
2172
+
"synstructure",
2173
2173
+
]
2174
2174
+
2175
2175
+
[[package]]
2176
2176
+
name = "zerocopy"
2177
2177
+
version = "0.8.33"
2178
2178
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2179
2179
+
checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd"
2180
2180
+
dependencies = [
2181
2181
+
"zerocopy-derive",
2182
2182
+
]
2183
2183
+
2184
2184
+
[[package]]
2185
2185
+
name = "zerocopy-derive"
2186
2186
+
version = "0.8.33"
2187
2187
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2188
2188
+
checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1"
2189
2189
+
dependencies = [
2190
2190
+
"proc-macro2",
2191
2191
+
"quote",
2192
2192
+
"syn",
2193
2193
+
]
2194
2194
+
2195
2195
+
[[package]]
2196
2196
+
name = "zerofrom"
2197
2197
+
version = "0.1.6"
2198
2198
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2199
2199
+
checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
2200
2200
+
dependencies = [
2201
2201
+
"zerofrom-derive",
2202
2202
+
]
2203
2203
+
2204
2204
+
[[package]]
2205
2205
+
name = "zerofrom-derive"
2206
2206
+
version = "0.1.6"
2207
2207
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2208
2208
+
checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
2209
2209
+
dependencies = [
2210
2210
+
"proc-macro2",
2211
2211
+
"quote",
2212
2212
+
"syn",
2213
2213
+
"synstructure",
2214
2214
+
]
2215
2215
+
2216
2216
+
[[package]]
2217
2217
+
name = "zeroize"
2218
2218
+
version = "1.8.2"
2219
2219
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2220
2220
+
checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
2221
2221
+
2222
2222
+
[[package]]
2223
2223
+
name = "zerotrie"
2224
2224
+
version = "0.2.3"
2225
2225
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2226
2226
+
checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
2227
2227
+
dependencies = [
2228
2228
+
"displaydoc",
2229
2229
+
"yoke",
2230
2230
+
"zerofrom",
2231
2231
+
]
2232
2232
+
2233
2233
+
[[package]]
2234
2234
+
name = "zerovec"
2235
2235
+
version = "0.11.5"
2236
2236
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2237
2237
+
checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
2238
2238
+
dependencies = [
2239
2239
+
"yoke",
2240
2240
+
"zerofrom",
2241
2241
+
"zerovec-derive",
2242
2242
+
]
2243
2243
+
2244
2244
+
[[package]]
2245
2245
+
name = "zerovec-derive"
2246
2246
+
version = "0.11.2"
2247
2247
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2248
2248
+
checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
2249
2249
+
dependencies = [
2250
2250
+
"proc-macro2",
2251
2251
+
"quote",
2252
2252
+
"syn",
2253
2253
+
]
2254
2254
+
2255
2255
+
[[package]]
2256
2256
+
name = "zmij"
2257
2257
+
version = "1.0.16"
2258
2258
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2259
2259
+
checksum = "dfcd145825aace48cff44a8844de64bf75feec3080e0aa5cdbde72961ae51a65"
+17
Cargo.toml
···
1
1
+
[package]
2
2
+
name = "aturlist"
3
3
+
version = "0.1.0"
4
4
+
edition = "2021"
5
5
+
6
6
+
[dependencies]
7
7
+
tapped = { git = "https://github.com/thombles/tapped" }
8
8
+
tokio = { version = "1", features = ["full"] }
9
9
+
axum = "0.7"
10
10
+
serde = { version = "1", features = ["derive"] }
11
11
+
serde_json = "1"
12
12
+
anyhow = "1"
13
13
+
fjall = "3.0.1"
14
14
+
tracing = "0.1"
15
15
+
tracing-subscriber = "0.3"
16
16
+
futures = "0.3"
17
17
+
chrono = "0.4"
+23
default.nix
···
1
1
+
{
2
2
+
lib,
3
3
+
rustPlatform,
4
4
+
...
5
5
+
}:
6
6
+
rustPlatform.buildRustPackage {
7
7
+
pname = "aturlist";
8
8
+
version = "main";
9
9
+
10
10
+
src = lib.fileset.toSource {
11
11
+
root = ./.;
12
12
+
fileset = lib.fileset.unions [
13
13
+
./src ./Cargo.toml ./Cargo.lock
14
14
+
];
15
15
+
};
16
16
+
17
17
+
cargoLock = {
18
18
+
lockFile = ./Cargo.lock;
19
19
+
outputHashes = {
20
20
+
"tapped-0.1.0" = "sha256-hhmlyR9BomcyZMTQAoJWLmTF9cyuVEjU4yceQFmHi9I=";
21
21
+
};
22
22
+
};
23
23
+
}
+3
flake.nix
···
13
13
...
14
14
}:
15
15
{
16
16
+
packages.default = pkgs.callPackage ./default.nix {};
16
17
devShells = {
17
18
default = pkgs.mkShell {
18
19
buildInputs = with pkgs; [
19
20
rust-analyzer
20
21
cargo
22
22
+
gemini-cli
23
23
+
go
21
24
];
22
25
};
23
26
};
+303
src/main.rs
···
1
1
+
use axum::{
2
2
+
extract::{Query, State},
3
3
+
routing::get,
4
4
+
Json, Router,
5
5
+
};
6
6
+
use serde::{Deserialize, Serialize};
7
7
+
use tracing::{info, error, warn};
8
8
+
use tapped::{TapClient, Event, RecordAction, RecordEvent};
9
9
+
use fjall::{Database, Keyspace, KeyspaceCreateOptions};
10
10
+
11
11
+
#[derive(Clone)]
12
12
+
struct AppState {
13
13
+
db: Database,
14
14
+
counts: Keyspace,
15
15
+
}
16
16
+
17
17
+
#[tokio::main]
18
18
+
async fn main() -> anyhow::Result<()> {
19
19
+
tracing_subscriber::fmt::init();
20
20
+
21
21
+
let db = Database::builder("aturlist_fjall").open()?;
22
22
+
// open keyspaces
23
23
+
let counts = db.keyspace("counts", || KeyspaceCreateOptions::default())?;
24
24
+
25
25
+
let state = AppState {
26
26
+
db: db.clone(),
27
27
+
counts: counts.clone(),
28
28
+
};
29
29
+
30
30
+
// start tap consumer
31
31
+
let db_clone = state.db.clone();
32
32
+
let counts_clone = state.counts.clone();
33
33
+
tokio::spawn(async move {
34
34
+
run_tap_consumer(db_clone, counts_clone).await;
35
35
+
});
36
36
+
37
37
+
let app = Router::new()
38
38
+
.route("/xrpc/systems.gaze.aturlist.listRecords", get(list_records))
39
39
+
.route("/xrpc/systems.gaze.aturlist.countRecords", get(count_records))
40
40
+
.with_state(state);
41
41
+
42
42
+
let listener = tokio::net::TcpListener::bind("0.0.0.0:7155").await?;
43
43
+
info!("listening on {}", listener.local_addr()?);
44
44
+
axum::serve(listener, app).await?;
45
45
+
46
46
+
Ok(())
47
47
+
}
48
48
+
49
49
+
async fn run_tap_consumer(db: Database, counts: Keyspace) {
50
50
+
let tap_url = "http://localhost:2480";
51
51
+
52
52
+
loop {
53
53
+
info!("connecting to tap at {}", tap_url);
54
54
+
match TapClient::new(tap_url) {
55
55
+
Ok(client) => {
56
56
+
if let Err(e) = client.health().await {
57
57
+
warn!("tap health check failed: {}", e);
58
58
+
tokio::time::sleep(std::time::Duration::from_secs(5)).await;
59
59
+
continue;
60
60
+
}
61
61
+
62
62
+
match client.channel().await {
63
63
+
Ok(mut receiver) => {
64
64
+
info!("connected to tap firehose");
65
65
+
while let Ok(event) = receiver.recv().await {
66
66
+
if let Event::Record(rec) = &*event {
67
67
+
if let Err(e) = handle_record(&db, &counts, rec) {
68
68
+
error!("error handling record: {}", e);
69
69
+
}
70
70
+
}
71
71
+
}
72
72
+
warn!("tap channel closed");
73
73
+
}
74
74
+
Err(e) => {
75
75
+
warn!("failed to subscribe to channel: {}", e);
76
76
+
}
77
77
+
}
78
78
+
}
79
79
+
Err(e) => {
80
80
+
warn!("failed to create tap client: {}", e);
81
81
+
}
82
82
+
}
83
83
+
tokio::time::sleep(std::time::Duration::from_secs(5)).await;
84
84
+
}
85
85
+
}
86
86
+
87
87
+
fn strip_did_prefix(did: &str) -> &str {
88
88
+
did.strip_prefix("did:").unwrap_or(did)
89
89
+
}
90
90
+
91
91
+
fn handle_record(db: &Database, counts: &Keyspace, rec: &RecordEvent) -> anyhow::Result<()> {
92
92
+
// partition by collection
93
93
+
let records = db.keyspace(&rec.collection, KeyspaceCreateOptions::default)?;
94
94
+
95
95
+
// index everything, no filter.
96
96
+
// key: strip_did(did)|rkey
97
97
+
let key = make_key(strip_did_prefix(&rec.did), &rec.rkey);
98
98
+
99
99
+
// logic to maintain counts:
100
100
+
// create: insert and increment.
101
101
+
// update: insert (overwrite). no count change.
102
102
+
// delete: remove and decrement.
103
103
+
104
104
+
match rec.action {
105
105
+
RecordAction::Create => {
106
106
+
info!("creating {} {} {}", rec.did, rec.collection, rec.rkey);
107
107
+
records.insert(&key, &[])?;
108
108
+
increment_count(counts, strip_did_prefix(&rec.did), &rec.collection)?;
109
109
+
}
110
110
+
RecordAction::Update => {
111
111
+
info!("updating {} {} {}", rec.did, rec.collection, rec.rkey);
112
112
+
records.insert(&key, &[])?;
113
113
+
}
114
114
+
RecordAction::Delete => {
115
115
+
info!("deleting {} {} {}", rec.did, rec.collection, rec.rkey);
116
116
+
records.remove(&key)?;
117
117
+
decrement_count(counts, strip_did_prefix(&rec.did), &rec.collection)?;
118
118
+
}
119
119
+
_ => {}
120
120
+
}
121
121
+
Ok(())
122
122
+
}
123
123
+
124
124
+
fn make_key(repo_stripped: &str, rkey: &str) -> Vec<u8> {
125
125
+
format!("{}|{}", repo_stripped, rkey).into_bytes()
126
126
+
}
127
127
+
128
128
+
fn make_count_key(repo_stripped: &str, collection: &str) -> Vec<u8> {
129
129
+
format!("{}|{}", repo_stripped, collection).into_bytes()
130
130
+
}
131
131
+
132
132
+
fn increment_count(counts: &Keyspace, repo_stripped: &str, collection: &str) -> anyhow::Result<()> {
133
133
+
let key = make_count_key(repo_stripped, collection);
134
134
+
let mut current = 0u64;
135
135
+
if let Some(val) = counts.get(&key)? {
136
136
+
if val.len() == 8 {
137
137
+
current = u64::from_le_bytes(val[..].try_into().unwrap());
138
138
+
}
139
139
+
}
140
140
+
current += 1;
141
141
+
counts.insert(&key, current.to_le_bytes())?;
142
142
+
Ok(())
143
143
+
}
144
144
+
145
145
+
fn decrement_count(counts: &Keyspace, repo_stripped: &str, collection: &str) -> anyhow::Result<()> {
146
146
+
let key = make_count_key(repo_stripped, collection);
147
147
+
let mut current = 0u64;
148
148
+
if let Some(val) = counts.get(&key)? {
149
149
+
if val.len() == 8 {
150
150
+
current = u64::from_le_bytes(val[..].try_into().unwrap());
151
151
+
}
152
152
+
}
153
153
+
if current > 0 {
154
154
+
current -= 1;
155
155
+
counts.insert(&key, current.to_le_bytes())?;
156
156
+
}
157
157
+
Ok(())
158
158
+
}
159
159
+
160
160
+
// handlers
161
161
+
162
162
+
#[derive(Deserialize)]
163
163
+
struct ListRecordsParams {
164
164
+
repo: String,
165
165
+
collection: String,
166
166
+
cursor: Option<String>,
167
167
+
reverse: Option<bool>,
168
168
+
limit: Option<usize>,
169
169
+
}
170
170
+
171
171
+
#[derive(Serialize)]
172
172
+
struct ListRecordsResponse {
173
173
+
aturis: Vec<String>,
174
174
+
// count field is usually empty in listRecords but we can leave it 0
175
175
+
count: usize,
176
176
+
#[serde(skip_serializing_if = "Option::is_none")]
177
177
+
cursor: Option<String>,
178
178
+
}
179
179
+
180
180
+
async fn list_records(
181
181
+
State(state): State<AppState>,
182
182
+
Query(params): Query<ListRecordsParams>,
183
183
+
) -> Json<ListRecordsResponse> {
184
184
+
let records = match state.db.keyspace(¶ms.collection, || KeyspaceCreateOptions::default()) {
185
185
+
Ok(p) => p,
186
186
+
Err(_) => {
187
187
+
return Json(ListRecordsResponse {
188
188
+
aturis: Vec::new(),
189
189
+
count: 0,
190
190
+
cursor: None,
191
191
+
});
192
192
+
}
193
193
+
};
194
194
+
195
195
+
let repo_stripped = strip_did_prefix(¶ms.repo);
196
196
+
let prefix_str = format!("{}|", repo_stripped);
197
197
+
let prefix = prefix_str.as_bytes();
198
198
+
199
199
+
// default to descending (newest first) -> reverse=false means descending.
200
200
+
// reverse=true means ascending.
201
201
+
let ascending = params.reverse.unwrap_or(false);
202
202
+
let limit = params.limit.unwrap_or(50).min(500);
203
203
+
204
204
+
let mut aturis = Vec::new();
205
205
+
let mut last_rkey = None;
206
206
+
207
207
+
let start_bound = if ascending {
208
208
+
if let Some(c) = ¶ms.cursor {
209
209
+
let mut k = make_key(repo_stripped, c);
210
210
+
k.push(0); // start after cursor
211
211
+
k
212
212
+
} else {
213
213
+
prefix.to_vec()
214
214
+
}
215
215
+
} else {
216
216
+
// descending
217
217
+
prefix.to_vec()
218
218
+
};
219
219
+
220
220
+
let end_bound = if ascending {
221
221
+
let mut p = prefix.to_vec();
222
222
+
p.push(0xFF);
223
223
+
p
224
224
+
} else {
225
225
+
// descending
226
226
+
if let Some(c) = ¶ms.cursor {
227
227
+
make_key(repo_stripped, c)
228
228
+
} else {
229
229
+
let mut p = prefix.to_vec();
230
230
+
p.push(0xFF);
231
231
+
p
232
232
+
}
233
233
+
};
234
234
+
235
235
+
let range = records.range(start_bound..end_bound);
236
236
+
237
237
+
let mut process_key = |k: &[u8]| {
238
238
+
let k_str = String::from_utf8_lossy(k);
239
239
+
let parts: Vec<&str> = k_str.split('|').collect();
240
240
+
// key format: repo_stripped|rkey
241
241
+
if parts.len() == 2 {
242
242
+
let rkey = parts[1];
243
243
+
aturis.push(format!("at://{}/{}/{}", params.repo, params.collection, rkey));
244
244
+
last_rkey = Some(rkey.to_string());
245
245
+
}
246
246
+
};
247
247
+
248
248
+
if ascending {
249
249
+
for item in range.take(limit) {
250
250
+
if let Ok(k) = item.key() {
251
251
+
process_key(&k);
252
252
+
}
253
253
+
}
254
254
+
} else {
255
255
+
for item in range.rev().take(limit) {
256
256
+
if let Ok(k) = item.key() {
257
257
+
process_key(&k);
258
258
+
}
259
259
+
}
260
260
+
}
261
261
+
262
262
+
let count = aturis.len();
263
263
+
264
264
+
Json(ListRecordsResponse {
265
265
+
aturis,
266
266
+
count,
267
267
+
cursor: last_rkey,
268
268
+
})
269
269
+
}
270
270
+
271
271
+
#[derive(Deserialize)]
272
272
+
struct CountRecordsParams {
273
273
+
repo: String,
274
274
+
collection: String,
275
275
+
}
276
276
+
277
277
+
#[derive(Serialize)]
278
278
+
struct CountRecordsResponse {
279
279
+
repo: String,
280
280
+
collection: String,
281
281
+
count: u64,
282
282
+
}
283
283
+
284
284
+
async fn count_records(
285
285
+
State(state): State<AppState>,
286
286
+
Query(params): Query<CountRecordsParams>,
287
287
+
) -> Json<CountRecordsResponse> {
288
288
+
let repo_stripped = strip_did_prefix(¶ms.repo);
289
289
+
let key = make_count_key(repo_stripped, ¶ms.collection);
290
290
+
let mut count = 0u64;
291
291
+
292
292
+
if let Ok(Some(val)) = state.counts.get(&key) {
293
293
+
if val.len() == 8 {
294
294
+
count = u64::from_le_bytes(val[..].try_into().unwrap());
295
295
+
}
296
296
+
}
297
297
+
298
298
+
Json(CountRecordsResponse {
299
299
+
repo: params.repo,
300
300
+
collection: params.collection,
301
301
+
count,
302
302
+
})
303
303
+
}
+111
verify_pds.nu
···
1
1
+
#!/usr/bin/env nu
2
2
+
3
3
+
let did = "did:plc:dfl62fgb7wtjj3fcbb72naae"
4
4
+
let pds_host = "https://zwsp.xyz"
5
5
+
6
6
+
# wait for indexing
7
7
+
print "waiting for services to stabilize..."
8
8
+
sleep 5sec
9
9
+
10
10
+
# add dids to tap
11
11
+
let dids = ["did:plc:dfl62fgb7wtjj3fcbb72naae", "did:plc:dumbmutt4po52ept2tczimje"]
12
12
+
try {
13
13
+
let body = {dids: $dids} | to json
14
14
+
http post --content-type application/json "http://127.0.0.1:2480/repos/add" $body
15
15
+
} catch {
16
16
+
print "tap add repos failed (maybe already running)"
17
17
+
}
18
18
+
19
19
+
sleep 5sec
20
20
+
21
21
+
# 1. test app.bsky.actor.profile (single record)
22
22
+
let collection = "app.bsky.actor.profile"
23
23
+
print $"verifying ($collection) for ($did)..."
24
24
+
25
25
+
let atur_url = $"http://127.0.0.1:7155/xrpc/systems.gaze.aturlist.listRecords?repo=($did)&collection=($collection)"
26
26
+
print $"aturlist url: ($atur_url)"
27
27
+
let atur_res = (http get $atur_url)
28
28
+
let atur_uris = ($atur_res.aturis | sort)
29
29
+
30
30
+
let pds_url = $"($pds_host)/xrpc/com.atproto.repo.listRecords?repo=($did)&collection=($collection)"
31
31
+
print $"pds url: ($pds_url)"
32
32
+
let pds_res = (http get $pds_url)
33
33
+
let pds_uris = ($pds_res.records | each {|r| $r.uri } | sort)
34
34
+
35
35
+
if ($atur_uris == $pds_uris) {
36
36
+
print "success: profile matches."
37
37
+
} else {
38
38
+
print "failure: profile mismatch."
39
39
+
print "aturlist: " $atur_uris
40
40
+
print "pds: " $pds_uris
41
41
+
exit 1
42
42
+
}
43
43
+
44
44
+
# 2. test app.bsky.feed.like (multiple records)
45
45
+
let collection = "app.bsky.feed.like"
46
46
+
let limit = 20
47
47
+
48
48
+
# ascending check (oldest)
49
49
+
print $"\nverifying ($collection) ascending \(oldest\)..."
50
50
+
# aturlist: reverse=true -> ascending
51
51
+
let atur_url_asc = $"http://127.0.0.1:7155/xrpc/systems.gaze.aturlist.listRecords?repo=($did)&collection=($collection)&reverse=true"
52
52
+
print $"aturlist asc url: ($atur_url_asc)"
53
53
+
let atur_res_asc = (http get $atur_url_asc)
54
54
+
let atur_uris_asc = ($atur_res_asc.aturis | first $limit)
55
55
+
56
56
+
# pds: reverse=true -> ascending
57
57
+
let pds_url_asc = $"($pds_host)/xrpc/com.atproto.repo.listRecords?repo=($did)&collection=($collection)&limit=($limit)&reverse=true"
58
58
+
print $"pds asc url: ($pds_url_asc)"
59
59
+
let pds_res_asc = (http get $pds_url_asc)
60
60
+
let pds_uris_asc = ($pds_res_asc.records | each {|r| $r.uri })
61
61
+
62
62
+
if ($atur_uris_asc == $pds_uris_asc) {
63
63
+
print "success: ascending (oldest) matches."
64
64
+
} else {
65
65
+
print "failure: ascending mismatch."
66
66
+
print "aturlist:" $atur_uris_asc
67
67
+
print "pds:" $pds_uris_asc
68
68
+
exit 1
69
69
+
}
70
70
+
71
71
+
# descending check (newest)
72
72
+
print $"\nverifying ($collection) descending \(newest\)..."
73
73
+
# aturlist: reverse=false (default) -> descending
74
74
+
let atur_url_desc = $"http://127.0.0.1:7155/xrpc/systems.gaze.aturlist.listRecords?repo=($did)&collection=($collection)&reverse=false"
75
75
+
print $"aturlist desc url: ($atur_url_desc)"
76
76
+
let atur_res_desc = (http get $atur_url_desc)
77
77
+
let atur_uris_desc = ($atur_res_desc.aturis | first $limit)
78
78
+
79
79
+
# pds: reverse=false (default) -> descending
80
80
+
let pds_url_desc = $"($pds_host)/xrpc/com.atproto.repo.listRecords?repo=($did)&collection=($collection)&limit=($limit)&reverse=false"
81
81
+
print $"pds desc url: ($pds_url_desc)"
82
82
+
let pds_res_desc = (http get $pds_url_desc)
83
83
+
let pds_uris_desc = ($pds_res_desc.records | each {|r| $r.uri })
84
84
+
85
85
+
if ($atur_uris_desc == $pds_uris_desc) {
86
86
+
print "success: descending (newest) matches perfectly."
87
87
+
} else {
88
88
+
# check for lag consistency
89
89
+
let head = ($atur_uris_desc | first)
90
90
+
if ($head in $pds_uris_desc) {
91
91
+
print "warning: lag detected, but consistent."
92
92
+
} else {
93
93
+
print "failure: descending mismatch (and head not found in pds top 20)."
94
94
+
exit 1
95
95
+
}
96
96
+
}
97
97
+
98
98
+
# 3. test countrecords
99
99
+
print $"\nverifying countrecords for ($collection)..."
100
100
+
let atur_count_url = $"http://127.0.0.1:7155/xrpc/systems.gaze.aturlist.countRecords?repo=($did)&collection=($collection)"
101
101
+
print $"aturlist count url: ($atur_count_url)"
102
102
+
let atur_count_res = (http get $atur_count_url)
103
103
+
print $"aturlist count: ($atur_count_res.count)"
104
104
+
105
105
+
if ($atur_count_res.count > 0) {
106
106
+
print "success: count is positive."
107
107
+
} else {
108
108
+
print "warning: count is 0 (expected if db was reused without migration/reindex)."
109
109
+
}
110
110
+
111
111
+
print "\nverification summary: success."