tangled
alpha
login
or
join now
parakeet.at
/
plc-mirror
11
fork
atom
A PLC Mirror written in Rust
11
fork
atom
overview
issues
2
pulls
pipelines
plc import
mia.omg.lol
10 months ago
06938b9a
74e91405
+1044
-17
7 changed files
expand all
collapse all
unified
split
Cargo.lock
Cargo.toml
src
import.rs
lib.rs
main.rs
types.rs
utils.rs
+873
-17
Cargo.lock
···
95
95
"miniz_oxide",
96
96
"object",
97
97
"rustc-demangle",
98
98
-
"windows-targets",
98
98
+
"windows-targets 0.52.6",
99
99
]
100
100
+
101
101
+
[[package]]
102
102
+
name = "base-x"
103
103
+
version = "0.2.11"
104
104
+
source = "registry+https://github.com/rust-lang/crates.io-index"
105
105
+
checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270"
100
106
101
107
[[package]]
102
108
name = "base64"
···
163
169
dependencies = [
164
170
"android-tzdata",
165
171
"iana-time-zone",
172
172
+
"js-sys",
166
173
"num-traits",
167
174
"serde",
175
175
+
"wasm-bindgen",
168
176
"windows-link",
169
177
]
170
178
171
179
[[package]]
180
180
+
name = "cid"
181
181
+
version = "0.11.1"
182
182
+
source = "registry+https://github.com/rust-lang/crates.io-index"
183
183
+
checksum = "3147d8272e8fa0ccd29ce51194dd98f79ddfb8191ba9e3409884e751798acf3a"
184
184
+
dependencies = [
185
185
+
"core2",
186
186
+
"multibase",
187
187
+
"multihash",
188
188
+
"serde",
189
189
+
"serde_bytes",
190
190
+
"unsigned-varint",
191
191
+
]
192
192
+
193
193
+
[[package]]
194
194
+
name = "core-foundation"
195
195
+
version = "0.9.4"
196
196
+
source = "registry+https://github.com/rust-lang/crates.io-index"
197
197
+
checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
198
198
+
dependencies = [
199
199
+
"core-foundation-sys",
200
200
+
"libc",
201
201
+
]
202
202
+
203
203
+
[[package]]
172
204
name = "core-foundation-sys"
173
205
version = "0.8.7"
174
206
source = "registry+https://github.com/rust-lang/crates.io-index"
175
207
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
208
208
+
209
209
+
[[package]]
210
210
+
name = "core2"
211
211
+
version = "0.4.0"
212
212
+
source = "registry+https://github.com/rust-lang/crates.io-index"
213
213
+
checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505"
214
214
+
dependencies = [
215
215
+
"memchr",
216
216
+
]
176
217
177
218
[[package]]
178
219
name = "cpufeatures"
···
209
250
]
210
251
211
252
[[package]]
253
253
+
name = "data-encoding"
254
254
+
version = "2.9.0"
255
255
+
source = "registry+https://github.com/rust-lang/crates.io-index"
256
256
+
checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476"
257
257
+
258
258
+
[[package]]
259
259
+
name = "data-encoding-macro"
260
260
+
version = "0.1.18"
261
261
+
source = "registry+https://github.com/rust-lang/crates.io-index"
262
262
+
checksum = "47ce6c96ea0102f01122a185683611bd5ac8d99e62bc59dd12e6bda344ee673d"
263
263
+
dependencies = [
264
264
+
"data-encoding",
265
265
+
"data-encoding-macro-internal",
266
266
+
]
267
267
+
268
268
+
[[package]]
269
269
+
name = "data-encoding-macro-internal"
270
270
+
version = "0.1.16"
271
271
+
source = "registry+https://github.com/rust-lang/crates.io-index"
272
272
+
checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976"
273
273
+
dependencies = [
274
274
+
"data-encoding",
275
275
+
"syn",
276
276
+
]
277
277
+
278
278
+
[[package]]
212
279
name = "debug-ignore"
213
280
version = "1.0.5"
214
281
source = "registry+https://github.com/rust-lang/crates.io-index"
···
255
322
]
256
323
257
324
[[package]]
325
325
+
name = "displaydoc"
326
326
+
version = "0.2.5"
327
327
+
source = "registry+https://github.com/rust-lang/crates.io-index"
328
328
+
checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
329
329
+
dependencies = [
330
330
+
"proc-macro2",
331
331
+
"quote",
332
332
+
"syn",
333
333
+
]
334
334
+
335
335
+
[[package]]
258
336
name = "dropshot"
259
337
version = "0.16.0"
260
338
source = "registry+https://github.com/rust-lang/crates.io-index"
···
280
358
"openapiv3",
281
359
"paste",
282
360
"percent-encoding",
283
283
-
"rustls",
361
361
+
"rustls 0.22.4",
284
362
"rustls-pemfile",
285
363
"schemars",
286
364
"scopeguard",
···
297
375
"slog-term",
298
376
"thiserror 2.0.12",
299
377
"tokio",
300
300
-
"tokio-rustls",
378
378
+
"tokio-rustls 0.25.0",
301
379
"toml",
302
380
"uuid",
303
381
"version_check",
···
341
419
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
342
420
343
421
[[package]]
422
422
+
name = "errno"
423
423
+
version = "0.3.11"
424
424
+
source = "registry+https://github.com/rust-lang/crates.io-index"
425
425
+
checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e"
426
426
+
dependencies = [
427
427
+
"libc",
428
428
+
"windows-sys 0.59.0",
429
429
+
]
430
430
+
431
431
+
[[package]]
344
432
name = "eyre"
345
433
version = "0.6.12"
346
434
source = "registry+https://github.com/rust-lang/crates.io-index"
···
351
439
]
352
440
353
441
[[package]]
442
442
+
name = "fastrand"
443
443
+
version = "2.3.0"
444
444
+
source = "registry+https://github.com/rust-lang/crates.io-index"
445
445
+
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
446
446
+
447
447
+
[[package]]
354
448
name = "fnv"
355
449
version = "1.0.7"
356
450
source = "registry+https://github.com/rust-lang/crates.io-index"
357
451
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
358
452
359
453
[[package]]
454
454
+
name = "foreign-types"
455
455
+
version = "0.3.2"
456
456
+
source = "registry+https://github.com/rust-lang/crates.io-index"
457
457
+
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
458
458
+
dependencies = [
459
459
+
"foreign-types-shared",
460
460
+
]
461
461
+
462
462
+
[[package]]
463
463
+
name = "foreign-types-shared"
464
464
+
version = "0.1.1"
465
465
+
source = "registry+https://github.com/rust-lang/crates.io-index"
466
466
+
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
467
467
+
468
468
+
[[package]]
360
469
name = "form_urlencoded"
361
470
version = "1.2.1"
362
471
source = "registry+https://github.com/rust-lang/crates.io-index"
···
620
729
]
621
730
622
731
[[package]]
732
732
+
name = "hyper-rustls"
733
733
+
version = "0.27.5"
734
734
+
source = "registry+https://github.com/rust-lang/crates.io-index"
735
735
+
checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2"
736
736
+
dependencies = [
737
737
+
"futures-util",
738
738
+
"http",
739
739
+
"hyper",
740
740
+
"hyper-util",
741
741
+
"rustls 0.23.26",
742
742
+
"rustls-pki-types",
743
743
+
"tokio",
744
744
+
"tokio-rustls 0.26.2",
745
745
+
"tower-service",
746
746
+
]
747
747
+
748
748
+
[[package]]
749
749
+
name = "hyper-tls"
750
750
+
version = "0.6.0"
751
751
+
source = "registry+https://github.com/rust-lang/crates.io-index"
752
752
+
checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
753
753
+
dependencies = [
754
754
+
"bytes",
755
755
+
"http-body-util",
756
756
+
"hyper",
757
757
+
"hyper-util",
758
758
+
"native-tls",
759
759
+
"tokio",
760
760
+
"tokio-native-tls",
761
761
+
"tower-service",
762
762
+
]
763
763
+
764
764
+
[[package]]
623
765
name = "hyper-util"
624
766
version = "0.1.11"
625
767
source = "registry+https://github.com/rust-lang/crates.io-index"
···
664
806
]
665
807
666
808
[[package]]
809
809
+
name = "icu_collections"
810
810
+
version = "1.5.0"
811
811
+
source = "registry+https://github.com/rust-lang/crates.io-index"
812
812
+
checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
813
813
+
dependencies = [
814
814
+
"displaydoc",
815
815
+
"yoke",
816
816
+
"zerofrom",
817
817
+
"zerovec",
818
818
+
]
819
819
+
820
820
+
[[package]]
821
821
+
name = "icu_locid"
822
822
+
version = "1.5.0"
823
823
+
source = "registry+https://github.com/rust-lang/crates.io-index"
824
824
+
checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
825
825
+
dependencies = [
826
826
+
"displaydoc",
827
827
+
"litemap",
828
828
+
"tinystr",
829
829
+
"writeable",
830
830
+
"zerovec",
831
831
+
]
832
832
+
833
833
+
[[package]]
834
834
+
name = "icu_locid_transform"
835
835
+
version = "1.5.0"
836
836
+
source = "registry+https://github.com/rust-lang/crates.io-index"
837
837
+
checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
838
838
+
dependencies = [
839
839
+
"displaydoc",
840
840
+
"icu_locid",
841
841
+
"icu_locid_transform_data",
842
842
+
"icu_provider",
843
843
+
"tinystr",
844
844
+
"zerovec",
845
845
+
]
846
846
+
847
847
+
[[package]]
848
848
+
name = "icu_locid_transform_data"
849
849
+
version = "1.5.1"
850
850
+
source = "registry+https://github.com/rust-lang/crates.io-index"
851
851
+
checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d"
852
852
+
853
853
+
[[package]]
854
854
+
name = "icu_normalizer"
855
855
+
version = "1.5.0"
856
856
+
source = "registry+https://github.com/rust-lang/crates.io-index"
857
857
+
checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
858
858
+
dependencies = [
859
859
+
"displaydoc",
860
860
+
"icu_collections",
861
861
+
"icu_normalizer_data",
862
862
+
"icu_properties",
863
863
+
"icu_provider",
864
864
+
"smallvec",
865
865
+
"utf16_iter",
866
866
+
"utf8_iter",
867
867
+
"write16",
868
868
+
"zerovec",
869
869
+
]
870
870
+
871
871
+
[[package]]
872
872
+
name = "icu_normalizer_data"
873
873
+
version = "1.5.1"
874
874
+
source = "registry+https://github.com/rust-lang/crates.io-index"
875
875
+
checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7"
876
876
+
877
877
+
[[package]]
878
878
+
name = "icu_properties"
879
879
+
version = "1.5.1"
880
880
+
source = "registry+https://github.com/rust-lang/crates.io-index"
881
881
+
checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"
882
882
+
dependencies = [
883
883
+
"displaydoc",
884
884
+
"icu_collections",
885
885
+
"icu_locid_transform",
886
886
+
"icu_properties_data",
887
887
+
"icu_provider",
888
888
+
"tinystr",
889
889
+
"zerovec",
890
890
+
]
891
891
+
892
892
+
[[package]]
893
893
+
name = "icu_properties_data"
894
894
+
version = "1.5.1"
895
895
+
source = "registry+https://github.com/rust-lang/crates.io-index"
896
896
+
checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2"
897
897
+
898
898
+
[[package]]
899
899
+
name = "icu_provider"
900
900
+
version = "1.5.0"
901
901
+
source = "registry+https://github.com/rust-lang/crates.io-index"
902
902
+
checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
903
903
+
dependencies = [
904
904
+
"displaydoc",
905
905
+
"icu_locid",
906
906
+
"icu_provider_macros",
907
907
+
"stable_deref_trait",
908
908
+
"tinystr",
909
909
+
"writeable",
910
910
+
"yoke",
911
911
+
"zerofrom",
912
912
+
"zerovec",
913
913
+
]
914
914
+
915
915
+
[[package]]
916
916
+
name = "icu_provider_macros"
917
917
+
version = "1.5.0"
918
918
+
source = "registry+https://github.com/rust-lang/crates.io-index"
919
919
+
checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
920
920
+
dependencies = [
921
921
+
"proc-macro2",
922
922
+
"quote",
923
923
+
"syn",
924
924
+
]
925
925
+
926
926
+
[[package]]
927
927
+
name = "idna"
928
928
+
version = "1.0.3"
929
929
+
source = "registry+https://github.com/rust-lang/crates.io-index"
930
930
+
checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
931
931
+
dependencies = [
932
932
+
"idna_adapter",
933
933
+
"smallvec",
934
934
+
"utf8_iter",
935
935
+
]
936
936
+
937
937
+
[[package]]
938
938
+
name = "idna_adapter"
939
939
+
version = "1.2.0"
940
940
+
source = "registry+https://github.com/rust-lang/crates.io-index"
941
941
+
checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71"
942
942
+
dependencies = [
943
943
+
"icu_normalizer",
944
944
+
"icu_properties",
945
945
+
]
946
946
+
947
947
+
[[package]]
667
948
name = "indenter"
668
949
version = "0.3.3"
669
950
source = "registry+https://github.com/rust-lang/crates.io-index"
···
679
960
"hashbrown",
680
961
"serde",
681
962
]
963
963
+
964
964
+
[[package]]
965
965
+
name = "ipld-core"
966
966
+
version = "0.4.2"
967
967
+
source = "registry+https://github.com/rust-lang/crates.io-index"
968
968
+
checksum = "104718b1cc124d92a6d01ca9c9258a7df311405debb3408c445a36452f9bf8db"
969
969
+
dependencies = [
970
970
+
"cid",
971
971
+
"serde",
972
972
+
"serde_bytes",
973
973
+
]
974
974
+
975
975
+
[[package]]
976
976
+
name = "ipnet"
977
977
+
version = "2.11.0"
978
978
+
source = "registry+https://github.com/rust-lang/crates.io-index"
979
979
+
checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
682
980
683
981
[[package]]
684
982
name = "is-terminal"
···
730
1028
]
731
1029
732
1030
[[package]]
1031
1031
+
name = "linux-raw-sys"
1032
1032
+
version = "0.9.4"
1033
1033
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1034
1034
+
checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
1035
1035
+
1036
1036
+
[[package]]
1037
1037
+
name = "litemap"
1038
1038
+
version = "0.7.5"
1039
1039
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1040
1040
+
checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856"
1041
1041
+
1042
1042
+
[[package]]
733
1043
name = "lock_api"
734
1044
version = "0.4.12"
735
1045
source = "registry+https://github.com/rust-lang/crates.io-index"
···
801
1111
]
802
1112
803
1113
[[package]]
1114
1114
+
name = "multibase"
1115
1115
+
version = "0.9.1"
1116
1116
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1117
1117
+
checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404"
1118
1118
+
dependencies = [
1119
1119
+
"base-x",
1120
1120
+
"data-encoding",
1121
1121
+
"data-encoding-macro",
1122
1122
+
]
1123
1123
+
1124
1124
+
[[package]]
1125
1125
+
name = "multihash"
1126
1126
+
version = "0.19.3"
1127
1127
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1128
1128
+
checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d"
1129
1129
+
dependencies = [
1130
1130
+
"core2",
1131
1131
+
"serde",
1132
1132
+
"unsigned-varint",
1133
1133
+
]
1134
1134
+
1135
1135
+
[[package]]
1136
1136
+
name = "native-tls"
1137
1137
+
version = "0.2.14"
1138
1138
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1139
1139
+
checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
1140
1140
+
dependencies = [
1141
1141
+
"libc",
1142
1142
+
"log",
1143
1143
+
"openssl",
1144
1144
+
"openssl-probe",
1145
1145
+
"openssl-sys",
1146
1146
+
"schannel",
1147
1147
+
"security-framework",
1148
1148
+
"security-framework-sys",
1149
1149
+
"tempfile",
1150
1150
+
]
1151
1151
+
1152
1152
+
[[package]]
804
1153
name = "num-conv"
805
1154
version = "0.1.0"
806
1155
source = "registry+https://github.com/rust-lang/crates.io-index"
···
851
1200
]
852
1201
853
1202
[[package]]
1203
1203
+
name = "openssl"
1204
1204
+
version = "0.10.72"
1205
1205
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1206
1206
+
checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da"
1207
1207
+
dependencies = [
1208
1208
+
"bitflags",
1209
1209
+
"cfg-if",
1210
1210
+
"foreign-types",
1211
1211
+
"libc",
1212
1212
+
"once_cell",
1213
1213
+
"openssl-macros",
1214
1214
+
"openssl-sys",
1215
1215
+
]
1216
1216
+
1217
1217
+
[[package]]
1218
1218
+
name = "openssl-macros"
1219
1219
+
version = "0.1.1"
1220
1220
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1221
1221
+
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
1222
1222
+
dependencies = [
1223
1223
+
"proc-macro2",
1224
1224
+
"quote",
1225
1225
+
"syn",
1226
1226
+
]
1227
1227
+
1228
1228
+
[[package]]
1229
1229
+
name = "openssl-probe"
1230
1230
+
version = "0.1.6"
1231
1231
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1232
1232
+
checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
1233
1233
+
1234
1234
+
[[package]]
1235
1235
+
name = "openssl-sys"
1236
1236
+
version = "0.9.107"
1237
1237
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1238
1238
+
checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07"
1239
1239
+
dependencies = [
1240
1240
+
"cc",
1241
1241
+
"libc",
1242
1242
+
"pkg-config",
1243
1243
+
"vcpkg",
1244
1244
+
]
1245
1245
+
1246
1246
+
[[package]]
854
1247
name = "parking_lot"
855
1248
version = "0.12.3"
856
1249
source = "registry+https://github.com/rust-lang/crates.io-index"
···
870
1263
"libc",
871
1264
"redox_syscall",
872
1265
"smallvec",
873
873
-
"windows-targets",
1266
1266
+
"windows-targets 0.52.6",
874
1267
]
875
1268
876
1269
[[package]]
···
898
1291
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
899
1292
900
1293
[[package]]
1294
1294
+
name = "pkg-config"
1295
1295
+
version = "0.3.32"
1296
1296
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1297
1297
+
checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
1298
1298
+
1299
1299
+
[[package]]
901
1300
name = "plc-mirror"
902
1301
version = "0.1.0"
903
1302
dependencies = [
1303
1303
+
"chrono",
904
1304
"dropshot",
905
1305
"eyre",
1306
1306
+
"ipld-core",
1307
1307
+
"reqwest",
906
1308
"serde",
907
1309
"serde_json",
908
1310
"slog",
···
962
1364
]
963
1365
964
1366
[[package]]
1367
1367
+
name = "reqwest"
1368
1368
+
version = "0.12.15"
1369
1369
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1370
1370
+
checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb"
1371
1371
+
dependencies = [
1372
1372
+
"base64",
1373
1373
+
"bytes",
1374
1374
+
"encoding_rs",
1375
1375
+
"futures-core",
1376
1376
+
"futures-util",
1377
1377
+
"h2",
1378
1378
+
"http",
1379
1379
+
"http-body",
1380
1380
+
"http-body-util",
1381
1381
+
"hyper",
1382
1382
+
"hyper-rustls",
1383
1383
+
"hyper-tls",
1384
1384
+
"hyper-util",
1385
1385
+
"ipnet",
1386
1386
+
"js-sys",
1387
1387
+
"log",
1388
1388
+
"mime",
1389
1389
+
"native-tls",
1390
1390
+
"once_cell",
1391
1391
+
"percent-encoding",
1392
1392
+
"pin-project-lite",
1393
1393
+
"rustls-pemfile",
1394
1394
+
"serde",
1395
1395
+
"serde_json",
1396
1396
+
"serde_urlencoded",
1397
1397
+
"sync_wrapper",
1398
1398
+
"system-configuration",
1399
1399
+
"tokio",
1400
1400
+
"tokio-native-tls",
1401
1401
+
"tower",
1402
1402
+
"tower-service",
1403
1403
+
"url",
1404
1404
+
"wasm-bindgen",
1405
1405
+
"wasm-bindgen-futures",
1406
1406
+
"web-sys",
1407
1407
+
"windows-registry",
1408
1408
+
]
1409
1409
+
1410
1410
+
[[package]]
965
1411
name = "ring"
966
1412
version = "0.17.14"
967
1413
source = "registry+https://github.com/rust-lang/crates.io-index"
···
982
1428
checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
983
1429
984
1430
[[package]]
1431
1431
+
name = "rustix"
1432
1432
+
version = "1.0.5"
1433
1433
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1434
1434
+
checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf"
1435
1435
+
dependencies = [
1436
1436
+
"bitflags",
1437
1437
+
"errno",
1438
1438
+
"libc",
1439
1439
+
"linux-raw-sys",
1440
1440
+
"windows-sys 0.59.0",
1441
1441
+
]
1442
1442
+
1443
1443
+
[[package]]
985
1444
name = "rustls"
986
1445
version = "0.22.4"
987
1446
source = "registry+https://github.com/rust-lang/crates.io-index"
···
990
1449
"log",
991
1450
"ring",
992
1451
"rustls-pki-types",
993
993
-
"rustls-webpki",
1452
1452
+
"rustls-webpki 0.102.8",
1453
1453
+
"subtle",
1454
1454
+
"zeroize",
1455
1455
+
]
1456
1456
+
1457
1457
+
[[package]]
1458
1458
+
name = "rustls"
1459
1459
+
version = "0.23.26"
1460
1460
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1461
1461
+
checksum = "df51b5869f3a441595eac5e8ff14d486ff285f7b8c0df8770e49c3b56351f0f0"
1462
1462
+
dependencies = [
1463
1463
+
"once_cell",
1464
1464
+
"rustls-pki-types",
1465
1465
+
"rustls-webpki 0.103.1",
994
1466
"subtle",
995
1467
"zeroize",
996
1468
]
···
1022
1494
]
1023
1495
1024
1496
[[package]]
1497
1497
+
name = "rustls-webpki"
1498
1498
+
version = "0.103.1"
1499
1499
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1500
1500
+
checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03"
1501
1501
+
dependencies = [
1502
1502
+
"ring",
1503
1503
+
"rustls-pki-types",
1504
1504
+
"untrusted",
1505
1505
+
]
1506
1506
+
1507
1507
+
[[package]]
1025
1508
name = "rustversion"
1026
1509
version = "1.0.20"
1027
1510
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1034
1517
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
1035
1518
1036
1519
[[package]]
1520
1520
+
name = "schannel"
1521
1521
+
version = "0.1.27"
1522
1522
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1523
1523
+
checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d"
1524
1524
+
dependencies = [
1525
1525
+
"windows-sys 0.59.0",
1526
1526
+
]
1527
1527
+
1528
1528
+
[[package]]
1037
1529
name = "schemars"
1038
1530
version = "0.8.22"
1039
1531
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1065
1557
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
1066
1558
1067
1559
[[package]]
1560
1560
+
name = "security-framework"
1561
1561
+
version = "2.11.1"
1562
1562
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1563
1563
+
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
1564
1564
+
dependencies = [
1565
1565
+
"bitflags",
1566
1566
+
"core-foundation",
1567
1567
+
"core-foundation-sys",
1568
1568
+
"libc",
1569
1569
+
"security-framework-sys",
1570
1570
+
]
1571
1571
+
1572
1572
+
[[package]]
1573
1573
+
name = "security-framework-sys"
1574
1574
+
version = "2.14.0"
1575
1575
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1576
1576
+
checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32"
1577
1577
+
dependencies = [
1578
1578
+
"core-foundation-sys",
1579
1579
+
"libc",
1580
1580
+
]
1581
1581
+
1582
1582
+
[[package]]
1068
1583
name = "semver"
1069
1584
version = "1.0.26"
1070
1585
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1077
1592
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
1078
1593
dependencies = [
1079
1594
"serde_derive",
1595
1595
+
]
1596
1596
+
1597
1597
+
[[package]]
1598
1598
+
name = "serde_bytes"
1599
1599
+
version = "0.11.17"
1600
1600
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1601
1601
+
checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96"
1602
1602
+
dependencies = [
1603
1603
+
"serde",
1080
1604
]
1081
1605
1082
1606
[[package]]
···
1291
1815
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
1292
1816
1293
1817
[[package]]
1818
1818
+
name = "stable_deref_trait"
1819
1819
+
version = "1.2.0"
1820
1820
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1821
1821
+
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
1822
1822
+
1823
1823
+
[[package]]
1294
1824
name = "subtle"
1295
1825
version = "2.6.1"
1296
1826
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1308
1838
]
1309
1839
1310
1840
[[package]]
1841
1841
+
name = "sync_wrapper"
1842
1842
+
version = "1.0.2"
1843
1843
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1844
1844
+
checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
1845
1845
+
dependencies = [
1846
1846
+
"futures-core",
1847
1847
+
]
1848
1848
+
1849
1849
+
[[package]]
1850
1850
+
name = "synstructure"
1851
1851
+
version = "0.13.2"
1852
1852
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1853
1853
+
checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
1854
1854
+
dependencies = [
1855
1855
+
"proc-macro2",
1856
1856
+
"quote",
1857
1857
+
"syn",
1858
1858
+
]
1859
1859
+
1860
1860
+
[[package]]
1861
1861
+
name = "system-configuration"
1862
1862
+
version = "0.6.1"
1863
1863
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1864
1864
+
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
1865
1865
+
dependencies = [
1866
1866
+
"bitflags",
1867
1867
+
"core-foundation",
1868
1868
+
"system-configuration-sys",
1869
1869
+
]
1870
1870
+
1871
1871
+
[[package]]
1872
1872
+
name = "system-configuration-sys"
1873
1873
+
version = "0.6.0"
1874
1874
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1875
1875
+
checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
1876
1876
+
dependencies = [
1877
1877
+
"core-foundation-sys",
1878
1878
+
"libc",
1879
1879
+
]
1880
1880
+
1881
1881
+
[[package]]
1311
1882
name = "take_mut"
1312
1883
version = "0.2.2"
1313
1884
source = "registry+https://github.com/rust-lang/crates.io-index"
1314
1885
checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60"
1886
1886
+
1887
1887
+
[[package]]
1888
1888
+
name = "tempfile"
1889
1889
+
version = "3.19.1"
1890
1890
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1891
1891
+
checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf"
1892
1892
+
dependencies = [
1893
1893
+
"fastrand",
1894
1894
+
"getrandom 0.3.2",
1895
1895
+
"once_cell",
1896
1896
+
"rustix",
1897
1897
+
"windows-sys 0.59.0",
1898
1898
+
]
1315
1899
1316
1900
[[package]]
1317
1901
name = "term"
···
1408
1992
]
1409
1993
1410
1994
[[package]]
1995
1995
+
name = "tinystr"
1996
1996
+
version = "0.7.6"
1997
1997
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1998
1998
+
checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
1999
1999
+
dependencies = [
2000
2000
+
"displaydoc",
2001
2001
+
"zerovec",
2002
2002
+
]
2003
2003
+
2004
2004
+
[[package]]
1411
2005
name = "tokio"
1412
2006
version = "1.44.2"
1413
2007
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1437
2031
]
1438
2032
1439
2033
[[package]]
2034
2034
+
name = "tokio-native-tls"
2035
2035
+
version = "0.3.1"
2036
2036
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2037
2037
+
checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
2038
2038
+
dependencies = [
2039
2039
+
"native-tls",
2040
2040
+
"tokio",
2041
2041
+
]
2042
2042
+
2043
2043
+
[[package]]
1440
2044
name = "tokio-rustls"
1441
2045
version = "0.25.0"
1442
2046
source = "registry+https://github.com/rust-lang/crates.io-index"
1443
2047
checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f"
1444
2048
dependencies = [
1445
1445
-
"rustls",
2049
2049
+
"rustls 0.22.4",
1446
2050
"rustls-pki-types",
2051
2051
+
"tokio",
2052
2052
+
]
2053
2053
+
2054
2054
+
[[package]]
2055
2055
+
name = "tokio-rustls"
2056
2056
+
version = "0.26.2"
2057
2057
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2058
2058
+
checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b"
2059
2059
+
dependencies = [
2060
2060
+
"rustls 0.23.26",
1447
2061
"tokio",
1448
2062
]
1449
2063
···
1502
2116
checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076"
1503
2117
1504
2118
[[package]]
2119
2119
+
name = "tower"
2120
2120
+
version = "0.5.2"
2121
2121
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2122
2122
+
checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
2123
2123
+
dependencies = [
2124
2124
+
"futures-core",
2125
2125
+
"futures-util",
2126
2126
+
"pin-project-lite",
2127
2127
+
"sync_wrapper",
2128
2128
+
"tokio",
2129
2129
+
"tower-layer",
2130
2130
+
"tower-service",
2131
2131
+
]
2132
2132
+
2133
2133
+
[[package]]
2134
2134
+
name = "tower-layer"
2135
2135
+
version = "0.3.3"
2136
2136
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2137
2137
+
checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
2138
2138
+
2139
2139
+
[[package]]
1505
2140
name = "tower-service"
1506
2141
version = "0.3.3"
1507
2142
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1545
2180
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
1546
2181
1547
2182
[[package]]
2183
2183
+
name = "unsigned-varint"
2184
2184
+
version = "0.8.0"
2185
2185
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2186
2186
+
checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06"
2187
2187
+
2188
2188
+
[[package]]
1548
2189
name = "untrusted"
1549
2190
version = "0.9.0"
1550
2191
source = "registry+https://github.com/rust-lang/crates.io-index"
1551
2192
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
1552
2193
1553
2194
[[package]]
2195
2195
+
name = "url"
2196
2196
+
version = "2.5.4"
2197
2197
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2198
2198
+
checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
2199
2199
+
dependencies = [
2200
2200
+
"form_urlencoded",
2201
2201
+
"idna",
2202
2202
+
"percent-encoding",
2203
2203
+
]
2204
2204
+
2205
2205
+
[[package]]
2206
2206
+
name = "utf16_iter"
2207
2207
+
version = "1.0.5"
2208
2208
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2209
2209
+
checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
2210
2210
+
2211
2211
+
[[package]]
2212
2212
+
name = "utf8_iter"
2213
2213
+
version = "1.0.4"
2214
2214
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2215
2215
+
checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
2216
2216
+
2217
2217
+
[[package]]
1554
2218
name = "uuid"
1555
2219
version = "1.16.0"
1556
2220
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1559
2223
"getrandom 0.3.2",
1560
2224
"serde",
1561
2225
]
2226
2226
+
2227
2227
+
[[package]]
2228
2228
+
name = "vcpkg"
2229
2229
+
version = "0.2.15"
2230
2230
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2231
2231
+
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
1562
2232
1563
2233
[[package]]
1564
2234
name = "version_check"
···
1626
2296
]
1627
2297
1628
2298
[[package]]
2299
2299
+
name = "wasm-bindgen-futures"
2300
2300
+
version = "0.4.50"
2301
2301
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2302
2302
+
checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
2303
2303
+
dependencies = [
2304
2304
+
"cfg-if",
2305
2305
+
"js-sys",
2306
2306
+
"once_cell",
2307
2307
+
"wasm-bindgen",
2308
2308
+
"web-sys",
2309
2309
+
]
2310
2310
+
2311
2311
+
[[package]]
1629
2312
name = "wasm-bindgen-macro"
1630
2313
version = "0.2.100"
1631
2314
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1658
2341
]
1659
2342
1660
2343
[[package]]
2344
2344
+
name = "web-sys"
2345
2345
+
version = "0.3.77"
2346
2346
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2347
2347
+
checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
2348
2348
+
dependencies = [
2349
2349
+
"js-sys",
2350
2350
+
"wasm-bindgen",
2351
2351
+
]
2352
2352
+
2353
2353
+
[[package]]
1661
2354
name = "winapi"
1662
2355
version = "0.3.9"
1663
2356
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1689
2382
"windows-interface",
1690
2383
"windows-link",
1691
2384
"windows-result",
1692
1692
-
"windows-strings",
2385
2385
+
"windows-strings 0.4.0",
1693
2386
]
1694
2387
1695
2388
[[package]]
···
1721
2414
checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
1722
2415
1723
2416
[[package]]
2417
2417
+
name = "windows-registry"
2418
2418
+
version = "0.4.0"
2419
2419
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2420
2420
+
checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3"
2421
2421
+
dependencies = [
2422
2422
+
"windows-result",
2423
2423
+
"windows-strings 0.3.1",
2424
2424
+
"windows-targets 0.53.0",
2425
2425
+
]
2426
2426
+
2427
2427
+
[[package]]
1724
2428
name = "windows-result"
1725
2429
version = "0.3.2"
1726
2430
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1731
2435
1732
2436
[[package]]
1733
2437
name = "windows-strings"
2438
2438
+
version = "0.3.1"
2439
2439
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2440
2440
+
checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319"
2441
2441
+
dependencies = [
2442
2442
+
"windows-link",
2443
2443
+
]
2444
2444
+
2445
2445
+
[[package]]
2446
2446
+
name = "windows-strings"
1734
2447
version = "0.4.0"
1735
2448
source = "registry+https://github.com/rust-lang/crates.io-index"
1736
2449
checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97"
···
1744
2457
source = "registry+https://github.com/rust-lang/crates.io-index"
1745
2458
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
1746
2459
dependencies = [
1747
1747
-
"windows-targets",
2460
2460
+
"windows-targets 0.52.6",
1748
2461
]
1749
2462
1750
2463
[[package]]
···
1753
2466
source = "registry+https://github.com/rust-lang/crates.io-index"
1754
2467
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
1755
2468
dependencies = [
1756
1756
-
"windows-targets",
2469
2469
+
"windows-targets 0.52.6",
1757
2470
]
1758
2471
1759
2472
[[package]]
···
1762
2475
source = "registry+https://github.com/rust-lang/crates.io-index"
1763
2476
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
1764
2477
dependencies = [
1765
1765
-
"windows_aarch64_gnullvm",
1766
1766
-
"windows_aarch64_msvc",
1767
1767
-
"windows_i686_gnu",
1768
1768
-
"windows_i686_gnullvm",
1769
1769
-
"windows_i686_msvc",
1770
1770
-
"windows_x86_64_gnu",
1771
1771
-
"windows_x86_64_gnullvm",
1772
1772
-
"windows_x86_64_msvc",
2478
2478
+
"windows_aarch64_gnullvm 0.52.6",
2479
2479
+
"windows_aarch64_msvc 0.52.6",
2480
2480
+
"windows_i686_gnu 0.52.6",
2481
2481
+
"windows_i686_gnullvm 0.52.6",
2482
2482
+
"windows_i686_msvc 0.52.6",
2483
2483
+
"windows_x86_64_gnu 0.52.6",
2484
2484
+
"windows_x86_64_gnullvm 0.52.6",
2485
2485
+
"windows_x86_64_msvc 0.52.6",
2486
2486
+
]
2487
2487
+
2488
2488
+
[[package]]
2489
2489
+
name = "windows-targets"
2490
2490
+
version = "0.53.0"
2491
2491
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2492
2492
+
checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b"
2493
2493
+
dependencies = [
2494
2494
+
"windows_aarch64_gnullvm 0.53.0",
2495
2495
+
"windows_aarch64_msvc 0.53.0",
2496
2496
+
"windows_i686_gnu 0.53.0",
2497
2497
+
"windows_i686_gnullvm 0.53.0",
2498
2498
+
"windows_i686_msvc 0.53.0",
2499
2499
+
"windows_x86_64_gnu 0.53.0",
2500
2500
+
"windows_x86_64_gnullvm 0.53.0",
2501
2501
+
"windows_x86_64_msvc 0.53.0",
1773
2502
]
1774
2503
1775
2504
[[package]]
···
1779
2508
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
1780
2509
1781
2510
[[package]]
2511
2511
+
name = "windows_aarch64_gnullvm"
2512
2512
+
version = "0.53.0"
2513
2513
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2514
2514
+
checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
2515
2515
+
2516
2516
+
[[package]]
1782
2517
name = "windows_aarch64_msvc"
1783
2518
version = "0.52.6"
1784
2519
source = "registry+https://github.com/rust-lang/crates.io-index"
1785
2520
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
1786
2521
1787
2522
[[package]]
2523
2523
+
name = "windows_aarch64_msvc"
2524
2524
+
version = "0.53.0"
2525
2525
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2526
2526
+
checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
2527
2527
+
2528
2528
+
[[package]]
1788
2529
name = "windows_i686_gnu"
1789
2530
version = "0.52.6"
1790
2531
source = "registry+https://github.com/rust-lang/crates.io-index"
1791
2532
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
1792
2533
1793
2534
[[package]]
2535
2535
+
name = "windows_i686_gnu"
2536
2536
+
version = "0.53.0"
2537
2537
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2538
2538
+
checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
2539
2539
+
2540
2540
+
[[package]]
1794
2541
name = "windows_i686_gnullvm"
1795
2542
version = "0.52.6"
1796
2543
source = "registry+https://github.com/rust-lang/crates.io-index"
1797
2544
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
1798
2545
1799
2546
[[package]]
2547
2547
+
name = "windows_i686_gnullvm"
2548
2548
+
version = "0.53.0"
2549
2549
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2550
2550
+
checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
2551
2551
+
2552
2552
+
[[package]]
1800
2553
name = "windows_i686_msvc"
1801
2554
version = "0.52.6"
1802
2555
source = "registry+https://github.com/rust-lang/crates.io-index"
1803
2556
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
2557
2557
+
2558
2558
+
[[package]]
2559
2559
+
name = "windows_i686_msvc"
2560
2560
+
version = "0.53.0"
2561
2561
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2562
2562
+
checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
1804
2563
1805
2564
[[package]]
1806
2565
name = "windows_x86_64_gnu"
···
1809
2568
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
1810
2569
1811
2570
[[package]]
2571
2571
+
name = "windows_x86_64_gnu"
2572
2572
+
version = "0.53.0"
2573
2573
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2574
2574
+
checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
2575
2575
+
2576
2576
+
[[package]]
1812
2577
name = "windows_x86_64_gnullvm"
1813
2578
version = "0.52.6"
1814
2579
source = "registry+https://github.com/rust-lang/crates.io-index"
1815
2580
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
1816
2581
1817
2582
[[package]]
2583
2583
+
name = "windows_x86_64_gnullvm"
2584
2584
+
version = "0.53.0"
2585
2585
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2586
2586
+
checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
2587
2587
+
2588
2588
+
[[package]]
1818
2589
name = "windows_x86_64_msvc"
1819
2590
version = "0.52.6"
1820
2591
source = "registry+https://github.com/rust-lang/crates.io-index"
1821
2592
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
1822
2593
1823
2594
[[package]]
2595
2595
+
name = "windows_x86_64_msvc"
2596
2596
+
version = "0.53.0"
2597
2597
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2598
2598
+
checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
2599
2599
+
2600
2600
+
[[package]]
1824
2601
name = "winnow"
1825
2602
version = "0.7.7"
1826
2603
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1839
2616
]
1840
2617
1841
2618
[[package]]
2619
2619
+
name = "write16"
2620
2620
+
version = "1.0.0"
2621
2621
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2622
2622
+
checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
2623
2623
+
2624
2624
+
[[package]]
2625
2625
+
name = "writeable"
2626
2626
+
version = "0.5.5"
2627
2627
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2628
2628
+
checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
2629
2629
+
2630
2630
+
[[package]]
2631
2631
+
name = "yoke"
2632
2632
+
version = "0.7.5"
2633
2633
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2634
2634
+
checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40"
2635
2635
+
dependencies = [
2636
2636
+
"serde",
2637
2637
+
"stable_deref_trait",
2638
2638
+
"yoke-derive",
2639
2639
+
"zerofrom",
2640
2640
+
]
2641
2641
+
2642
2642
+
[[package]]
2643
2643
+
name = "yoke-derive"
2644
2644
+
version = "0.7.5"
2645
2645
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2646
2646
+
checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
2647
2647
+
dependencies = [
2648
2648
+
"proc-macro2",
2649
2649
+
"quote",
2650
2650
+
"syn",
2651
2651
+
"synstructure",
2652
2652
+
]
2653
2653
+
2654
2654
+
[[package]]
2655
2655
+
name = "zerofrom"
2656
2656
+
version = "0.1.6"
2657
2657
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2658
2658
+
checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
2659
2659
+
dependencies = [
2660
2660
+
"zerofrom-derive",
2661
2661
+
]
2662
2662
+
2663
2663
+
[[package]]
2664
2664
+
name = "zerofrom-derive"
2665
2665
+
version = "0.1.6"
2666
2666
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2667
2667
+
checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
2668
2668
+
dependencies = [
2669
2669
+
"proc-macro2",
2670
2670
+
"quote",
2671
2671
+
"syn",
2672
2672
+
"synstructure",
2673
2673
+
]
2674
2674
+
2675
2675
+
[[package]]
1842
2676
name = "zeroize"
1843
2677
version = "1.8.1"
1844
2678
source = "registry+https://github.com/rust-lang/crates.io-index"
1845
2679
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
2680
2680
+
2681
2681
+
[[package]]
2682
2682
+
name = "zerovec"
2683
2683
+
version = "0.10.4"
2684
2684
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2685
2685
+
checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079"
2686
2686
+
dependencies = [
2687
2687
+
"yoke",
2688
2688
+
"zerofrom",
2689
2689
+
"zerovec-derive",
2690
2690
+
]
2691
2691
+
2692
2692
+
[[package]]
2693
2693
+
name = "zerovec-derive"
2694
2694
+
version = "0.10.3"
2695
2695
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2696
2696
+
checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
2697
2697
+
dependencies = [
2698
2698
+
"proc-macro2",
2699
2699
+
"quote",
2700
2700
+
"syn",
2701
2701
+
]
+3
Cargo.toml
···
4
4
edition = "2024"
5
5
6
6
[dependencies]
7
7
+
chrono = { version = "0.4.39", features = ["serde"] }
7
8
dropshot = "0.16.0"
8
9
eyre = "0.6.12"
10
10
+
ipld-core = { version = "0.4.1", features = ["serde"] }
11
11
+
reqwest = { version = "0.12.12", features = ["native-tls", "json"] }
9
12
serde = { version = "1.0.217", features = ["derive"] }
10
13
serde_json = "1.0.134"
11
14
slog = { version = "2.7.0" }
+91
src/import.rs
···
1
1
+
use crate::types::PlcOperationType;
2
2
+
use crate::utils::*;
3
3
+
use chrono::{DateTime, Utc};
4
4
+
use ipld_core::cid::Cid;
5
5
+
use reqwest::Client;
6
6
+
use serde::{Deserialize, Serialize};
7
7
+
use slog::{Logger, error, debug};
8
8
+
use std::env::var;
9
9
+
use std::time::{Duration, Instant};
10
10
+
11
11
+
// PLC rate limit is 100req/min - we aim a little lower
12
12
+
const SLEEP_TIME_F: f32 = (60. / 90.) * 1000.;
13
13
+
const SLEEP_TIME: Duration = Duration::from_millis(SLEEP_TIME_F as u64);
14
14
+
15
15
+
pub async fn importer(log: Logger) {
16
16
+
let plc_main = var("PLC_UPSTREAM").unwrap_or("https://plc.directory".to_string());
17
17
+
let user_agent = var("PLC_USER_AGENT").unwrap_or("parakeet-plc".to_string());
18
18
+
19
19
+
let mut after = var("PLC_START_AFTER").ok();
20
20
+
21
21
+
let client = Client::builder().user_agent(user_agent).build().unwrap();
22
22
+
23
23
+
loop {
24
24
+
let start = Instant::now();
25
25
+
26
26
+
match upstream_export(&client, &plc_main, after.clone()).await {
27
27
+
Ok((entries, errors)) => {
28
28
+
debug!(
29
29
+
log,
30
30
+
"exported {} entries, {} failed",
31
31
+
entries.len(),
32
32
+
errors.len()
33
33
+
);
34
34
+
35
35
+
// todo: report errors
36
36
+
// todo: DB inserts
37
37
+
38
38
+
let new_after = entries.last().unwrap().created_at;
39
39
+
after = Some(new_after.to_rfc3339_opts(chrono::SecondsFormat::Millis, true));
40
40
+
}
41
41
+
Err(err) => error!(log, "failed to export PLC directory: {err}"),
42
42
+
}
43
43
+
44
44
+
let end = start.elapsed();
45
45
+
tokio::time::sleep(SLEEP_TIME.saturating_sub(end)).await;
46
46
+
}
47
47
+
}
48
48
+
49
49
+
async fn upstream_export(
50
50
+
client: &Client,
51
51
+
plc: &str,
52
52
+
after: Option<String>,
53
53
+
) -> eyre::Result<(Vec<PlcExportEntry>, Vec<serde_json::Error>)> {
54
54
+
let mut uri = format!("{plc}/export?count=1000");
55
55
+
if let Some(after) = after {
56
56
+
uri += format!("&after={}", after).as_str();
57
57
+
}
58
58
+
59
59
+
let export_res = client.get(uri).send().await?;
60
60
+
61
61
+
let export = export_res.text().await?;
62
62
+
let (exports, errors) = export
63
63
+
.lines()
64
64
+
.map(serde_json::from_str)
65
65
+
.fold((Vec::new(), Vec::new()), fold_exports);
66
66
+
67
67
+
Ok((exports, errors))
68
68
+
}
69
69
+
70
70
+
fn fold_exports<A, B>(
71
71
+
(mut oks, mut errors): (Vec<A>, Vec<B>),
72
72
+
current: Result<A, B>,
73
73
+
) -> (Vec<A>, Vec<B>) {
74
74
+
match current {
75
75
+
Ok(data) => oks.push(data),
76
76
+
Err(err) => errors.push(err),
77
77
+
};
78
78
+
79
79
+
(oks, errors)
80
80
+
}
81
81
+
82
82
+
#[derive(Debug, Deserialize, Serialize)]
83
83
+
#[serde(rename_all = "camelCase")]
84
84
+
pub struct PlcExportEntry {
85
85
+
pub did: String,
86
86
+
pub operation: PlcOperationType,
87
87
+
#[serde(deserialize_with = "cid_from_string")]
88
88
+
pub cid: Cid,
89
89
+
pub nullified: bool,
90
90
+
pub created_at: DateTime<Utc>,
91
91
+
}
+4
src/lib.rs
···
1
1
use dropshot::{ApiDescription, ConfigLogging, ConfigLoggingLevel};
2
2
use slog::Logger;
3
3
4
4
+
pub mod import;
5
5
+
mod types;
6
6
+
mod utils;
7
7
+
4
8
#[derive(Clone)]
5
9
pub struct ApiContext {}
6
10
+2
src/main.rs
···
12
12
let _scope = slog_scope::set_global_logger(log.clone());
13
13
slog_stdlog::init()?;
14
14
15
15
+
tokio::spawn(plc_mirror::import::importer(log.clone()));
16
16
+
15
17
let bind_address = var("PLC_BIND_ADDR")
16
18
.unwrap_or(DEFAULT_BIND.to_string())
17
19
.parse()?;
+54
src/types.rs
···
1
1
+
use crate::utils::*;
2
2
+
use ipld_core::cid::Cid;
3
3
+
use serde::{Deserialize, Serialize};
4
4
+
use std::collections::HashMap;
5
5
+
6
6
+
#[derive(Debug, Deserialize, Serialize)]
7
7
+
#[serde(tag = "type")]
8
8
+
pub enum PlcOperationType {
9
9
+
#[serde(rename = "create")]
10
10
+
Create(PlcCreate),
11
11
+
#[serde(rename = "plc_tombstone")]
12
12
+
Tombstone(PlcTombstone),
13
13
+
#[serde(rename = "plc_operation")]
14
14
+
Operation(PlcOperation),
15
15
+
}
16
16
+
17
17
+
#[derive(Debug, Deserialize, Serialize)]
18
18
+
#[serde(rename_all = "camelCase")]
19
19
+
pub struct PlcCreate {
20
20
+
pub sig: String,
21
21
+
#[serde(deserialize_with = "option_cid_from_string")]
22
22
+
pub prev: Option<Cid>,
23
23
+
pub signing_key: String,
24
24
+
pub recovery_key: String,
25
25
+
pub handle: String,
26
26
+
pub service: String,
27
27
+
}
28
28
+
29
29
+
#[derive(Debug, Deserialize, Serialize)]
30
30
+
#[serde(rename_all = "camelCase")]
31
31
+
pub struct PlcTombstone {
32
32
+
pub sig: String,
33
33
+
#[serde(deserialize_with = "option_cid_from_string")]
34
34
+
pub prev: Option<Cid>,
35
35
+
}
36
36
+
37
37
+
#[derive(Debug, Deserialize, Serialize)]
38
38
+
#[serde(rename_all = "camelCase")]
39
39
+
pub struct PlcOperation {
40
40
+
pub sig: String,
41
41
+
#[serde(deserialize_with = "option_cid_from_string")]
42
42
+
pub prev: Option<Cid>,
43
43
+
pub rotation_keys: Vec<String>,
44
44
+
pub verification_methods: HashMap<String, String>,
45
45
+
pub also_known_as: Vec<String>,
46
46
+
pub services: HashMap<String, PlcService>,
47
47
+
}
48
48
+
49
49
+
#[derive(Debug, Deserialize, Serialize)]
50
50
+
pub struct PlcService {
51
51
+
#[serde(rename = "type")]
52
52
+
pub ty: String,
53
53
+
pub endpoint: String,
54
54
+
}
+17
src/utils.rs
···
1
1
+
use ipld_core::cid::Cid;
2
2
+
use serde::{Deserialize, Deserializer};
3
3
+
4
4
+
pub fn cid_from_string<'de, D: Deserializer<'de>>(deserializer: D) -> Result<Cid, D::Error> {
5
5
+
let str = String::deserialize(deserializer)?;
6
6
+
7
7
+
Cid::try_from(str).map_err(serde::de::Error::custom)
8
8
+
}
9
9
+
10
10
+
pub fn option_cid_from_string<'de, D: Deserializer<'de>>(
11
11
+
deserializer: D,
12
12
+
) -> Result<Option<Cid>, D::Error> {
13
13
+
#[derive(Deserialize)]
14
14
+
struct Wrapper(#[serde(deserialize_with = "cid_from_string")] Cid);
15
15
+
16
16
+
Ok(Option::deserialize(deserializer)?.map(|Wrapper(v)| v))
17
17
+
}